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 実装ガイド を公開しています。このページでは、検査結果 (ORU^R01) の実際のマッピング、実際の統合を妨げる落とし穴、そして HTTPS 経由で呼び出せるコンバーター、すなわち Anpheros ラボコネクターについて説明します。

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 オーダーとレポート: filler/placer ID、日付 ServiceRequest, DiagnosticReport OBR-3 (または OBR-2) はレポートID、OBR-7 はデフォルトの日付
OBX 1つの結果 Observation OBX ごとに 1 つのラボ Observation
NTE フリーテキストノート Observation.note 使用しない

OBXフィールドごとのマッピング

OBXフィールド FHIR Observation 要素 備考
OBX-2 value type (NM, SN, ST, CWE) choice of value[x] NM および SN は valueQuantity になります。テキストはそのままテキストとして扱われます。
OBX-3 identifier code^text^system code.coding OBX-3.3 の LN は LOINC を意味します。その他のシステムは、検査機関のローカルコードです。
OBX-5 value, OBX-6 unit valueQuantity.value, .unit / .code (UCUM) <5 および 6,4 は意図的に解析する必要があります。
OBX-7 reference range referenceRange.low / .high 3.5-5.1, <200, >40
OBX-8 abnormal flag interpretation H, L, HH, LL, A, N
OBX-11 result status status F → final, C → amended, P → preliminary, I → registered
OBX-14 observation time effectiveDateTime v2 の時刻にはタイムゾーンがないことがよくありますが、FHIR では必須です。

1つのリクエストでメッセージを変換する

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がリストされます。それぞれにレポート、テスト、時間、値から派生した安定した識別子が割り当てられるため、同じメッセージを再送信しても重複は作成されません。

実運用で問題となる落とし穴

  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 に1回の HTTPS リクエストで変換し、患者の記録に保存します。

Anpheros はどの HL7 v2 メッセージタイプを受け入れますか?

ORU^R01 検査結果です。他のタイプのメッセージは警告が表示され、OBX セグメントのみが読み取られます。ADT、オーダー、その他のメッセージはサポートされていません。

HL7 v2 の異常フラグは FHIR でどのように表現されますか?

HL7 ObservationInterpretation コード(H, L, HH, LL, A, N)を使用して、OBX-8 は 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