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”的结果无法安全地进行解释。一个完整的结果应包含:
- 标准代码。 LOINC 用于识别分析物、标本和方法:
2345-7表示血清或血浆中的葡萄糖,2339-0表示全血中的葡萄糖。实验室自己的代码可以与其一同传输。 - 带有单位的值。 理想情况下应使用 UCUM 单位(
mg/dL、mmol/L、10*3/uL),这样来自不同实验室的值就可以进行转换和比较。 - 实验室使用的参考范围,以及实验室提供的解释标志(H、L、N…)。
- 状态: 初步、最终、已更正或已修订。更正时有发生;API 必须允许您在不丢失旧版本的情况下查看新版本。
- 时间: 标本采集时间(
effectiveDateTime)和结果发布时间(issued)。 - 来源: 哪个实验室出具了该结果,以及该结果属于哪个报告或医嘱。
在 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"
其他数据输入和输出方式:
- 直接 FHIR:
POST /fhir/R4/Observation,或一个包含DiagnosticReport及其 Observation 的事务 Bundle。 - 事件: 每个 Observation 一个
resource.createdwebhook,以便诊所或应用程序在结果到达时做出反应。 - 面向人类和 AI: 患者在其应用程序中查看结果;他们同意的应用程序读取结果;
POST /v1/context为 AI 模型提供一个包含近期实验室值的、带有来源标签的摘要。 - 来源: 每条导入的结果都会记录
author_type = import、源系统和报告 ID(医疗数据来源)。
完整的演练,包括 CSV 报告、HL7 v2 消息、未映射的标记和合成患者的重复报告,请参阅教程 如何将实验室结果导入 FHIR 记录。
发送前检查结果
免费的 FHIR R4 验证器 会检查 Observation 的结构和必需的值集,并且通过 eu-lab 配置文件,它还会检查实验室结果应包含的内容:laboratory 类别、LOINC 代码、主题、最终类型状态、时间、值、UCUM 单位和参考范围。平台通过 POST /fhir/R4/Observation/$validate?profile=eu-lab 运行相同的检查。
选择实验室结果 API:清单
- 它是否将结果存储为带有 LOINC 编码的 FHIR R4 Observations,还是存储在其自己的模式的行中?
- 它是否能接受您的实验室实际发送的格式(大多数医院使用 HL7 v2,小型实验室使用 CSV 或 PDF)?
- 对于无法映射的标记,会发生什么:是被拒绝、丢弃还是保留实验室代码?
- 重试是否安全,或者重新发送的报告是否会创建重复项?
- 更正后的结果是否已版本化,并且可以读取早期值?
- 每个值的来源是否已记录并对患者可见?
- 谁可以读取结果,这是否由患者的同意决定?
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。
相关资源
- HL7 v2 到 FHIR 映射:每个段和 OBX 字段
- 如何将实验室结果导入 FHIR 记录:分步教程
- 实验室连接器:端点参考
- 如何规范化医疗数据:LOINC、UCUM、日期、范围和重复项
- 医疗数据溯源详解
- FHIR 代码系统
- 如何将诊所系统与 FHIR 后端集成
- FHIR 与 HL7 v2:实际区别
- HL7 v2 和 FHIR 用于临床仪表板:从实验室消息到仪表板磁贴
Try it free in the sandbox · first FHIR call in 5 minutesFree · 30 synthetic patients · no card