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 関連付けを作成する方法について説明します。

DICOM 関連付けの概要

DICOM の入出力を処理するプロダクションを開発するには、まず、各 DICOM デバイス (モダリティ) に関する製造業者の適合性宣言に含まれている情報を入手する必要があります。この情報を使用して、DICOM モダリティとの通信を円滑化するためにプロダクションが使用する DICOM 関連付けを作成します。DICOM 関連付けは、このような通信のやり取りの特性を記述したメタデータです。

DICOM モダリティとやり取りするプロダクションに特有の最も重要な要素は、関連付けの作成とテストです。これらの関連付けを作成するには、まず、モダリティの製造業者の適合性宣言に含まれている情報が必要です。自社の機器やソフトウェアが DICOM 規格に適合していると主張する製造業者は、そのデバイスやソフトウェアがどのように規格に適合しているかを正確に説明する適合性宣言を提出する必要があります。

関連付けは、モダリティ間のやり取りの特性を定義するものです。関連付けを作成するには、適合性宣言内の次の情報を使用します。

  • その実装によって認識される情報オブジェクト — DICOM 用語で、モダリティによってサポートされるアプリケーション・エンティティ (AE) の定義。アプリケーション・エンティティは、関連付けのエンド・ポイントを定義します。1 つの DICOM デバイスに多数の AE がある場合もあります。

  • その実装がサポートするサービス・クラスサービス・オブジェクト・ペア (SOP) クラス (抽象構文) とそれに付随するバイナリ転送構文。サポートされる SOP クラスのリストは、適合性宣言の重要な要素の 1 つです。アプリケーションが提供して受け入れるサービス・クラスと情報オブジェクトがこのリストに記載されています。

  • プレゼンテーション・コンテキスト — 各抽象構文に対応する転送構文のさまざまなオプションで構成されます。DICOM 適合性宣言には、アプリケーションがネゴシエーション中に提示するプレゼンテーション・コンテキストと、アプリケーションが受諾するプレゼンテーション・コンテキストの両方がリストされています。

関連付けのネゴシエーション中に、プロダクションは使用する転送構文を 1 つ選択します。転送構文がリストされている順序は重要です。リストの先頭にある転送構文は、リストの末尾にある転送構文より優先されます。正確な構文がわかっていれば、パフォーマンスが向上します。これは圧縮画像にとって重要です。プロダクションでは構文間の変換は行われません。

適合性宣言には、モデル内のアクティビティごとにアクティビティが関連付けを処理する方法 (つまり、アクティビティが関連付けを開始し、複数の関連付けを受諾するかどうか) が記載されています。画像保存通信システム (PACS) 内のアーカイブなどの一部のデバイスでは、満足できるパフォーマンスを実現するために複数の関連付けをサポートする必要があります。そうしないと、どの時点でも 1 つのアクティビティ (DICOM 保存など) しか処理できなくなります。

入力する関連付け情報は、ネームスペースに固有です。それらの関連付けを定義および保守する同じネームスペースでプロダクションを作成して実行する必要があります。

詳細は、"クラス・リファレンス" で EnsLib.DICOM.Util.AssociationContextOpens in a new tab を参照してください。

DICOM 関連付けのインポート

相互運用対応ネームスペースに関連付けを追加できますが、そのためには、EnsLib.DICOM.Util.AssociationContextOpens in a new tabImportAssociation() メソッドを実行して、SOP/転送構文のペアを含むファイルから受諾可能なプレゼンテーション・コンテキストと提示プレゼンテーション・コンテキストをインポートします。

ImportAssociation()Opens in a new tab メソッドには次のシグニチャがあります。

classmethod ImportAssociation(pFileName As %String,
                              pCallingAET As %String,
                              pCalledAET As %String,
                              pOverWriteExisting As %Boolean = 0)

ImportAssociation() メソッドには次の引数があります。

pFileName

SOP クラス UID/転送構文 UID という形式でプレゼンテーション・コンテキストのリストを含むファイルの名前。ファイル内のペアごとにプレゼンテーション・コンテキストで呼び出し元アプリケーション・エンティティ・タイトル (AET) と呼び出し先 AET との間の関連付けをメソッドで作成します。

