3 DICOMの開発の概要
この章では、Oracle Multimedia DICOMを使用したアプリケーションの開発に関連する開発者および管理者のタスクについて簡単に説明します。
この章では、次の内容を説明します。
3.1 DICOMの開発環境
Oracle Multimedia DICOMでは、DICOMコンテンツに関連する多くの操作の機能が提供されています。たとえば、管理者は、現在の環境にユーザー定義のドキュメントを追加するかどうかを決定する前に、DICOMデータ・モデル・リポジトリにあるOracleで定義された構成ドキュメントを確認できます。これらの構成ドキュメントに関する属性およびその他の詳細情報を管理者が取得するには、ビューを使用するか、またはデータ・モデル・ユーティリティのファンクションをコールします。また、開発者は、DICOMコンテンツ、メタデータ属性およびその他のオブジェクトを直接処理して、様々な操作を実行することもできます。
インストールが完了すると、各データベースには、デフォルトの構成ドキュメント・セットがOracle Multimedia DICOMデータ・モデル・リポジトリに含まれます。インストール後に、管理者は特定の組織に固有の構成ドキュメントを追加できます。構成ドキュメントに関する一般的な情報は、リポジトリ内の構成ドキュメントを参照してください。DICOMリポジトリ内のこれらの文書を管理する方法の詳細は、DICOM管理の使用方法およびリファレンスを参照してください。
次の各項では、DICOM開発環境について説明します。
3.1.1 Oracle Multimedia DICOMで使用するAPI
Oracle Multimedia DICOMは、Oracle Multimediaのインストール後に完全に機能するため、開発者はすぐにアプリケーションの作成を開始できます。Oracle Multimedia DICOMでは、開発者向けにいくつかのアプリケーション・プログラミング・インタフェース(API)を提供していますが、これらは管理者も使用できます。
さらに、Oracle Multimedia DICOMには管理者専用のORD_DICOMデータ・モデル・リポジトリAPIも用意されています。管理者はこのAPIを使用して、データ・モデル・リポジトリから構成ドキュメントの挿入または削除を行うことによって、開発者を支援できます。
次の表では、Oracle Multimedia DICOMの使用可能なアプリケーション・プログラミング・インタフェースをリストし、それらを使用できるユーザーを示し、詳細情報のリンク先を示しています。
表3-1 DICOM用のアプリケーション・プログラミング・インタフェース
APIの名前 | ユーザーのタイプ | 詳細の参照先 |
---|---|---|
DICOMデータ・モデル・ユーティリティAPI |
管理者および開発者 |
|
DICOM PL/SQL API |
管理者および開発者 |
|
ORDDicomオブジェクトAPI |
管理者および開発者 |
|
Mid-Tier Java API |
管理者および開発者 |
|
ORD_DICOM_ADMINデータ・モデル・リポジトリAPI |
管理者のみ |
3.1.2 DICOMリポジトリ内のビュー
Oracle Multimedia DICOMでは、DICOMリポジトリ内のドキュメントに関する具体的な情報へのアクセスを可能にするビューが提供されます。パブリック・ビューは、リポジトリのユーザーと管理者が使用できます。これらのビューには、ドキュメント名、ドキュメント・タイプ、制約名および制約検証メッセージなどの詳細が示されます。管理者専用ビューには、リポジトリ内のドキュメント参照に関する詳細が表示されます。
次の表は、ビューのリストで、アクセスが許可されるユーザーと詳細情報の入手先を示しています。
表3-2 DICOMリポジトリのビュー
名前 | アクセス | 詳細の参照先 |
---|---|---|
orddcm_conformance_vld_msgs |
パブリック |
|
orddcm_constraint_names |
パブリック |
|
orddcm_document_types |
パブリック |
|
orddcm_documents |
パブリック |
|
orddcm_document_refs |
管理者のみ |
orddcm_conformance_vld_msgs
orddcm_conformance_vld_msgsビューには、検証操作中に一連の制約に対して生成された制約メッセージがリストされます。
注意:
このビューには、現行のユーザーのスキーマに対する制約メッセージのみがリストされます。
orddcm_constraint_names
orddcm_constraint_namesビューには、リポジトリにインストールされている制約の名前がリストされます。
orddcm_document_types
orddcm_document_typesビューには、サポート対象のOracle Multimedia DICOMドキュメント・タイプがコードのリストとともに示されます。
orddcm_documents
orddcm_documentsビューには、リポジトリに格納されているドキュメントの詳細がリストされます。
orddcm_document_refs
管理者の場合のみ、orddcm_document_refsビューにはリポジトリ内の他のドキュメントによって参照されているリポジトリ内のドキュメントがリストされます。
3.2 DICOMの開発者および管理者のタスク
次のタスクは、次の各項で説明されているように、Oracle Multimedia DICOMを使用したアプリケーション開発でお薦めされる方法を示しています。
また次の各タスクでは、管理者と開発者が別個の特定の手順セットを実行する必要があります。
-
DICOMメタデータの抽出
-
DICOM制約への準拠の検証
-
患者の機密データの保護
3.2.1 タスク1: リポジトリのロード
データベース・セッションを開始するたびに、ユーザーおよび管理者は、データベースからメモリー構造にデータ・モデル・リポジトリをロードする必要があります。ユーザーは、setDataModel( )プロシージャをコールしてデータ・モデルをロードします。管理者は、setDataModel( )プロシージャまたはeditDataModel( )プロシージャをコールして、データ・モデルをロードします。
リポジトリがメモリーにロードされると、ユーザーと管理者は、アプリケーションでデータ・モデルの新しい変更が必要なときにいつでも、setDataModel( )プロシージャをコールできます。
注意:
ユーザーおよび管理者は、他のDICOMメソッド、ファンクションまたはプロシージャをコールする前に、setDataModel( )プロシージャをコールする必要があります。
ORD_DICOMパッケージのDICOMデータ・モデル・ユーティリティを使用して、ユーザーと管理者は次のようにsetDataModel( )プロシージャをコールします。
exec ord_dicom.setdatamodel;
詳細は、setDataModel( )プロシージャおよびeditDataModel( )プロシージャを参照してください。
3.2.2 タスク2: DICOMコンテンツのロード
DICOMコンテンツをOracle Databaseの既存の表にロードするために、SQL*Loaderユーティリティを使用できます。最初に、適切な列を持つ表を作成し、列を初期化する必要があります(ORDDicom列を含む表の作成を参照)。その後、SQL*Loaderユーティリティをコールして、DICOMコンテンツを、データファイルから表の列にSecureFiles LOBとしてロードします(SQL*Loaderユーティリティを使用したDICOMコンテンツのロードを参照)。DICOMコンテンツで操作を実行する前に、setDataModel( )プロシージャをコールして、DICOMデータ・モデルをロードする必要があります(setDataModel( )プロシージャを参照)。
DICOMコンテンツがロードされると、DICOMメタデータの抽出、DICOM属性の検索および取得、DICOMメタデータの記述および編集、サムネイル画像の作成、DICOMコンテンツの準拠の検証、機密のDICOMコンテンツの匿名化など、他の操作を実行できます。
SQL*Loaderユーティリティを使用して、DICOMコンテンツをロードし、DICOMコンテンツの特定のメタデータ属性を匿名化する方法を示す例は、DICOMアプリケーションの開発を参照してください。
関連項目:
SQL*Loaderユーティリティを使用して、オブジェクトおよびLOBをOracle Databaseにロードする方法の詳細は、Oracle Databaseユーティリティを参照してください。
3.2.3 タスク3: DICOMメタデータの抽出
Oracle Multimedia DICOMは、DICOMコンテンツからのメタデータの抽出をサポートします。抽出されたメタデータを検索することによって、関連するメタデータを含む特定のDICOMコンテンツをアプリケーションで検索できます。
デフォルトのメタデータのXMLスキーマに準拠するXMLドキュメントにすべてのDICOM属性を抽出するには、最初にsetProperties( )メソッドをコールして、メタデータのXMLドキュメントを抽出してORDDicomオブジェクトのメタデータ属性に格納します。デフォルトのメタデータのXMLスキーマは、DICOM属性を格納するための完全な汎用データ・モデルを定義します。カスタマイズされたメタデータ・スキーマ、および特定のアプリケーション用にカスタマイズされた対応するマッピング・ドキュメントは、デフォルトの汎用メタデータ・スキーマに比べて、索引付けおよび検索のパフォーマンスが向上する場合があります。カスタム・スキーマおよびマッピング・ドキュメントを使用すると、検索用に最適化された階層構造内で、頻繁に検索されるDICOM属性を定義することができます。
DICOM属性をXMLTypeのアプリケーション固有のXML文書に抽出するには、extractMetadata( )メソッドをコールして、アプリケーション固有のマッピング・ドキュメントを指定します。結果として生成されるアプリケーション固有のメタデータのXMLドキュメントは表の列に格納できます。このメタデータは、アプリケーション固有のXMLスキーマにバインドできます。
詳細はsetProperties()およびextractMetadata( )メソッドを参照してください。
次の各項では、メタデータを抽出するときに管理者および開発者が実行する手順を示します。
3.2.4 タスク4: DICOM属性の検索および取得
Oracle Multimedia DICOMは、DICOM属性の検索および取得をサポートします。
SOPインスタンスUID、SOPクラスUID、検査インスタンスUID、およびシリーズ・インスタンスUIDの属性をORDDicomオブジェクト属性に抽出するには、最初にsetProperties( )メソッドをコールして、ORDDicomオブジェクトの属性を移入します。これらのDICOM属性は、ORDDicomオブジェクト内から容易に取得できます。検索をより高速化するために、対応するオブジェクト属性に索引を作成して、これらの属性に索引を付けることもできます。(リファレンス情報は、ORDDicomオブジェクト型のリファレンスを参照してください。)
メタデータXMLドキュメント内の属性を検索および取得するには、属性のXPath式を指定して、SQL XMLファンクションXMLCast( )、XMLExists( )、XMLQuery( )およびXMLTable( )をコールします。検索をより高速化するために、メタデータのXML文書の属性に索引を付けることもできます。
関連項目:
-
リファレンス情報は、Oracle Database SQL言語リファレンスを参照してください。
-
XMLTypeデータの索引付けの詳細は、Oracle XML DB開発者ガイドを参照してください。
単一のDICOM属性を取得するには、getAttributeByTag( )メソッドまたはgetAttributeByName( )メソッドのいずれかをコールします。この処理は、サイズの大きい表、または複数の属性にはお薦めしません。ただし、この処理を使用する場合は、検索を高速化するために、これらのメソッドでファンクションベースの索引を作成することをお薦めします。(リファレンス情報は、ORDDicomオブジェクト型のリファレンスを参照してください。)
注意:
DICOM属性を取得を可能にするには、事前に、setProperties( )メソッド(setProperties( )を参照)をコールして、ORDDicomオブジェクトの属性を移入する必要があります。
3.2.6 タスク6: DICOMデータの処理、変換および圧縮
Oracle Multimedia DICOMでは、指定されたコマンド・パラメータに従って、DICOMコンテンツのコピーや処理、およびDICOM形式または別のメディア形式でコンテンツの保存を行うprocessCopy( )メソッドが提供されています。processCopy( )メソッドを使用すると、新しいコンテンツが作成され、元のDICOMコンテンツは保持されます。
次のリストに、Oracle Multimedia DICOMでサポートされている処理、変換および圧縮操作の概要と、各操作に対応するprocessCopy( )メソッドのコマンド・パラメータの例を示します。
-
JPEGサムネイル画像の作成。次に例を示します。
'fileFormat=jpeg, maxScale=100 100'
-
元のDICOM画像と同じサイズのJPEG画像の作成。次に例を示します。
'fileFormat=jpeg'
-
DICOMコンテンツ内の画像コンテンツの圧縮。次に例を示します。
'fileFormat=dicom, compressionFormat=jpeg'
-
複数フレームのDICOMコンテンツからの指定されたフレームの取得。次に例を示します。
'frame=10'
-
DICOM画像の指定された領域の切取り。次に例を示します。
'cut=20 20 100 100'
-
複数フレームのDICOMコンテンツを処理してAVI出力にします。次に例を示します。
'fileFormat=avi, scale=0.5'
-
RLE圧縮を使用してDICOMコンテンツを記述します。次に例を示します。
'fileFormat=dicom, compressionFormat=dicomrle'
-
DICOMフォーマットからMPEGコンテンツを抽出し、処理してMPEG形式にします。次に例を示します。
'fileFormat=mpeg'
-
DEFLATE圧縮を使用してDICOMコンテンツを記述します。次に例を示します。
'fileformat=dicom, compressionFormat=deflate, deflateLevel=defaultcompression'
processCopy( )メソッドおよびサポートされているコマンド・パラメータのリファレンス情報は、ORDDicomのメソッドを参照してください。DICOM処理の詳細は、DICOMの処理およびサポートされる形式を参照してください。
3.2.8 タスク8: DICOM制約への準拠の検証
Oracle Multimedia DICOMでは、isConformanceValid( )メソッドを使用して、DICOMで指定された制約に基づくDICOMコンテンツの準拠性の検証がサポートされます。このメソッドを使用して、埋込みDICOMコンテンツが特定の制約セットに準拠しているかどうかを確認します。
準拠の制約とは、DICOM標準規格およびその他の全組織的に適用されるガイドラインに対するDICOMコンテンツの準拠性を検証するルールのコレクションです。これらのルールは、リポジトリに格納されている制約ドキュメントというXMLドキュメントで指定します。Oracle Multimedia DICOMに付属しているデフォルトの制約ドキュメントでは、DICOM標準規格の一部への準拠を適用するルールが定義されています。
DICOMコンテンツは様々なソースから発生する可能性があるため、DICOMコンテンツはDICOM標準規格に従って作成されている場合もそうでない場合があります。DICOMコンテンツをリポジトリに格納する前に、DICOMコンテンツの特定の属性をチェックできます。例として、DICOMコンテンツの患者の性別についての属性値をチェックできます。DICOM標準規格のPatient Module Attributesに定義されているように、この属性には、M
(男性)、F
(女性)、O
(その他)の値があります。制約ルールを定義すると、特定の属性に対して適切な値かどうかをチェックできます。または、制約ルールのカスタム・セットを定義して、リポジトリ内のすべてのDICOMコンテンツがそれらのルールに準拠していることを確認することもできます。
インストール後に、制約ドキュメントを定義して、組織に固有のユーザー定義の制約ルールを含めることができます。制約名のリストを参照するには、ビューorddcm_constraint_namesを問い合せます。
準拠の検証中に、指定された述語条件に関してメッセージを生成するように制約ルールが定義され、かつ条件が満足された場合、これらのメッセージが生成され、述語条件が示されます。これらの制約メッセージのリストを参照するには、ビューorddcm_conformance_vld_msgsを問い合せます。
DICOMコンテンツの準拠を検証するには、管理者のタスクと開発者のタスクの組合せが必要です。次の各項では、これらのタスクについて説明します。
注意:
この項で説明されている管理者のタスクを最初に実行します。
次の各項では、準拠の検証中に管理者および開発者が実行する手順を示します。
3.2.8.1 準拠の検証: 管理者のタスク
例3-1 Patient Moduleの制約ルール
<GLOBAL_RULE name="PatientModule"> <DESCRIPTION> A subset of Patient Module defined in DICOM standard </DESCRIPTION> <PREDICATE> <BOOLEAN_FUNC operator="notEmpty"> <ATTRIBUTE_TAG>00100040</ATTRIBUTE_TAG> </BOOLEAN_FUNC> </PREDICATE> <PREDICATE> <DESCRIPTION>Patient's Sex</DESCRIPTION> <RELATIONAL operator="in"> <ATTRIBUTE_TAG>00100040</ATTRIBUTE_TAG> <STRING_VALUE>M</STRING_VALUE> <STRING_VALUE>F</STRING_VALUE> <STRING_VALUE>O</STRING_VALUE> </RELATIONAL> </PREDICATE> <PREDICATE> <DESCRIPTION>Referenced patient sequence constraint</DESCRIPTION> <LOGICAL operator="derive"> <PREDICATE> <BOOLEAN_FUNC operator="occurs"> <ATTRIBUTE_TAG>00081120</ATTRIBUTE_TAG> </BOOLEAN_FUNC> </PREDICATE> <PREDICATE> <LOGICAL operator="and"> <PREDICATE> <BOOLEAN_FUNC operator="notEmpty"> <ATTRIBUTE_TAG>00081120.00081150</ATTRIBUTE_TAG> </BOOLEAN_FUNC> </PREDICATE> <PREDICATE> <BOOLEAN_FUNC operator="notEmpty"> <ATTRIBUTE_TAG>00081120.00081155</ATTRIBUTE_TAG> </BOOLEAN_FUNC> </PREDICATE> </LOGICAL> </PREDICATE> </LOGICAL> </PREDICATE> <ACTION action="log" when="false">Validation error: missing mandatory attribute for patient module</ACTION> <ACTION action="warning" when="false">Warning: validation failure</ACTION> </GLOBAL_RULE>
3.2.8.2 準拠の検証: 開発者のタスク
DICOMコンテンツが組織に定義された制約ルールに準拠していない場合、修正されたDICOMメタデータを含む別のORDDicomオブジェクトを記述できます(タスク5: DICOMメタデータの記述および編集を参照)。
3.2.9 タスク9: 患者の機密データの保護
Oracle Multimedia DICOMでは、患者データの機密性を確保することによって患者のプライバシを保護するためのサポートが提供されます。一般に、makeAnonymous( )メソッドをコールする前にisAnonymous( )メソッドをコールして、指定されたORDDicomオブジェクトの患者の機密データが指定された匿名ドキュメントに従って削除または置換されたかどうかをチェックします。makeAnonymous( )メソッドをコールして、患者の機密データを削除または置換します。このメソッドを使用すると、新しいORDDicomオブジェクトが作成され、元のORDDicomオブジェクトは保持されます。
これらの両方のメソッドで、リポジトリに格納されているXML文書の匿名ドキュメントを使用して、匿名化する必要のある患者を特定する情報を判断します。匿名化する一連の属性を指定する他に、匿名ドキュメントでは、それらの属性を匿名化するために実行するアクションも指定します。
インストール後、Oracle Multimedia DICOMで提供されるデフォルトの匿名ドキュメントを使用できます。または、必要に応じて、カスタマイズした匿名ドキュメントを追加して、患者の機密データの上書きまたは削除を行うこともできます。
次の各項では、機密データを匿名化するときに管理者および開発者が実行する手順を示します。
3.2.10 タスク10: DICOM属性抽出時の記憶域の改善
Oracle Multimedia DICOMには、setProperties()メソッドによって抽出されるDICOM属性のリストを制限する機能が用意されています。すべての属性ではなく、選択された属性のセットのみを抽出することにより、setProperties()メソッドのパフォーマンスが向上し、記憶域の所要量が減少します。Oracle Multimedia DICOMでは、リポジトリ内の格納タグ・リスト構成ドキュメントを使用してこれをサポートします。格納タグ・リスト・ドキュメントは、setProperties()メソッドがコールされたときに、埋込みDICOMコンテンツから抽出され、ORDDicomオブジェクトのXMLメタデータ属性に格納されるDICOM属性を指定します。
格納タグ・リスト・ドキュメントの作成の詳細は、格納タグ・リスト・ドキュメントの作成を参照してください。
格納タグ・リスト・ドキュメントをリポジトリに挿入する方法を示すサンプル・セッションについては、サンプル・セッション4: 格納タグ・リスト・ドキュメントの挿入を参照してください。
リファレンス情報については、generateTagListDocument( )ファンクションを参照してください。