AnpherosAnpheros PlatformDevelopers

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。

An ORU^R01 message becoming FHIR
  1. MSHSeparators, message type, message id → MessageHeader or provenance
  2. PIDPatient identity → Patient (or, in Anpheros, the patient in the URL)
  3. OBRThe order and report → DiagnosticReport, report id and date
  4. OBXOne result each → Observation with LOINC, value, range, flag
  5. 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 都会获得一个源自报告、测试、时间和值的稳定标识符,因此,如果实验室重新发送相同的消息,也不会创建重复项。

导致实际集成失败的陷阱

  1. 时区。 20261002074500 没有偏移量;请明确指定发送方的时区。
  2. 本地代码。 当没有 LOINC 时,请保留实验室自己的代码;切勿丢弃。
  3. 重发。 如果没有每个结果的稳定标识符,重试将导致重复。
  4. 更正。 OBX-11 C 是一个更正;请决定它是替换还是添加,并标记旧结果。
  5. 非数值。 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

Product updates by email

New features, guides and the end of the beta. One email a month at most.

Send me occasional Anpheros Platform updates by email (new features, API changes, guides). I'll confirm by email and can unsubscribe in one click from any email. Privacy