2. 健康档案数据模型与标准
健康档案平台的核心难点不在“存数据”,而在“让不同系统产生的临床数据能被正确理解、长期保存并跨机构交换”。这要求先选定信息模型与交换标准,再设计本地信息模型。HL7 FHIR、HL7 CDA、openEHR 是当前最常被比较的三类标准,它们解决的问题层次并不相同。
三类标准的定位差异
HL7 CDA 是面向文档的交换标准,核心是“一份临床文档”。它用 ClinicalDocument 作为根,包含 header(患者、作者、机构、时间)和 body(结构化或非结构化内容)。CDA 的 RIM 模型严谨,适合出院小结、转诊单、健康体检报告等“整份文档”的交换与归档,但文档一旦生成,细粒度查询和局部更新较困难。
HL7 FHIR 是面向资源与 API 的现代标准。它把临床内容拆成 Patient、Observation、Condition、MedicationRequest、Encounter 等资源,通过 RESTful 接口(如 GET /Patient/123、POST /Observation)进行读写,并支持 Bundle 打包、SearchParameter 检索和 Extension 扩展。FHIR 适合移动端、互联网医院、区域平台等需要细粒度交互的场景,但资源粒度细,建模时需处理资源组合与版本演进。
openEHR 是面向“临床信息模型”的两层建模标准。底层是稳定的参考模型(RM),上层是可由临床专家维护的原型(Archetype)和模板(Template)。例如“血压”可定义为一个 OBSERVATION 原型,包含收缩压、舒张压、体位、测量设备等元素,再通过模板约束为“门诊血压”。openEHR 的最大优势是语义稳定、可长期演进,适合区域健康档案主索引和终身档案,但落地需要原型治理工具与专业建模能力。
健康档案信息模型设计方法
实际工程中很少只选一种标准,而是“以 openEHR 或 FHIR 作为主模型,CDA 作为文档出口”。设计本地健康档案信息模型,可按以下方法推进。
第一步:梳理业务对象与数据域。先明确档案要覆盖哪些域,例如患者基本信息、就诊、诊断、检验、检查、用药、手术、过敏、随访。每个域列出真实字段,例如检验域需要:检验项目编码(LOINC)、结果值、单位(UCUM)、参考范围、标本类型、报告时间、检验机构。这一步的产出是“数据域—字段—术语”清单,而不是直接建表。
第二步:选择主模型并做概念映射。若以 FHIR 为主模型,把“一次血常规检验”映射为 Observation,其中 code 用 LOINC,valueQuantity 用 UCUM,subject 指向 Patient,performer 指向 Organization。若以 openEHR 为主模型,则先查是否已有“检验结果”原型,没有则新建 OBSERVATION 原型,再通过模板约束出“血常规”模板。映射结果要记录“源字段—目标元素—术语—是否必填”。
第三步:定义标识、版本与时间语义。健康档案必须解决“同一个人、同一次就诊、同一份报告”的标识问题。建议:患者用区域主索引 EMPI 分配全局 ID;就诊用 Encounter 或 VISIT 标识;报告用文档 ID + 版本号。时间要区分“业务发生时间”和“记录时间”,例如检验报告 effectiveDateTime 是采样时间,issued 是报告发布时间,二者不可混用。
第四步:术语与编码绑定。没有术语绑定的模型无法跨机构互认。常用绑定:诊断用 ICD-10/ICD-11,检验项目用 LOINC,药品用 ATC 或国家药品编码,单位用 UCUM,手术用 ICD-9-CM-3。绑定要落到字段级,并保留“本地码—标准码”映射表,便于历史数据回溯。
第五步:设计扩展与演进机制。标准不可能覆盖所有本地需求。FHIR 用 Extension,openEHR 用原型新增元素或模板约束,CDA 用 templateId 扩展。扩展必须登记:扩展名称、适用资源、数据类型、是否必填、生效版本。避免直接修改标准字段语义,否则后续升级会断裂。
Observation 的 code、component、valueQuantity 是否完整;openEHR 侧检查原型元素与模板约束是否一致;CDA 侧检查文档章节能否还原出同样的血压值。三侧结果一致,说明模型映射基本正确。选型建议与常见误区
若平台以“文档归档、法律效力、整份报告交换”为主,优先 CDA;若以“互联网应用、细粒度查询、快速集成”为主,优先 FHIR;若以“终身档案、语义长期稳定、区域主索引”为主,优先 openEHR。三者也可组合:openEHR 做临床数据仓库,FHIR 做对外 API,CDA 做文档出口。
常见误区有三:一是把 FHIR 资源直接当数据库表,忽略资源组合与版本;二是只做字段映射,不做术语绑定,导致“同义不同码”;三是扩展随意新增,缺少登记与评审,最终模型失控。健康档案信息模型设计的关键,不是选“最先进”的标准,而是让标识、术语、时间、版本和扩展五件事在模型中有明确位置,并能被交换与查询验证。