1 行に 1 つずつ SOP クラス (抽象構文) をリストします。区切り文字として \ を使用し、行に転送構文を追加して指定します。転送構文を指定しない場合、インポートによってデフォルトの DICOM 転送構文 (暗黙的 VR - リトル・エンディアン) が追加されます。インポート・ファイルでは数値表現 (UID) を使用してください。

pCallingAET

サービスの要求側を含むアプリケーション・エンティティ (AE) を指定します。これは、ソース DICOM アプリケーション名に基づきます。呼び出し元のアプリケーション・エンティティ・タイトル (AET) は通常、サービス・クラス・ユーザ (SCU) です。

pCalledAET

サービスの対象となる受け入れ側を含むアプリケーション・エンティティを指定します。これは、宛先 DICOM アプリケーション名に基づきます。呼び出し先のアプリケーション・エンティティ・タイトルは通常、サービス・クラス・プロバイダ (SCP) です。

pOverWriteExisting

同じ AET ピア間の関連付けがネームスペースに存在する場合、この引数によって動作が制御されます。真 (1) の場合、関連付けを上書きします。偽 (0) の場合、関連付けが存在することを示すエラーを表示します。

詳細は、"DICOM 転送構文" を参照してください。DICOM 抽象構文については、管理ポータルを使用します。[Interoperability][相互運用][DICOM][DICOM 抽象構文] を選択し、[進む] をクリックします。

関連付けのインポートの例

例えば、次に示すサンプルのプレゼンテーション・コンテキスト・テーブル (適合性宣言から取得) の情報を使用して、ワーク・リスト・モダリティへの関連付けを追加できます。

The table includes the Modality Worklist's abstract syntaxes, transfer syntaxes, UIDs, and role.

抽象構文/転送構文の組み合わせごとに 1 行を使用する関連付けのファイルを作成します。各項目には UID を使用します。例えば、テキスト・ファイル MyAssociations.txt の内容は次のようになります。

1.2.840.10008.1.1
1.2.840.10008.5.1.4.31\1.2.840.10008.1.2
1.2.840.10008.5.1.4.31\1.2.840.10008.1.2.1
1.2.840.10008.5.1.4.31\1.2.840.10008.1.2.2

SOP クラスに対応する受諾可能な転送構文がデフォルトの暗黙的 VR - リトル・エンディアン (UID : 1.2.840.10008.1.2) のみである場合、ファイルの 1 行目のように、その SOP クラスに対応する転送構文を指定する必要はありません。

抽象構文/転送構文のペアのファイルを作成したら、開発中のプロダクションが含まれるネームスペースで次のメソッドを呼び出します。例を以下に示します。

 set $namespace = "mynamespace"

 Do ##class(EnsLib.DICOM.Util.AssociationContext).ImportAssociation
           ("c:\InterSystems\DICOM\MyAssociations.txt",
            "ENS-SCU",
            "MWL-SCP",
             0)

結果の関連付け情報を管理ポータルで表示できます。[Interoperability][相互運用][DICOM][DICOM設定] ページに、この関連付け情報が表示されます。

The associated settings defined for the namespace are ENS-SCU for the Calling AET and MWL-SCP for the Called AET.

テーブル内の行を選択し、[編集] をクリックして、[関連付け] タブと [プレゼンテーションコンテキスト] タブを表示します。

On the association tab, you can edit the Calling AET or the Called AET, or add a Name or Description.

DICOM 関連付けの作成

すべての既知 SOP クラスと転送構文の指定リストについて、呼び出し元 AET と呼び出し先 AET との間で関連付けのスーパーセットも作成できます。そのためには、EnsLib.DICOM.Util.AssociationContextOpens in a new tabCreateAssociation() メソッドを実行します。

CreateAssociation()Opens in a new tab メソッドには次のシグニチャがあります。

classmethod CreateAssociation(pCallingAET As %String,
                              pCalledAET As %String,
                              pTransferSyntaxes As %List)

CreateAssociation() メソッドには次の引数があります。

pCallingAET

