Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

DICOM プロダクションに関するタスク

このページでは、特に DICOM プロダクションで一般的なプロダクション構成を実行する方法について説明します。

DICOM 二重ビジネス・サービスの追加

インターシステムズは、TCP 接続を介して外部ソースから DICOM ドキュメントを受け取る組み込みの二重ビジネス・ホストを提供しています。

DICOM 二重ビジネス・サービスをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの [Interoperability][構成する][プロダクション] ページで表示します。

  2. [サービス] 列で、[追加] ボタン (プラス記号) をクリックします。

  3. ダイアログ・ボックスで、[サービスクラス] リストから EnsLib.DICOM.Service.TCPOpens in a new tab クラスを選択します。

  4. [サービス名] に、このビジネス・サービスの名前を入力します。この名前は、ビジネス・サービス間で一意である必要があります。ピリオドやスペースを使用しないでください。

    デフォルトは、このサービスの基になるクラスの名前です。

  5. [OK] をクリックします。

DICOM ファイル・ビジネス・サービスの追加

インターシステムズは、外部ファイルから DICOM ドキュメントを受け取る組み込みのファイル・ビジネス・サービスを提供しています。

DICOM ファイル・ビジネス・サービスをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの [プロダクション構成] ページで表示します。

  2. [サービス] 列で、[追加] ボタン (プラス記号) をクリックします。

  3. ダイアログ・ボックスで、[サービスクラス] リストから EnsLib.DICOM.Service.FileOpens in a new tab クラスを選択します。

  4. [サービス名] に、このビジネス・サービスの名前を入力します。この名前は、ビジネス・サービス間で一意である必要があります。ピリオドやスペースを使用しないでください。

    デフォルトは、このサービスの基になるクラスの名前です。

  5. [OK] をクリックします。

  6. 必要に応じて、新しいビジネス・ホスト (EnsLib.DICOM.Service.FileOpens in a new tab) の UseStorageLocation 設定を有効にします。

    ファイルを読み込んだ EnsLib.DICOM.Service.FileOpens in a new tab によって、ネームスペースのストリーム・ディレクトリ (mgr/name/stream など) に格納されるストリームが作成されます。UseStorageLocation が有効であれば、以降の DICOM データが格納される StorageLocation に、このストリームが格納されます。

DICOM ビジネス・プロセスの作成

DICOM プロダクションで使用する DICOM ビジネス・プロセスを構築するには、適切なロジックを実行するカスタム・ビジネス・プロセス・クラスを開発し、開発したカスタム・クラスを使用するビジネス・プロセスを作成して構成し、それをプロダクションに統合する必要があります。このトピックでそれぞれの手順について説明します。

DICOM ビジネス・プロセス・クラスの開発

DICOM の双方向性は、BPL を使用してビジネス・プロセスを記述できないことを意味します。ObjectScript を使用してカスタム・ビジネス・プロセスを作成する必要があります。

カスタム・クラスを作成する際には、すべてのユーザ定義 DICOM ビジネス・プロセスのスーパークラスである EnsLib.DICOM.ProcessOpens in a new tab を拡張します。詳細は、"クラス・リファレンス" でそのエントリを参照してください。クラスの作成の詳細は、"カスタム・ビジネス・プロセスの定義" を参照してください。

DICOM 通信の二重性により、ビジネス・プロセスは、プロセス外で何が行われているかを追跡する必要があります。プロセスの状態のコンテキスト変数を使用することでこれを実現し、イベント駆動型の有限状態機械の後にコードをモデル化することができます。

セッションについて

DICOM ビジネス・プロセスのベース・クラスには StopPrivateSession メソッドが含まれており、これを呼び出すことで各メッセージが専用のセッションを確実に取得できます。例えば、ビジネス・プロセスの OnMessage メソッドに以下のコードを含めることができます。

