# HL7 v2 和 FHIR 在临床仪表盘中的应用

> 从 HL7 v2 ORU^R01 实验室消息到仪表盘磁贴：带有范围和标志的 FHIR Observations，签名的 Webhook，无重复项 — 以及为什么这不是床边监控。

Source: https://developers.anpheros.com/zh/guides/clinical-dashboard-hl7-fhir

**临床仪表盘需要结构化、编码后的数据作为结果，并在报告时立即可用 — 测试项目、值、单位、参考范围和标志 — 而不是需要读取的 PDF。** 实验室仍然以 HL7 v2 ORU^R01 消息的形式发送大多数结果，而仪表盘最容易基于 FHIR R4 Observations 构建。Anpheros 位于两者之间：实验室系统通过 HTTPS 发布 HL7 v2 消息（或 CSV 或 JSON 报告），每个结果都成为一个 FHIR Observation，包含其代码（如果实验室发送了，则为 LOINC）、值和参考范围，并且一个签名的 Webhook 会通知您的仪表盘新结果已到达。

<!-- visual:dashboard-pipeline -->

## 仪表板接收的内容

消息中的每个 OBX 段都成为一个实验室的 Observation：

| HL7 v2 OBX 字段 | FHIR R4 Observation | 在仪表板上 |
|---|---|---|
| OBX-3 test code | `code` (如果实验室发送，则为 LOINC；本地代码保留为实验室的代码) | 测试名称；LOINC 使其在不同实验室之间具有可比性 |
| OBX-5 value, OBX-6 unit | `valueQuantity` (UCUM unit) | 数字及其单位 |
| OBX-7 reference range | `referenceRange` | 正常范围 |
| OBX-8 abnormal flag | `interpretation` (H, L, …) | 红色或蓝色标记 |
| OBX-14 time | `effectiveDateTime` | 采样时间 |

<!-- visual:dashboard-mock -->

## 导入消息并响应

发送您创建的患者的消息（或您拥有权限的患者的消息）：

```ts
import { readFile } from 'node:fs/promises';
import { Anpheros, apiKey } from '@anpheros/sdk';

const anpheros = new Anpheros({ auth: apiKey(process.env.ANPHEROS_KEY!) });   // a sandbox key, sk_test_…
const message = await readFile('oru_r01.hl7', 'utf8');
const result = await anpheros.labs.importHl7(patientId, message, { sourceSystem: 'lab-lis' });
console.log(result);   // created, skipped and unmapped counts
```

然后让平台调用您的仪表板后端，而不是轮询它：

```ts
await anpheros.webhooks.create('https://dashboard.example.org/anpheros/hook', { events: ['resource.created'] });
```

每次传递都会签名（使用 SDK 中的 `verifyWebhookSignature` 进行验证），如果您的服务器没有响应，则会重试。事件包含资源类型、ID 和患者；读取新的 Observations 并刷新图块。重复发送的报告将被跳过，因此在超时时重新传输的实验室不会在屏幕上创建重复的行。

## 为每个链接选择 HL7 v2 或 FHIR

| 链接 | 用途 | 原因 |
|---|---|---|
| Laboratory → data layer | HL7 v2 ORU^R01 (或 CSV/JSON) | 实验室系统已发出；无需更改其端 |
| Data layer → dashboard | FHIR R4 Observation + webhooks | 您的前端可以直接读取的编码、版本化的 JSON |
| Dashboard → other apps | FHIR R4，在患者同意下 | 每个消费者的一个标准 |

## 这不是什么

- **不是床边监护仪数据源。** Anpheros 通过 HTTPS 接收实验室报告。它不接收来自重症监护监护仪的连续波形或设备流，也不是警报系统：影响护理的警报需要经过认证的临床系统。
- **不是 MLLP 接口引擎。** 消息通过 HTTPS 到达；如果您的实验室只支持 TCP 上的 MLLP，则需要一个前端接口引擎进行转发。
- **一种 HL7 v2 消息类型。** 接受 ORU^R01 实验室结果；不接受订单（ORM/OML）和 ADT 消息。

## 常见问题解答

### 仪表板可以直接读取 HL7 v2 实验室结果吗？
可以，但每个仪表板都需要自己的 HL7 v2 解析器、代码映射和去重逻辑。一次性转换为 FHIR R4 Observations 并使用 LOINC 代码，可以为每个屏幕提供相同干净的数据。

### 导入的结果多久能到达仪表板？
导入请求在 Observations 存储后返回，同时为每个 Observation 排队一个 `resource.created` 类型的 webhook。如果您的端点不可用，将重试投递。

### 异常结果如何标记？
OBX-8 成为 Observation 的 `interpretation` (例如 H 或 L)，OBX-7 成为其 `referenceRange`，这样仪表板就可以同时显示标记和正常范围。

### Anpheros 支持 ICU 监控吗？
不支持。它存储实验室和临床结果，并通知您的系统有关新数据的信息；连续的床边监控和临床警报仍由经过认证的医疗设备处理。

<!-- visual:cta-dashboard -->

## 相关资源

- [实验室结果 API：HL7 v2、FHIR 和 LOINC](https://developers.anpheros.com/zh/guides/lab-results-api)
- [如何将实验室结果导入 FHIR 记录](https://developers.anpheros.com/zh/guides/import-lab-results-fhir)
- [实验室连接器](https://developers.anpheros.com/zh/guides/lab-connector)：端点参考
- [FHIR 与 HL7 v2：实际区别](https://developers.anpheros.com/zh/guides/fhir-vs-hl7-v2)
- [使用 FHIR 进行远程患者监控](https://developers.anpheros.com/zh/guides/remote-patient-monitoring-fhir)
- [Webhooks](https://developers.anpheros.com/zh/guides/webhooks)
