HL7 EDI - スキーマのカスタマイズとメッセージ種別のマッピング - Mule 4

これらのオプションを使用して、以下を行います。

  • スキーマ定義をカスタマイズする

  • HL7 イベントおよびメッセージ種別からメッセージ構造へのマッピングを定義する

  • グローバル要素をカスタマイズする

スキーマ定義のコピーと編集

HL7 スキーマ定義は ​hl7-schemas-4.0.0.jar​ ファイルにあります。これは、HL7 EDI Connector 更新サイト内と、標準の MuleSoft Enterprise Maven リポジトリ (グループ ID の ​com.mulesoft.connectors​ の下) 内に組み込まれています。​hl7-schemas-4.0.0.jar​ ファイルからメッセージ構造スキーマをコピーして、特定のニーズに合わせて編集できます。

セグメントレベルでの変更を行うには、メッセージ構造スキーマをコピーします。セグメント定義を変更するには、同じバージョンの ​basedefs.esl​ スキーマをコピーします。これは、このファイルにセグメント、複合、および要素の定義が含まれるためです。

「EDI スキーマ言語リファレンス」​には、すべての EDI Connector (HL7 EDI Connector を含む) で使用される ESL スキーマ構造の概要が記載されています。

標準の v2.5.1 ​ADT_A05​ メッセージ構造の HL7 メッセージ構造スキーマの例を次に示します。

これは、セグメントグループ PROCEDURE および INSURANCE を含む ​ADT_A05​ メッセージ構造を構成するセグメントのリストを示しています。この例は標準定義 (可変バージョンではない) を示しているため、必須のセグメント (​usage: M​) および省略可能なセグメント (​usage: O​) が含まれます。HL7 で使用する使用方法コードの完全なセットには以下が含まれます。

  • C​: 条件

    省略可能と同等

  • M​: 必須

  • O​: 省略可能

  • U​: 未使用

    読み取り時に警告なしで受け入れられますが、読み取り操作から渡されるデータには存在しません。書き込み時には無視されます。

セグメントまたはグループの可能な出現数は count 値で定義されます。デフォルトでは、この値は ​1​ に設定されます。

メッセージ構造からセグメントを削除するか、セグメント要件を必須から省略可能 (またはその逆) に変更するには、スキーマのコピーに変更を加えて、その変更バージョンをアプリケーションで使用します。

元のメッセージ構造定義に存在しないセグメントを追加できます。スキーマの既存のすべてのセグメントおよびグループ定義の行から position 値を削除します。削除しない場合、追加したセグメントに続くすべての要素を再採番しなければならなくなります。 明示的な位置番号を削除した場合、セグメントとグループに位置番号が順次割り当てられます。また、ほとんどの用途で、HL7 EDI Connector アプリケーションはこの番号を参照しません。

標準 HL7 セグメントをメッセージ構造に追加するには、適切な場所の ​idRef​ 行でそのセグメントを参照します。HL7 はインポート時に参照される ​basedefs.esl​ ファイルから定義を取得します。

次の部分的な例は、ADT_A05 メッセージ構造に追加された ​CON​ セグメントを示しています。

form: HL7
version: '2.5.1'
imports: [ '/hl7/v2_5_1/basedefs.esl' ]
id: 'ADT_A05'
name: 'ADT_A05'
data:
- { idRef: 'MSH', usage: M }
- { idRef: 'SFT', usage: O, count: '>1' }
- { idRef: 'EVN', usage: M }
- { idRef: 'PID', usage: M }
- { idRef: 'PD1', usage: O }
- { idRef: 'CON', usage: O, count: '>1' }
- { idRef: 'NTE', usage: O }
- { idRef: 'ROL', usage: O, count: '>1' }
- { idRef: 'NK1', usage: O, count: '>1' }
- { idRef: 'PV1', usage: M }
- { idRef: 'PV2', usage: O }
- { idRef: 'CON', usage: O, count: '>1' }
- { idRef: 'ROL', usage: O, count: '>1' }
...
yaml

