Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

HL7 スキーマと利用可能なツール

この章では、HL7 バージョン 2 のスキーマとドキュメントの操作に使用できる Ensemble ツールの概要を示します。この章は以下の節で構成されています。

HL7 スキーマおよびメッセージの概要

Ensemble は、スキーマを使用して HL7 メッセージを解析することなく、その HL7 メッセージを処理してパススルーできますが、スキーマをメッセージと関連付けることにより以下が可能になります。

  • そのメッセージを解析して、以下に含まれているフィールド値にアクセスできます。

    • データ変換

    • ルーティング・ルール

    • カスタム ObjectScript コード

  • そのメッセージがそのスキーマに準拠していることを確認できます。

各 HL7 メッセージは、MSH セグメント MessageType フィールド (MSH:9) で指定されるメッセージ・タイプによって識別されます。いくつかのメッセージ・タイプは、同じメッセージ構造を共有しています。例えば、HL7 バージョン 2.3.1 では、患者を事前承認するための ADT_A05 メッセージは ADT_A01 承認メッセージと同じ構造です。スキーマでは、ADT_A05 メッセージの構造タイプが ADT_A01 であることが指定されています。

HL7 メッセージを解析するためには、Ensemble は次の 2 つの情報を必要とします。

  • スキーマ・カテゴリ — これは HL7 のバージョン番号であるか (2.3.1 や 2.7 など)、Ensemble で定義されているカスタム・スキーマのカテゴリです。Ensemble は、ビジネス・サービスの [メッセージ・スキーマ・カテゴリ] 設定から、またはデータ変換の設定からスキーマ・カテゴリを取得します。HL7 メッセージの MSH セグメント VersionID フィールド (MSH:12) には、スキーマ・バージョン番号が含まれていますが、Ensemble ではこの値は使用されません。多くのアプリケーションではこのフィールドが一貫した値に設定されていないからです。

  • 構造タイプ — Ensemble は、MSH:9 フィールドからメッセージ・タイプを取得してから、スキーマ定義を確認してそのメッセージの構造タイプを取得します。

    Ensemble では、MSH:9.3 サブフィールドを使用してメッセージ・タイプが修飾される場合があります。HL7 メッセージでは、MSH:9:3 サブフィールドはメッセージ・タイプの修飾子として使用されるか、構造タイプを指定するために使用されます。MSH:9:3 によってメッセージ・タイプが修飾される場合は (通常は数字として)、MSH:9:3 はメッセージ・タイプの一部として含まれます。MSH:9:3 によって構造タイプが指定される場合は (ADT_A01 など)、Ensemble では、メッセージ・タイプの確認時と Name プロパティの設定時に MSH:9.3 は無視されます。Ensemble では、スキーマから構造タイプが取得されるため、構造タイプを確認するために MSH:9.3 サブフィールドは必要ありません。

ビジネス・サービスまたはデータ変換は、HL7 メッセージを格納するための EnsLib.HL7.Message オブジェクトを作成する際に、スキーマ・カテゴリと構造タイプを組み合わせて次の構文に従って DocType プロパティに格納します。

category:structureType

例えば、カテゴリ 2.3.1 の有効な DocType 値としては、2.3.1:ACK2.3.1:ADT_A172.3.1:BAR_P01、および 2.3.1:PEX_P07 があります。メッセージ・タイプは、構造タイプと異なっていてもかまわず、Name プロパティに格納されます。

ObjectScript コード内で EnsLib.HL7.Message オブジェクトを作成する場合は、MSH:9 フィールドの値に基づいて DocType プロパティと Name プロパティを設定する必要があります。

HL7 標準では、末尾の Z セグメントなどのローカル拡張が許可されます。これらのセグメントはベース・スキーマ・カテゴリでは定義されません。データ変換内、ルーティング・ルール内、または ObjectScript 内のカスタム Z セグメント内のフィールドにアクセスするには、拡張されたメッセージを指定するカスタム・スキーマ・カテゴリを定義する必要があります。カスタム・スキーマの定義の詳細は、“カスタム・スキーマ・エディタの使用法” を参照してください。

HL7 スキーマ構造ページの使用法

Ensemble, HL7スキーマ ページでは、HL7 バージョン 2 スキーマ仕様のインポートと表示を行えます。

このページを表示するには、[Ensemble][相互運用] の順にクリックし、[HL7 v2.x] をクリックします。次に、[HL7 v2.x スキーマ構造] をクリックし、[進む] をクリックします。このページの使用に関する一般情報は、"Ensemble 仮想ドキュメント" の “スキーマ構造ページの使用法” を参照してください。

Ensemble, HL7スキーマ では、[メッセージ・タイプ] という追加のタブが表示されます。このタブでは、2 つのメッセージ構造を要求と応答のペアとして指定します。