#; Send the reply back to the service ( don't want a response )
Set tSC=..SendRequestAsync(..ServiceDuplexName,tOutput,0)
f $$$ISERR(tSC) Quit                  

#; Stop the private session to ensure each message gets its own session
Set tSC=..StopPrivateSession(..ServiceDuplexName)
If $$$ISERR(tSC) Quit

ただし、このアプローチでは、プロダクションのビジネス・サービスが、プライベート・セッションの停止要求を処理する前に新しいドキュメントを受け取った場合、タイミングが非同期になる問題が発生する可能性があります。このシナリオが発生する可能性があり、DICOM 受信メッセージそれぞれに専用のプライベート・セッションが必要な場合は、解決策として、StopPrivateSession() 呼び出しをビジネス・プロセスではなくカスタム・ビジネス・サービスに配置します。例えば、次のコードでは、EnsLib.DICOM.Service.TCP のサブクラスを生成して、SendDocument メソッドをオーバーライドすることができます。

Method SendDocument(pRequest As EnsLib.DICOM.Document, Output pResponse As %Library.Persistent) As %Status
{
Set tSC = ##super(pRequest)
If $$$ISOK(tSC)

{ If ..%InPrivateSession Set tSC=..StopPrivateSession() }
Quit tSC
}

プライベート・セッションを停止するかどうかを判断する際は、1 つの要求に複数の応答があるかどうかを考慮することが重要です。例えば、複数の応答を予期する要求があり、その応答が高速に到着するために問題が起こる可能性がある場合は、処理がすべて終わるまで待ってからセッションを停止するのが適切です。これに対し、シンプルな 1 対 1 の操作 (単一の C-STORE とその応答など) がある場合は、各要求/応答を個別のプライベート・セッションに配置するのが適切です。

DICOM ビジネス・プロセスの追加

DICOM ビジネス・プロセスをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの [プロダクション構成] ページで表示します。

  2. [プロセス] 列で、[追加] ボタン (プラス記号) をクリックします。

  3. ダイアログ・ボックスで、[ビジネス・プロセス・クラス] リストからカスタム・クラスを選択します。

  4. [プロセス名] に、このビジネス・プロセスの名前を入力します。この名前は、ビジネス・プロセス間で一意である必要があります。ピリオドやスペースを使用しないでください。

    デフォルトは、このプロセスの基になるクラスの名前です。

  5. [OK] をクリックします。

DICOM ビジネス・プロセスの統合

新しい DICOM ビジネス・プロセスをプロダクションに統合するには、その受信ドキュメントを受け取るビジネス・サービスとルーティング・ルール・セット (それらのドキュメントに基づいてそのアクションを決定するルール・セット) にビジネス・プロセスを関連付ける必要があります。これを行うには、以下を実行します。

構成ダイアグラムで DICOM ビジネス・サービスを選択します。[重複ターゲット構成名] フィールドに、DICOM ビジネス・プロセスの構成済みの名前を入力します。

DICOM 二重ビジネス・オペレーションの追加

インターシステムズは、TCP 接続を介して外部ソースから DICOM ドキュメント・メッセージを受け取る組み込みの二重ビジネス・ホストを提供しています。

DICOM ビジネス・オペレーションをプロダクションに追加するには、以下の操作を行います。

  1. そのプロダクションを管理ポータルの [プロダクション構成] ページで表示します。

  2. [オペレーション] 列で、[追加] ボタン (プラス記号) をクリックします。

  3. ダイアログ・ボックスで、[オペレーションクラス] リストから EnsLib.DICOM.Operation.TCPOpens in a new tab クラスを選択します。

  4. [オペレーション名] に、このビジネス・オペレーションの名前を入力します。この名前は、ビジネス・オペレーション間で一意である必要があります。ピリオドやスペースを使用しないでください。

    デフォルトは、このオペレーションの基になるクラスの名前です。

  5. [OK] をクリックします。

DICOM 二重ビジネス・ホストの構成