サービスの要求側を含むアプリケーション・エンティティ (AE) を指定します。これは、ソース DICOM アプリケーション名に基づきます。呼び出し元のアプリケーション・エンティティ・タイトル (AET) は通常、サービス・クラス・ユーザ (SCU) です。

pCalledAET

サービスの対象となる受け入れ側を含むアプリケーション・エンティティを指定します。これは、宛先 DICOM アプリケーション名に基づきます。呼び出し元のアプリケーション・エンティティ・タイトルは通常、サービス・クラス・プロバイダ (SCP) です。

pTransferSyntaxes

関連付けのプレゼンテーション・コンテキストを作成するために既知の各 SOP クラスとペアにする転送構文のリスト

(デフォルトのリストには、必須のデフォルトの暗黙的 VR - リトル・エンディアン転送構文が含まれています)。

既知の SOP をすべてサポートする呼び出し先 AET と指定呼び出し元 AET の関連付けコンテキスト・インスタンスをこのメソッドで作成します。

Note:

この関連付けでは単純に、データ・ディクショナリ内の既知の SOP クラスすべてが定義されます。この場合はパフォーマンスが多少低下するため、次の節で説明するように管理ポータルを使用するか、前の節で説明した ImportAssociation() メソッドを使用して、必要な SOP クラスのみを定義することをお勧めします。不要なクラスを関連付けに含めると、モダリティとプロダクションの間のハンドシェイクにかかる時間が長くなる可能性があります。

例えば、すべての既知の SOP クラスを含む既定の関連付けを生成する DICOM プロダクションでは、次のコードを使用できます。

#; We will be accepting Storage and Query requests from JD-SCU
  Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation
            ("JD-SCU","ENS-SCP",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))

#; We will be sending storage requests to the JD-SCP
  Do ##class(EnsLib.DICOM.Util.AssociationContext).CreateAssociation
            ("ENS-SCU","JD-SCP",$ListBuild($$$IMPLICITVRLETRANSFERSYNTAX))

転送構文に関する考慮事項

場合によっては、明示的な方が有効です。多くの場合、元のタイプ名が保持され、下位互換性がさらに高まるためです。

明示的 VR (値表現) と暗黙的 VR のエンコーディングを混在させることはできないため、どちらの手法を使用するかの決定は、データ転送の最初に行われる必要があります。DICOM アプリケーションは、データを交換する前にエンコーディング・タイプについてネゴシエートして合意します。

DICOM 関連付けの保守

関連付けを保守するには、管理ポータルの [Interoperability][相互運用][DICOM][DICOM設定] ページを使用します。

このページには、選択したネームスペースの既存の関連付けがリストされ、次の機能が用意されています。

  • 関連付けの作成、編集、または削除 — インターシステムズは、関連付け情報を入力または編集するためのフォームを提供しています。既存の関連付けをリストから削除することもできます。"DICOM 関連付けの作成と編集" を参照してください。

  • 抽象構文の表示 — インターシステムズは、DICOM 規格の既知の SOP クラス情報がすべて記載された DICOM 抽象構文のリストを提供しています。"抽象構文の表示" を参照してください。

  • ディクショナリの表示 — インターシステムズは、DICOM 規格の既知のデータ要素情報がすべて記載された DICOM データ・ディクショナリを提供しています。詳細は、"DICOM データ・ディクショナリの表示" を参照してください。

DICOM 関連付けの作成と編集

[Interoperability][相互運用][DICOM][DICOM設定] ページには、選択したネームスペースで定義されているすべての関連付けがリストされます。このリストから、[編集] または [削除] を選択して既存の関連付けの編集や削除を行うことができます。また、[新規関連付け作成] を選択することもできます。関連付けを削除するには、該当する行で [削除] をクリックし、[OK] をクリックして確認します。

