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