ビジネス・ホストを構成するには、[プロダクション構成] ページのダイアログラムでそのビジネス・ホストをクリックし、[設定] タブで詳細を編集して、[適用] をクリックします。

DICOM ビジネス・ホストについては、次の設定を構成できます。

重複ターゲット構成名

プロダクション内の構成項目 (ビジネス・ホストが受信 DICOM ドキュメントを送信する送信先) を指定します。

LocalAET

リモート DICOM ピアがプロダクションと通信するために使用する呼び出し先のアプリケーション・エンティティ・タイトル (AET)。これは、相互運用対応ネームスペースで関連付けを定義する際に使用した [呼び出されたAET] に対応します。DICOM ビジネス・サービスについては、このプロパティと RemoteAET プロパティを * ワイルドカードに設定できます。この両方のプロパティを * ワイルドカードに設定した場合、ビジネス・サービスは AET 名に関する通常のチェックを省略し、代わりにデータベース内で定義されている関連付けコンテキストを直接検索します。 関連付けコンテキストが定義されている場合、接続が開かれ、関連付けが通常どおりにネゴシエートされます。定義されていない場合は接続が拒否されます。

RemoteAET

リモート DICOM ピアの呼び出し元のアプリケーション・エンティティ・タイトル。

アダプタがサービス・クラス・プロバイダ (SCP、サーバ) の役割を果たす場合、アダプタには、接続を許可された DICOM ピアの名前のカンマ区切りリストが含まれます。名前は、リテラル文字列である場合もあれば、次の形式のパターン/置換仕様である場合もあります。

?Pattern/Substitution

パターン/置換形式の場合、プロダクションは呼び出し元の AET をパターンと照合します。一致するものがあれば、関連付けの検証のために置換を使用します。例えば、設定値が次のようになっているとします。

?1"B".E/JD-SCU

パターンが B という 1 文字と正確に一致する必要があり、その後にはどんな文字がいくつ続いてもかまわないことを示します。したがって、このエントリは、B で始まるすべての呼び出し元 AET と一致し、JD-SCU に置換します。あらゆる AET を許可するには、?.E をパターンに使用します。

アダプタがサービス・クラス・ユーザ (SCU、クライアント) の役割を果たす場合、アダプタには、プロダクションが接続する DICOM ピアの AET が含まれるか、* ワイルドカードが設定される必要があります (LocalAET プロパティの説明を参照してください)。

TraceVerbosity

提供するデバッグ情報の量に関するフラグ値。

0 - No information
1 - Terse debug information
2 - Verbose debug information
ARTIM

関連付けの要求/拒否/解放のタイムアウト時間 (秒単位)。関連付けの要求に対するピアからの応答に時間がかかる場合、値を調整して大きくします。

TXTIM

データ転送のタイムアウト時間 (秒単位)。データ転送中にピアからの応答に時間がかかる場合、値を調整して大きくします。

接続毎のジョブ

真または偽。受信 TCP 接続ごとに処理を行う新しいプロセスを生成するかどうかを指定します。値が真の場合、複数の接続を同時に処理できます。

IPポート

DICOM ピアの IP ポート。

IPアドレス

DICOM ピアに接続するための IP アドレス。リスニング・モードの場合、このプロパティは NULL です。

OS接続受け付けキューサイズ

リスニング・モードの場合、処理できるようになるまで代わりに OS で開いておく必要がある受信接続の数です。 一度に 1 つの接続のみが予想される場合は、0 に設定します。オペレーティング・システムは追加の接続試行を拒否します。多数のクライアントが次々と接続する場合は、大きい数値に設定します (最大値は 1000 です)。

ローカル・インタフェース

マルチホーム・システムでは、TCP 接続が経由するネットワーク・インタフェースを指定します。空の値は、任意のインタフェースを使用できることを意味します。 IPv6 インタフェースにバインドできるようにするには、インスタンスで IPv6 を有効にしなければならない場合があります。そのためには、システム管理ポータルの [システム管理][構成][追加設定][開始] で IPv6 設定を編集します。

