healthcare-emr-patterns
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseHealthcare EMR Development Patterns
医疗EMR开发模式
Patterns for building Electronic Medical Record (EMR) and Electronic Health Record (EHR) systems. Prioritizes patient safety, clinical accuracy, and practitioner efficiency.
用于构建电子病历(EMR)和电子健康档案(EHR)系统的开发模式,优先保障患者安全、临床准确性和医务人员工作效率。
When to Use
适用场景
- Building patient encounter workflows (complaint, exam, diagnosis, prescription)
- Implementing clinical note-taking (structured + free text + voice-to-text)
- Designing prescription/medication modules with drug interaction checking
- Integrating Clinical Decision Support Systems (CDSS)
- Building lab result displays with reference range highlighting
- Implementing audit trails for clinical data
- Designing healthcare-accessible UIs for clinical data entry
- 构建患者就诊工作流(主诉、查体、诊断、处方)
- 实现临床笔记记录功能(结构化文本+自由文本+语音转文字)
- 设计带有药物相互作用校验的处方/药品模块
- 集成临床决策支持系统(CDSS)
- 构建带有参考范围高亮的检验结果展示功能
- 实现临床数据的审计追踪功能
- 设计符合医疗无障碍标准的临床数据录入UI
How It Works
实现原理
Patient Safety First
患者安全优先
Every design decision must be evaluated against: "Could this harm a patient?"
- Drug interactions MUST alert, not silently pass
- Abnormal lab values MUST be visually flagged
- Critical vitals MUST trigger escalation workflows
- No clinical data modification without audit trail
所有设计决策都必须基于这一问题评估:「这会不会伤害到患者?」
- 药物相互作用必须触发告警,不得静默放行
- 异常检验值必须做视觉标记
- 关键生命体征必须触发升级处置工作流
- 任何临床数据修改都必须留下审计记录
Single-Page Encounter Flow
单页就诊流
Clinical encounters should flow vertically on a single page — no tab switching:
Patient Header (sticky — always visible)
├── Demographics, allergies, active medications
│
Encounter Flow (vertical scroll)
├── 1. Chief Complaint (structured templates + free text)
├── 2. History of Present Illness
├── 3. Physical Examination (system-wise)
├── 4. Vitals (auto-trigger clinical scoring)
├── 5. Diagnosis (ICD-10/SNOMED search)
├── 6. Medications (drug DB + interaction check)
├── 7. Investigations (lab/radiology orders)
├── 8. Plan & Follow-up
└── 9. Sign / Lock / Print临床就诊流程应该在单个页面上纵向排布——无需切换标签页:
Patient Header (sticky — always visible)
├── Demographics, allergies, active medications
│
Encounter Flow (vertical scroll)
├── 1. Chief Complaint (structured templates + free text)
├── 2. History of Present Illness
├── 3. Physical Examination (system-wise)
├── 4. Vitals (auto-trigger clinical scoring)
├── 5. Diagnosis (ICD-10/SNOMED search)
├── 6. Medications (drug DB + interaction check)
├── 7. Investigations (lab/radiology orders)
├── 8. Plan & Follow-up
└── 9. Sign / Lock / PrintSmart Template System
智能模板系统
typescript
interface ClinicalTemplate {
id: string;
name: string; // e.g., "Chest Pain"
chips: string[]; // clickable symptom chips
requiredFields: string[]; // mandatory data points
redFlags: string[]; // triggers non-dismissable alert
icdSuggestions: string[]; // pre-mapped diagnosis codes
}Red flags in any template must trigger a visible, non-dismissable alert — NOT a toast notification.
typescript
interface ClinicalTemplate {
id: string;
name: string; // e.g., "Chest Pain"
chips: string[]; // clickable symptom chips
requiredFields: string[]; // mandatory data points
redFlags: string[]; // triggers non-dismissable alert
icdSuggestions: string[]; // pre-mapped diagnosis codes
}任何模板中的红色预警都必须触发可见的、不可关闭的告警——禁止使用toast通知。
Medication Safety Pattern
药品安全模式
User selects drug
→ Check current medications for interactions
→ Check encounter medications for interactions
→ Check patient allergies
→ Validate dose against weight/age/renal function
→ If CRITICAL interaction: BLOCK prescribing entirely
→ Clinician must document override reason to proceed past a block
→ If MAJOR interaction: display warning, require acknowledgment
→ Log all alerts and override reasons in audit trailCritical interactions block prescribing by default. The clinician must explicitly override with a documented reason stored in the audit trail. The system never silently allows a critical interaction.
User selects drug
→ Check current medications for interactions
→ Check encounter medications for interactions
→ Check patient allergies
→ Validate dose against weight/age/renal function
→ If CRITICAL interaction: BLOCK prescribing entirely
→ Clinician must document override reason to proceed past a block
→ If MAJOR interaction: display warning, require acknowledgment
→ Log all alerts and override reasons in audit trail严重相互作用默认阻断处方开具。临床医生必须明确说明override理由,并存储到审计记录中才能继续操作。系统永远不会静默放行严重相互作用的处方。
Locked Encounter Pattern
就诊记录锁定模式
Once a clinical encounter is signed:
- No edits allowed — only an addendum (a separate linked record)
- Both original and addendum appear in the patient timeline
- Audit trail captures who signed, when, and any addendum records
一旦临床就诊记录签字后:
- 不允许任何编辑——仅可添加补记(单独的关联记录)
- 原始记录和补记都会展示在患者时间线中
- 审计记录会捕获签字人、签字时间以及所有补记记录
UI Patterns for Clinical Data
临床数据UI模式
Vitals Display: Current values with normal range highlighting (green/yellow/red), trend arrows vs previous, clinical scoring auto-calculated (NEWS2, qSOFA), escalation guidance inline.
Lab Results Display: Normal range highlighting, previous value comparison, critical values with non-dismissable alert, collection/analysis timestamps, pending orders with expected turnaround.
Prescription PDF: One-click generation with patient demographics, allergies, diagnosis, drug details (generic + brand, dose, route, frequency, duration), clinician signature block.
生命体征展示: 当前数值搭配正常范围高亮(绿/黄/红)、与过往数值对比的趋势箭头、自动计算临床评分(NEWS2、qSOFA)、inline展示升级处置指引。
检验结果展示: 正常范围高亮、与过往值对比、异常值搭配不可关闭的告警、采样/分析时间戳、待出报告的预期周转时间。
处方PDF: 一键生成,包含患者基本信息、过敏史、诊断、药品详情(通用名+商品名、剂量、给药途径、频次、疗程)、临床医生签字区。
Accessibility for Healthcare
医疗场景无障碍要求
Healthcare UIs have stricter requirements than typical web apps:
- 4.5:1 minimum contrast (WCAG AA) — clinicians work in varied lighting
- Large touch targets (44x44px minimum) — for gloved/rushed interaction
- Keyboard navigation — for power users entering data rapidly
- No color-only indicators — always pair color with text/icon (colorblind clinicians)
- Screen reader labels on all form fields
- No auto-dismissing toasts for clinical alerts — clinician must actively acknowledge
医疗类UI的要求比普通Web应用更严格:
- 最低4.5:1对比度(符合WCAG AA标准)——医务人员工作场景光照差异大
- 大尺寸点击目标(最小44x44px)——适配戴手套/仓促操作的场景
- 支持键盘导航——方便高效录入数据的重度用户
- 禁止仅用颜色做标识——必须同时搭配文字/图标(适配色弱的医务人员)
- 所有表单字段都要有屏幕阅读器标签
- 临床告警禁止使用自动消失的toast——医务人员必须主动确认
Anti-Patterns
反模式
- Storing clinical data in browser localStorage
- Silent failures in drug interaction checking
- Dismissable toasts for critical clinical alerts
- Tab-based encounter UIs that fragment the clinical workflow
- Allowing edits to signed/locked encounters
- Displaying clinical data without audit trail
- Using type for clinical data structures
any
- 将临床数据存储在浏览器localStorage中
- 药物相互作用校验静默失败
- 严重临床告警使用可关闭的toast
- 基于标签页的就诊UI,会割裂临床工作流
- 允许编辑已签字/锁定的就诊记录
- 展示临床数据时不带审计记录
- 临床数据结构使用类型
any
Examples
示例
Example 1: Patient Encounter Flow
示例1:患者就诊流
Doctor opens encounter for Patient #4521
→ Sticky header shows: "Rajesh M, 58M, Allergies: Penicillin, Active Meds: Metformin 500mg"
→ Chief Complaint: selects "Chest Pain" template
→ Clicks chips: "substernal", "radiating to left arm", "crushing"
→ Red flag "crushing substernal chest pain" triggers non-dismissable alert
→ Examination: CVS system — "S1 S2 normal, no murmur"
→ Vitals: HR 110, BP 90/60, SpO2 94%
→ NEWS2 auto-calculates: score 8, risk HIGH, escalation alert shown
→ Diagnosis: searches "ACS" → selects ICD-10 I21.9
→ Medications: selects Aspirin 300mg
→ CDSS checks against Metformin: no interaction
→ Signs encounter → locked, addendum-only from this pointDoctor opens encounter for Patient #4521
→ Sticky header shows: "Rajesh M, 58M, Allergies: Penicillin, Active Meds: Metformin 500mg"
→ Chief Complaint: selects "Chest Pain" template
→ Clicks chips: "substernal", "radiating to left arm", "crushing"
→ Red flag "crushing substernal chest pain" triggers non-dismissable alert
→ Examination: CVS system — "S1 S2 normal, no murmur"
→ Vitals: HR 110, BP 90/60, SpO2 94%
→ NEWS2 auto-calculates: score 8, risk HIGH, escalation alert shown
→ Diagnosis: searches "ACS" → selects ICD-10 I21.9
→ Medications: selects Aspirin 300mg
→ CDSS checks against Metformin: no interaction
→ Signs encounter → locked, addendum-only from this pointExample 2: Medication Safety Workflow
示例2:药品安全工作流
Doctor prescribes Warfarin for Patient #4521
→ CDSS detects: Warfarin + Aspirin = CRITICAL interaction
→ UI: red non-dismissable modal blocks prescribing
→ Doctor clicks "Override with reason"
→ Types: "Benefits outweigh risks — monitored INR protocol"
→ Override reason + alert stored in audit trail
→ Prescription proceeds with documented overrideDoctor prescribes Warfarin for Patient #4521
→ CDSS detects: Warfarin + Aspirin = CRITICAL interaction
→ UI: red non-dismissable modal blocks prescribing
→ Doctor clicks "Override with reason"
→ Types: "Benefits outweigh risks — monitored INR protocol"
→ Override reason + alert stored in audit trail
→ Prescription proceeds with documented overrideExample 3: Locked Encounter + Addendum
示例3:锁定就诊记录+补记
Encounter #E-2024-0891 signed by Dr. Shah at 14:30
→ All fields locked — no edit buttons visible
→ "Add Addendum" button available
→ Dr. Shah clicks addendum, adds: "Lab results received — Troponin elevated"
→ New record E-2024-0891-A1 linked to original
→ Timeline shows both: original encounter + addendum with timestampsEncounter #E-2024-0891 signed by Dr. Shah at 14:30
→ All fields locked — no edit buttons visible
→ "Add Addendum" button available
→ Dr. Shah clicks addendum, adds: "Lab results received — Troponin elevated"
→ New record E-2024-0891-A1 linked to original
→ Timeline shows both: original encounter + addendum with timestamps