MLLP over TCP/IP プロトコルを使用して統合ノード (integration node)に接続するクライアントからのメッセージを受信するには、HL7DFDLInput ノードを使用します。
HL7DFDLInput ノードは、ポート上で listen します。またクライアント・ソケットがポートに接続する際には、サーバー・ソケットはクライアント用に接続を作成します。 接続が開くとデータのレコードが受信されます。構成可能な区切り文字の存在により、レコードの終わりが検出されます。データ読み取り中にデータ待機のタイムアウトや完全レコードの待機中の接続のクローズなどのエラーが発生すると、データは Failure ターミナルに送信されます。Failure ターミナルが接続されていない場合には、例外がスローされます。ノードの「再試行のメカニズム」プロパティーが「失敗」に設定されていない場合は、データが正常に取り出されるまで、あるいは「再試行のしきい値」プロパティーに定義された試行回数を超えるまで、ノードは再接続を試みます。
HL7DFDLInput ノードでは、メッセージが MLLP over TCP/IP プロトコルを使用することが必要です。MLLP 先頭バイトがないと、メッセージは Failure ターミナルに送信されます。
HL7DFDLInput ノードは、DFDL ドメインで定義されているメッセージを処理します。メッセージの構文解析には、DFDL メッセージ・モデルの HL7 メッセージ形式が使用されます。構文解析エラーが発生した場合、または必須の MSH フィールドがない場合、メッセージは Failure ターミナルに渡されます。メッセージ・モデルについては、メッセージ・モデル (IBM® Integration Bus 製品資料内) を参照してください。
重複していないか検査するように HL7DFDLInput ノードを構成できます。 各着信 HL7 メッセージの MSH ヘッダー・セグメントには MessageControlID フィールドが入っており、これによってレコードが識別されます。「重複をチェック」プロパティーが選択されている場合、送信側に返された肯定応答 (ACK) とともにすべての ID が重複キューに保管されます。着信メッセージの ID は保存済みの ID と照合されて、重複していないか判別されます。重複が検出されると処理は行われませんが、最初のメッセージと一緒に送信された同一の肯定応答が送信側に返されます。重複キューはノードのプロパティーとして指定されます。
ID は、「重複期間」プロパティーに定義されている期間にわたり、重複キューに保管されます。 この期間が経過した後、ID は削除され、同じ ID のメッセージが重複として扱われることはなくなります。重複キューのサイズは、設定した期間に予期されるピーク数のメッセージ ID が収まるものでなければなりません。
着信メッセージが重複してはいない場合、メッセージはさらに処理を加えるため HL7DFDLInput ノードの Out ターミナルに渡されます。重複が検出された場合、HL7DFDLInput ノードは ACK を要求側に返します。 重複の報告が選択されている場合に重複が検出されると、メッセージは Failure ターミナルに渡されます。
メッセージの処理はトランザクション制御下で行われます。メッセージ・フローがロールバックされると、重複 ID キューに追加された重複 ID は削除されます。したがって、このメッセージが再発信されると、重複と識別されずに、新規メッセージとして処理されます。
HL7 については、Health Level Seven International を参照してください。
HL7DFDLInput ノードはメッセージ・フローのノード・パレットの「Healthcare」ドロワーに含まれ、IBM Integration Toolkit では、次のアイコンで表されます。
メッセージ・フローで HL7DFDLInput ノードが使用される場合、Out ターミナルに渡されるメッセージには、先頭と末尾の MLLP バイトが削除された、構文解析済みの HL7 メッセージが収められています。メッセージ・ツリーには MQMD および MQRFH2 ヘッダーが収められているため、メッセージは必要に応じてキューに直接書き込むことができます。メッセージの本体には、DFDL ドメインの HL7 メッセージが入ります。メッセージ・フローが、肯定応答 (ACK) を要求側に返します。
HL7DFDLInput ノードで障害が発生した場合、メッセージは Failure ターミナルに渡されます。 LocalEnvironment.HL7 には、以下に挙げる環境の表に示したフィールドが収められます。これらのフィールドは、否定応答 (NACK) またはエラー・メッセージの作成に使用される情報を提供します。
フィールド | 説明 |
---|---|
FlowMilestoneReached | エラーが発生したときに実行されるアクションを示します。 |
SendNACK | 否定応答 (NACK) を送信します。 |
EndConnection | YES: 接続を閉じます。 NO: 接続を閉じません。 |
HL7RC | HL7 戻りコード。 |
ErrorCondition | NACK に含めるエラー・テキスト。 |
「EndConnection」が YES に設定されている場合、接続を閉じる必要があります。 着信メッセージに正しい MLLP 区切り文字が含まれていなかったために MLLP プロトコルがサポートされていないと見なされる場合、このアクションが実行されます。
「HL7RC」 (HL7 戻りコード) および「ErrorCondition」フィールドは、要求側に返す NACK で情報を提供するために使用できます。
到達したフロー・マイルストーン | 戻りコード | エラー・テキスト |
---|---|---|
DETECTDUPLICATE | AR | 重複の検査中にエラーが発生しました |
PARSE | AE | DFDL 構文解析エラー・メッセージが示されます。メッセージに問題の要約が示されます。 |
BUILDACK | AR | ACK メッセージの作成中にエラーが発生しました。 (このエラーは、重複メッセージであるために ACK が返される場合に発生します)。 |
SENDACK | AR | ACK メッセージの作成中にエラーが発生しました (このエラーは、重複メッセージであるために ACK が返される場合に発生します)。 |
DUPLICATEERROR | AR | 重複検出の際の障害。重複キューが満杯です。 重複検出の際の障害。メッセージ処理が失敗しました。 |
SAVINGDUPDATA | AR | 重複データの保存中にエラーが発生しました |
DUPLICATE RECORD | AR | 重複レコードが検出されました |
HL7DFDLInput ノードはトランザクション処理されます。 そのノードで使用されたメッセージ・フローが正常終了すると、トランザクション下で書き込まれたすべてのメッセージがコミットされます。キャッチされなかった例外がある状態でメッセージが終了した場合、そのトランザクション下で書き込まれたすべてのメッセージ (そのメッセージ自体も含む) はロールバックされます。このアクションには、重複検出用の ID を保存するキューに入るメッセージも含まれます。 このような状況でロールバックする必要のあるメッセージを見極め、他のメッセージ (エラー・メッセージなど) がトランザクション下で書き込まれないようにする必要があります。
HL7DFDLInput ノードのインスタンスをメッセージ・フローに追加すると、そのノードを構成することができます。
値を入力する必要のあるすべての必須プロパティー (デフォルト値が定義されていないプロパティー) には、アスタリスクで印が付けられています。
ターミナル | 説明 |
---|---|
Failure | エラーが発生した場合にメッセージがルーティングされる出力ターミナル。 |
Out | 外部リソースからメッセージが正常に取り出された場合に、メッセージがルーティングされる出力ターミナル。 |
Catch | 例外がダウンストリームでスローされ、ノードによってキャッチされた場合に、メッセージがルーティングされる出力ターミナル。 例外がキャッチされるのは、このターミナルが接続されている場合のみです。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | はい | いいえ | HL7DFDLInput | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
重複をチェック | いいえ | いいえ | 選択されている | HL7 MSH ヘッダーの固有メッセージ ID によって判別される重複メッセージを検出するかどうかを決定します。
重複が検出された場合、以下のアクションが実行されます。
|
重複を報告 | いいえ | はい | 選択されている | 指定した時間内に到達した重複メッセージによってエラー通知メッセージを生成するかどうかを決定します。 |
重複期間 | いいえ | はい | 86400 | 有効期限が切れるまで ID メッセージを保持する長さを定義します (秒単位)。
この期間が経過した後、重複は認識されなくなり、通常どおり処理されるようになります。デフォルト (86400) は 24 時間に相当します。 このプロパティーは、「重複をチェック」を選択した場合は必須です。 |
重複 ID キュー | いいえ | いいえ | 現在の重複 ID のリストを保持するキューを定義します。着信メッセージはこのリストに対して照合されます。 このプロパティーは、「重複をチェック」を選択した場合は必須です。 |
|
先頭の MLLP バイト | はい | いいえ | 0B | MLLP プロトコルの一部である先頭バイトを定義します。 これは、メッセージが構文解析され、処理される前に除去されます。 |
重複の確認 | いいえ | はい | 選択されている | 重複メッセージが検出されたときに、肯定応答メッセージを送信するかどうかを決定します。 |
汎用モデルの使用 | いいえ | いいえ | 選択されている | ノードから送信されるメッセージ・ツリーの構造を判別します。
|
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
接続の詳細 | はい | はい | 1111 | hostname:port という形式の送信元アプリケーションの TCP/IP 接続 |
データ・レコード待機タイムアウト (秒) | はい | はい | 60 | データの先頭バイトの到達後に、接続上でノードがさらにデータを listen する時間の長さ。秒単位の任意の時間の長さを指定できます。デフォルトは 60 秒です。指定時間を超過すると、使用可能なデータがすべて Failure ターミナルに送信されます。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
区切り文字 | はい | いいえ | カスタム区切り文字 | このプロパティーは編集できません。 |
末尾の MLLP バイト | はい | はい | 1C0D | HL7 レコード区切り文字として使用される末尾 MLLP バイト。 これらの末尾の MLLP バイトは、HL7DFDLInput ノードによって削除されます。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
再試行メカニズム | はい | いいえ | 短い再試行間隔 (秒) | ノードがフローの障害をどのように処理するかを示します。 有効なオプションは、以下のとおりです。
|
短い再試行間隔 (秒) | はい | はい | 0 | 「再試行しきい値」がゼロでない場合の各再試行間の秒単位の間隔。 |
再試行しきい値 | はい | はい | 0 | 「再試行メカニズム」が「短い再試行間隔 (秒)」である場合に、フロー・トランザクションを再試行する回数。 |
長い再試行間隔 (秒) | はい | はい | 300 | 「再試行メカニズム」が「短い再試行と長い再試行」で、再試行しきい値に達した場合の、再試行間の間隔。 |
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
妥当性検査 | はい | はい | なし | このプロパティーは、妥当性検査を行うかどうかを制御します。
有効な値は以下のとおりです。
|
構文解析のタイミング | はい | いいえ | 要求時 | このプロパティーは、入力メッセージを構文解析する時を制御します。
有効な値は以下のとおりです。
このプロパティーに関する詳しい説明については、要求時の構文解析を参照してください。 |
メッセージ・コード化文字セット ID | はい | いいえ | 1208 | 読み取られるデータを解釈するのに使用されるコード化文字セットの ID。 |