# クリニカルダッシュボードのためのHL7 v2とFHIR

> HL7 v2 ORU^R01ラボメッセージからダッシュボードタイルへ：範囲とフラグ付きFHIR Observation、署名付きWebhook、重複なし — そしてなぜこれがベッドサイドモニタリングではないのか。

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

**クリニカルダッシュボードは、レポートされた瞬間に構造化されたコード化データとして結果を必要とします — テスト、値、単位、参照範囲、フラグ — 読み取る必要のあるPDFではなく。** 多くの結果は依然としてラボからHL7 v2 ORU^R01メッセージとして送信されますが、ダッシュボードはFHIR R4 Observationで構築するのが最も簡単です。Anpherosがその間に位置します：ラボシステムはHTTPS経由でHL7 v2メッセージ（またはCSVまたはJSONレポート）を投稿し、各結果はコード（ラボが送信した場合はLOINC）、値、参照範囲を持つFHIR Observationとなり、署名付きWebhookが新しい結果が到着したことをダッシュボードに通知します。

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

## ダッシュボードが受信するもの

メッセージの各OBXセグメントは、1つの検査結果（Laboratory 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、および患者を運びます。新しいObservationを読み取り、タイルを更新します。再送信されたレポートはスキップされるため、タイムアウト時に再送信する検査機関は画面に重複行を作成しません。

## 各リンクにおける 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 経由で到着します。ラボが MLLP over TCP のみを使用する場合、前面のインターフェイスエンジンが転送します。
- **HL7 v2 メッセージタイプは1つです。** ORU^R01 の検査結果は受け付けますが、オーダー (ORM/OML) および ADT メッセージは受け付けません。

## よくある質問

### ダッシュボードはHL7 v2の検査結果を直接読み取れますか？
読み取ることは可能ですが、ダッシュボードごとにHL7 v2パーサー、コードマッピング、重複排除が必要になります。一度FHIR R4 ObservationsにLOINCコードで変換することで、すべての画面で同じクリーンなデータを利用できます。

### インポートされた結果はダッシュボードにどのくらいの速さで到達しますか？
インポートリクエストは、Observationsが保存された時点で返され、同時にそれぞれに対して`resource.created`のWebhookがキューイングされます。エンドポイントが利用できない場合は、配信が再試行されます。

### 異常な結果はどのようにフラグ付けされますか？
OBX-8はObservationの`interpretation`（例: HまたはL）になり、OBX-7はその`referenceRange`になるため、ダッシュボードはフラグと正常範囲の両方を表示できます。

### AnpherosはICUモニタリングをサポートしていますか？
いいえ。Anpherosは検査結果および臨床結果を保存し、新しいデータについてシステムに通知します。継続的なベッドサイドモニタリングおよび臨床アラームは、認定された医療機器に残ります。

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

## 関連情報

- [検査結果API: HL7 v2, FHIR, LOINC](https://developers.anpheros.com/ja/guides/lab-results-api)
- [FHIRレコードへの検査結果のインポート方法](https://developers.anpheros.com/ja/guides/import-lab-results-fhir)
- [ラボコネクタ](https://developers.anpheros.com/ja/guides/lab-connector): エンドポイントリファレンス
- [FHIRとHL7 v2の実際の違い](https://developers.anpheros.com/ja/guides/fhir-vs-hl7-v2)
- [FHIRによる遠隔患者モニタリング](https://developers.anpheros.com/ja/guides/remote-patient-monitoring-fhir)
- [Webhook](https://developers.anpheros.com/ja/guides/webhooks)