Ensemble には、以下の HL7 スキーマ・バージョンが含まれています。

  • 2.1

  • 2.2

  • 2.3

  • 2.3.1

  • 2.4

  • 2.5

  • 2.5.1

  • 2.6

  • 2.7

  • 2.7.1

カスタム・スキーマ・カテゴリの作成と編集の詳細は、“カスタム・スキーマ・エディタの使用法” を参照してください。

HL7 バージョン 3 は、HL7 バージョン 2 とはまったく異なるデータ規則を使用しているため、HL7 スキーマ・カテゴリとしてはリストされません。詳細は、"Ensemble HL7 バージョン 3 開発ガイド" を参照してください。

以下の例では、このページの使用方法を詳しく説明します。

ドキュメント・タイプのリストの表示

カテゴリにすべてのドキュメント・タイプ構造のリストを表示するには、先にカテゴリを選択して、次に [DocType構造] をクリックします。

メッセージ構造の表示

メッセージ構造の内部編成を表示するには、Ensemble, HL7スキーマ ページの [DocType構造] タブで名前をクリックします。Ensemble では、以下に説明する視覚的手掛かりのシステムを使用してメッセージのセグメント構造を表示します。これが、Ensemble, HL7スキーマ, HL7 スキーマ・メッセージ構造 ページです。以下の例は、2.3.1:ORM_O01 メッセージ構造を示しています。

generated description: portal schema message segments

このページで見られる規則は以下のとおりです。

  • メッセージ構造を構成するセグメントは、左から右、および上から下へ順に表示されます。

  • MSH、NTE、PID など、各メッセージ・セグメントの 3 文字の名前が表示されます。

  • オプションのセグメント、グループ、またはフィールドは緑の点線で囲まれます。

  • 何度か繰り返される可能性のあるセグメント、グループ、またはフィールドがあれば、茶色の実線で囲まれます。

  • 選択肢は黄色の点線で囲まれます。これはセグメントの結合です。メッセージ構造内のこの場所には、この結合の 1 セグメントのみを表示できます。リストされた任意のセグメントを表示できます。

  • セグメント、グループ、またはフィールドは、繰り返しとオプションの両方である場合もあります (上記の NTE を参照してください)。

  • 生のテキスト形式でスキーマ構造を確認するには、[生の定義テキストの表示] をクリックします。

ダイアグラムの前に表示されているメッセージ構造名は、コロンで区切られた次の 2 つの部分からなります。

セグメント構造の表示

メッセージ・セグメントの構造を表示するには、前の節に示されている例と同じページで、該当の名前をクリックします。そのセグメント内のすべてのフィールドをリストするテーブルが Ensemble により表示されます。これが、Ensemble, HL7スキーマ, HL7 スキーマ・セグメント構造 ページです。

例えば、2.3:ADT_A01 メッセージ構造内の PR1 セグメントをクリックした場合は、次のページが表示されます。

generated description: portal schema message fields adt

列は以下のとおりです。

  • [フィールド] — セグメント内の当該フィールドにアクセスするために使用する番号 (番号を選ぶ場合)。

  • [説明] — 当該フィールドの簡単な説明。

  • [プロパティ名] — セグメント内の当該フィールドにアクセスするために使用する名前 (名前を選ぶ場合)。

  • [データ構造] — データ構造が使用されるさらに複雑なフィールド値の場合は、segment:field 仮想プロパティ・パスを完成させるには構文のさらなる詳細情報が必要となります。この詳細情報を取得するには、この列内の名前をクリックします。

  • [記号] — 当該フィールドの構文ルールを示します。この列の文字は、メッセージ・セグメント内にこのフィールドの有無、または繰り返しを必要とするかどうかを示します。使用可能な値は次のとおりです。

    記号 意味
    ! (1 のみ) このフィールドは必須です。これは 1 回だけ表示する必要があります。
    ? (0 または 1) このフィールドはオプションですが、表示する場合は 1 回のみとなります。
    + (1 以上) このフィールドは 1 回以上繰り返すことができます。
    * (0 以上) このフィールドは 0 回以上繰り返すことができます。
    & このフィールドは、特定の条件においてのみ表示し、繰り返すことができます。
    n* (0 ~ n) このフィールドは、最大 n 回まで繰り返されます。
  • [繰り返し回数] — 当該フィールドの最大繰り返し可能回数 (当該フィールドが繰り返され、最大回数がある場合)。

  • [最小長] — 当該フィールド内の最少文字数。フィールドの繰り返しごとに、この文字数を含める必要があります。

  • [最大長] — 当該フィールド内の最大文字数。フィールドの繰り返しごとに、この文字数を含めることができます。

  • [必須] — 必須の場合は R、オプションの場合は O が表示されます。

  • [繰り返し] — 真の場合は 1、偽の場合は 0 が表示されます。

  • [コードテーブル] — エントリをクリックすると、当該フィールドに入力できる有効なコードが表示されます。

  • [代替説明] — 当該フィールドの追加の詳しい説明。

