HL7 スキーマと利用可能なツール
この章では、HL7 バージョン 2 スキーマと HL7 バージョン 2 ドキュメントの操作に使用可能なインターシステムズ製ツールの概要を示します。
HL7 スキーマと HL7 メッセージの概要
インターシステムズ製品では、スキーマを使用して解析しなくても、HL7 メッセージを処理して渡すことができますが、スキーマをメッセージに関連付けると、次のことが可能になります。
-
メッセージを解析し、以下でフィールド値にアクセスできます。
-
データ変換
-
ルーティング・ルール
-
カスタム ObjectScript コード
-
-
メッセージがスキーマに適合しているかどうかを検証できます。
各 HL7 メッセージは、MSH セグメントの MessageType フィールド (MSH:9) で指定されたメッセージ・タイプによって識別されます。一部のメッセージ・タイプは同じメッセージ構造を共有しています。例えば、HL7 バージョン 2.3.1 では、患者を事前登録する ADT_A05 メッセージの構造は、ADT_A01 入院メッセージと同じです。スキーマでは、ADT_A05 メッセージは構造タイプ ADT_A01 を使用するように指定されています。
インターシステムズ製品で HL7 メッセージを解析するには、次の 2 つの情報が必要です。
-
スキーマ・カテゴリ — 2.3.1 や 2.7 など、HL7 のバージョン番号です。インターシステムズ製品で定義したカスタム・スキーマのカテゴリである場合もあります。プロダクションは、ビジネス・サービスの [メッセージ・スキーマ・カテゴリ] 設定、またはデータ変換の設定からスキーマ・カテゴリを取得します。HL7 メッセージでは、MSH セグメントの VersionID フィールド (MSH:12) にスキーマ・バージョン番号が含まれますが、多くのアプリケーションではこのフィールドが一貫した方法で設定されないため、インターシステムズではこの値を使用しません。
-
構造タイプ — プロダクションは MSH:9 フィールドからメッセージ・タイプを取得した後、スキーマ定義をチェックして、そのメッセージの構造タイプを取得します。
インターシステムズでは、MSH:9.3 サブフィールドを使用してメッセージ・タイプを修飾することもあります。HL7 メッセージでは、MSH:9:3 サブフィールドは、1) メッセージ・タイプの修飾子として使用されるか、2) 構造タイプを指定するために使用されます。MSH:9:3 がメッセージ・タイプを修飾する場合 (通常は数字として修飾する)、インターシステムズ製品はその値をメッセージ・タイプの一部として組み込みます。MSH:9:3 が構造タイプ (ADT_A01 など) を指定する場合、インターシステムズでは、メッセージ・タイプを特定する際にも Name プロパティを設定する際にもその値を無視します。インターシステムズ製品はスキーマから構造タイプを取得するため、構造タイプを特定するために MSH:9.3 サブフィールドは必要ありません。
ビジネス・サービスまたはデータ変換によって、HL7 メッセージを格納する EnsLib.HL7.Message オブジェクトが作成される際、スキーマ・カテゴリと構造タイプが結合され、次の構文を使用して DocType プロパティに格納されます。
category:structureType
例えば、カテゴリ 2.3.1 の有効な DocType 値には、2.3.1:ACK、2.3.1:ADT_A17、2.3.1:BAR_P01、2.3.1:PEX_P07 などがあります。メッセージ・タイプは、構造タイプとは異なる場合があり、Name プロパティに格納されます。
ObjectScript コードで EnsLib.HL7.Message オブジェクトを作成する場合は、MSH:9 フィールドの値に基づいて DocType プロパティと Name プロパティを設定する必要があります。
HL7 標準では、末尾の Z セグメントなど、ローカル拡張が許可されています。これらのセグメントは、ベース・スキーマ・カテゴリでは定義されていません。データ変換、ルーティング・ルール、または ObjectScript でカスタム Z セグメント内のフィールドにアクセスするには、拡張されたメッセージを指定するカスタム・スキーマ・カテゴリを定義する必要があります。カスタム・スキーマの定義の詳細は、“カスタム・スキーマ・エディタの使用法” を参照してください。
カスタム HL7 スキーマをソース・コントロールに配置できます。ソース・コントロールを有効にすると、[HL7 スキーマ・メッセージ・タイプ] ページなど、カスタム・スキーマの操作に使用する他のページではなく、メインの [HL7スキーマ] ページからチェック・アウトやチェック・インなどのソース・コントロール・オプションを使用できるようになります。他のページを使用してスキーマを編集する前に、[HL7スキーマ] ページからスキーマ全体をチェック・アウトする必要があります。関連するすべての HL7 スキーマ・ページからソース・コントロール・アクティビティを収集するメインの [HL7スキーマ] ページから [ソース・コントロール出力] ウィンドウを使用できます。ソース・コントロールの設定については、"InterSystems IRIS とソース・コントロール・システムの統合" を参照してください。
HL7 スキーマ構造ページの使用法
[HL7スキーマ] ページを使用すると、HL7 バージョン 2 スキーマ仕様のインポートと表示を行うことができます。このページを表示するには、ホーム・ページから [Interoperability]→[相互運用]→[HL7 v2.x]→[HL7 v2.x スキーマ構造] を選択します。このページの使用に関する一般情報は、"プロダクション内での仮想ドキュメントの使用法" の “スキーマ構造ページの使用法” を参照してください。
[HL7スキーマ] ページには、[メッセージ・タイプ] という追加タブがあります。このタブでは、2 つのメッセージ構造が要求/応答ペアとして識別されます。
カスタム・スキーマ・カテゴリの作成と編集については、“カスタム・スキーマ・エディタの使用法” を参照してください。
ドキュメント・タイプのリストの表示
カテゴリ内のすべてのドキュメント・タイプ構造をリストするには、最初にカテゴリを選択した後、[DocType 構造] タブをクリックします。
メッセージ構造の表示
メッセージ構造の内部編成を表示するには、[HL7スキーマ] ページ ([Interoperability]→[相互運用]→[HL7 v2.x]→[HL7 v2.x スキーマ構造] を選択) の [DocType 構造] タブで、そのメッセージ構造の名前をクリックします。次に示す表現上の規則と名前付け規約を使用して、メッセージのセグメント構造が [構造] セクションに表示されます。
-
メッセージ構造を構成するセグメントは、上から下へ順番に表示されます。
-
セグメント名はすべて大文字にする必要があります。
-
各メッセージ・セグメントの 3 文字の名前が表示されます (MSH、NTE、PID など)。この名前は、HL7 メッセージ構造内のこの場所に存在するセグメントのタイプを示します。選択を囲むセグメント、繰り返されるセグメント、または他のセグメントのグループを含むセグメントでそれぞれの名前には、特別な文字が追加されます。
-
緑色の点線で囲まれているセグメント、グループ、またはフィールドはオプションです。
-
繰り返すことができるセグメントの名前には括弧が追加されます。例えば、PID セグメントを繰り返すことができる場合、PID( ) が表示されます。
-
他のセグメントの選択を囲むセグメントは、セグメントの和集合と見なされます。このような和集合セグメントの名前には、“union” という単語が追加されます。和集合に含まれるセグメントの 1 つのみが、メッセージ構造内のこの場所に存在できます。
-
セグメントのグループを含むセグメントの名前には、“grp” という文字が追加されます。グループを展開したり折りたたんだりするには、グループの名前の横にある矢印アイコンを使用します。
セグメント名をダブルクリックすると、そのセグメントの構造が別のウィンドウで開きます。
未加工のテキスト形式でメッセージ構造を表示するには、 をクリックします。
セグメント構造の表示
メッセージ・セグメントの構造を表示するには、前の節に示されている例と類似する任意のページで、そのメッセージ・セグメントの名前をクリックします。そのセグメント内のすべてのフィールドをリストするテーブルがインターシステムズ製品により表示されます。これは [HL7 スキーマ・セグメント構造] ページです。
例えば、2.3:ADT_A01 メッセージ構造内の [PR1] セグメントをクリックすると、次のページが表示されます。
列は以下のとおりです。
-
[フィールド] — セグメント内のフィールドにアクセスするために使用する番号 (番号を選ぶ場合)。
-
[説明] — フィールドの簡単な説明。
-
[プロパティ名] — セグメント内のフィールドにアクセスするために使用する名前 (名前を選ぶ場合)。
-
[データ構造] — データ構造を使用する複雑なフィールド値については、segment:field 仮想プロパティ・パスを入力する前に、さらに構文の詳細が必要です。これを取得できますが、そのためには、この列で名前をクリックします。
-
[記号] — フィールドの構文規則を示します。この列の文字は、そのフィールドがメッセージ・セグメント内に存在する、存在しない、またはメッセージ・セグメント内で繰り返されると考えることができるかどうかを示します。可能な値は以下のとおりです。
記号 意味 ! (1 回のみ) フィールドは必須で、1 回のみ出現する必要があります。 ? (0 または 1 回) フィールドはオプションですが、出現する場合は、1 回のみ出現することができます。 + (1 回以上) フィールドは 1 回以上繰り返すことができます。 * (0 回以上) フィールドは 0 回以上繰り返すことができます。 & 特定の条件においてのみ、フィールドは存在することも、繰り返すこともできます。 n* (0 ~ n 回) フィールドは最大 n 回繰り返されます。 -
[繰り返し回数] — フィールドを繰り返すことができる最大回数 (繰り返す場合、および上限がある場合)。
-
[最小長] — フィールド内の最小文字数。フィールドの繰り返しごとに、この文字数が含まれている必要があります。
-
[最大長] — フィールド内の最大文字数。フィールドの繰り返しごとに、この文字数を含めることができます。
-
[必須] — 必須の場合は R、オプションの場合は O が表示されます。
-
[繰り返し] — 真の場合は 1、偽の場合は 0 が表示されます。
-
[コードテーブル] — エントリをクリックすると、そのフィールドに入力できる有効なコードを参照します。
-
[代替説明] — フィールドの追加の詳しい説明。
この情報、特に [プロパティ名] 列を使用して、segment:field という形式で仮想プロパティ・パスを作成できます。以下は、2.3:ADT_A01 メッセージ構造内の PR1 セグメントにある単純な field 値を含む仮想プロパティ・パスの例です。() ショートカット構文は、繰り返しフィールドで使用可能なすべてのインスタンスを示します。(1) は、最初のインスタンスを示します。
PR1grp().PR1:ProcedureType
PR1grp().PR1:ProcedureCode()
PR1grp().PR1:ProcedureCode(1)
PR1grp().PR1:ProcedureCode(x)
PR1grp().PR1:ProcedurePriority
データ構造の表示
[データ構造] 列で名前をクリックすると、そのデータ構造内のすべてのフィールドが表示されます。これは [HL7データ構造] ページです。最も有用な列は次のとおりです。
-
[コンポーネント] 列には、セグメント内のフィールドにアクセスするために使用できる番号がリストされます (番号を選ぶ場合)。
-
[プロパティ名] 列には、セグメント内のフィールドにアクセスするために使用できる名前がリストされます (名前を選ぶ場合)。
-
[データ構造] 列のエントリ (存在する場合) をクリックすると、詳細がドリル・ダウンされます。
-
[コードテーブル] 列のエントリ (存在する場合) をクリックすると、そのフィールドに入力できる有効なコードが表示されます。
上のセグメント構造ページで 2.3:XCN という [データ構造] 項目をクリックすると、次に示すサンプル・ページが表示されます。このページは、カテゴリ 2.3 のデータ構造 XCN が “拡張複合 ID 番号と名前” を表し、14 個のフィールドで構成されることを示しています。単純な値もあれば、データ構造やコードもあります。
この情報を指定すると、メッセージ構造 2.3:ADT_A01 内の複雑な PR1grp().PR1:Surgeon フィールドの仮想プロパティ・パスを次のように作成できます。
PR1grp().PR1:Surgeon.familyname
PR1grp().PR1:Surgeon.degree
コード・テーブルの表示
[コードテーブル] 列で名前をクリックすると、そのフィールドの有効なコードと説明のリストが表示されます。これは [HL7コード・テーブル] ページです。前の節に示されているデータ構造ページで 2.3:200 という [コードテーブル] 項目をクリックすると、次に示すサンプル・ページが表示されます。
上の例は、カテゴリ 2.3 のコード・テーブル 200 が “名前タイプ” を表し、値 L、O、M、A、C、または D を持つことができることを示しています。
これは、DocType が 2.3:ADT_A01 の HL7 メッセージがある場合、そのメッセージには PR1grp().PR1:Anesthesiologist.nametype というパスのオプションの仮想プロパティがあり、L、O、M、A、C、または D のいずれかの値を指定できることを意味します。
カスタム・スキーマ・エディタの使用法
カスタム・スキーマ・エディタを使用すると、新しいカスタム HL7 スキーマを作成したり、既存のカスタム HL7 スキーマを編集したりすることができます。カスタム・スキーマには通常、標準スキーマまたは別のカスタム・スキーマであるベース・スキーマがあります。インターシステムズ製品でカスタム・スキーマを使用してメッセージを解析する際、メッセージ・タイプ、セグメント、または他の要素がカスタム・スキーマで定義されていない場合、ベース・スキーマの定義が使用されます。そのため、カスタム・スキーマでは、ベース・スキーマに存在しない要素やベース・スキーマのものとは異なる定義を必要とする要素を定義するだけでかまいません。標準スキーマを編集することはできません。
カスタム・スキーマを定義する最も一般的な理由は、末尾の Z セグメントがある HL7 メッセージを解析できることです。インターシステムズ製品では、スキーマで定義されていない末尾の Z セグメントがあるメッセージを処理できますが、次のことを行うには、カスタム・スキーマを定義する必要があります。
-
ルーティング・ルール、データ変換、または ObjectScript コードで末尾の Z セグメントのフィールド・パスにアクセスします。
-
末尾の Z セグメントを検証します。
現在、標準スキーマを使用しているプロダクションがあり、データ変換またはルーティング・ルールで末尾の Z セグメントのフィールド・パスにアクセスする必要がある場合は、次の作業が必要です。
-
管理ポータルのカスタム・スキーマ・エディタを使用して、新しい HL7 スキーマを作成します。カスタム・スキーマの名前を入力し、ベース・スキーマを指定します。"新しいカスタム・スキーマの作成" を参照してください。
-
メッセージに含めることができる Z セグメントを定義します。ベース・スキーマの既存のセグメントと同様のフィールドが Z セグメントにある場合、ベースから定義をコピーし、必要に応じて変更することができます。それ以外の場合は、新しいセグメントを作成できます。フィールドの追加、フィールドの削除、フィールドの順序の変更が可能です。"新しいセグメントの定義" を参照してください。
-
末尾の Z セグメントを含む各メッセージ・タイプについて、基になるスキーマからコピーしたメッセージ・タイプと構造タイプをカスタム・スキーマに作成します。構造タイプの最後に Z セグメントを追加します。"新しいメッセージ・タイプと構造タイプの定義" を参照してください。
-
ベース・スキーマの代わりに新しいカスタム・スキーマを使用するようにプロダクションのビジネス・サービスを変更します。
-
末尾の Z セグメントがある新しいメッセージをプロダクションのビジネス・サービスに渡して、プロダクションをテストします。メッセージ・ビューワでメッセージを表示したときに、Z セグメントがスキーマで定義されていれば、青で表示されます。認識できないセグメントは黒で表示されます。
詳細な手順については、この後の各節で説明します。
新しいカスタム・スキーマの作成
管理ポータルからカスタム・スキーマ・エディタを起動するには、ホーム・ページから [Interoperability]→[相互運用]→[HL7 v2.x]→[HL7 v2.x スキーマ構造] を選択します。
新しい HL7 スキーマを作成するには、[新規作成] をクリックします。カスタム・スキーマ・エディタで、ベース・スキーマ、スキーマ名、およびスキーマの説明 (オプション) を選択します。例えば、バージョン 2.5 の標準スキーマ・カテゴリに基づいてカスタム・スキーマを定義する場合、次のように入力できます。
カスタム・スキーマを作成すると、カスタム・スキーマ・エディタに空のスキーマが表示され、メッセージ・タイプ、構造タイプ、セグメント構造、データ構造、およびコード・テーブルを定義できます。ベース・スキーマのものとは定義が異なる要素やベース・スキーマで定義されていない要素を定義するだけでかまいません。
カスタム HL7 スキーマ・エディタには次のタブがあります。
-
メッセージ・タイプ
-
DocType 構造
-
セグメント構造
-
データ構造
-
コードテーブル
これらの各タブで、[ベースからコピー] を選択して、既存のベース定義から要素をコピーできます。これにより、共通する定義を再入力することなく、既存の定義の拡張であるメッセージ・タイプやその他の要素を作成することができます。
新しいセグメントの定義
新しい Z セグメントを定義するには、左側のパネルで新しいカスタム・スキーマを選択した後、[セグメント構造] タブを選択します。カスタム・スキーマの場合、[セグメント構造] タブには [新規作成] ボタンと [ベースからコピー] ボタンがあり、カスタム・スキーマで現在定義されているセグメントのリストが表示されます。このスキーマにはセグメントが定義されていないため、セグメント構造のリストは空です。標準スキーマを表示している場合、新しいセグメントを追加することはできず、ボタンは表示されません。
別のセグメントからフィールドをコピーせずに新しいセグメントを定義する場合は、[新規作成] ボタンをクリックすると、空のセグメントが作成されます。セグメントの名前を指定し、[フィールドの追加] ボタンをクリックします。空のフィールドが作成され、フォームに入力できます。次に、例を示します。
ベース・スキーマの既存のセグメントとよく似たセグメントを作成する場合は、[ベースからコピー] を選択する必要があります。これにより、指定したセグメントと同じフィールドを持つ新しいセグメントが作成されます。カスタム・セグメント構造ウィザードには、コピーされたフィールドが表示され、それらのフィールドの後には新しいフィールドを作成するための [新規作成] ボタンがあります。例えば、次のセグメントは PID セグメントからコピーされたものです。
新しいセグメントとしてまたはベース・セグメントのコピーとしてセグメントを作成したら、次のようにフィールドを追加または更新できます。
-
[フィールドの追加] ボタンをクリックして、セグメントの最後にフィールドを追加します。
-
セグメント・フィールドを定義するフォームのテキスト・ボックスを更新します。[プロパティ名] テキスト・ボックスを編集することはできません。プロパティ名は、[説明] フィールドの値からスペースや特殊記号を削除して設定されます。[OK] をクリックしてウィザードを終了すると、プロパティ名が設定されます。
-
上下の矢印をクリックして、フィールドの順序を変更します。
-
赤の X をクリックして、フィールドをセグメントから削除します。
フィールドの入力が完了したら、[OK] をクリックしてセグメントを保存します。
カスタム・スキーマの保存済みセグメントを編集できますが、そのためには、セグメント名をクリックした後、[編集] をクリックします。
Z セグメントを定義したら、Z セグメントを含むメッセージ・タイプと構造タイプを定義する必要があります。
新しいメッセージ・タイプと構造タイプの定義
メッセージ・タイプはメッセージを識別し、HL7 MSH:9 フィールドの値と一致します。メッセージ・タイプを定義する際には、送信メッセージ構造タイプ (メッセージ・タイプと同じである場合がある) と返りタイプを指定します。ただし、メッセージに含めることができるセグメントは、メッセージ・タイプではなく構造タイプで指定します。メッセージ・タイプを作成するときに、オプションで構造タイプを同時に作成することもできます。
ベース・スキーマで定義されているメッセージ・タイプに Z セグメントを追加するには、メッセージ・タイプと構造をカスタム・スキーマにコピーした後、末尾の Z セグメントを構造タイプに追加します。例えば、バージョン 2.5 をベース・スキーマとするカスタム・スキーマの ORU_R01 メッセージに ZPI セグメントを追加するには、以下の操作を行います。
-
左側のパネルでカスタム・スキーマを選択し、[メッセージ・タイプ] タブを選択して、[ベースからコピー] をクリックします。
-
[コピーするメッセージ・タイプ] プルダウンで ORU_R01 メッセージ・タイプを選択します。コピーしたメッセージ・タイプと同じ名前が新しいメッセージ・タイプ名として入力され、ベースの定義と一致するように [メッセージ構造] と [返されるメッセージ・タイプ] が設定されます。チェック・ボックスにチェックを付けると、送信メッセージ構造がカスタム・スキーマでまだ定義されていない場合、自動的に作成されます。このメッセージ構造は、ベース・スキーマから構造をコピーすることによって作成されます。HL7 標準の一部のバージョンには、2 つのメッセージ構造を使用できるメッセージ・タイプが含まれています。そのタイプで使用可能な追加の構造を定義するには、[代替メッセージ構造] を使用します。
[OK] をクリックすると、ORU_R01 メッセージ・タイプと ORU_R01 構造タイプがカスタム・スキーマで定義されます。
-
[DocType 構造] タブ、ORU_R01 構造タイプの順にクリックします。カスタム・スキーマ・エディタに構造タイプのグラフィカル表現が表示されます。
-
メッセージ構造に含まれるセグメントの追加、削除、または変更を開始するには、[編集] ボタンをクリックします。[編集] ボタンと [利用可能なセグメント] セクションが表示されるのは、カスタム・スキーマの一部である構造を表示している場合のみです。
例えば、カスタム・メッセージ構造ウィザードを使用して ORU_R01 構造タイプのコピーを編集している場合、ウィザードは次のように表示されます。
ベース・スキーマのメッセージ定義を拡張する場合は、ベース・スキーマで指定されているものと同じセグメント名と構造名を使用する必要があります。
[利用可能なセグメント] セクションから [構造] セクションにセグメントをドラッグ・アンド・ドロップして、メッセージ構造内の正しい位置にセグメントを配置することができます。カスタム・セグメントの追加に焦点を絞るには、フィルタ・ボタン をクリックします。カスタム・セグメントのみが [利用可能なセグメント] セクションに表示されます。
セグメントを [構造] セクションに移動した後、セグメントをクリックして、セグメントを [オプション] または [Repeating] として定義することができます。
また、全体としてオプションまたは繰り返しであるセグメントのグループを作成することもできます。グループを作成するには、以下の手順に従います。
-
グループの最上位にするセグメントをクリックして、[グループ] を選択します。グループの最上位レベルが作成されます。その名前は選択したセグメントと同じですが、grp が追加されます。
-
最上位レベルのグループ名をクリックして、[オプション] または [Repeating] を選択します。グループ全体を [オプション] または [Repeating] として指定しない限り、セグメントはグループとして保存されません。
-
ドラッグ・アンド・ドロップを使用してセグメントをグループに追加します。グループに含まれるセグメントが 1 つだけの場合、グループは保存されません。
セグメントのセットを作成することもできます。この場合、メッセージの構造に、セット内の任意のセグメントを 1 つ含めることができます。このセットを作成するには、セットの一部にするセグメントをクリックして、[Choice] を選択します。セットの最上位レベルが作成されます。その名前は選択したセグメントと同じですが、union が追加されます。このセットの一部である他のセグメントをドラッグ・アンド・ドロップすることができます。和集合に含まれるセグメントが 1 つだけの場合、和集合は保存されません。
[構造] セクションにおけるセグメントの表現上の規則と名前付け規約の詳細は、"メッセージ構造の表示" を参照してください。
未加工のテキスト形式でメッセージ構造を表示するには、 をクリックします。編集モードでは、未加工のテキストを編集してメッセージ構造を変更できます。
カスタム・スキーマでメッセージ構造を定義すると、同じ構造を共有するすべてのメッセージ・タイプでその定義が使用されます。例えば、末尾の ZPI セグメントを ORU_R30 構造に追加した場合、ORU_R30、ORU_R31、および ORU_R32 の各メッセージ・タイプはすべて、同じ ORU_R30 構造を共有するため、これらのメッセージ・タイプで末尾の Z セグメントを使用できます。これらのメッセージ・タイプをカスタム・スキーマに含める必要はありません。ベース・スキーマの定義によって、カスタム・スキーマの構造タイプが使用されます。
データ構造とコード・テーブルの編集
データ構造は、単純なデータ型ではなく、構造化された値を持つフィールドを指定するためのメカニズムを提供します。コード・テーブルは、フィールドで使用可能な値のセットを定義するためのメカニズムを提供します。通常、データ構造とコード・テーブルは HL7 標準の本文で定義され、カスタム拡張として定義されることはありません。まれなケースとして、カスタム・スキーマでデータ構造とコード・テーブルを定義する必要がある場合は、カスタム HL7 スキーマ・エディタを使用して定義することができます。データ構造を編集するウィザードは、セグメントを編集するウィザードとよく似ています。コード・テーブルを編集するウィザードでは、コード・テーブルのコードと説明を定義できます。コードによって、フィールドで使用可能な値が指定されます。
HL7 メッセージ・ビューワ・ページの使用法
インターシステムズでは、HL7 のメッセージ・ビューワ・ページを提供しています。このページを使用して、HL7 メッセージ (プロダクション・メッセージ・アーカイブ内のメッセージまたは外部ファイル) を表示、変換、およびエクスポートできます。
このページにアクセスするには、[Interoperability]→[相互運用]→[HL7 v2.x]→[HL7 v2.x メッセージ・ビューワ] を選択します。
オプションの選択
表示するドキュメントを指定するには、以下の操作を行います。
-
[ドキュメント・ソース] で、[ファイル]、[メッセージ・ヘッダ ID]、または [メッセージ・ボディ ID] を選択します。
-
表示するドキュメントを指定します。
-
[ファイル] を選択した場合は、[参照] を使用してファイルを選択します。[ファイル内のドキュメント番号] に、表示するドキュメントの番号を入力します。
-
[メッセージ・ヘッダ ID] または [メッセージ・ボディ ID] を選択した場合は、表示するメッセージ・ヘッダまたはメッセージ・ボディの ID を入力します。
-
-
ドキュメントの解析方法を指定します。そのためには、[ドキュメント構造またはスキーマ] で以下のオプションのいずれかを選択します。
-
[ビジネス・サービスから受け取る] — ビジネス・サービスによって割り当てられるスキーマを使用します。これを選択する場合は、ドロップダウン・リストからビジネス・サービスを選択します。
このオプションでは、特定のビジネス・サービスがこのドキュメントに割り当てる DocType を決定できます。
-
[特定のスキーマ・カテゴリ/バージョンを使用] — ドロップダウン・リストからドキュメント・カテゴリを選択します。
-
[特定の DocType を使用] — ドキュメント構造 (<MessageStructure>) の名前を category:structure の形式で入力します。パーサでは、このドキュメント構造が使用されます。
-
[コンテンツの宣言されたバージョン:名前を使用] — ドキュメント内で宣言されているドキュメント・タイプに関連付けられたドキュメント構造を使用します。
-
[オブジェクトの保存された DocType を使用] — ドキュメント本文オブジェクト内で宣言されている DocType を使用します (このオプションは、ファイルからロードされた保存済みのドキュメントには適用されません)。
-
[なし] — ドキュメントの解析にどの DocType も使用しません。代わりに、未加工のセグメントをいずれもリンクに変換せずにそのまま表示します。
このオプションでは、特定のデータ・ソースからのドキュメントの解釈をさまざまなスキーマ・カテゴリ・タイプとして試みることによって、そのソースからのドキュメントの処理時にどの DocType を使用するのが適切か決定できます。これを行う理由はさまざまです。例えば、外部アプリケーションを更新する際に、このアプリケーションから送信されるドキュメントの実際のバージョンが変更されているものの、このドキュメントで送信されるタイプ宣言が更新されていない場合があります。また、ドキュメントでカスタム・ドキュメント構造を使用する場合に、スキーマ・ベースとして使用する組み込みカテゴリを決定する場合にも役立ちます。
-
-
必要に応じて、[ドキュメントを変換] をクリックして、変換の詳細を指定します。"変換のテスト" を参照してください。
-
[OK] をクリックします。
メッセージの解析
前述の手順を完了すると、メッセージ・ビューワの画面右側に以下が表示されます。
-
ドキュメントに関する次の基本情報を含む要約レポート。
-
適用されているデータ変換 (該当する場合)
-
メッセージ ID
-
DocType
-
DocType カテゴリ
-
DocType の説明 (ある場合)
-
セグメントの数
-
子ドキュメントと親ドキュメントの数 (該当する場合)
-
-
メッセージ構造内のセグメントごとに 1 行ずつあるメッセージ・データ。各行の内容は以下のとおりです。
-
セグメント番号
-
セグメント名 (PID や NTE など)
-
フィールドのコンテンツと区切り文字 (メッセージに含まれているもの)
選択したスキーマとメッセージが一致する場合は、次のように、セグメントと要素が青で表示されます。セグメントまたはフィールドをクリックすると、関連する構造ページにリンクします。
-
セグメント・アドレスの表示
セグメント・アドレスを表示するには、濃色の列に示されているセグメント名にカーソルを合わせます。ツールヒントに以下の情報が表示されます。
-
仮想プロパティ・パスで使用するセグメント・アドレス
-
このセグメントの説明的な名前
フィールド・アドレスの表示
フィールド・アドレスを表示するには、メッセージ構造内のフィールドにカーソルを合わせます。ツールヒントに以下の情報が表示されます。
-
仮想プロパティ・パスで使用する field アドレス (数値)
-
仮想プロパティ・パスで使用する field アドレス (名前)
-
フィールドの構文規則を示す文字。文字の先頭には次の記号を使用できます。
記号 意味 ! (1 回のみ) フィールドは必須で、1 回のみ出現する必要があります。 ? (0 または 1 回) フィールドはオプションですが、出現する場合は、1 回のみ出現することができます。 + (1 回以上) フィールドは 1 回以上繰り返すことができます。 * (0 回以上) フィールドは 0 回以上繰り返すことができます。 & 特定の条件においてのみ、フィールドは存在することも、繰り返すこともできます。 n* (0 ~ n 回) フィールドは最大 n 回繰り返されます。 (m) m は、フィールド内の最大文字数です。フィールドの繰り返しごとに、この文字数を含めることができます。
バッチ・メッセージ
フィールドが山かっこ (<、>) で囲まれている場合、サブドキュメントへのリンクです。クリックすると、そのドキュメントの要約レポートとメッセージ・データが表示されます。
この章で後述する “バッチ・メッセージの表示” も参照してください。
変換のテスト
変換をテストするには、以下の操作を行います。
-
[ドキュメントを変換] をクリックします。
-
[データ変換の選択] で、データ変換を選択します。
-
[表示オプションの選択] で、以下のいずれかを選択します。
-
[変換結果のみ] — 変換後のドキュメントのみ表示します。
-
[元のメッセージと結果を一緒に表示] — 元のドキュメントと変換後のドキュメントの両方を表示します。
-
-
次に、以下のいずれかまたは両方の操作を行います。
-
[OK] をクリックして、変換後のドキュメントを表示します。
-
[結果をファイルに保存] をクリックして、変換後のドキュメントをファイルに保存します。この場合は、パスとファイル名も指定します。
デフォルトのディレクトリはアクティブなネームスペースの管理ディレクトリです。例えば、InterSystems IRIS を C:\MyIRIS ディレクトリにインストールし、現在のネームスペースが MyNamespace である場合、ファイルは C:\MyIRIS\Mgr\MyNamespace\filename として保存されます。
-
バッチ・メッセージの表示
メッセージが 1 つの HL7 メッセージではなく、バッチ形式の HL7 メッセージのグループである場合、[HL7 ドキュメント] ページでは、異なる方法でメッセージが処理されます。具体的には、バッチ・メッセージ構造を 1 レベルずつ確認できます。
次に示す画面は、FHS セグメントから始まるバッチ・メッセージを表示するように要求したときの結果です。バッチ・メッセージが解析され、3 つのセグメント (FHS、FTS、およびその間の子ドキュメントのブロック) があることがわかりました。ブロックには 2 つの子ドキュメントが含まれており、それぞれ BHS で始まり、BTS で終わります。このメッセージは 2 レベルのバッチ・メッセージです。
メッセージ・ビューワでは、子ドキュメントに識別子 <2> と <33> が割り当てられています。最上位レベルの親ドキュメントが表示され、リンク (<2> と <33>) を使用して 2 つの子ドキュメントが表されています。画面は次のとおりです。
HL7 バッチ・メッセージ画面で子ドキュメントのリンクをクリックすると、新しいブラウザ・ウィンドウが開いてその子ドキュメントが表示されます。最上位レベルの親を表示する [メッセージ・ビューワ] ウィンドウは、元のブラウザ・ウィンドウで開いたままです。
次の画面は、前の画面で子ドキュメントのリンク <2> をクリックしたときの結果です。この例は 2 レベルのバッチ・メッセージなので、子ドキュメント <2> には、独自の子ドキュメント <3> から <32> があります。
この例では、メッセージ・ビューワの便利なナビゲーション機能を紹介します。10 個を超える子ドキュメントがバッチ・メッセージにある場合、メッセージ・ビューワには最初の 5 つと最後の 5 つの子ドキュメントへのリンクが表示されます。リストの間はテキスト・フィールドになっていて、ここには最初の番号から最後の番号までの範囲の ID 番号を入力することができます。番号を入力したら、[その他] をクリックします。新しいブラウザ・ウィンドウが開いて、その子ドキュメントが表示されます。
次の図は、前の図で子ドキュメントのリンク <6> をクリックしたときの結果です。これはバッチ・メッセージ階層の最下位レベルなので、次の図に示されているメッセージ <6> は、MSH セグメントから始まる通常の HL7 バージョン 2 メッセージです。
バッチ・メッセージ階層でメッセージの確認を終了したら、最上位レベルの親ドキュメントが元の [メッセージ・ビューワ] ウィンドウに残っている状態になるまで、すべてのポップアップ・ブラウザ・ウィンドウを閉じることができます。このウィンドウから、管理ポータルの別のアクティビティに戻ることができます。
HL7 クラス
参照用として、ここでは HL7 バージョン 2 ドキュメントを操作するために提供されているクラスを列挙します。
項目 | クラス | メモ |
---|---|---|
ビジネス・サービス | クラス名が示しているように、これらの HL7 ビジネス・サービス・クラスのそれぞれで別々のアダプタが使用されます。HL7 HTTP サービスでは CSP ポートを使用することも、専用ポートを使用することもできます。 | |
ビジネス・プロセス | EnsLib.HL7.MsgRouter.RoutingEngineOpens in a new tab | このクラスは、標準の仮想ドキュメント・ルーティング・プロセスの特殊なバージョンです。 |
ビジネス・オペレーション | クラス名が示しているように、これらの HL7 ビジネス・オペレーション・クラスのそれぞれで別々のアダプタが使用されます。 | |
メッセージ | EnsLib.HL7.MessageOpens in a new tab | HL7 ドキュメントを仮想ドキュメントとして転送するための特殊なメッセージ・クラスです。 |
検索テーブル | EnsLib.HL7.SearchTableOpens in a new tab | HL7 ドキュメント専用の検索テーブル・クラスです。 |
これらのクラスのサブクラスを作成して使用することもできます。
ビジネス・ホスト・クラスには構成可能なターゲットが含まれています。それらのいくつかを下の図に示します。
その他の構成可能なターゲットについては、“参照” を参照してください。
HL7 メッセージ・クラスの詳細
インターシステムズ製品には、HL7 バージョン 2 仮想ドキュメントの組み込みクラスが用意されています。そのクラスは EnsLib.HL7.MessageOpens in a new tab です。仮想ドキュメント・メッセージ・クラスの基本情報は、"プロダクション内での仮想ドキュメントの使用法" の “仮想ドキュメント・クラス” を参照してください。基本的なプロパティとメソッドに加えて、EnsLib.HL7.MessageOpens in a new tab には次のプロパティがあります。
TypeCategory プロパティには HL7 カテゴリ名が格納されます。通常、HL7 データを受け取る HL7 ビジネス・サービスは HL7 メッセージをインスタンス化し、そのメッセージに TypeCategory 値を割り当てます。プロダクションは、受信メッセージ・データの MSH セグメントで宣言されているメッセージ・タイプとこの TypeCategory を組み合わせます。この組み合わせによって、HL7 スキーマ定義内の <MessageType> が識別されます。この <MessageType> には、他の DocType が割り当てられていない場合に HL7 メッセージで DocType として使用される <MessageStructure> が関連付けられています。
Name プロパティは、外部データ・ソースから MSH セグメントで提供された HL7 メッセージ構造名 (ADT_A08 や ORM_O01 など) を格納する読み取り専用の文字列です。Name は、医療アプリケーションが送信していると認識している HL7 メッセージ構造を確認する際に役立つことがあります。ただし、これは実際のメッセージ・コンテンツとは異なる場合があります。