Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card
HL7 v2 到 FHIR 映射
从 HL7 v2 ORU^R01 到 FHIR R4 的段到资源和 OBX 字段到字段的映射,导致集成失败的陷阱,以及一个可通过 HTTPS 调用的转换器。
将 HL7 v2 映射到 FHIR 意味着将管道分隔的 v2 消息的每个段转换为 FHIR R4 资源:PID 映射到 Patient,OBR 映射到 DiagnosticReport(或 ServiceRequest),每个 OBX 映射到 Observation,代码、单位、范围和时间按字段逐一传递。 HL7 发布了官方的 V2-to-FHIR implementation guide,其中包含常见段的概念映射。本页提供了实验室结果(ORU^R01)的实际映射、导致实际集成中断的陷阱,以及一个可以通过 HTTPS 调用的转换器:Anpheros lab connector。
- MSHSeparators, message type, message id → MessageHeader or provenance
- PIDPatient identity → Patient (or, in Anpheros, the patient in the URL)
- OBRThe order and report → DiagnosticReport, report id and date
- OBXOne result each → Observation with LOINC, value, range, flag
- FHIR recordCoded, versioned resources your apps can read
段到资源
| HL7 v2 段 | 包含内容 | FHIR R4 资源 | Anpheros 实验室连接器中的对应 |
|---|---|---|---|
| MSH | 分隔符、发送系统、消息类型、消息 ID | MessageHeader (或 provenance) |
从 MSH 读取分隔符;检查 ORU^R01 类型;保留消息 ID 以供追溯 |
| PID | 患者标识符、姓名、出生日期、性别 | Patient |
未使用:患者是请求 URL 中的患者,因此消息无法写入错误的记录 |
| PV1 | 就诊 | Encounter |
未使用 |
| ORC / OBR | 订单和报告:执行者/放置者 ID、日期 | ServiceRequest, DiagnosticReport |
OBR-3 (或 OBR-2) 是报告 ID,OBR-7 是默认日期 |
| OBX | 单个结果 | Observation |
每个 OBX 对应一个实验室 Observation |
| NTE | 自由文本注释 | Observation.note |
未使用 |
OBX 字段详解
| OBX 字段 | FHIR Observation 元素 | 备注 |
|---|---|---|
| OBX-2 值类型 (NM, SN, ST, CWE) | value[x] 的选择项 |
NM 和 SN 转换为 valueQuantity;文本保持不变 |
OBX-3 标识符 code^text^system |
code.coding |
OBX-3.3 中的 LN 表示 LOINC;其他系统为实验室本地代码 |
| OBX-5 值, OBX-6 单位 | valueQuantity.value, .unit / .code (UCUM) |
<5 和 6,4 必须仔细解析 |
| OBX-7 参考范围 | referenceRange.low / .high |
3.5-5.1, <200, >40 |
| OBX-8 异常标志 | interpretation |
H, L, HH, LL, A, N |
| OBX-11 结果状态 | status |
F → final (最终), C → amended (已修改), P → preliminary (初步), I → registered (已注册) |
| OBX-14 观察时间 | effectiveDateTime |
v2 时间通常缺少时区;FHIR 需要时区 |
转换包含一个请求的消息
curl -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: x-application/hl7-v2+er7" \
-H "Idempotency-Key: $(uuidgen)" \
--data-binary @oru_r01.hl7
结果列表显示了创建了多少 Observation,跳过了多少(因为已导入),哪些标记无法映射,以及新的 Observation 及其代码。每个 Observation 都会获得一个源自报告、测试、时间和值的稳定标识符,因此,如果实验室重新发送相同的消息,也不会创建重复项。
导致实际集成失败的陷阱
- 时区。
20261002074500没有偏移量;请明确指定发送方的时区。 - 本地代码。 当没有 LOINC 时,请保留实验室自己的代码;切勿丢弃。
- 重发。 如果没有每个结果的稳定标识符,重试将导致重复。
- 更正。 OBX-11
C是一个更正;请决定它是替换还是添加,并标记旧结果。 - 非数值。
positive、<5、6,4需要明确的规则,而不是猜测。
连接器不具备的功能
它通过 HTTPS 接收 ORU^R01 实验室结果。它不接收 ADT 或订单消息,不通过 TCP 进行 MLLP 通信(前面的接口引擎可以转发),不创建 DiagnosticReport,也不通过 PID 匹配患者。
常见问题解答
如何将 HL7 v2 映射到 FHIR?
逐段映射:PID 到 Patient,PV1 到 Encounter,ORC/OBR 到 ServiceRequest 和 DiagnosticReport,OBX 到 Observation,NTE 到 notes。HL7 的 V2-to-FHIR 实现指南定义了字段级别的概念映射。
是否有 HL7 v2 到 FHIR 的转换器?
有。接口引擎和开源库可以转换消息;对于实验室结果,Anpheros 实验室连接器将 ORU^R01 消息转换为 FHIR R4 Observations,在一个 HTTPS 请求中完成,并将其存储在患者记录中。
Anpheros 接受哪些 HL7 v2 消息类型?
ORU^R01 实验室结果。其他类型的消息会收到警告,并且只读取其 OBX 段;不支持 ADT、订单和其他消息。
HL7 v2 中的异常标志如何在 FHIR 中表示?
OBX-8 使用 HL7 ObservationInterpretation 代码(H、L、HH、LL、A、N)转换为 Observation.interpretation。
相关
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card