このコネクタを使用して、正規 ER7 メッセージ構造との間で HL7 ドキュメントの読み書きを行います。
この構造は、Java マップおよびリストの階層です。DataWeave またはコードを使用してこれらを操作します。
各トランザクションの構造はスキーマで定義されます。
メッセージ自体には以下のキーが含まれ、一部のキーは、以下に示すように、read 操作または write 操作のどちらかにのみ適用されます。
| キー名 |
説明 |
ACK (参照のみ) |
読み取り操作中にモジュールによって生成されたメッセージ。MSA-01 肯定応答コード値は、パーサー設定に基づきます。 |
Data (参照/更新) |
実際のデータにリンクしているメッセージ構造 ID 値に一致するキーを持つメッセージデータのラッパー。これにより、異なるメッセージをメタデータに含めて DataWeave マッピングで処理できます。 |
Delimiters (参照/更新) |
メッセージで使用する区切り文字。
区切り文字の文字列内の文字は文字列内での位置に基づいて次の順で解釈されます: コンポーネントの区切り文字、反復区切り文字、エスケープ文字、サブコンポーネントの区切り文字 (その位置に値がないことを示す U の値がある)。 |
Errors (参照のみ) |
入力メッセージに関連付けられたエラーのリスト。 |
Id |
メッセージ構造 ID。 |
MSH (参照のみ) |
MSH セグメントデータを受信するリンク。 |
Name (参照のみ) |
メッセージ構造名。 |
個々のメッセージには、メッセージのセグメントに一致するキーを持つ独自のマップがあります。たとえば、ACK メッセージでメッセージ構造 ID の ACK を使用すると、送信または受信された ACK メッセージのデータは、データマップの ACK 値になります。ACK メッセージ自体はマップです。メッセージのセグメントとグループは、位置キーを持つマップ (単一インスタンスの場合) またはマップのリスト (反復するインスタンスの場合) として表されます。
2 つの特別なケースでは、スキーマ定義に含まれないデータに対して汎用処理を使用します。
1 つ目のケースは、varies 型の HL7 値の場合です。これらの値は反復される可能性があるコンポーネントとサブコンポーネントの任意の構造で構成されているため、パーサーは varies の型ごとにマップリスト表現を使用します。値が解析されるときに各マップのキーが生成され、標準の HL7 値の名前が、各ネストレベルで使用される 2 桁の数字と一致します。
たとえば、OBX-05 Observation Value 項目の簡単なテキスト値ではマップ内でキー OBX-05 を使用します。2 つのコンポーネントが含まれる場合、これらではキー OBX-05-01 および OBX-05-02 を使用します。
もう 1 つのケースは、拡張セグメントにパーサーオプションで設定されたパターンに一致するタグが含まれる場合です。これらは、セグメント全体の 1 つのマップ内にのみあるという点を除き、varies 値と同じような構造です。
拡張セグメントデータが含まれるマップは、キー ExtensionSegs を使用してリストの基本メッセージマップに追加されます。実際の拡張セグメントデータに加えて、拡張セグメントのマップには 2 つの他のキーが含まれます。
| キー |
説明 |
Ident |
拡張セグメント ID (タグ)。 |
Position |
メッセージ構造内のセグメントの位置 (2 桁文字列)。これは、スキーマで定義されている、直前に定義されたセグメントの位置と同じです。ZVN 拡張セグメントが ADT_A01 メッセージ構造の EVN セグメントの後に使用される場合、ZVN の位置は 03) になります。 |
ネストされたグループ内で拡張セグメントが使用されている場合、そのセグメントを含むリストは、そのグループを表すマップに含まれます。拡張セグメントは、パーサーが作成したリスト内の位置で並び替えられます。また、書き込み時にも位置で並び替えられる必要があります。
肯定応答の送信について
ACK (肯定応答) メッセージは、メッセージをアプリケーションで受信したことをメッセージ送信者に肯定応答できる HL7 メッセージです。ACK メッセージは、読み取り操作時に生成されたデータを出力メッセージとして Data キーで ACK メッセージに設定する点を除き、他の HL7 メッセージの書き込み操作と同じです。
<hl7-edi:read config-ref="HL7_EDI__Configuration1" doc:name="HL7 EDI"/>\
...
<dw:transform-message doc:name="Create Outgoing Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
Name: "ACK",
MSH: payload.ACK.MSH,
Id: "ACK",
Data: {
ACK: payload.ACK
}
}]]></dw:set-payload>
</dw:transform-message>
<hl7-edi:write config-ref="HL7_EDI__Configuration" messageStructure="InMessage" doc:name="ACK"/>
...
<file:outbound-endpoint responseTimeout="10000" doc:name="File" path="output" outputPattern="ack.edi"/>
生成された ACK メッセージには、元のメッセージの送信者に送り返すようにセットアップされた MSH データが含まれるため、送信を実行するためにデータを変更する必要はありません。
ACK メッセージスキーマを設定に含める場合、そのスキーマは ACK メッセージの受信と生成の両方で使用されます。ACK スキーマを指定しない場合、標準 hl7/v2_5_1/ACK.esl スキーマのデフォルトが使用されます。