Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
FHIR 与 HL7 v2:实际区别
面向开发者的 HL7 v2 消息和 FHIR 资源比较:格式,传输,两者中的相同实验室结果,翻译陷阱,以及 Anpheros 支持 v2 的地方。
HL7 v2 是自 20 世纪 80 年代末以来医院系统交换的消息格式——管道分隔的事件,例如“患者入院”或“实验室结果就绪”,通过网络连接在系统之间推送——而 HL7 FHIR 是一个 Web API 标准,应用程序通过 HTTPS 以 JSON 格式读取和写入 Patient 和 Observation 等资源。 它们不是一次性的选择:大多数医院内部仍在使用 v2,新的应用程序和面向患者的 API 使用 FHIR,集成工作通常是将一种格式翻译成另一种。本页将从您编写代码时关心的角度对它们进行比较,展示两种格式下的相同数据,并解释 Anpheros 接受 v2 的地方。
并排对比
| HL7 v2 | HL7 FHIR R4 | |
|---|---|---|
| 风格 | 由事件触发的消息(入院、医嘱、结果) | 您创建、读取、更新、搜索的资源 |
| 格式 | 由换行符分隔的文本段,字段由 \| 分隔,组件由 ^ 分隔 |
JSON (或 XML) |
| 传输 | 通常在医院网络内部通过 TCP 上的 MLLP | HTTPS REST |
| 查询 | 有限;系统主要推送 | 搜索参数、_include、历史记录 |
| 安全 | 网络级别(VPN、私有链接) | OAuth 2.0 / SMART on FHIR、TLS、范围 |
| 灵活性 | 许多可选字段和本地 Z-段;每个接口都需要协商 | 基础资源加上配置文件(US Core、IPS、European IGs) |
| 典型用户 | 医院内部的 EHR、实验室、放射科、计费系统 | 应用、患者访问 API、跨组织交换、AI |
最常见的 v2 消息:
| 消息 | 含义 | 最接近的 FHIR 资源 |
|---|---|---|
| ADT^A01, A03, A08 | 入院、出院、更新患者 | Patient、Encounter |
| ORM / OML | 医嘱检查 | ServiceRequest |
| ORU^R01 | 结果就绪 | Observation、DiagnosticReport |
| SIU | 计划 | Appointment |
| MDM | 文档 | DocumentReference |
相同的实验室结果在两者中
ORU^R01 结果行(OBX 段):
OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
与 HL7 FHIR R4 Observation 相同的、Anpheros 导入该消息后存储的结果:
{
"resourceType": "Observation",
"status": "final",
"category": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/observation-category", "code": "laboratory"}]}],
"code": {"coding": [{"system": "http://loinc.org", "code": "2093-3", "display": "Cholesterol [Mass/volume] in Serum or Plasma"}], "text": "Cholesterol"},
"effectiveDateTime": "2026-10-02T07:45:00Z",
"valueQuantity": {"value": 212.0, "unit": "mg/dL"},
"interpretation": [{"coding": [{"system": "http://terminology.hl7.org/CodeSystem/v3-ObservationInterpretation", "code": "H"}]}],
"referenceRange": [{"high": {"value": 200.0, "unit": "mg/dL"}}]
}
逐字段对照:OBX-3 变为 code,OBX-5 和 OBX-6 变为 valueQuantity,OBX-7 referenceRange,OBX-8 interpretation,OBX-11 status,OBX-14 effectiveDateTime。HL7 发布了官方的 HL7 Version 2 to FHIR 实现指南,其中包含段、数据类型和词汇表的映射。
翻译中的常见错误
- 时区。 v2 时间戳(例如
20261002074500)通常不包含偏移量;您必须知道发送者的时区。FHIR 在存在时间时需要时区。(Anpheros 将未带时区的 v2 时间读取为 UTC;如果您有偏移量,请发送它。) - 本地代码。 许多实验室在 OBX-3 中使用自己的代码而不是 LOINC。好的翻译会保留本地代码,并在可能的情况下将其映射到 LOINC,而不是丢弃它。
- 重复发送。 v2 发送者在超时时会重新传输。如果没有每个结果的稳定标识符,FHIR 存储将充满重复项。
- 一切皆可选。 同一个字段可能为空、重复,或者被两个发送者以不同的方式使用。验证 FHIR 端;FHIR R4 validator 显示了翻译后的资源缺少什么。
- 更正。 v2 结果状态
C(已更正)应更新现有 Observation 并保留其历史记录,而不是创建第二个。
何时使用哪种标准
- 在医院内部,现有系统之间: v2 通常是系统之间沟通的语言。集成引擎负责路由和转换消息。
- 构建应用程序、患者访问 API 或任何跨组织的系统: 使用 FHIR,并结合 OAuth 和授权。
- 为 AI 或分析提供数据: 使用 FHIR,因为它易于查询、编码且版本化。
- 两者兼顾: 常见的实际应用模式——从实验室或 EHR 接收 v2 数据,存储为 FHIR 格式,然后为应用程序提供 FHIR 数据。
Anpheros 的定位
Anpheros 将患者记录存储为 FHIR R4 格式,并接受一种 HL7 v2 消息类型:ORU^R01 实验室结果,通过 HTTPS 发送到 lab connector(POST /v1/patients/{id}/labs/import 和 Content-Type: x-application/hl7-v2+er7)。每个 OBX 都将成为一个实验室 Observation,包含 LOINC 代码、参考范围和解释;报告 ID 保存在 provenance 中,重复发送的报告将被跳过。修正后的结果(OBX-11 = C)带有新值,将作为状态为 amended 的新 Observation 存储;原始记录保持不变,因此如果您的源系统发送修正,请将之前的 Observation 标记为 entered-in-error 或通过 FHIR API 进行更新。一个工作示例是 Lab results API。
它不接受其他 v2 消息(ADT、订单、调度),不监听 MLLP,也不发送 v2。对于这些场景,Anpheros 前端的集成引擎会将消息转换为 FHIR 并通过 API 写入。
常见问题解答
FHIR 会取代 HL7 v2 吗?
短期内不会。v2 仍然是大多数医院的骨干,因为它有效且已集成到现有系统中。FHIR 正在围绕它发展——在应用程序、患者访问和组织间的交换中——两者共存,通常需要进行转换。
MLLP 是什么?
Minimal Lower Layer Protocol:一种在 TCP 连接上封装 v2 消息的简单方法,每条消息前后都有起始和结束字符,并带有确认 (ACK) 回复。FHIR 使用 HTTPS。
我可以自动将 HL7 v2 消息转换为 FHIR 吗?
大部分可以。HL7 的 v2-to-FHIR 实现指南提供了标准映射,集成引擎会实现它们。对于本地代码、Z-segments、时区以及每个发送者如何使用可选字段,预计需要手动处理。
Anpheros 是否支持 HL7 v2?
是的,用于实验室结果:通过 HTTPS 发布到实验室连接器的 ORU^R01 消息会转换为 FHIR Observations。不支持其他 v2 消息类型和 MLLP 连接。
相关资源
- HL7 v2 到 FHIR 映射:段和字段映射,以及转换器
- 实验室结果 API:HL7 v2、FHIR 和 LOINC
- 如何将实验室结果导入 FHIR 记录
- 医疗保健数据互操作性
- DICOM 与 FHIR:影像数据和临床数据
- FHIR 平台
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card