この情報、特に [プロパティ名] 列を使用して、segment:field の形式で Ensemble の仮想プロパティ・パスを作成できます。以下は、2.3:ADT_A01 メッセージ構造の PR1 セグメントの単純な field 値を含む仮想プロパティ・パスの例です。() ショートカット構文は、繰り返しフィールドで使用可能なすべてのインスタンスを示します。(1) は、最初のインスタンスを示します。

PR1grp().PR1:ProcedureType
PR1grp().PR1:ProcedureCode()
PR1grp().PR1:ProcedureCode(1)
PR1grp().PR1:ProcedureCode(x)
PR1grp().PR1:ProcedurePriority

データ構造の表示

[データ構造] 列で名前をクリックすると、そのデータ構造内のすべてのフィールドが表示されます。これが、Ensemble, HL7スキーマ, HL7データ構造 ページです。画面の以下の列は非常に便利です。

  • [コンポーネント] 列は、セグメント内のフィールドにアクセスする際に使用できる番号 (番号を選ぶ場合) をリストします。

  • [プロパティ名] 列は、セグメント内のフィールドにアクセスする際に使用できる名前 (名前を選ぶ場合) をリストします。

  • [データ構造] 列のエントリ (存在する場合) をクリックすると、詳細をドリル・ダウンできます。

  • [コード・テーブル] 列のエントリ (存在する場合) をクリックすると、このフィールドに入力できる有効なコードが表示されます。

上記のセグメント構造ページの 2.3:XCN という [データ構造] 項目をクリックすると、以下のサンプル・ページが表示されます。このページは、カテゴリ 2.3 データ構造 XCN が “拡張複合 ID 番号および人の名前” を説明し、14 のフィールドより構成されることを示しています。これらのうち、一部は簡単な値、一部はデータ構造、一部はコードとなっています。

generated description: portal schema data structure adt

この情報を指定すると、以下のように、メッセージ構造 2.3:ADT_A01 の複雑な PR1grp().PR1:Surgeon フィールドに対し、仮想プロパティ・パスを作成できます。

PR1grp().PR1:Surgeon.familyname
PR1grp().PR1:Surgeon.degree

コード・テーブルの表示

[コード・テーブル] 列の名前をクリックすると、そのフィールドの有効なコードのリストと説明が表示されます。これが、Ensemble, HL7スキーマ, HL7コード・テーブル ページです。前の節に示したデータ構造ページの 2.3:200 という [コード・テーブル] 項目をクリックすると、以下のサンプル・ページが表示されます。

generated description: portal schema code table adt

上記の例は、カテゴリ 2.3 コード・テーブル 200 が、値 L、O、M、A、C、または D を取ることができる “名前のタイプ” を説明しています。

これは、DocType 2.3:ADT_A01 の HL7 メッセージがある場合、L、O、M、A、C または D のいずれかの値を含むことができるパス PR1grp().PR1:Anesthesiologist.nametype のオプションの仮想プロパティを持つことを意味します。

Note:

詳細は、"Ensemble 仮想ドキュメント" の “構文ガイド” を参照してください。

異なるカテゴリの選択

同じ名前および同じ番号でも、メッセージ構造は HL7 のバージョンによって異なる場合があるというのが HL7 標準の特性です。例えば、HL7 2.4 と HL7 2.5 の両方で ORD_O04 というメッセージ構造を定義しても、これらの定義には異なるセグメントが含まれます。Ensemble では、メッセージ構造定義として 2.4:ORD_O04 および 2.5:ORD_O04 を用意しています。以下の 2 つの図に示す 2 つの定義の違いは、Ensemble, HL7スキーマ, HL7メッセージ構造 ページを参照するとわかりやすくなります。

generated description: portal schema message seg compare

カスタム・スキーマ・エディタの使用法

カスタム・スキーマ・エディタを使用すると、新しいカスタム HL7 スキーマを作成したり、既存のカスタム HL7 スキーマを編集したりできます。一般にカスタム・スキーマには、標準スキーマまたは別のカスタム・スキーマであるベース・スキーマがあります。Ensemble でカスタム・スキーマを使用してメッセージを解析する際に、メッセージ・タイプやセグメントなどの要素がカスタム・スキーマ内で定義されていない場合は、ベース・スキーマ内の定義が使用されます。したがって、カスタム・スキーマで定義する必要のある要素は、ベース・スキーマに含まれていない要素と、ベース・スキーマ内の定義とは異なる定義を必要とする要素のみです。標準スキーマを編集することはできません。