このページには 2 つのタブがあります。

  • [関連付け] タブを使用すると、関連付けを作成または編集できます。このタブでは次の情報を入力または編集します。

    • [呼び出しているAET] — サービスの要求側を含むアプリケーション・エンティティ (AE) を指定します。これは、ソース DICOM アプリケーション名に基づきます。呼び出し元の AET は通常、サービス・クラス・ユーザ (SCU) です。

    • [呼び出されたAET] — サービスの受け入れ側を含むアプリケーション・エンティティ (AE) を指定します。これは、宛先 DICOM アプリケーション名に基づきます。呼び出し先の AET は通常、サービス・クラス・プロバイダ (SCP) です。

    • [名前] — (オプション) 関連付けの名前。長さは 64 文字までです。

    • [説明] — (オプション) 関連付けの説明。長さは 254 文字までです。

    関連付けを更新または作成するには、[保存] をクリックします。必須フィールドに情報が入力されていない場合は、その説明が赤字で表示されます。更新を破棄し、[DICOM設定] ページの既存の関連付けのリストに戻るには、[閉じる] をクリックします。

    呼び出し元と呼び出し先のアプリケーション・エンティティ・タイトルを組み合わせて、関連付けの一意の ID が作成されます。関連付けを保存した後で、これらのフィールドを変更することはできません。関連付けを削除してから、新しい関連付けを追加できます。

  • [プレゼンテーションコンテキスト] タブを使用すると、関連付けに関連するプレゼンテーション・コンテキストを保守することができます。このタブでは次のアクションを実行できます。

    • [前のページに戻る] — クリックすると、[Interoperability][相互運用][DICOM][DICOM設定] ページの関連付けのリストに戻ります。

    • [追加] — クリックすると、抽象構文のエントリをリストに追加し、受諾可能な転送構文や提示される転送構文の組み合わせのリストを保持します。"プレゼンテーション・コンテキストの追加" を参照してください。

    • [削除] — 抽象構文をハイライト表示し、[削除] をクリックします。特定の転送構文のみを削除するには、[編集] をクリックし、選択したリストから削除します。

    • [編集] — クリックすると、選択した抽象構文に対応する転送構文を追加または削除します。

    DICOM ソースへの関連付けについて関連情報をすべて入力したら、その関連付け情報をプロダクションの構成で使用できます。

プレゼンテーション・コンテキストの追加

DICOM 特有のメッセージを含む各ネットワーク転送は、関連付けのハンドシェイクを確立することから始まります。その際、接続を試みる 2 つのアプリケーションが互いの情報を交換します。この情報をプレゼンテーション・コンテキストと呼びます。プレゼンテーション・コンテキストは、アプリケーション・エンティティ間のネゴシエーションに従って、関連付けを介して使用される一連の DICOM ネットワーク・サービスです。これには、抽象構文転送構文が含まれます。プロダクションでは、EnsLib.DICOM.Util.PresentationContextOpens in a new tab クラスを使用してこの情報を表します。2 つのアプリケーションのコンテキストが適合できると、相互に接続し、SCU-SCP 処理を開始できます。

プレゼンテーション・コンテキストのエントリを追加するには、以下の操作を行います。

  1. [プレゼンテーションコンテキスト] タブで [追加] をクリックします。

  2. DICOM デバイスでサポートされている抽象構文をクリックします。このタブには、DICOM 規格の既知の抽象構文すべてに対応する UID と SOP クラス名がリストされます。追加する転送構文に対応する [アブストラクトシンタックス] をリストから一度に 1 つだけ選択することができます。

  3. 抽象構文を選択したら、[>] 矢印を使用して、デバイスに有効なタイプを [利用可能な変換シンタックス] リストから [選択された変換シンタックス] リストに移動します。

  4. 抽象構文に対応する適切な転送構文の選択が完了したら、[保存] をクリックして新しいコンテキストをツリーに追加します。編集内容を取り消して、既存のプレゼンテーション・コンテキスト・ツリーに戻るには、[キャンセル] をクリックします。

例えば、多くの適合性宣言には、一般的な確認 SOP クラス (1.2.840.10008.1.1) が抽象構文として記載されています。適合性宣言には通常、モダリティがプロバイダ (SCP) として機能する場合は受諾可能なプレゼンテーション・コンテキストの組み合わせがリストされ、ユーザ (SCU) として機能する場合は提示されるプレゼンテーション・コンテキストの組み合わせがリストされます。前出のプレゼンテーション・コンテキスト・テーブルの例では、このクラスは暗黙的 VR - リトル・エンディアン転送構文 (1.2.840.10008.1.2) を受諾します。

