AnpherosAnpheros PlatformDevelopers

Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card

实验室结果 API:HL7 v2、FHIR 和 LOINC

实验室结果如何以 HL7 v2 和 FHIR R4 数据形式传输,一个结果必须包含什么,以及如何将实验室报告接收到 FHIR 记录中,附带实际示例。

实验室结果 API 以结构化数据的形式提供实验室结果——测试代码、值、单位、参考范围、状态和时间——而不是 PDF,以便软件能够存储、比较、绘制图表和共享它们。 今天,这些数据以三种形式传输:HL7 v2 ORU^R01 消息(仍然是实验室和医院之间的骨干)、HL7 FHIR R4 Observation 和 DiagnosticReport 资源(现代 API 的格式),以及实验室特定的 CSV、JSON 或 PDF 导出。本页将解释这些组件如何协同工作,一个好的实验室结果 API 必须包含哪些内容,以及如何使用 Anpheros 将实验室数据接收到患者的 FHIR 记录中。

谁交换实验室结果,以及使用什么格式

从 → 到 当今常用格式 备注
实验室 → 医院或诊所系统 HL7 v2 ORU^R01 (在美国,通常遵循 HL7 v2.5.1 实验室结果接口指南) 订单以 ORM/OML 消息的形式发送到另一个方向
实验室 → 公共卫生机构 HL7 v2 电子实验室报告,日益增多的 FHIR 仅报告的疾病
诊所系统 → 患者应用程序 通过患者访问 API 的 FHIR R4 在美国,经过认证的 EHR 将实验室结果作为 FHIR (US Core) 公开;在欧盟,欧洲健康数据空间将实验室结果列为其优先数据类别之一
实验室 → 患者 PDF 报告、门户网站,有时是 CSV 患者实际收到的格式
应用程序 → AI 模型 从 Observations 构建的结构化上下文 需要代码和单位才能可靠

方向很重要:实验室信息系统 (LIS) 是结果的真相来源,下游的每个系统都会保留一份副本。使副本值得信赖的是,每个副本都保留了值的代码、单位、范围和来源。

一个实验室结果需要包含什么信息

仅仅显示“葡萄糖 126”的结果无法安全地进行解释。一个完整的结果应包含:

在 FHIR R4 中,每个结果是一个 Observation,包含 category = laboratory,而将它们分组的报告是一个 DiagnosticReport,它在 result 中列出了 Observations。在 FHIR R4 JSON 示例 中可以找到两者的有效示例,其中包含验证器报告最多的错误——另请参阅 DiagnosticReport 示例。

HL7 v2 与 FHIR 并行

今天大多数实验室发送的相同血脂检查结果,以及 API 应如何存储:

OBX|1|NM|2093-3^Cholesterol^LN||212|mg/dL|<200|H|||F|||20261002074500
HL7 v2 字段 含义 FHIR R4 Observation 元素
OBX-3 2093-3^Cholesterol^LN 测试,使用 LOINC 编码 code.coding (系统 http://loinc.org)
OBX-5 212, OBX-2 NM 数值 valueQuantity.value
OBX-6 mg/dL 单位 valueQuantity.unit
OBX-7 <200 参考范围 referenceRange.high
OBX-8 H 异常标志 interpretation
OBX-11 F 最终结果 status = final
OBX-14 观察时间 effectiveDateTime

两者之间的转换主要是字段映射。难点在于其他方面:实验室发送自己的代码而不是 LOINC,数字以文本形式表示 ("6,4", "<5"),范围表示法多样,以及超时后重复发送的报告。如何规范化医疗数据 详细介绍了这些内容。

使用 Anpheros 将实验室结果接收到 FHIR 记录中

Anpheros 将每个患者的记录存储为 HL7 FHIR R4,并提供一个 实验室连接器:一次请求即可接收 HL7 v2、CSV 或 JSON 格式的完整报告,并返回带有 LOINC 代码、参考范围、解释和来源的实验室 Observation。

curl -s -X POST "https://platform.anpheros.com/v1/patients/$PID/labs/import" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: x-application/hl7-v2+er7" \
  -H "X-Anpheros-Source-System: springfield-lis" \
  --data-binary @lipid-panel.hl7

对于三项脂质检查(胆固醇、HDL、甘油三酯),本地运行平台的响应如下:

{
  "created": 3, "skipped": 0, "unmapped": [], "warnings": [],
  "observations": [
    {"id": "26ed9219-…", "marker": "Cholesterol", "code": "2093-3", "system": "http://loinc.org",
     "value": 212.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "2633d1d4-…", "marker": "HDL cholesterol", "code": "2085-9", "system": "http://loinc.org",
     "value": 48.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"},
    {"id": "a02520bb-…", "marker": "Triglyceride", "code": "2571-8", "system": "http://loinc.org",
     "value": 165.0, "unit": "mg/dL", "date": "2026-10-02T07:45:00Z"}
  ]
}

每个存储的结果都是标准的 FHIR R4 Observation,任何 FHIR 客户端都可以读取:

{
  "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"},
  "subject": {"reference": "Patient/4c3062d9-…"},
  "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"}}]
}