カスタム・スキーマを定義する最も一般的な理由は、末尾の Z セグメントが含まれた HL7 メッセージを解析できるようにするためです。Ensemble は、スキーマで定義されていない末尾の Z セグメントが含まれたメッセージを処理できますが、以下のいずれかを実行するには、カスタム・スキーマを定義する必要があります。

  • ルーティング・ルール内、データ変換内、または ObjectScript コード内の末尾の Z セグメント内のフィールド・パスにアクセスする。

  • 末尾の Z セグメントを検証する。

標準スキーマを現在使用しているプロダクションがある場合に、データ変換内またはルーティング・ルール内の末尾の Z セグメントのフィールド・パスにアクセスする必要がある場合は、以下の手順を実行する必要があります。

  1. 管理ポータルでカスタム・スキーマ・エディタを使用して、新しい HL7 スキーマを作成します。カスタム・スキーマの名前を入力して、ベース・スキーマを指定します。

  2. メッセージに表示できる Z セグメントを定義します。対象の Z セグメントに、ベース・スキーマ内の既存のセグメントと類似したフィールドが含まれている場合は、ベース・スキーマから定義をコピーして、その定義を必要に応じて変更できます。そうでない場合は、新しいセグメントを作成できます。フィールドを追加または削除したり、フィールドの順序を変更したりできます。

  3. 末尾の Z セグメントが含まれたメッセージ・タイプごとに、基盤のスキーマからコピーしたカスタム・スキーマ内にメッセージ・タイプと構造タイプを作成します。構造タイプの末尾に Z セグメントを追加します。

  4. プロダクション内のビジネス・サービスに変更を加えて、ベース・スキーマの代わりに新しいカスタム・スキーマが使用されるようにします。

  5. 末尾の Z セグメントが含まれた新しいメッセージをプロダクションのビジネス・サービスに付与することで、プロダクションをテストします。メッセージをメッセージ・ビューアで表示している場合は、スキーマで定義されている Z セグメントは青色で表示されます。認識されないセグメントは黒色で表示されます。

詳細な手順は、これ以降の節で説明しています。

新規カスタム・スキーマの作成

管理ポータルからカスタム・スキーマ・エディタを起動するには、[Ensemble][相互運用][HL7 v2.x][HL7 v2.x スキーマ構造] の順に選択します。

新しい HL7 スキーマを作成するには、[新規作成] をクリックします。カスタム・スキーマ・エディタで、ベース・スキーマ、スキーマ名、およびオプションでスキーマ記述を選択します。例えば、バージョン 2.5 の標準スキーマ・カテゴリに基づいてカスタム・スキーマを定義するには、次のように入力します。

generated description: custom schema name

カスタム・スキーマを作成したら、カスタム・スキーマ・エディタに表示される空のスキーマ内で、メッセージ・タイプ、構造タイプ、セグメント構造、データ構造、およびコード・テーブルを定義できます。定義する必要がある要素は、ベース・スキーマ内の定義とは異なる定義を持つ要素と、ベース・スキーマで定義されていない要素のみです。

このエディタには次のタブがあります。

  • メッセージ・タイプ

  • DocType構造

  • セグメント構造

  • データ構造

  • コードテーブル

これらのタブのそれぞれで、[ベースからコピー] を選択すれば、既存のベース定義から要素をコピーできます。これにより、共通の定義を再入力しなくても、既存の定義の拡張であるメッセージ・タイプまたはその他の要素を作成できます。

新規セグメントの定義

新しい Z セグメントを定義するには、新しいカスタム・スキーマを左側のパネルで選択してから、[セグメント構造] タブを選択します。カスタム・スキーマの場合は、[セグメント構造] タブには [新規作成] ボタンと [ベースからコピー] ボタンが配置されており、カスタム・スキーマで現在定義されているセグメントが一覧表示されます。スキーマではどのようなセグメントも定義されていないため、セグメント構造のリストは空です。標準スキーマを表示している場合は、新規セグメントを追加できず、これらのボタンは表示されません。

generated description: custom schema new segment

別のセグメントからフィールドをコピーすることなく新規セグメントを定義する場合は、[新規作成] ボタンをクリックすると、空のセグメントが自動的に作成されます。このセグメントに名前を付けて、[フィールドの追加] ボタンをクリックします。空のフィールドが自動的に作成されて、フォームに入力できるようになります。以下に例を示します。

generated description: custom schema new empty segment

作成するセグメントがベース・スキーマ内の既存セグメントとよく似ている場合は、[ベースからコピー] を選択してください。これにより、指定したセグメントと同じフィールドが含まれた新規セグメントが作成されます。カスタム・セグメント構造ウィザードではコピーされたフィールドが表示され、これらのフィールドの後ろにある [新規作成] ボタンを使用して新しいフィールドを作成できます。例えば、次のセグメントは PID セグメントからコピーされたものです。