メッセージ構造に標準以外のセグメントを定義するには、そのセグメント定義をスキーマに追加します。これは、セグメントのすべてのコンポーネントをリストする必要があるため、セグメント構造を変更するだけの場合よりも複雑になります。最も簡単に開始する方法は、似た標準 HL7 セグメントを見つけて、その標準セグメントで使用されている定義を ​basedefs.esl​ ファイルからコピーすることです。次に、メッセージ構造定義の後にセグメントのキーを追加し、その後に 1 つ以上のセグメント定義を追加します。

スキーマの場所の設定

Anypoint Studio XML ビューでスキーマの場所を設定できます。

  1. [Configuration XML (設定 XML)]​ をクリックして、XML ビューを選択します。

  2. ドキュメント種別ごとに ​< http://edischema[edi:schema]​>​ 要素を追加することで、含めるすべてのスキーマのリストが含まれるように HL7 EDI 設定を変更します。

    <hl7-edi:config name="HL7_EDI__Configuration" identKeys="true" doc:name="HL7 EDI: Configuration">
      <hl7-edi:schemas>
        <hl7-edi:schema>hl7/v2_6/ADT_A01.esl</hl7-edi:schema>
      </hl7-edi:schemas>
    </hl7-edi:config>
    xml
  3. HL7 EDI のグローバル要素を作成したら、イベントとメッセージ構造を設定します。

イベントおよびメッセージとメッセージ構造のマップ

複数のメッセージ構造スキーマでコネクタを設定する場合 (個別のスキーマ定義ファイルで設定する場合も、提供されたスキーマと同じように設定する場合も、1 つのファイルで設定する場合も)、HL7 イベントおよびメッセージ種別からメッセージ構造へのマッピングを定義することが必要になります。

HL7 は、MSG 種別の複合構造である ​MSH-09​ のコンポーネント値でメッセージ種別を定義します。HL7 EDI Connector は、このコンポーネント値を使用して、以下のルールに従って、受信メッセージの処理に使用する構造スキーマを見つけます。

  • MSG-01 メッセージコードの値が ​ACK​ の場合、定義済みの ACK スキーマを常に使用します。

  • MSG-03 メッセージ構造の値 (​ADT_A01​ などの値) が存在する場合、その ID のスキーマ構造を使用します。

  • そのどちらにも該当しない場合、設定された [Event and Message-to-Message Structure Map (イベントおよびメッセージとメッセージ構造のマップ)] を使用して、指定されたトリガーイベント (​MSG-02​) とメッセージコード (​MSG-01​) の値からメッセージ構造を判断します。

[Event and Message-to-Message Structure Map (イベントおよびメッセージからメッセージ構造へのマップ)] は、省略可能な設定パラメーターです。 これは、サポートされる各メッセージコードから実際のメッセージ構造へのマップに対する各イベント種別からのマップで構成される YAML ファイルである必要があります。

例を挙げます。

A01: { XYZ: ADT_A01, ACK: ACK }
A02: { XYZ: ADT_A02, ACK: ACK }
A03: { XYZ: ADT_A03, ACK: ACK }
A04: { XYZ: ADT_A01, ACK: ACK }
A05: { XYZ: ADT_A05, ACK: ACK }
A06: { XYZ: ADT_A06, ACK: ACK }
A07: { XYZ: ADT_A06, ACK: ACK }
A08: { XYZ: ADT_A01, ACK: ACK }
yaml

HL7 のバージョンごとに、イベント種別およびメッセージコードからメッセージ構造への異なるマッピングセットを定義します。デフォルトのマッピングは、標準 HL7 スキーマ定義と同じ JAR ファイル内の ​event-message.yaml​ という名前のファイルで提供されます。 このマッピング定義では、実際のメッセージ構造スキーマと同じ種別のパスを使用します。

[General (一般)] タブの使用