再次发送相同的消息不会创建任何新内容 ("created": 0, "skipped": 3):每一行都从报告 ID、代码、日期和值中获得一个稳定的标识符。平台无法映射到 LOINC 的标记会保留实验室的代码,并在 unmapped 中返回,以便您从源头修复映射。

读取结果是一个标准的 FHIR 搜索:

curl -s "https://platform.anpheros.com/fhir/R4/Observation?patient=$PID&category=laboratory&code=http://loinc.org|2093-3" \
  -H "Authorization: Bearer $KEY"

其他数据输入和输出方式:

完整的演练,包括 CSV 报告、HL7 v2 消息、未映射的标记和合成患者的重复报告,请参阅教程 如何将实验室结果导入 FHIR 记录。

发送前检查结果

免费的 FHIR R4 验证器 会检查 Observation 的结构和必需的值集,并且通过 eu-lab 配置文件,它还会检查实验室结果应包含的内容:laboratory 类别、LOINC 代码、主题、最终类型状态、时间、值、UCUM 单位和参考范围。平台通过 POST /fhir/R4/Observation/$validate?profile=eu-lab 运行相同的检查。

选择实验室结果 API:清单

Anpheros 不做什么

Anpheros 不是一个实验室信息系统,也不连接到商业实验室网络:报告由实验室、诊所或患者的应用程序发送。它不路由实验室订单,不通过此 API 读取 PDF 报告(Anpheros Daily 应用从患者端的照片和 PDF 中提取结果),也不进行临床结果解读。单位按实验室发送的方式存储;将其转换为 UCUM 代码由发送方负责,如如何规范化医疗数据中所述。

常见问题解答

什么是实验室结果 API?

一种允许软件以结构化数据形式发送或接收实验室结果的接口——即编码的测试、带单位的值、参考范围、状态和时间——而不是以文档形式。现代实验室结果 API 使用 HL7 FHIR R4 Observation 和 DiagnosticReport 资源;大多数实验室仍然发出 HL7 v2 ORU^R01 消息。

哪个代码系统标识实验室测试?

LOINC。每个 LOINC 代码都命名了分析物、标本,通常还有方法,因此 2345-7(血清或血浆中的葡萄糖)和 2339-0(全血中的葡萄糖)是不同的结果。单位最好用 UCUM 表示。

Observation 和 DiagnosticReport 之间有什么区别?

Observation 是一个结果,例如胆固醇 212 mg/dL。DiagnosticReport 是整个报告——订购的组合测试、签发者和时间——并列出了其 Observation,如 result 所示。

我可以将 HL7 v2 实验室消息导入 FHIR 服务器吗?

可以。每个 OBX 段映射到一个 Observation(OBX-3 到 code,OBX-5 和 OBX-6 到 valueQuantity,OBX-7 到 referenceRange,OBX-8 到 interpretation)。Anpheros 实验室连接器在一个请求中完成此操作,并将实验室的报告 ID 保存在 Provenance 中。

如何避免在报告被重新发送时出现重复的实验室结果?

为每个结果分配一个源自报告、测试、时间和值的稳定标识符,并跳过标识符已存在的行。Anpheros 实验室连接器会自动执行此操作,并将计数报告为 skipped。

相关资源

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