generated description: custom schema seg copy

新規セグメントとしてまたはベース・セグメントのコピーとしてセグメントを作成したら、以下の操作によってフィールドを追加または更新できます。

  • [フィールドの追加] ボタンをクリックして、セグメントの末尾にフィールドを追加します。

  • このセグメント・フィールドを定義するフォーム上の各テキスト・ボックスを更新します。[プロパティ名] テキスト・ボックスを編集することはできません。プロパティ名は、[説明] フィールドの値から空白や特殊記号を取り除いたものとして自動的に設定されます。[OK] をクリックしてウィザードを終了すると、プロパティ名が設定されます。

  • 上下の矢印をクリックして、フィールドの順番を変更します。

  • 赤い X をクリックして、セグメントからフィールドを削除します。

フィールドの入力が完了したら、[OK] をクリックしてセグメントを保存します。

カスタム・スキーマ内の任意の保存済みセグメントを編集するには、そのセグメント名をクリックしてから [編集] をクリックします。

Z セグメントを定義したら、それらの Z セグメントが含まれた構造タイプとメッセージ・タイプを定義する必要があります。

新しいメッセージ・タイプと構造タイプの定義

メッセージ・タイプはメッセージを識別し、HL7 MSH:9 フィールドの値と一致します。メッセージ・タイプを定義する際は、送信メッセージ構造タイプ (メッセージ・タイプと同じでもかまいません) と戻りタイプを指定します。ただし、メッセージ・タイプ内ではなく構造タイプ内のメッセージに配置できるセグメントを指定します。メッセージ・タイプを作成する際は、必要に応じて構造タイプを同時に作成できます。

ベース・スキーマ内で定義されたメッセージ・タイプに Z セグメントを追加するには、メッセージ・タイプとメッセージ構造をカスタム・スキーマにコピーしてから、末尾の Z セグメントを構造タイプに追加します。例えば、バージョン 2.5 をベース・スキーマとして持つカスタム・スキーマ内の ORU_R01 メッセージに ZPI セグメントを追加するには、以下の手順を実行します。

  1. 左側のパネルでカスタム・スキーマを選択して、[メッセージ・タイプ] タブを選択し、[ベースからコピー] をクリックします。

  2. [コピーするメッセージ・タイプ] プルダウンで ORU_R01 メッセージ・タイプを選択します。コピーしたメッセージ・タイプと同じ新規メッセージ・タイプ名が自動的に入力されて、[送信メッセージ構造][戻りメッセージ・タイプ] がベース内の定義と一致する値に設定されます。ボックスにチェックを付けると、送信メッセージ構造がカスタム・スキーマ内に自動的に作成されます (送信メッセージ構造が未定義の場合)。これはベース・スキーマから構造をコピーすることで作成されます。

    generated description: custom schema copy type

    [OK] をクリックすると、ORU_R01 メッセージ・タイプと ORU_R01 構造タイプがカスタム・スキーマ内で定義されます。

  3. [DocType 構造] タブをクリックして、ORU_R01 構造タイプをクリックします。カスタム・スキーマ・エディタに、この構造タイプのグラフィカル表現が表示されます。[編集] ボタンをクリックします。

    カスタム・メッセージ構造ウィザードに以下が表示されます。

    • メッセージ構造名

    • 説明

    • [未加工の定義] — 構造を編集するには、未加工の定義を編集してから、[保存] をクリックします。未加工の定義では、スタジオと同じ規則に従って構造が記述されます。各要素は ~ (チルダ文字) によって区切られ、オプションのセグメントは [] (角かっこ) によって示され、繰り返しセグメントは <> (山かっこ) によって示されます。

    • [すべてのセグメント] — このリストには、カスタム・スキーマとベース・スキーマで定義されているすべてのセグメントが含まれています。このリストに表示されているセグメント名を未加工の定義に入力できます。

    • [ビジュアル表現] — ここに表示される構造のグラフィック表現は、未加工の定義を保存するたびに更新されます。

    未加工の定義の末尾に ~[~ZPI~] と入力して末尾の Z セグメントがオプションであることを示すことで、未加工の定義を更新します。

  4. [保存] をクリックして未加工の定義を保存します。ビジュアル表現が更新されます。[OK] をクリックしてウィザードを終了します。

例えば、カスタム・メッセージ構造ウィザードを使用して ORU_R01 構造タイプのコピーを編集している場合は、ウィザードには次の内容が表示されます。

generated description: custom schema struct wiz

[元に戻す] ボタンをクリックすると、直前のキー・ストロークが取り消されます。[保存] ボタンをクリックすると、未加工の定義が保存されます。[以前に保存済み] ボタンをクリックすると、すべての変更内容が取り消されて、最後に保存された定義が再読み込みされます。[凡例] ボタンをクリックすると、未加工の定義の構文を説明するヘルプ・メッセージが表示されます。