[General (一般)]​ タブを使用して、HL7 メッセージの読み取りと書き込みに関する設定を定義します。

  • HL7 character encoding (HL7 文字エンコード)

    メッセージの書き込みでは常に使用され、メッセージの読み取りでは MSH-18 (文字セット) で別のエンコードが指定されていない場合に使用されます。

  • Disable numeric prefixes for data keys (データキーの数値プレフィックスを無効化)

    このオプションはデフォルトで true になっています。true では、セグメントデータの数値プレフィックスが無効になります。このオプションを false に設定する唯一の理由は、HL7 EDI Connector 3.0.0 で定義されたマッピングとの互換性を確保するためです。

  • Manually create or edit the list of schemas (スキーマのリストを手動で作成または編集)

ビジュアルエディターでの HL7 ID の設定

独自のメッセージヘッダー (MSH) アプリケーションと施設 ID、および取引パートナーを HL7 EDI Connector 設定で指定できます。

HL7 メッセージを書き込むときに、設定した値を使用して名前空間 ID、ユニバーサル ID、およびユニバーサル ID 種別を提供します。設定した値は受信メッセージ内で検証されます。受信メッセージを制限しない場合、これを空白のままにして、書き込み操作時に送信メッセージの値を設定するか、実際の送信メッセージの値を設定します。書き込み操作時に設定された値は、コネクタ設定を上書きし、メッセージに直接設定された値は、コネクタ設定と書き込み操作時に設定されたすべての値を上書きします。

Studio ではこれらの値は次の [Global Element Properties (グローバル要素のプロパティ)] で設定されます。

  • セルフ ID パラメーターは、取引パートナーリレーションの自分側を識別します。以下はセルフ ID 設定の例です。

    Mule Application Namespace ID (MSH-03/HD-01 when sending, MSH-05/HD-01 when receiving)
    Mule Application Universal ID (MSH-03/HD-02 when sending, MSH-05/HD-02 when receiving)
    Mule Application Universal ID Type (MSH-03/HD-03 when sending, MSH-05/HD-03 when receiving)
    text
  • パートナー ID パラメーターは、取引パートナーを識別します。以下はパートナー ID 設定の例です。

    Partner Application Namespace ID (MSH-03/HD-01 when receiving, MSH-05/HD-01 when sending)
    Partner Application Universal ID (MSH-03/HD-02 when receiving, MSH-05/HD-02 when sending)
    Partner Application Universal ID Type (MSH-03/HD-03 when receiving, MSH-05/HD-03 when sending)
    text

[Parser (パーサー)] タブ

必要に応じて、以下のオプションを設定できます。

XML 値 Studio オプション

eventMessageMap="/hl7/v​2_5_1​/event-message.yaml"

イベントおよびメッセージからメッセージ構造へのマッピングパス (受信したメッセージに MSH-09 および MSG-03 メッセージ構造値が常に含まれていない限り、複数のメッセージ構造を使用する場合、必須)。

genericExtensionPattern="Z.."

Java regular pattern for generic extension segment names (汎用拡張セグメント名の規則的な Java パターン) - 項目値のマップとして拡張セグメントを処理できるようにします。

invalidCharacterInValueFail="true"

無効な文字が値に含まれる場合に失敗する。

missingRequiredValueFail="true"

必須値がない場合に失敗する。

processingId="PRODUCTION"

Required processing ID (処理 ID を要求) - 受信メッセージで必要な処理 ID (本番に対応する ​P​ など) を指定します。

segmentOutOfOrderFail="true"

メッセージ内のセグメントの順序が不適切な場合に失敗する。

unknownSegmentFail="true"

Fail when an unknown segment is in a message (メッセージに不明なセグメントがある場合に失敗)

unusedSegmentPresentFail="true"

未使用のセグメントがメッセージに含まれる場合に失敗する。

validateHL7Version="true"

HL7 メッセージバージョンを検証する。

valueLengthErrorFail="true"

値の長さが許容範囲を超える場合に失敗する。

wrongSegmentsRepeatsFail="true"

セグメントの反復が多すぎる場合に失敗する。

wrongValuesRepeatsFail="true"

値の反復が多すぎる場合に失敗する。

次のステップ

コネクタ設定が完了したら、​『例』​を試すことができます。