SSL構成

この接続の認証に使用される既存の SSL/TLS 構成の名前。アダプタから通信が開始されるため、クライアント SSL/TLS 構成を選択します。

SSL/TLS 構成を作成して管理するには、管理ポータルを使用します。"TLS 構成の作成または編集" を参照してください。[SSL/TLS構成を編集] フォームの最初のフィールドは [構成名] です。この文字列を [SSL構成] 設定の値として使用します。

残りの設定は、すべてのビジネス・ホストに共通のものであるか、アダプタのタイプによって異なるものであるかのどちらかです。参照先

DICOM のユーザ ID クラスとバージョンの設定

インターシステムズの DICOM の実装は、UIC と VER という 2 つの項目の情報によって識別されます。独自の UIC や VER を構成できますが、そのためには、^Ens.Config("DICOM","UIC") ノードと ^Ens.Config("DICOM","VER") ノードをそれぞれ設定します。

ストレージ場所を制御するための DICOM プロダクションの構成

DICOM データはインターシステムズ・データベースには格納されず、代わりに外部ファイル・ストリームとして格納されるため、DICOM プロダクションを構成して、これらの外部ファイルに使用する場所を指定する必要があります。そのためには、プロダクションで StorageLocation というプロパティを定義します。DICOM のビジネス・サービス、ビジネス・プロセス、およびビジネス・オペレーションが機能するためには、このプロパティが定義されている必要があります。このプロパティでディレクトリを指定すると、そのディレクトリが DICOM データのストレージ場所として使用されます。このプロパティの値が空の文字列である場合は、DICOM データを格納するために既定の一時ディレクトリが使用されます。

Important:

DICOM コンポーネントをプロダクションに追加する場合、StorageLocation プロパティがそのプロダクションで定義されていることを確認する必要があります。StorageLocation プロパティが定義されていない場合は、DICOM データを作成しようとすると、DICOM コンポーネントでエラーが発生する可能性があります。空の文字列を指定してデフォルトの一時ディレクトリを使用するのではなく、DICOM データに使用するディレクトリを指定することをお勧めします。インターシステムズのインスタンスを再起動すると、既定の一時ディレクトリからデータが削除される場合があります。

また、既定では、ファイルを読み込んだ EnsLib.DICOM.Service.FileOpens in a new tab によってネームスペースのストリーム・ディレクトリ (mgr/name/stream など) に格納されるストリームが作成されます。これらのストリームを StorageLocation に格納するには、EnsLib.DICOM.Service.FileOpens in a new tabUseStorageLocation 設定を有効にします。

StorageLocation プロパティはプロダクション定義で定義されています。このプロパティを新しいプロダクションに追加するには、次の手順に従います。

  1. スタジオでプロダクション・クラスを編集します。

  2. プロダクション・クラス定義で、プロダクション設定を定義する XDATA の後に次の行を挿入します。

      Parameter SETTINGS = "ShutdownTimeout,UpdateTimeout,StorageLocation";
    
      /// This is the storage location for the DICOM streams to be stored
      Property StorageLocation As %String [ InitialExpression = "directory-location" ];
    
    

    DICOM データをシステムで格納するディレクトリ (c:\InterSystems\DICOM など) で directory-location を置き換えてください。

  3. プロダクション・クラスをコンパイルします。

  4. 管理ポータルでプロダクションを開きます。StorageLocation プロパティが [追加設定] セクションに表示されます。必要に応じて StorageLocation の値を設定します (または、既に説明したように InitialExpression で指定した値を保持します)。

Note:

EnsLib DICOM コンポーネントによって、次の呼び出しを使用してストレージ場所がチェックされます。

  Set tStorageLocation=..GetProductionSettingValue("StorageLocation",.tSC)
FeedbackOpens in a new tab