ベース・スキーマ内のメッセージ定義を拡張する場合は、ベース・スキーマで指定されているのと同じセグメント名および構造名を使用する必要があります。

Note:

カスタム・スキーマ内でメッセージ構造を定義したら、その定義は同じ構造を共有するすべてのメッセージ・タイプ用に使用されます。例えば、ZPI 末尾セグメントを ORU_R30 構造に追加する場合は、末尾の Z セグメントは ORU_R30、ORU_R31、および ORU_R32 というメッセージ・タイプで許可されます。これらのメッセージ・タイプはすべて同じ ORU_R30 構造を共有しているからです。これらのメッセージ・タイプをカスタム・スキーマに含める必要はありません。ベース・スキーマ内の定義では、カスタム・スキーマ内の構造タイプが使用されます。

データ構造とコード・テーブルの編集

データ構造は、単純なデータ型ではなく構造化された値を持つフィールドを指定することを可能にし、コード・テーブルは、フィールドに対して指定できる一連の値を規定することを可能にします。一般に、データ構造とコード・テーブルは HL7 標準組織によって定義され、カスタム拡張としては定義されません。カスタム HL7 スキーマ・エディタを使用すると、カスタム・スキーマ内でデータ構造とコード・テーブルを定義できます (このことが必要なケースはまれです)。データ構造を編集するためのウィザードは、セグメントを編集するためのウィザードとよく似ています。コード・テーブルを編集するためのウィザードでは、コード・テーブルのコードと説明を作成できます。これらのコードは、フィールドで使用できる値を指定します。

HL7 メッセージ・ビューア・ページの使用法

Ensemble では、HL7 用の [メッセージ・ビューア] ページが用意されています。このページを使用して、HL7 メッセージを表示、変換、およびエクスポートできます (Ensemble メッセージ・アーカイブ内のメッセージまたは外部ファイル)。

このページにアクセスするには、以下の操作を行います。

  1. [Ensemble] をクリックします。

  2. [相互運用] をクリックします。

  3. [HL7 v2.x] をクリックします。

  4. [HL7 v2.x メッセージ・ビューア] をクリックし、[進む] をクリックします。

オプションの選択

表示するドキュメントを指定するには、以下の操作を行います。

  1. [ドキュメント・ソース] で、[ファイル][メッセージ・ヘッダ ID]、または [メッセージ・ボディ ID] を選択します。

  2. 表示するドキュメントを指定します。

    • [ファイル] を選択した場合は、[参照] を使用してファイルを選択します。[ファイル・ドキュメント数] に、表示するドキュメント数を入力します。

    • [メッセージ・ヘッダ ID] または [メッセージ・ボディ ID] を選択した場合は、表示するメッセージ・ヘッダまたはメッセージ・ボディの ID を入力します。

  3. ドキュメントの解析方法を指定します。そのためには、[ドキュメント構造またはスキーマ] で以下のオプションのいずれかを選択します。

    • [ビジネス・サービスから受け取る] — ビジネス・サービスによって割り当てられるスキーマを使用します。これを選択する場合は、ドロップダウン・リストからビジネス・サービスを選択します。

      このオプションでは、特定のビジネス・サービスがこのドキュメントに割り当てる DocType を決定できます。

    • [スキーマのカテゴリまたはバージョンを使用] — ドロップダウン・リストからドキュメント・カテゴリを選択します。

    • [特定の DocType を使用] — ドキュメント構造 (<MessageStructure>) の名前を category:structure の形式で入力します。パーサでは、このドキュメント構造が使用されます。

    • [コンテンツの宣言されたバージョン:名前を使用] — ドキュメント内で宣言されているドキュメント・タイプに関連付けられたドキュメント構造を使用します。

    • [オブジェクトの保存された DocType を使用] — ドキュメント本文オブジェクト内で宣言されている DocType を使用します  (このオプションは、ファイルからロードされた保存済みのドキュメントには適用されません)。

    • [なし] — ドキュメントの解析にどの DocType も使用しません。代わりに、生のセグメントをいずれもリンクに変換せずにそのまま表示します。

    このオプションでは、特定のデータ・ソースからのドキュメントの解釈をさまざまなスキーマ・カテゴリ・タイプとして試みることによって、そのソースからのドキュメントの処理時にどの DocType を使用するのが適切か決定できます。これを行う理由はさまざまです。例えば、外部アプリケーションを更新する際に、このアプリケーションから送信されるドキュメントの実際のバージョンが変更されているものの、このドキュメントで送信されるタイプ宣言が更新されていない場合があります。また、ドキュメントでカスタム・ドキュメント構造を使用する場合に、スキーマ・ベースとして使用する組み込みカテゴリを決定する場合にも役立ちます。

  4. 必要に応じて、[ドキュメントを変換] をクリックして、変換の詳細を指定します。"変換のテスト" を参照してください。

  5. [OK] をクリックします。

