Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の例を使用して、スキーマをカスタマイズし、自分や取引パートナーのメッセージヘッダー (MSH) アプリケーションと施設 ID を設定して、フローを開始する HTTP Listener を使用してテストフローを表示する方法を確認します。
HL7 標準定義は非常に複雑で、セグメントに 20 個以上のコンポーネントが含まれることも少なくありません。これらのコンポーネントの多くはサブコンポーネントに分類されます。メッセージの DataSense ビューには、これらのすべてのサブスクリプションコンポーネントを含める必要があるため、このコンポーネントのネストによって HL7 のマッピングが困難になる場合があります。
実際には、HL7 のほとんどのユーザーは HL7 標準定義全体のごくわずかな部分のみを入力しています。HL7 EDI Connector には、これを利用するためのコンソールベースの Java ツールが用意されています。このツールを使用すると、通常はメッセージで使用されないコンポーネントを除外してスキーマ定義を簡略化できます。
このスキーマ簡素化ツールは hl7-simplify-4.0.0.jar
ファイルにあります。これは、標準の MuleSoft Enterprise Maven リポジトリ (グループ ID の com.mulesoft.connectors
の下) にあります。
このツールでは、入力としてメッセージ構造スキーマと 1 つ以上のサンプルメッセージ (別々のファイル) を受け入れ、1 つ以上のサンプルメッセージに含まれるセグメントとコンポーネントのみに縮小される出力スキーマを生成します。
このツールを使用するには、JAR
をダウンロードし、コマンドラインコンソールを開いて次のように入力します。
java -jar hl7-simplify-4.0.0.jar {input-schema} {output-schema} {sample1} {sample2} ...
この構文のプレースホルダーは次の値を表しています。
input-schema
メッセージを読み取るために使用されるメッセージ構造スキーマ。ファイルまたは提供されるスキーマへのクラスパス参照になります (例: /hl7/v2_5_1/ADT_A05.esl
パス)。
output-schema
簡略化されたスキーマ出力のファイルパス。
sample1…n
サンプルメッセージへのファイルパス。
各サンプルメッセージファイルが行末に行頭復帰 (CR) がある状態で保存されていることを確認します。これは、HL7 セグメントの必須の区切り文字です。通常、テキストエディターではオペレーティングシステムのデフォルトの行末が使用されますが、この行末は適切ではない可能性もあります。
このツールを使用して生成された簡素化されたスキーマの部分的な例を次に示します。
form: HL7
version: '2.5.1'
structures:
- id: 'SIU_S12'
name: 'SIU_S12'
data:
- { idRef: 'MSH', position: '01', usage: O }
- { idRef: 'SCH', position: '02', usage: O }
- groupId: 'PATIENT'
count: '>1'
usage: O
items:
- { idRef: 'PID', position: '06', usage: O }
- { idRef: 'PV1', position: '08', usage: O }
- groupId: 'RESOURCES'
count: '>1'
usage: O
items:
- { idRef: 'RGS', position: '14', usage: O }
- groupId: 'SERVICE'
count: '>1'
usage: O
items:
- { idRef: 'AIS', position: '16', usage: O }
- groupId: 'GENERAL_RESOURCE'
count: '>1'
usage: O
items:
- { idRef: 'AIG', position: '20', usage: O }
- groupId: 'LOCATION_RESOURCE'
count: '>1'
usage: O
items:
- { idRef: 'AIL', position: '24', usage: O }
- groupId: 'PERSONNEL_RESOURCE'
count: '>1'
usage: O
items:
- { idRef: 'AIP', position: '28', usage: O }
segments:
- id: 'AIG'
name: 'Appointment Information - General Resource'
varTag: 'AIG'
values:
- { idRef: 'SI', name: 'Set ID - AIG', usage: O }
- { idRef: 'varies', name: 'Segment Action Code', usage: U, count: '>1' }
- { idRef: 'CE_2', name: 'Resource ID', usage: O }
- { idRef: 'varies', name: 'Resource Type', usage: U, count: '>1' }
- { idRef: 'varies', name: 'Resource Group', usage: U, count: '>1' }
- { idRef: 'varies', name: 'Resource Quantity', usage: U, count: '>1' }
- { idRef: 'varies', name: 'Resource Quantity Units', usage: U, count: '>1' }
- { idRef: 'TS', name: 'Start Date/Time', usage: O }
- id: 'AIL'
name: 'Appointment Information - Location Resource'
varTag: 'AIL'
values:
- { idRef: 'SI', name: 'Set ID - AIL', usage: O }
- { idRef: 'varies', name: 'Segment Action Code', usage: U, count: '>1' }
- { idRef: 'PL', name: 'Location Resource ID', usage: O, count: '>1' }
- { idRef: 'CE', name: 'Location Type-AIL', usage: O }
- { idRef: 'varies', name: 'Location Group', usage: U, count: '>1' }
- { idRef: 'TS', name: 'Start Date/Time', usage: O }
- id: 'AIP'
name: 'Appointment Information - Personnel Resource'
varTag: 'AIP'
values:
- { idRef: 'SI', name: 'Set ID - AIP', usage: O }
- { idRef: 'varies', name: 'Segment Action Code', usage: U, count: '>1' }
- { idRef: 'XCN_2', name: 'Personnel Resource ID', usage: O, count: '>1' }
- { idRef: 'CE_1', name: 'Resource Type', usage: O }
- { idRef: 'varies', name: 'Resource Group', usage: U, count: '>1' }
- { idRef: 'TS', name: 'Start Date/Time', usage: O }
...
composites:
- id: 'CE'
name: 'Coded Element'
values:
- { idRef: 'ST', name: 'Identifier', usage: O }
- { idRef: 'ST', name: 'Text', usage: O }
- id: 'CE_1'
name: 'Coded Element'
values:
- { idRef: 'ST', name: 'Identifier', usage: O }
- id: 'CE_2'
name: 'Coded Element'
values:
- { idRef: 'ST', name: 'Identifier', usage: O }
- { idRef: 'ST', name: 'Text', usage: O }
- { idRef: 'ID', name: 'Name of Coding System', usage: O }
...
yaml
そのコンポーネントがセグメントの末尾にある場合を除き、セグメントの未使用のコンポーネントをセグメント定義から削除することはできないため、簡素化ツールでは、そのコンポーネントを varies
データ型で置換し、Usage: U
(未使用) としてマークします。varies
は元のコンポーネントと同じ回数反復されますが、DataWeave に表示されるデータの DataSense ビューには表示されません。
スキーマ簡素化ツールは、メッセージに含まれるデータを確認するときに、コンテキスト内の複合の各出現箇所を処理します。同じ複合でも使用方法が異なると、サンプルに異なる値が含まれる可能性もあります。この場合、複合は異なる識別子で複数回定義されます。
簡素化されたスキーマでは、元のスキーマのセグメント位置が保持されます。 これらの position 値は、セグメントキーの位置プレフィックス (コネクタ設定オプションの 1 つ) を使用しない限り HL7 EDI Connector で使用されることはないため、簡略化されたスキーマから削除できます。
XML から次のフローを読み込むことができます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
xmlns:hl7="http://www.mulesoft.org/schema/mule/hl7"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/hl7
http://www.mulesoft.org/schema/mule/hl7/current/mule-hl7.xsd
http://www.mulesoft.org/schema/mule/ee/core
http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
<http:listener-config name="HTTP_Listener_config"
doc:name="HTTP Listener config" >
<http:listener-connection host="localhost" port="8081" />
</http:listener-config>
<hl7:config name="HL7_Extension_Config" doc:name="HL7 Extension Config" identKeys="true">
<hl7:schemas >
<hl7:schema value="/hl7/v2_5_1/ADT_A05.esl" />
<hl7:schema value="/hl7/v2_5_1/ADT_A01.esl" />
</hl7:schemas>
</hl7:config>
<flow name="hl7testFlow" >
<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/hl7"/>
<hl7:read doc:name="Read" config-ref="HL7_Extension_Config"/>
<ee:transform doc:name="Transform Message" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{
Delimiters: payload.Delimiters,
Id: payload.Id
}]]></ee:set-payload>
</ee:message>
</ee:transform>
<hl7:write doc:name="Write" config-ref="HL7_Extension_Config"/>
</flow>
</mule>
xml
独自のメッセージヘッダー (MSH) アプリケーションと施設 ID、および取引パートナーを HL7 EDI Connector 設定で指定できます。
HL7 メッセージを書き込むときに、設定した値を使用して名前空間 ID、ユニバーサル ID、およびユニバーサル ID 種別を提供します。設定した値は受信メッセージ内で検証されます。受信メッセージを制限しない場合、これを空白のままにして、書き込み操作時に送信メッセージの値を設定するか、実際の送信メッセージの値を設定します。書き込み操作時に設定された値は、コネクタ設定を上書きし、メッセージに直接設定された値は、コネクタ設定と書き込み操作時に設定されたすべての値を上書きします。
セルフ ID パラメーターは、取引パートナーリレーションの自分側を識別します。
セルフ ID パラメーター:
appNamespaceIdSelf="<value>" appUniversalIdSelf="<value>" appUniversalIdTypeSelf="<value>"
text
パートナー ID パラメーターは、取引パートナーを識別します。
パートナー ID パラメーター:
appNamespaceIdPartner="<value>" appUniversalIdPartner="<value>" appUniversalIdTypePartner="<value>"
text
HL7 メッセージを読み取り方法は、次のとおりです。
HL7 EDI のパレットを探し、フローにドラッグします。
プロパティビューから、以前に作成したコネクタ設定を選択して、Read
操作を選択します。
この操作では、HL7 スキーマで記述された構造にバイトストリームを読み取ります。
HL7 EDI は、読み取り時にメッセージ構造を検証します。
MSH の構文や内容、およびメッセージのすべてのコンポーネントセグメントをチェックします。
生成された ACK メッセージにより、生成されたデータ構造で提供されるエラーが記録および累積されて、レポートされます。
エラーがなくても、致命的でないエラーがあっても、すべてのメッセージは出力メッセージマップの一部として渡されて処理されます。
入力データエラーの読み取りにより、例外がスローされる場合があります。
受信データマップで入力されるエラーデータでは、HL7Error クラスの参照のみ JavaBean が使用されます。これには、次のプロパティがあります。
プロパティ | 説明 |
---|---|
|
エラーの原因となったセグメントの入力内の開始値 0 のインデックス。 |
|
エラーの結果として、関連付けられているメッセージが拒否されたことを意味する致命的なエラーのフラグ。 |
|
HL7 標準 (ERR-3 値) で定義されているさまざまなエラー種別の列挙。 |
|
指定されたエラー種別の HL7 標準で定義されているエラーコード。 |
|
エラーの説明 |
Read
演算子は、Errors
キーを使用して省略可能なリストとしてエラーデータを返します。