java または python を使用して HL7 v2.x メッセージを FHIR JSON に変換しようとしています。しかし、私は解決策を見つけることができません。これを達成する方法はありますか?
FHIR は JSON に変換できることがわかりましたが、その方法がわかりません。
ここに提案があります:
// Modify the message variable below to pre process data
message = SerializerFactory.getSerializer('HL7V2').toXML(message);
return message;
HL7 2.x について
HL7 2.x バージョンは、標準の一部としてXML も JSON もサポートしていません。
HL7 バージョン 2.5 以前のバージョン 2 v2.xml XML スキーマは、Sun Microsystems によって提供されました。XML スキーマは XML 表現を記述するコンパクトで具体的な方法であるため、これらの表現は便宜上提供されています。ただし、スキーマ自体は、この仕様の規範的な部分ではありません。
hl7.org
上記のように、「v2.xml XML スキーマ」は仕様の一部ではありません。それらは追加の貢献です。
この仕様の目的は、HL7 バージョン 2.3.1、2.4、2.5、および将来の 2.x メッセージのエンコード規則を、送信者と受信者の両方が XML を理解する環境で使用できる拡張マークアップ言語 XML に基づいて提示することです。v2.xml 仕様は、v2.3.1、v.2.4、および v2.5 (および HL7 v2.x 標準の将来のリリース) の 2 番目の標準エンコーディングとして機能することを目的としています。
hl7.org
以下はウィキペディアからの引用です。
HL7 v2.x メッセージは、セグメント (行) と 1 文字の区切り記号wikipediaに基づく非 XML エンコーディング構文を使用します
HL7 v3.x について
HL7 v3.x バージョンは、標準の一部として XML をサポートしています。
HL7 V3 メッセージのメッセージング構文として、いくつかの XML エンコーディング メソッドを使用できます。このドキュメントは、HL7 で推奨されている方法を表し、基本的なルールと原則を説明しています。この仕様に必要な対応するデータ型の説明は、データ型 XML ITS で説明されています。
hl7.org
以下は、「HL7 V3 ガイド」からの引用です。
HL7 はそのメッセージを抽象レベルで定義します。HL7 の「7」は、ISO 通信モデルのアプリケーション レベル (ISO レベル 7) を表します。このレベルは、メッセージがどのように表現されるかではなく、これらの表現が送信のためにどのようにエンコードされるかではなく、メッセージのセマンティック コンテンツを強調します。
HL7 はそのメッセージを抽象レベルで定義します。HL7 の「7」は、ISO 通信モデルのアプリケーション レベル (ISO レベル 7) を表します。このレベルは、メッセージがどのように表現されるかではなく、これらの表現が送信のためにどのようにエンコードされるかではなく、メッセージのセマンティック コンテンツを強調します。
HL7 バージョン 2 の抽象メッセージ モデルには、セグメントとフィールドの概念があります。これは、抽象的なメッセージのインスタンスを表す特定のエンコーディング スキームを定義します。いわゆる「垂直バー エンコーディング」です。ヘルス ドメイン (セマンティック レベル 7) からの情報は、バージョン 2 ではセグメントとフィールドとして表され、多数の垂直バーを含む ASCII 文字として表されます。このアプローチと一致して、V2 の新しい XML エンコーディングは、ほとんどが垂直バー エンコーディングの直接的な置き換えです。
バージョン 3 の抽象メッセージ モデルは、RIM に基づいています。HL7 バージョン 3 メッセージは、送信側から受信側への RIM オブジェクトのグラフの通信と考えることができます。ITS は、オブジェクト、属性、およびデータ型を適切に表現することで、これらのメッセージを表現するのに最適です。
hl7.ihelse.net
以下はウィキペディアからの引用です。
HL7 v3 メッセージは、XML エンコーディング構文のウィキペディアに基づいています。
互換性の詳細については、こちらをご覧ください。
それらのいずれも、標準の一部として JSON をサポートしていません。
したがって、HL7 から XML への変換、または HL7 から JSON への変換は規格外です。それを自分で処理する必要があります。
FHIR (Fast Healthcare Interoperability Resources) について
FHIR は、HL7 によって発行された医療データ交換の標準です。
HL7 と FHIR の関係については、こちらを参照してください。
FHIRは、標準の一部としてXMLとJSONの両方の形式をサポートしています。詳細については、これらのリンクを参照してください。
v2 から FHIR への変換:
この変換には、大まかに次の 2 つの方法があります。
- v2 メッセージの内容をミラーリングし、v2 メッセージと同じように動作する同等の表現を意図した FHIR メッセージ バンドルの作成
- v2 メッセージのコンテンツを使用して FHIR サーバーを更新します。おそらく、Encounter リソースを抽出するか、FHIR サーバーに対する「トランザクション」バンドルとして機能することを目的としたバンドルを作成します。これはもっと一般的なユースケースになると思います。
変換の詳細については、そのブログをお読みください。コミュニティは変換に取り組んでいます。すぐに使えるソリューションがすぐに利用可能になることを願っています。
v2 と FHIR の間の変換は、コミュニティが取り組んでいるものです。ここにチャット ストリームがあります: https://chat.fhir.org/#narrow/stream/179188-v2-to.20FHIRで参加できます。2 つの標準間のマッピングを定義するには多少の作業が必要であり、実装には差異がありますが、プロジェクトの目標は、「ベース」マッピングを出発点として定義することです。v2 と FHIR の関係はかなり密接ですが、解決しなければならない問題がかなりあります…</p>
実際に変換を実行する方法は 1 つではありません。使用する技術によって異なります。たとえば、投稿では NodeRED で単純な JavaScript を使用していましたが、概念実証としてだけです。ほとんどの統合エンジン ベンダーは、この分野で製品を提供していると思います。
コメント
マッピングの詳細はHL7 サイトで説明されています。
以下にいくつかのツールを示します。
https://github.com/rimiti/hl7-object-parser#hl7-object-parser (HL7 v2.x から JSON)
https://github.com/nezt/hl72xml#hl72xml (HL7 V2.x から XML)
https://github.com/KevinMayfield/ITKHL7v2-FHIR
Mirth は、HL7 を XML/JSON に変換する機能を提供します。
@Bryan からの他の回答を参照してください。こことここ
にいくつかのサンプルがあります。