メッセージの解析

上記の手順を完了すると、メッセージ・ビューアの画面右側に以下が表示されます。

  • サマリ・レポート : ドキュメントに関する以下の基本情報が含まれています。

    • 適用されているデータ変換 (該当する場合)

    • メッセージ ID

    • DocType

    • DocType カテゴリ

    • DocType の説明 (ある場合)

    • セグメントの数

    • 子ドキュメントと親ドキュメントの数 (該当する場合)

  • メッセージ・データ : メッセージ構造内のセグメントごとに 1 行があります。各行の内容は以下のとおりです。

    • セグメント番号

    • セグメント名 (PID や NTE など)

    • フィールドのコンテンツと区切り文字 (メッセージに含まれているもの)

    メッセージが選択されたスキーマと一致する場合は、セグメントと要素は以下のように青色で表示されます。セグメントまたはフィールドをクリックすると、関連する構造ページにアクセスできます。

    generated description: message viewer example

セグメント・アドレスの表示

セグメント・アドレスを表示するには、濃色の列に示されているセグメント名にカーソルを合わせます。ツールヒントに以下の情報が表示されます。

  • 仮想プロパティ・パスで使用するセグメント・アドレス

  • このセグメントの説明的な名前

generated description: message viewer segment example

フィールド・アドレスの表示

フィールド・アドレスを表示するには、メッセージ構造内のフィールドにカーソルを合わせます。ツールヒントに以下の情報が表示されます。

  • 仮想プロパティ・パスに使用する field アドレス (数値)

  • 仮想プロパティ・パスに使用する field アドレス (名前)

  • このフィールドの構文ルールを示す文字。文字は、以下の記号より開始します。

    記号 意味
    ! (1 のみ) このフィールドは必須です。これは 1 回だけ表示する必要があります。
    ? (0 または 1) このフィールドはオプションですが、表示する場合は 1 回のみとなります。
    + (1 以上) このフィールドは 1 回以上繰り返すことができます。
    * (0 以上) このフィールドは 0 回以上繰り返すことができます。
    & このフィールドは、特定の条件においてのみ表示し、繰り返すことができます。
    n* (0 ~ n) このフィールドは、最大 n 回まで繰り返されます。
    (m) m は、フィールド内の最大文字数です。フィールドの繰り返しごとに、この文字数を含めることができます。

generated description: message viewer field example

バッチ・メッセージ

山かっこ (<、>) で囲まれているフィールドはサブドキュメントへのリンクです。そのフィールドをクリックすると、そのドキュメントのサマリ・レポートとメッセージ・データが表示されます。

この章の “バッチ・メッセージの表示” も参照してください。

変換のテスト

変換をテストするには、以下の操作を行います。

  1. [ドキュメントを変換] をクリックします。

  2. [データ変換の選択] で、データ変換を選択します。

  3. [表示オプションの選択] で、以下のいずれかを選択します。

    • [変換結果のみ] — 変換後のドキュメントのみ表示します。

    • [元のメッセージと結果を一緒に表示] — 元のドキュメントと変換後のドキュメントの両方を表示します。

  4. 次に、以下のいずれかまたは両方の操作を行います。

    • [OK] をクリックして、変換後のドキュメントを表示します。

    • [結果をファイルに保存] をクリックして、変換後のドキュメントをファイルに保存します。この場合は、パスとファイル名も指定します。

      デフォルトのディレクトリはアクティブなネームスペースの管理ディレクトリです。例えば、Ensemble が C:\MyCache ディレクトリにインストールされており、現在のネームスペースが ENSDEMO である場合、ファイルは C:\MyCache\Mgr\ENSDEMO\filename として保存されます。

バッチ・メッセージの表示

Ensemble, HL7 ドキュメント ページでは、各 HL7 メッセージが個別に処理されるのではなく、バッチ形式の HL7 メッセージ・グループとして処理されます。具体的には、一度に 1 つのレベルのバッチ・メッセージ構造を処理できます。

以下の画面は、FHS セグメントで始まるバッチ・メッセージの表示を要求した結果です。Ensemble はバッチ・メッセージを解析し、このバッチ・メッセージに FHS、FTS、およびその中間の子ドキュメントのブロックの 3 つのセグメントがあることを検出します。このブロックには、それぞれ BHS で始まり BTS で終わる 2 つの子ドキュメントが含まれます。メッセージは 2 レベルのバッチ・メッセージです。

メッセージ・ビューアは、子ドキュメントに識別子 <2> および <33> を割り当てます。メッセージ・ビューアは、上位レベルの親ドキュメントを表示し、2 つの子ドキュメントの表示にはリンク (<2> および <33>) を使用します。画面は以下のようになります。