"DICOM 転送構文" に、このページに表示される情報のリストを掲載しています。

抽象構文の表示

[Interoperability] > [相互運用] > [DICOM] > [DICOM アブストラクト・シンタックス] ページには、DICOM PS 3.6 規格の SOP クラスとそれらの一意の識別子のテーブルが表示されます。抽象構文という用語が使用される理由の 1 つは、DICOM が参照する国際標準の 1 つでこの用語が定義されているためです。

[抽象構文の表示] ページの [フィルタ] 機能を使用するには、文字列の一部を入力し、Tab キーを押して、フィルタが適用されたテーブルを再読み込みします。検索では大文字と小文字が区別されません。入力した文字列がいずれかの列のデータと一致すると、結果が返されます。

DICOM データ・ディクショナリの表示

DICOM データ・ディクショナリは、メディア・エンコーディングに使用される要素と DICOM によって割り当てられた一意に識別される項目のリストと共に、情報を表すために使用可能なすべての DICOM データ要素の集合を定義する一元的なレジストリです。[Interoperability] > [相互運用] > [DICOM] > [DICOM ディクショナリ] ページには、DICOM PS 3.6 規格の要素のテーブルが表示されます。

[ディクショナリの表示] ページの [フィルタ] 機能を使用するには、文字列の一部を入力し、Tab キーを押して、フィルタが適用されたテーブルを再読み込みします。検索では大文字と小文字が区別されません。入力した文字列がいずれかの列のデータと一致すると、結果が返されます。

次のテーブルでは、ページに表示される情報について説明します。

列名 説明
タグ 順番に並べられた番号のペア (グループ番号、要素番号の順) から成る情報の要素に対応する一意の識別子。属性および対応するデータ要素の識別に使用されます。
名前 DICOM データ・ディクショナリ要素の名前。
VR 値表現。データ要素の値フィールドに含まれる値のデータ型および形式を示します (整数や文字列の型など)。
VM 値多重性。データ要素の値フィールドでエンコード可能な値の数を示します。
(コード) 項目のコードが定義されている場合、リンクが表示されます。[コード] をクリックすると、その要素に有効な値および対応する内部数値コードのリストがダイアログ・ボックスに表示されます。[フィルタ] に文字列の一部を入力して、このテーブルをフィルタすることもできます。

この情報は参照のみを目的としています。フィールドにはさまざまな値が出現する可能性があるため、プロダクションでは、列挙されているこれらの値の使用が強制されているわけではありません。特定のフィールドに入力する値を決定する際に、これらのテーブルを参考にしてください。最終的な参照資料は常に、NEMA が発行した正式な DICOM PS 3.6 規格です。

DICOM 関連付けのテスト

関連付けを定義したら、次の手順に従ってプロダクションでテストすることができます。

  1. プロダクションを構成する前に、ワーキング・モダリティの TCP トレースを取得します。

  2. いずれかのデモ・プロダクションを開始します。

  3. ビジネス・サービスを追加します。

  4. エコー・メッセージを送信します。

  5. 接続をデバッグします。

以下は、サードパーティ製 DICOM テスト・ツールのサンプル・ログです。関連付けの確立、ECHO メッセージの要求と応答、および関連付け接続の解放を示しています。

test: #5:ENS-SCP << A-ASSOCIATE-RQ PDU
test: #5:ENS-SCP >> A-ASSOCIATE-AC PDU
test: #5:ENS-SCP << C-ECHO-RQ Verification SOP Class
test: #5:ENS-SCP >> C-ECHO-RSP Verification SOP Class, status #0000H[Success]
test: #5:ENS-SCP << A-RELEASE-RQ PDU
test: #5:ENS-SCP >> A-RELEASE-RP PDU
test: #5:ENS-SCP closing socket

The event log, showing six entries. Columns include Number, ID, Time Logged, Type, Job, Session, Source, Method, and Text.

FeedbackOpens in a new tab