| name | healthcare-emr-patterns |
| description | 헬스케어 애플리케이션을 위한 EMR/EHR 개발 패턴입니다. 임상 안전성, encounter 워크플로, 처방 생성, CDSS 연동, 의료 데이터 입력용 접근성 우선 UI를 다룹니다. |
| origin | Health1 Super Speciality Hospitals — contributed by Dr. Keyur Patel |
| version | 1.0.0 |
의료 EMR 개발 패턴 (Healthcare EMR Development Patterns)
전자의무기록(EMR) 및 전자건강기록(EHR) 시스템을 구축하기 위한 패턴입니다. 환자 안전, 임상적 정확성 및 의료진의 효율성을 최우선으로 합니다.
사용 시점
- 환자 진료(encounter) 워크플로를 구축할 때
- 임상 기록(clinical note) 작성 기능을 구현할 때
- 약물 상호작용 체크가 포함된 처방/약물 모듈을 설계할 때
- 임상 의사결정 지원 시스템(CDSS)을 연동할 때
- 참고 범위(reference range) 강조가 포함된 검사 결과 표시 기능을 만들 때
- 임상 데이터에 대한 감사 추적(audit trail)을 구현할 때
- 의료 데이터 입력을 위한 접근성 높은 UI를 설계할 때
동작 방식
환자 안전 우선 (Patient Safety First)
모든 설계 결정은 "이것이 환자에게 해를 끼칠 수 있는가?"라는 관점에서 평가되어야 합니다.
- 약물 상호작용은 반드시 알림(alert)을 생성해야 함
- 비정상적인 검사 수치는 반드시 시각적으로 강조 표시해야 함
- 위험한 활력 징후(vitals)는 에스컬레이션 워크플로를 트리거해야 함
- 감사 추적 없이는 임상 데이터를 수정할 수 없어야 함
단일 페이지 진료 흐름 (Single-Page Encounter Flow)
임상 진료(encounter)는 탭 전환 없이 하나의 페이지에서 수직적인 흐름으로 진행되어야 합니다.
환자 헤더 (Patient Header, 고정)
├── 인구통계 정보, 알레르기, 현재 복용 약물
│
진료 흐름 (Encounter Flow)
├── 1. 주소 (Chief Complaint)
├── 2. 현병력 (History of Present Illness)
├── 3. 신체 검진 (Physical Examination)
├── 4. 활력 징후 (Vitals)
├── 5. 진단 (Diagnosis)
├── 6. 약물 처방 (Medications)
├── 7. 검사 의뢰 (Investigations)
├── 8. 계획 및 추적 관찰 (Plan & Follow-up)
└── 9. 서명 / 잠금 / 출력 (Sign / Lock / Print)
스마트 템플릿 시스템 (Smart Template System)
interface ClinicalTemplate {
id: string;
name: string;
chips: string[];
requiredFields: string[];
redFlags: string[];
icdSuggestions: string[];
}
템플릿에 정의된 어떤 '레드 플래그(red flag)'라도 탐지되면, 반드시 무시할 수 없는(non-dismissable) 알림을 트리거해야 합니다.
약물 안전 패턴 (Medication Safety Pattern)
사용자가 약물 선택
→ 현재 복용 중인 약물 확인
→ 현재 진료 중 처방된 약물 확인
→ 환자 알레르기 확인
→ 용량 검증
→ 치명적(CRITICAL) 상호작용 발견 시: 처방 차단(BLOCK)
→ 의료진이 차단 해제(override) 사유 기록
→ 주요(MAJOR) 상호작용 발견 시: 경고 표시 + 인지(acknowledgment) 확인
→ 알림 및 차단 해제 내역 기록
치명적인 상호작용은 기본적으로 처방 프로세스를 차단해야 합니다.
진료 기록 잠금 패턴 (Locked Encounter Pattern)
임상 진료 기록에 서명이 완료되면:
- 편집이 불가능해짐
- 추가 기록(addendum)만 허용됨
- 원본 기록과 추가 기록이 모두 타임라인에 표시됨
- 누가, 언제 서명했는지, 어떤 추가 기록이 있었는지에 대한 감사 추적 유지
UI 패턴
활력 징후 표시 (Vitals Display)
- 현재 수치와 정상 범위를 함께 강조
- 이전 수치 대비 추세를 나타내는 화살표 표시
- NEWS2, qSOFA와 같은 임상 점수 자동 계산
- 인라인 에스컬레이션 가이드 제공
검사 결과 표시 (Lab Results Display)
- 정상 범위를 벗어난 수치 강조
- 과거 수치와의 비교 데이터 제공
- 치명적 수치(critical value) 발생 시 무시할 수 없는 알림 표시
- 검체 채취 및 분석 시각 명시
- 대기 중인 처방(pending order)과 예상 완료 시간 표시
처방전 PDF (Prescription PDF)
- 환자 인구통계 정보, 알레르기, 진단명, 상세 약물 정보, 의료진 서명 란 포함
접근성 (Accessibility)
- 텍스트 대비 최소 4.5:1 유지
- 44x44px 이상의 터치 타깃 확보
- 키보드 내비게이션 지원
- 색상만으로 상태를 전달하지 않음
- 모든 폼 필드에 스크린 리더용 레이블 제공
- 임상 알림(alert)에 자동 사라짐(auto-dismiss) 토스트 메시지 사용 금지
안티패턴
- 임상 데이터를 브라우저의
localStorage에 저장하는 것
- 약물 상호작용 체크 실패를 소리 없이 무시(silent failure)하는 것
- 치명적 알림을 닫을 수 있는 토스트 메시지로 표시하는 것
- 임상 워크플로를 단절시키는 탭 기반 UI를 사용하는 것
- 서명된 진료 기록의 직접 수정을 허용하는 것
- 감사 추적 없이 임상 데이터를 표시하는 것
- 임상 데이터 구조에
any 타입을 사용하는 것