generated description: portal schema message batch

HL7 バッチ・メッセージ画面の子ドキュメント・リンクをクリックすると、新しいブラウザ・ウィンドウが開かれ、子ドキュメントが表示されます。上位レベルの親を表示する [メッセージ・ビューア] ウィンドウは、元のブラウザ・ウィンドウで開かれたままになっています。

次の画面は、前の画面で子ドキュメント・リンク <2> をクリックした結果です。この例は、2 レベルのバッチ・メッセージであるため、子ドキュメント <2> には、それ自体の子 (子ドキュメント <3> ~ <32>) があります。

この例では、メッセージ・ビューアの便利なナビゲーション機能を強調しています。バッチ・メッセージに 10 を超える子ドキュメントがある場合、メッセージ・ビューアは最初の 5 つと最後の 5 つの子ドキュメントへのリンクを表示します。リストの間はテキスト・フィールドになっていて、ここには最初の番号から最後の番号までの範囲の ID 番号を入力することができます。番号を入力し、[その他] をクリックします。新しいブラウザ・ウィンドウが開き、子ドキュメントが表示されます。

generated description: portal schema message batch level1

次の画面は、前の画面で子ドキュメント・リンク <6> をクリックした結果です。これがバッチ・メッセージ階層の最下位レベルなので、メッセージ <6> は MSH セグメントで始まる通常の HL7 バージョン 2 メッセージとなります。

generated description: portal schema message batch level2

バッチ・メッセージ階層でメッセージを確認したら、上位レベルの親ドキュメントが元の [メッセージ・ビューア] ウィンドウに残るまで、すべてのポップアップ・ブラウザ・ウィンドウを閉じることができます。このウィンドウから、管理ポータルの別のアクティビティに戻ることができます。

HL7 クラス

このセクションでは、HL7 バージョン 2 ドキュメントを操作するために提供されているクラスを参考として列挙します。

項目 クラス メモ
ビジネス・サービス クラス名が示しているように、これらの HL7 ビジネス・サービス・クラスのそれぞれで別々のアダプタが使用されます。HL7 HTTP サービスは、CSP ポートまたは特別なポートを使用できます。
ビジネス・プロセス EnsLib.HL7.MsgRouter.RoutingEngineOpens in a new tab このクラスは、標準の仮想ドキュメント・ルーティング・プロセスを特化したものです。
ビジネス・オペレーション クラス名が示しているように、これらの HL7 ビジネス・オペレーション・クラスのそれぞれで別々のアダプタが使用されます。
メッセージ EnsLib.HL7.MessageOpens in a new tab HL7 ドキュメントを Ensemble 仮想ドキュメントとして転送するための特殊なメッセージ・クラスです。
検索テーブル EnsLib.HL7.SearchTableOpens in a new tab HL7 ドキュメント専用の検索テーブル・クラスです。

これらのクラスのサブクラスを作成して使用することもできます。

ビジネス・ホスト・クラスには構成可能なターゲットが含まれています。それらのいくつかを下の図に示します。

generated description: production config

その他の構成可能なターゲットに関する情報は、“リファレンス” を参照してください。

HL7 メッセージ・クラスの詳細

Ensemble では、HL7 バージョン 2 仮想ドキュメントの組み込みクラスを用意しています。このクラスは EnsLib.HL7.MessageOpens in a new tab です。仮想ドキュメント・メッセージ・クラスについては、"Ensemble 仮想ドキュメント" の “仮想ドキュメント・クラス” を参照してください。EnsLib.HL7.MessageOpens in a new tab には、基本的なプロパティとメソッドに加えて、以下のプロパティが用意されています。

TypeCategory

TypeCategory プロパティには、HL7 カテゴリ名が含まれます。一般的に、Ensemble 外部からの HL7 データを受信する HL7 ビジネス・サービスは、HL7 メッセージをインスタンス化し、これに TypeCategory 値を割り当てます。Ensemble は、この TypeCategory を受信メッセージ・データの MSH セグメントで宣言されているメッセージ・タイプと組み合わせます。この組み合わせにより、HL7 スキーマ定義内で <MessageType> が識別されます。この <MessageType> には、他の DocType が割り当てられていない場合に、Ensemble が HL7 メッセージの DocType として使用する <MessageStructure> が関連付けられています。

Name

Name プロパティは、外部データ・ソースが MSH セグメントで指定した HL7 メッセージ構造名 (ADT_A08、ORM_O02など) を含む読み取り専用文字列です。Name は、送信中であることを医療アプリケーションが 認識している HL7 メッセージ構造を特定するのに役立ちます。ただし、これは実際のメッセージ・コンテンツとは異なる場合もあります。

FeedbackOpens in a new tab