--- name: healthcare-emr-patterns description: 医疗应用中EMR/EHR的开发模式。临床安全、就诊工作流程、处方生成、临床决策支持集成以及以可访问性为先的医疗数据录入用户界面。 origin: Health1 Super Speciality Hospitals — contributed by Dr. Keyur Patel version: "1.0.0" --- # 医疗电子病历开发模式 构建电子病历(EMR)和电子健康档案(EHR)系统的模式。优先考虑患者安全、临床准确性和医生工作效率。 ## 使用场景 * 构建患者就诊工作流(主诉、检查、诊断、处方) * 实现临床记录(结构化文本 + 自由文本 + 语音转文字) * 设计含药物相互作用检查的处方/用药模块 * 集成临床决策支持系统(CDSS) * 构建带参考范围高亮显示的检验结果展示 * 实现临床数据审计追踪 * 设计医疗场景下易用的临床数据录入界面 ## 工作原理 ### 患者安全优先 每个设计决策必须通过以下问题评估:"这会对患者造成伤害吗?" * 药物相互作用**必须**发出警报,不能静默通过 * 异常检验值**必须**以视觉方式标记 * 关键生命体征**必须**触发升级工作流 * 无审计追踪不得修改临床数据 ### 单页就诊流程 临床就诊应在单页上垂直流动——无需切换标签页: ``` 患者头部信息(固定显示 — 始终可见) ├── 人口学信息、过敏史、当前用药 │ 就诊流程(垂直滚动) ├── 1. 主诉(结构化模板 + 自由文本) ├── 2. 现病史 ├── 3. 体格检查(按系统分类) ├── 4. 生命体征(自动触发临床评分) ├── 5. 诊断(ICD-10/SNOMED 搜索) ├── 6. 用药(药品数据库 + 相互作用检查) ├── 7. 检查(实验室/影像学医嘱) ├── 8. 计划与随访 └── 9. 签名 / 锁定 / 打印 ``` ### 智能模板系统 ```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 } ``` 任何模板中的危险信号必须触发可见且不可关闭的警报——而非通知提示。 ### 用药安全模式 ``` 用户选择药物 → 检查当前用药是否存在相互作用 → 检查就诊用药是否存在相互作用 → 检查患者过敏史 → 根据体重/年龄/肾功能验证剂量 → 若为严重相互作用:完全阻止开药 → 临床医生必须记录覆盖理由才能继续操作 → 若为重大相互作用:显示警告,要求确认 → 将所有警报和覆盖理由记录在审计追踪中 ``` 关键相互作用**默认阻止开药**。临床医生必须明确覆盖,并在审计追踪中记录原因。系统绝不允许静默通过关键相互作用。 ### 锁定就诊模式 临床就诊一旦签署: * 不允许编辑——仅可添加附录(独立的关联记录) * 原始记录和附录均显示在患者时间线中 * 审计追踪记录签署人、签署时间及所有附录记录 ### 临床数据界面模式 **生命体征显示:** 当前值带正常范围高亮(绿/黄/红),与上次对比的趋势箭头,自动计算的临床评分(NEWS2、qSOFA),内联升级指导。 **检验结果展示:** 正常范围高亮,与上次值对比,关键值带不可关闭警报,采集/分析时间戳,待处理医嘱及预期周转时间。 **处方PDF:** 一键生成,包含患者基本信息、过敏史、诊断、药物详情(通用名+商品名、剂量、给药途径、频率、疗程)、临床医生签名栏。 ### 医疗场景无障碍设计 医疗界面的要求比典型网页应用更严格: * 最小对比度4.5:1(WCAG AA)——临床医生在不同光照条件下工作 * 大触摸目标(最小44x44px)——适用于戴手套或快速操作 * 键盘导航——供快速录入数据的熟练用户使用 * 不使用纯颜色指示——始终将颜色与文字/图标配对(色盲临床医生) * 所有表单字段带屏幕阅读器标签 * 临床警报不使用自动消失的提示——临床医生必须主动确认 ### 反模式 * 在浏览器localStorage中存储临床数据 * 药物相互作用检查静默失败 * 关键临床警报使用可关闭提示 * 基于标签页的就诊界面导致临床工作流碎片化 * 允许编辑已签署/锁定的就诊记录 * 无审计追踪显示临床数据 * 使用`any`类型处理临床数据结构 ## 示例 ### 示例1:患者就诊流程 ``` 医生为患者 #4521 开启接诊 → 固定头部显示:"Rajesh M, 58岁, 男性, 过敏史: 青霉素, 当前用药: 二甲双胍 500mg" → 主诉:选择"胸痛"模板 → 点击标签:"胸骨后", "向左臂放射", "压榨性" → 红色预警"压榨性胸骨后胸痛"触发不可关闭的警报 → 检查:心血管系统 — "S1 S2 正常,无杂音" → 生命体征:心率 110, 血压 90/60, 血氧饱和度 94% → NEWS2 自动计算:评分 8, 风险 高, 显示升级警报 → 诊断:搜索"ACS" → 选择 ICD-10 I21.9 → 用药:选择阿司匹林 300mg → CDSS 检查与二甲双胍的相互作用:无相互作用 → 签署接诊 → 锁定,此后仅可添加补充说明 ``` ### 示例2:用药安全工作流 ``` 医生为患者 #4521 开具华法林处方 → CDSS 检测到:华法林 + 阿司匹林 = 严重相互作用 → 用户界面:红色不可关闭的模态框阻止开药 → 医生点击“输入理由并覆盖” → 输入:“获益大于风险 — 已监测 INR 方案” → 覆盖理由及警报记录在审计追踪中 → 处方在记录覆盖后继续执行 ``` ### 示例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 timestamps ```