DICOM ルータ・プロダクションのサンプル
ENSDEMO ネームスペースには、同期ルータと非同期ルータのデモを行う 2 つのプロダクションがあります。名前は Demo.DICOM.Production.RouterOpens in a new tab と Demo.DICOM.Production.AsyncRouterOpens in a new tab です。これらのプロダクションは、ユーザが Ensemble 経由で DICOM ドキュメントをルーティングする方法を示します。通常、DICOM は同期メッセージングを使用しますが、非同期ルータを使用した方が有利な場合もあります。
同期 DICOM ルータ
同期 DICOM ルータ・プロダクション Demo.DICOM.Production.RouterOpens in a new tab は、ターゲットへのメッセージ送信を完了してから、別のメッセージを受け入れます。このルータ・プロダクションのメッセージの流れを以下に示します。
-
リモートのサービス・クラス・ユーザ (SCU) は、リスナ・サービスに接続し、メッセージを送信します。
-
リスナ・サービスは、メッセージを受信すると、メッセージをディスパッチャに送信します。
-
ディスパッチャはメッセージをそれぞれのファイラに送信します。このプロダクションのサンプルには 2 つのファイラがあります。
-
それぞれのファイラは、メッセージをオペレーションに送信し、適切な PACS システムとの関連付けを確立し、ドキュメントをそのシステムに送信します。
-
ディスパッチャは、それぞれのオペレーションからの応答受信に成功すると、成功の応答メッセージをリスナに送信し、リスナは新しいメッセージを受け入れることができるようになります。
非同期 DICOM ルータ
非同期 DICOM メッセージ・リスナは、プロダクションが前のメッセージを処理中でもメッセージの受信を継続できます。非同期ルータ・プロダクションのメッセージの流れを以下に示します。
-
リモートのサービス・クラス・ユーザ (SCU) は、リスナ・サービスに接続し、メッセージの送信を開始します。
-
リスナ・サービスは、メッセージを受信すると、すぐに C-STORE-RSP で応答し、そのメッセージの処理を受け入れます。リスナ・サービスは、非同期ディスパッチャにメッセージを送信します。
-
非同期ディスパッチャ・プロセスは、それぞれのファイラのテーブル Demo_DICOM.BatchedDocument のエントリをキューに入れます。このプロダクションのサンプルには 2 つのファイラ AsyncFiler1 と AsyncFiler2 があります。これは、ルール・クラス SendToTargetFiler メソッドを使用して、ドキュメントをそれぞれのファイラに送信するかどうかを判定します。
-
ドキュメントがファイラへの送信用である場合、非同期ディスパッチャは DocumentStatus を "Queued" に設定します。
-
ドキュメントがファイラへの送信用ではない場合、非同期ディスパッチャは DocumentStatus を "Ignored" に設定します。
-
-
リモート SCU とリスナ・サービスの関連付けが解放されたら、非同期ディスパッチャは、そのセッションのキューに入れられているドキュメントがあるそれぞれのファイラにメッセージを送信します。
-
それぞれのファイラは、メッセージをオペレーションに送信し、適切な PACS システムとの関連付けを確立し、それぞれのドキュメントをそのシステムに送信します。
-
プロダクションは、C-STORE-RSP 応答を受信すると、Demo_DICOM.BatchedDocument テーブルのエントリに "Delivered" (ステータスが成功の場合) または "Errored" (それ以外の場合) の DocumentStatus のマークを付けます。ステータスが成功以外の場合には、エントリの Remark (備考) に ErrorComment が格納されます。
-
ファイラの Remove Completed Entries (完了したエントリを削除する) の設定にチェックが付いている場合、ファイラは、C-STORE-RSP メッセージをすべて受信すると、現在のセッションの送信済みのエントリをすべて削除します。 ただし、リモートの SCP が ABORT を戻した場合、または現行セッションのファイラのすべてのドキュメントが送信される前に関連付けでエラーが発生した場合、ファイラは、現行セッションのすべてのドキュメントを再送信します。この動作は、すべてのドキュメントの送信が成功するまで、または指定した再試行回数に達するまで続きます。 すべてのドキュメントの送信に成功しないまま、指定した再試行回数に達すると、ファイラは、現行セッションのすべてのドキュメントを再度キューに入れ、アラートを発行します。アラート・メッセージは Ens.Alert に送信され、ここから電子メール・アラートが送信されます。