この章では、Oracle Multimedia DICOMを使用したアプリケーションの開発に関連する開発者および管理者のタスクについて簡単に説明します。
Oracle Multimediaをインストールすると、Oracle Multimedia DICOMは完全に機能するため、開発者は次のアプリケーション・プログラミング・インタフェース(API)を使用してアプリケーションの記述をすぐに開始できます。
ORDDicomオブジェクトAPI
DICOMデータ・モデル・ユーティリティAPI
DICOMリレーショナルAPI
DICOM Java API
管理者は、データ・モデル・リポジトリから構成ドキュメントの挿入または削除を行うことによって、開発者を支援できます。 これらのタスクを実行するために、管理者はORD_DICOM_ADMINデータ・モデル・リポジトリAPIを使用することができます。
Oracle Multimedia DICOMでは、DICOMコンテンツに関連する多くの操作の機能が提供されています。 たとえば、管理者は、現在の環境にユーザー定義のドキュメントを追加するかどうかを決定する前に、DICOMデータ・モデル・リポジトリにあるOracleで定義された構成ドキュメントを確認することができます。 これらの構成ドキュメントに関する属性およびその他の詳細情報を管理者が取得するには、情報ビューを使用するか、またはデータ・モデル・ユーティリティのファンクションをコールします。 また、ユーザーは、DICOMコンテンツ、メタデータ属性およびその他のオブジェクトを直接処理して、様々な操作を実行することもできます。
この章は、次の項で構成されています。
表3-1には、Oracle Multimediaドキュメント・セット内の他の項目への相互参照を示します。この表からは、この章で説明されているトピックの追加情報にアクセスできます。
表3-1 ユーザー用の追加リファレンス
トピック | 参照先 |
---|---|
パブリック情報ビューのリファレンス情報 |
|
管理者情報ビューのリファレンス情報 |
|
DICOMデータ・モデル・ユーティリティAPIのリファレンス情報 |
|
ORDDicomオブジェクトAPIのリファレンス情報 |
|
DICOMリレーショナルAPIのリファレンス情報 |
|
ORD_DICOM_ADMINデータ・モデル・リポジトリAPIのリファレンス情報 |
|
DICOM Java APIのリファレンス情報 |
『Oracle Multimedia DICOM Java API Reference』 |
DICOMコンテンツの操作の例 |
|
データ・モデル・リポジトリの管理操作の例 |
|
構成ドキュメントの記述に関する情報 |
|
DICOM XMLスキーマのリスト |
|
インストールが完了すると、各データベースには、デフォルトの構成ドキュメント・セットがOracle Multimedia DICOMデータ・モデル・リポジトリに含まれます。 これらのドキュメントのリストは、表2-1を参照してください。
インストール後、管理者は次のタイプのドキュメントに対して、特定の組織に固有の構成ドキュメントを追加できます。
制約ドキュメント: DICOM標準規格に対するDICOMコンテンツの準拠を検証するために、ルール(DICOMメタデータ・スキーマで表現することのできない属性間の関係およびセマンティックの制約など)のコレクションを定義するXML文書。
マッピング・ドキュメント: XMLメタデータ・ドキュメントの特定の要素に各属性をマップする方法、およびDICOMメタデータ・ドキュメントの構造を決定する方法を定義するXML文書。
プリファレンス・ドキュメント: ランタイム・パラメータ(警告メッセージのロギングの有効化または無効化、エラー・メッセージのカテゴリの指定など)を定義するXML文書。
プライベート・ディクショナリ・ドキュメント: 標準ディクショナリ・ドキュメントの定義を拡張するために使用するXML文書。
これらのドキュメントの詳細は、付録Aおよび第11章を参照してください。
DICOMリポジトリの構成ドキュメントの管理の詳細は、第III部「DICOMの管理」を参照してください。
データベース・セッションを開始するたびに、ユーザーおよび管理者は、データベースからメモリー構造にデータ・モデル・リポジトリをロードする必要があります。 ユーザーは、setDataModel( )プロシージャをコールしてデータ・モデルをロードします。 管理者は、setDataModel( )プロシージャまたはeditDataModel( )プロシージャをコールして、データ・モデルをロードします。
リポジトリがメモリーにロードされると、ユーザーおよび管理者は、データ・モデルの新しい変更をアプリケーションで確認する必要があるときはいつでも、setDataModel( )プロシージャをコールすることができます。
注意: ユーザーおよび管理者は、他のDICOMメソッド、ファンクションまたはプロシージャをコールする前に、setDataModel( )プロシージャをコールする必要があります。 |
ORD_DICOMパッケージのDICOMデータ・モデル・ユーティリティを使用して、次のようにsetDataModel( )プロシージャをコールします。
exec ord_dicom.setdatamodel;
リファレンス情報は、第4章のsetDataModel( )プロシージャ(および第9章のeditDataModel( )プロシージャ)を参照してください。
DICOMリポジトリのユーザーは、多くの情報ビューを参照できます。 これらの情報ビューでは、ドキュメント名、ドキュメント・タイプ、制約名および制約検証メッセージなど、リポジトリのドキュメントに関する詳細が提供されます。
表3-2に、ユーザー(および管理者)が参照可能なパブリック情報ビューを示します。
表3-2 パブリック情報ビュー
名前 | アクセス・カテゴリ |
---|---|
orddcm_conformance_vld_msgs |
パブリック(ユーザーのスキーマに対するメッセージのみ) |
orddcm_constraint_names |
パブリック |
orddcm_document_types |
パブリック |
orddcm_documents |
パブリック |
ユーザー(および管理者)は、通常、orddcm_documentsビューおよびorddcm_document_typesビューを使用して、リポジトリ内のドキュメントの詳細を参照します。 orddcm_documentsビューには、リポジトリに格納されているドキュメントの詳細がリストされます。 orddcm_document_typesビューは、コードのリストと、サポートされているOracle Multimedia DICOMドキュメント・タイプを示します。
また、他の2つのパブリック情報ビューは、制約に関する情報を提供します。 orddcm_constraint_namesビューには、リポジトリにインストールされている制約の名前がリストされます。 orddcm_conformance_vld_msgsビューには、検証操作中に一連の制約に対して生成された制約メッセージがリストされます。 このビューにリストされるのは、現行のユーザーに対する制約メッセージのみです。
パブリック情報ビューの詳細は、第4章を参照してください。
管理者に対してのみ、Oracle Multimedia DICOMでは、orddcm_document_refs情報ビューが提供されます。 このビューには、同じリポジトリ内の他のドキュメントによって参照されるドキュメントがリストされます。 この管理者ビューの詳細は、第9章のorddcm_document_refsを参照してください。
DICOMコンテンツをOracle Databaseの既存の表にロードするために、SQL*Loaderユーティリティを使用できます。
DICOMコンテンツをロードするには、最初に適切な列を含む表を作成し、それらの列を初期化する必要があります。 その後、SQL*Loaderユーティリティをコールして、DICOMコンテンツを、データファイルから表の列にSecureFile LOBとしてロードします(『Oracle Multimediaユーザーズ・ガイド』を参照)。 DICOMコンテンツで操作を実行する前に、setDataModel( )プロシージャをコールして、DICOMデータ・モデルをロードする必要があります。
DICOMコンテンツがロードされると、DICOMメタデータの抽出、DICOM属性の検索および取得、DICOMメタデータの記述および編集、サムネイル画像の作成、DICOMコンテンツの準拠の検証、個人のDICOMコンテンツの匿名化など、他の操作を実行できます。
SQL*Loaderユーティリティを使用して、DICOMコンテンツをロードし、DICOMコンテンツの特定のメタデータ属性を匿名化する方法を示す例は、7.3項を参照してください。
SQL*Loaderユーティリティを使用して、オブジェクトおよびLOBをOracle Databaseにロードする方法の詳細は、『Oracle Databaseユーティリティ』を参照してください。
Oracle Multimedia DICOMは、DICOMコンテンツからのメタデータの抽出をサポートします。 抽出されたメタデータを検索することによって、アプリケーションでDICOMコンテンツを検索できます。
デフォルトのメタデータのXMLスキーマに準拠するXML文書にすべてのDICOM属性を抽出するためには、最初にsetProperties( )メソッドをコールして、抽出されたメタデータのXML文書をORDDicomオブジェクトのメタデータ属性に格納します。 デフォルトのメタデータのXMLスキーマは、DICOM属性を格納するための完全な汎用データ・モデルを定義します。 カスタマイズされたメタデータ・スキーマ、および特定のアプリケーション用にカスタマイズされた対応するマッピング・ドキュメントは、デフォルトの汎用メタデータ・スキーマに比べて、索引付けおよび検索のパフォーマンスが向上する場合があります。 カスタム・スキーマおよびマッピング・ドキュメントを使用すると、検索用に最適化された階層構造内で、頻繁に検索されるDICOM属性を定義することができます。
DICOM属性をXMLTypeのアプリケーション固有のXML文書に抽出するには、extractMetadata( )メソッドをコールして、アプリケーション固有のマッピング・ドキュメントを指定します。 アプリケーション固有のメタデータのXML文書の結果は、ORDDicomオブジェクトが格納されている同じ表の列に格納できます。 このメタデータ列は、アプリケーション固有のXMLスキーマにバインドすることができます。
管理者として、次のタスクを実行し、DICOMメタデータの抽出処理を開始します。
抽出されたメタデータのXMLスキーマを設計します。 一般に、最も頻繁に検索されるDICOM属性は、XMLスキーマのマップされたセクションに含まれます。
XMLスキーマの詳細は、付録Bを参照してください。
スキーマをグローバルXMLスキーマとしてOracle XML DBに登録します。 (このタスクのサンプルは、例10-1を参照してください。)
XMLスキーマの登録の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
メタデータのXMLスキーマのマッピング・ドキュメントを作成します。
マッピング・ドキュメントを作成する方法の詳細は、11.2.3項を参照してください。
マッピング・ドキュメントをデータ・モデル・リポジトリにロードします。
マッピング・ドキュメントをリポジトリに挿入する方法の詳細は、8.5項を参照してください。
開発者として、次のタスクを実行し、DICOMメタデータの抽出処理を完了します。
orddcm_documentsビューを問い合せて、マッピング・ドキュメントがロードされ参照可能なことを確認します。
select * from orddcm_documents;
このビューのリファレンス情報は、第4章のorddcm_documentsを参照してください。
extractMetadata( )メソッドをコールして、マッピング・ドキュメントの名前と適切なパラメータを指定することによって、メタデータをXMLメタデータ・ドキュメントに抽出します。
このメソッドのリファレンス情報は、第5章のextractMetadata( )を参照してください。
後で検索するために、戻されたXMLメタデータ・ドキュメントをアプリケーション固有のXMLスキーマにバインドされたデータベースの列に格納します。
このタスクの詳細は、『Oracle XML DB開発者ガイド』を参照してください。
Oracle Multimedia DICOMは、DICOM属性の検索および取得をサポートします。
SOPインスタンスUID、SOPクラスUID、検査インスタンスUID、およびシリーズ・インスタンスUIDの属性をORDDicomオブジェクト属性に抽出するには、最初にsetProperties( )メソッドをコールして、ORDDicomオブジェクトの属性を移入します。 これらのDICOM属性は、ORDDicomオブジェクト内から容易に取得できます。 検索をより高速化するために、対応するオブジェクト属性に索引を作成して、これらの属性に索引を付けることもできます。 (リファレンス情報は、第5章のsetProperties( )を参照してください。)
メタデータのXML文書内で属性の検索および取得を行うには、属性のXPath式を指定して、extractValue( )またはextract( )のいずれかのSQLファンクションをコールします。 (リファレンス情報は、『Oracle Database SQL言語リファレンス』を参照してください。) 検索をより高速化するために、メタデータのXML文書の属性に索引を付けることもできます。 (XMLTypeデータの索引付けの詳細は、『Oracle XML DB開発者ガイド』を参照してください。)
単一のDICOM属性を取得するには、getAttributeByTag( )メソッドまたはgetAttributeByName( )メソッドのいずれかをコールします。 (リファレンス情報は、第5章のgetAttributeByTag( )およびgetAttributeByName( )を参照してください。) この処理は、サイズの大きい表、または頻繁に取得される属性に対してはお薦めしません。 ただし、この処理を使用する場合は、検索を高速化するために、これらのメソッドでファンクションベースの索引を作成することをお薦めします。
注意: DICOM属性を取得する前に、setProperties( )メソッドをコールして、ORDDicomオブジェクトの属性を移入する必要があります。 |
Oracle Multimedia DICOMは、変更または上書きされたDICOMコンテンツ内に埋め込まれたメタデータを含む、既存のORDDicomオブジェクトからの新しいORDDicomオブジェクトの作成をサポートします。 writeMetadata( )メソッドを使用すると、元のORDDicomオブジェクトおよび変更されたメタデータからORDDicomオブジェクトの新しいコピーが作成されます。 元のORDDicomオブジェクトは保持されます。
DICOMメタデータを記述および編集するには、次のタスクを実行します。
Oracleのデフォルトのマッピング・ドキュメントを使用して、extractMetadata( )メソッドをコールすることによって、DICOMコンテンツからDICOMメタデータを抽出します。
このメソッドのリファレンス情報は、第5章のextractMetadata( )を参照してください。
抽出されたメタデータのXML文書のDICOM属性を追加または変更します。
XML文書のDICOMメタデータの処理の詳細は、第8章を参照してください。
空のORDDicomコンストラクタを使用して、新しいDICOMコンテンツのプレースホルダとして、空のORDDicomオブジェクトを作成します。
コンストラクタのリファレンス情報は、第5章のORDDicomコンストラクタを参照してください。
writeMetadata( )メソッドをコールして、変更されたメタデータのXML文書およびDICOMコンテンツを、元のORDDicomオブジェクトから新しく作成したORDDicomオブジェクトに記述します。 メタデータのXML文書は、DICOMコンテンツのメタデータおよび新しいORDDicomオブジェクトのオブジェクト属性を上書きするために使用されます。
このメソッドのリファレンス情報は、第5章のwriteMetadata( )を参照してください。
Oracle Multimedia DICOMでは、指定されたコマンドに従って、DICOMコンテンツの画像のコピーや処理、およびDICOM形式または別の画像形式で画像の保存を行うためのprocessCopy( )メソッドが提供されています。 processCopy( )メソッドを使用すると、新しい画像が作成され、元のDICOM画像は保持されます。
次のリストに、Oracle Multimedia DICOMでサポートされている処理、変換および圧縮操作の概要と、各操作に対応するprocessCopy( )メソッドのコマンド・パラメータの例を示します。
JPEGサムネイル画像の作成。次に例を示します。
'fileFormat=jpeg, maxScale=100 100'
元のDICOM画像と同じサイズのJPEG画像の作成。次に例を示します。
'fileFormat=jpeg'
DICOMコンテンツ内の画像コンテンツの圧縮。次に例を示します。
'compressionFormat=jpeg'
複数フレームのDICOMコンテンツからの指定されたフレームの取得。次に例を示します。
'frame=10'
DICOM画像の指定された領域の切取り。次に例を示します。
'cut=20 20 100 100'
processCopy( )メソッドおよびサポートされているコマンドのリファレンス情報は、第5章を参照してください。
Oracle Multimedia DICOMでは、データ型XMLTypeのDICOMメタデータの他に、JPEGやTIFFなどの画像形式からDICOM形式の画像を作成するためのリレーショナル・プロシージャcreateDICOMImage( )が提供されています。
2次取得画像およびDICOMメタデータからDICOM形式の画像を作成するには、次のタスクを実行します。
BLOBに画像をロードするか、BFILE型として画像を定義します。
対応する画像のDICOMメタデータからXMLTypeオブジェクトを作成します。
新しいDICOM画像のプレースホルダとして、空のBLOBオブジェクトを作成します。
createDICOMImage( )プロシージャを使用して、DICOM形式の画像を作成します。
createDICOMImage( )プロシージャのリファレンス情報は、第6章を参照してください。
Oracle Multimedia DICOMは、DICOMで指定された制約に基づいて、DICOMコンテンツの準拠の検証をサポートします。これには、isConformanceValid( )メソッドを使用します。 このメソッドを使用すると、埋込みDICOMコンテンツが特定の一連の制約に準拠しているかどうかをチェックできます。
DICOMコンテンツは多くのソースから取得できます。 また、このコンテンツは、DICOM標準規格に従って作成される場合とされない場合があります。 DICOMコンテンツをリポジトリに格納することを決定する前に、患者の性別などの特定の属性を確認できます。 DICOM標準規格のPatient Module Attributesに定義されているように、この属性には、M
(男性)、F
(女性)、O
(その他)の値があります。 制約ルールを定義すると、患者の性別などの特定の属性に対して適切な値かどうかをチェックできます。 または、制約ルールのカスタム・セットを定義して、リポジトリ内のすべてのDICOMコンテンツがそれらのルールに準拠していることを確認することもできます。
準拠の制約は、DICOM標準規格およびその他の全組織的なガイドラインに対するDICOMコンテンツの準拠の検証に使用する、ルールのコレクションです。 これらのルールは、リポジトリに格納されている制約ドキュメントというXML文書で指定します。 Oracle Multimedia DICOMに付属しているデフォルトの制約ドキュメントでは、DICOM標準規格の一部への準拠を適用するルールが定義されています。
インストール後に、制約ドキュメントを定義して、組織に固有のユーザー定義の制約ルールを含めることができます。 制約名のリストを参照するには、情報ビューorddcm_constraint_namesを問い合せます。
準拠の検証中に、指定された述語条件に対するメッセージを生成するように制約ルールが定義されている場合、述語条件を示すこれらのメッセージが生成されます。 これらの制約メッセージのリストを参照するには、情報ビューorddcm_conformance_vld_msgsを問い合せます。
パブリック情報ビューの詳細は、3.2項を参照してください。
使用しているインタフェースに関係なく、DICOMコンテンツの準拠を検証するには、管理者のタスクと開発者のタスクの組合せが必要です。 次の各項では、これらのタスクについて説明します。 管理者のタスクは、常に最初に実行する必要があります。
管理者として、次のタスクを実行し、DICOMコンテンツの準拠の検証処理を開始します。
組織の制約ドキュメントを作成します。 このドキュメントでは、指定された述語条件に対するメッセージを生成するための制約ルールを定義します。
例3-1に、Oracleでインストールされている制約ドキュメントordcmcmd.xml
に定義されている、DICOM標準規格のPatient Moduleに対する制約ルールを示します。
例3-1 Patient Moduleの制約ルール
<GLOBAL_RULE name="PatientModule"> <DESCRIPTION> A subset of Patient Module defined in DICOM standard, PS 3.3-2007, Table C.7-1 </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>
制約ドキュメントの作成方法の詳細は、11.2.2項を参照してください。
制約ドキュメントをデータ・モデル・リポジトリにロードします。
制約ドキュメントをリポジトリに挿入する方法の詳細は、8.5.1項を参照してください。
開発者として、次のタスクを実行して、制約ルールに対するDICOMコンテンツの準拠の検証処理を完了します。
orddcm_constraint_namesビューを次のように問い合せて、組織に使用可能な制約名のリストを参照します。
select * from orddcm_constraint_names;
このビューのリファレンス情報は、第4章のorddcm_constraint_namesを参照してください。
isConformanceValid( )メソッドを次のようにコールして、DICOMコンテンツの準拠を確認します。
select t.dicom_src.isConformanceValid('PatientModule') from medical_image_obj t;
このメソッドのリファレンス情報は、第5章のisConformanceValid( )を参照してください。
orddcm_conformance_vld_msgsビューを次のように問い合せて、データの制約の検証中に生成された制約メッセージのリストを参照します。
select * from orddcm_conformance_vld_msgs;
このビューのリファレンス情報は、第4章のorddcm_conformance_vld_msgsを参照してください。
DICOMコンテンツが組織に定義された制約ルールに準拠していない場合、修正されたDICOMメタデータを含む別のORDDicomオブジェクトを記述することができます。 DICOMメタデータを記述する方法の詳細は、3.6項を参照してください。
Oracle Multimedia DICOMは、次のメソッドを使用することで、患者の個人データの機密保護をサポートします。
makeAnonymous( ): 患者の個人データを削除または置換するために使用します。 このメソッドを使用すると、新しいORDDicomオブジェクトが作成され、元のORDDicomオブジェクトは保持されます。
isAnonymous( ): 指定された匿名ドキュメントに基づいて、指定されたORDDicomオブジェクトの患者の個人データが削除または置換されているかどうかをチェックします。 一般に、このメソッドは、makeAnonymous( )メソッドをコールする前にコールします。
これらの両方のメソッドで、リポジトリに格納されているXML文書の匿名ドキュメントを使用して、匿名化する必要のある患者を特定する情報を判断します。 匿名化する一連の属性を指定する他に、匿名ドキュメントでは、それらの属性を匿名化するために実行するアクションも指定します。
インストール後、Oracle Multimedia DICOMで提供されるデフォルトの匿名ドキュメントを使用できます。 または、必要に応じて、カスタマイズした匿名ドキュメントを追加して、患者を特定する情報の上書きまたは削除を行うこともできます。
開発者として、次のタスクを実行し、患者の個人データを匿名化する処理を完了します。
orddcm_documentsビューを次のように問い合せて、データ・モデル・リポジトリにロードされた匿名ドキュメントのリストを参照します。
select * from orddcm_documents;
このビューのリファレンス情報は、第4章のorddcm_documentsを参照してください。
makeAnonymous( )メソッドをコールする場合は、空のORDDicomコンストラクタを使用して、空のORDDicomオブジェクトを作成します。 空のORDDicomオブジェクトは、新しいORDDicomオブジェクトのプレースホルダとして使用されます。 次のように、空のオブジェクトを作成します。
insert into medical_image_obj (id, dicom_src) values (3, ORDDicom());
isAnonymous( )メソッドをコールして、指定された匿名ドキュメントに基づいて、元のORDDicomオブジェクトが匿名化されているかどうかをチェックします。
select t.dicom_src.isAnonymous('ordcman.xml') from medical_image_obj t;
このメソッドのリファレンス情報は、第5章のisAnonymous( )を参照してください。
makeAnonymous( )メソッドをコールして、元のORDDicomオブジェクトを匿名化してから、新しいDICOMコンテンツを空のORDDicomオブジェクトに記述します。 次のように、このメソッドをコールします。
declare
obj_src orddicom;
obj_dest orddicom;
dest_sop_instance_uid varchar2(128) := '<unique-UID>';
begin
select dicom_src, dicom_dest into obj_src, obj_dest
from medical_image_obj where id = 1 for update;
obj_src.makeAnonymous(dest_sop_instance_uid, obj_dest, 'ordcman.xml');
update medical_image_obj set dicom_dest = obj_dest where id = 1;
end;
/
このメソッドのリファレンス情報は、第5章のmakeAnonymous( )を参照してください。