7 ORDDicomオブジェクト・タイプ・リファレンス
Oracle Multimediaには、DICOM形式の医用画像やその他のデータの格納、管理および操作をサポートするORDDicomオブジェクト型が用意されています。
注:
DICOMのOracle Multimediaサポートは、Oracle Database 12cリリース2 (12.2)では非推奨になりました。将来のリリースではサポートされなくなる可能性があります。できるだけ早く、非推奨となった機能の使用を停止することをお薦めします。
ORDDicomオブジェクトは、一度だけ書き込まれるオブジェクトとして使用されます。画像の処理や圧縮によって新しいORDDicomオブジェクトを生成するためには、新しいORDDicomオブジェクト、ORDImageオブジェクトまたはBLOBを作成する必要があります。
ORDDicomオブジェクト型は、ordcspec.sql
ファイルに定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。
<ORACLE_HOME>
/ord/im/admin
(LinuxおよびUNIXの場合)
<ORACLE_HOME>
\ord\im\admin
(Windowsの場合)
この章では、ORDDicomオブジェクト・インタフェースの属性、コンストラクタおよびメソッドについて説明します。
この章では、次の内容を説明します。
関連項目:
7.1 ORDDicomオブジェクトの例
この章の例では、MEDICAL_IMAGE_OBJ表を使用します。これらの例を参照する場合は、「MEDICAL_IMAGE_OBJ表の定義」を参照してください。
ORDDicomのメソッドを使用する前に、いくつかのデータを表にロードする必要があります。たとえば、SQL*Loaderユーティリティ、Javaクライアントまたはimport( )メソッドを使用できます。例のファイルは、実際のDICOMファイルで置き換えてください。
注:
(BLOBを直接変更するか、外部ソースを変更して)DICOMコンテンツ自体を操作した場合は、setProperties( )メソッドをコールして、オブジェクト属性の同期化が保持されていることを確認します。また、更新時刻が修正されていることも確認する必要があります。そうしないと、オブジェクト属性がDICOMコンテンツと一致しなくなります。
詳細は、setProperties( )メソッドを参照してください。
7.1.1 ORDDicomオブジェクトのディクショナリの定義とセットアップの例
例を実行する前に、ディレクトリ・オブジェクトを作成する特権を持つユーザーに接続した状態で次の文を発行する必要があります。ここでc:\mydir\work
は、ユーザー<user>
がDICOMファイルを検索できるディレクトリです。
CREATE OR REPLACE DIRECTORY DICOMDIR as 'c:\mydir\work'; GRANT READ, WRITE ON DIRECTORY DICOMDIR TO <user>;
7.1.2 MEDICAL_IMAGE_OBJ表の定義
データを表にロードする前に、データを格納する表および列を作成する必要があります。次に示すPL/SQLコード・セグメントでは、5つの列を含むMEDICAL_IMAGE_OBJ表が作成されます。
CREATE TABLE MEDICAL_IMAGE_OBJ ( id integer primary key, dicom_src ordsys.orddicom, dicom_dest ordsys.orddicom, image_dest ordsys.ordimage, blob_dest blob );
ここで、
-
dicom_src: ORDDicomオブジェクトのソースDICOMコンテンツ。
-
dicom_dest: ORDDicomオブジェクトの宛先DICOMコンテンツ。
-
image_dest: ORDImageオブジェクトの宛先DICOMコンテンツ。
-
blob_dest: BLOBの宛先DICOMコンテンツ。
7.2 ORDDicomオブジェクト・タイプ
ORDDicomオブジェクト型は、DICOM形式の医用画像やその他のデータの格納、管理および操作をサポートします。このオブジェクト型の属性は、ordcspec.sql
ファイルで次のように定義されています。
------------------- -- TYPE ATTRIBUTES ------------------- SOP_INSTANCE_UID VARCHAR2(128), SOP_CLASS_UID VARCHAR2(64), STUDY_INSTANCE_UID VARCHAR2(64), SERIES_INSTANCE_UID VARCHAR2(64), source ORDDataSource, metadata SYS.XMLType, contentLength INTEGER, flag INTEGER, extension BLOB,
ここで、
-
SOP_INSTANCE_UID: 埋込みDICOMコンテンツのSOPインスタンスUID。
-
SOP_CLASS_UID: 埋込みDICOMコンテンツのSOPクラスUID。
-
STUDY_INSTANCE_UID: 埋込みDICOMコンテンツの検査インスタンスUID。
-
SERIES_INSTANCE_UID: 埋込みDICOMコンテンツのシリーズ・インスタンスUID。
-
source: BLOB(推奨)としてトランザクション制御下でデータベース内に格納されるか、データベースに格納されているポインタとともに、ローカル・ファイル・システム内のオペレーティング・システム固有のファイルに格納される元のDICOMコンテンツ。
-
metadata: 埋込みDICOMコンテンツから抽出されたXMLメタデータ・ドキュメント。
-
contentLength: 埋込みDICOMコンテンツのバイト単位の長さ。
-
flag: Oracleの予約属性。
-
extension: Oracleの予約属性。
7.3 ORDDicomコンストラクタ
この項では、次のORDDicomコンストラクタ関数について説明しています。
ORDDicomオブジェクトは、SQL文またはPL/SQLプログラムでこれらのコンストラクタを使用して構築できます。
ORDDicomオブジェクトには、埋込みBLOB属性があります。BLOBロケータは、アクセスする前に初期化する必要があります。したがって、新しく構築されたORDDicomオブジェクト(一時BLOBから構築された場合を除く)は、表に挿入されるまで、これらのORDDicomオブジェクトに対するオブジェクト・メンバー・メソッドのコールが可能になりません。
7.3.1 BLOBのORDDicom( )
構文
ORDDicom(SELF IN OUT NOCOPY ORDDicom, data IN BLOB, setproperties IN INTEGER DEFAULT 0) RETURN SELF AS RESULT
説明
BLOBからORDDicomオブジェクトを構築します。構築されたORDDicomオブジェクトが表に挿入または更新されると、BLOBに格納されているデータがORDDicomオブジェクトにコピーされます。メタデータは、デフォルトのマッピング・ドキュメントで定義されているXMLスキーマに準拠します。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
DICOMコンテンツが一時または永続BLOBのいずれかに格納される場合は、このコンストラクタを使用して、ORDDicomオブジェクトを作成します。
例
BLOBからORDDicomオブジェクトを作成します。
SQL> desc blob_tbl; Name Null? Type---------------------- -------- -------------------- ID NUMBER(38)DATA BLOB insert into medical_image_obj (id, dicom_src) select s.id, ORDDicom(s.data) from blob_tbl s;
7.3.2 ORDImageのORDDicom( )
構文
ORDDicom(SELF IN OUT NOCOPY ORDDicom, data IN ORDImage, setproperties IN INTEGER DEFAULT 0) RETURN SELF AS RESULT
説明
ローカル・ソース(BLOB)、またはファイル・ソース(BFILE)を持つORDImageオブジェクトからORDDicomオブジェクトを構築します。DICOMコンテンツがORDImageオブジェクトのBLOBに最初から格納されている場合、構築されたORDDicomオブジェクトが表に挿入または更新されると、データがORDDicomオブジェクトのsource属性のBLOBにコピーされます。DICOMコンテンツがORDImageオブジェクトのBFILEソースとして最初から格納されている場合は、ORDImageソースのsrcType、srcLocationおよびsrcNameパラメータがORDDicomオブジェクトのsource属性にコピーされます。メタデータは、デフォルトのマッピング・ドキュメントで定義されているXMLスキーマに準拠します。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
DICOMコンテンツがORDImageオブジェクトに格納されている場合は、このコンストラクタを使用して、ORDDicomオブジェクトを作成します。または、このコンストラクタを使用してORDImageオブジェクトをORDDicomオブジェクトに移行します。
例
ORDImageオブジェクトからORDDicomオブジェクトを作成します。
SQL> desc image_tbl; Name Null? Type---------------------- -------- -------------------- ID NUMBER(38)IMAGE ORDIMAGE insert into medical_image_obj (id, dicom_src) select s.id, ORDDicom(s.image) from image_tbl s;
7.3.3 その他のソースのORDDicom( )
構文
ORDDicom(SELF IN OUT NOCOPY ORDDicom, source_type IN VARCHAR2 DEFAULT 'LOCAL', source_location IN VARCHAR2 DEFAULT NULL, source_name IN VARCHAR2 DEFAULT NULL, setproperties IN INTEGER DEFAULT 0) RETURN SELF AS RESULT
説明
特定のソースからORDDicomオブジェクトを構築します。デフォルトでは、source_typeパラメータの値がLOCAL
に設定され、データのソースが、ローカルのデータベースにBLOBで格納されることを意味します。デフォルト値の場合、ローカル・ソースによる空のオブジェクトが構築されます。source_typeパラメータの値がFILE
に設定されている場合、ORDDicomオブジェクトは外部ファイルとして格納されているソースを使用して構築されます。メタデータは、デフォルトのXMLマッピング・ドキュメントで定義されているXMLスキーマに準拠します。
パラメータ
- source_type
-
ソースのタイプを指定します。有効な値は、
FILE
またはLOCAL
です。デフォルトは、LOCAL
です。 - source_location
-
ソースのディレクトリの位置(
source_type=FILE
に使用)。 - source_name
-
ソースのファイル名(
source_type=FILE
の場合に使用)。 - setproperties
-
DICOM属性を埋込みDICOMコンテンツから抽出するかどうかを決定するインジケータ・フラグです。値が
1
の場合、DICOM属性は構築されたORDDicomオブジェクトのmetadata属性に抽出され、ORDDicomオブジェクトの属性が移入されます。値が0
の場合、DICOM属性は抽出されません。デフォルト値は0
です。
プラグマ
なし。
例外
なし。
使用上の注意
DICOMコンテンツがファイル・システムに格納される場合は、このコンストラクタを使用して、ORDDicomオブジェクトを作成します。WebブラウザやJavaアプリケーションなどのクライアントからDICOMコンテンツをアップロードする場合には、空のコンストラクタを使用します。または、processCopy( )、makeAnonymous( )およびwriteMetadata( )などのメソッドの宛先オブジェクトとして、空のコンストラクタを使用します。
例
例1:
オブジェクト属性を移入せずに、ファイルからORDDicomオブジェクトを作成します。
insert into medical_image_obj (id, dicom_src) values (1, ORDDicom('FILE', 'DICOMDIR', 'example.dcm'));
例2:
setPropertiesフラグ・セットを使用して、ファイルからORDDicomオブジェクトを作成します。
insert into medical_image_obj (id, dicom_src) values (2, ORDDicom('FILE', 'DICOMDIR', 'example.dcm', 1));
例3:
空のORDDicomオブジェクトを作成します。
insert into medical_image_obj (id, dicom_src) values (3, ORDDicom());
7.4 ORDDicomのメソッド
この項では、次のORDDicomメソッドのリファレンス情報を示します。
注:
この項で、<unique-UID>は、DICOMコンテンツに対して全世界的にグローバルな一意識別子を表す、ドットで連結された64バイトの数字列を表します。UIDは、通常、DICOMコンテンツを作成する組織を一意に識別するルートと、組織内のDICOMコンテンツを一意に識別する接尾辞で構成されます。この項の例にある<unique-UID>は、必ず適切なUIDで置き換えてください。
7.4.1 export( )
構文
export(SELF IN ORDDicom, dest_type IN VARCHAR2, dest_location IN VARCHAR2, dest_name IN VARCHAR2)
説明
埋込みDICOMコンテンツを指定の宛先にエクスポートします。データが宛先にコピーされる際、データはソースBLOBに保持されます。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、埋込みDICOMコンテンツをローカル・ファイル・システムにエクスポートするために使用します。
export( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトに対してのみ書き込みます。つまり、SQL文のCREATE DIRECTORYを使用して作成したディレクトリ・オブジェクト、または読取りおよび書込み権限を付与されたディレクトリ・オブジェクトにアクセスできます。
たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリc:\mydir\work
内の任意のファイルに対する読取りおよび書込みの権限がユーザー<user>
に付与されます。これらのコマンドを実行する前に、ディレクトリ・オブジェクトを作成する権限を持ったユーザーとして接続しておく必要があります。
CREATE OR REPLACE DIRECTORY DICOMDIR AS 'c:\mydir\work'; GRANT READ,WRITE ON DIRECTORY DICOMDIR TO <user>;
ディレクトリおよび表の定義の詳細は、「ORDDicomオブジェクトの例」を参照してください。
例
埋込みDICOMコンテンツを指定のファイルにエクスポートします。
declare obj orddicom; begin select dicom_src into obj from medical_image_obj where id = 1; obj.export('FILE', 'DICOMDIR', 'exported.dcm'); end; /
7.4.2 extractMetadata( )
構文
extractMetadata(extractOption IN VARCHAR2 DEFAULT 'ALL', docName IN VARCHAR2 DEFAULT 'ordcmmp.xml') RETURN SYS.XMLTYPE
説明
指定されたマッピング・ドキュメントのXMLコードとして、DICOMメタデータを戻します。デフォルトのマッピング・ドキュメントでは、デフォルトのメタデータ名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
を参照します。ORDDicomオブジェクトのメタデータ属性およびその他の属性は影響を受けません。
パラメータ
- extractOption
-
DICOMコンテンツから抽出するメタデータのタイプを指定する文字列です。有効な値は
ALL
、MAPPED
およびSTANDARD
です。デフォルトはALL
です。このパラメータの値が
ALL
の場合は、埋込みDICOMコンテンツのすべての属性が抽出されます。この値がMAPPED
に設定されている場合は、マップ済属性のみが抽出されます。また、この値がSTANDARD
に設定されている場合は、DICOM標準規格に準拠している属性とマップ済属性のみが抽出されます。 - docName
-
マッピング・ドキュメントの名前を指定します。デフォルトのマッピング・ドキュメント
ordcmmp.xml
はインストール中にロードされます。このドキュメントでは、デフォルトのメタデータ名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
を参照します。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、埋込みDICOMコンテンツからメタデータをXMLコードとして取得し、そのデータを検索または表示用のデータベース表に格納するために使用します。
プリファレンス・パラメータXML_SKIP_ATTRは、XMLにエンコードするときに省略するDICOM属性のサイズ制限を指定するために使用します。このプリファレンス・パラメータの詳細は、「XML_SKIP_ATTRプリファレンス・パラメータの定義」を参照してください。
プリファレンス・パラメータVALIDATE_METADATAは、グローバルまたはローカルXMLスキーマとしてOracle XML DBに登録されている固有のXMLスキーマと照合してXML文書を検証するかどうかを指定するために使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
プリファレンス・パラメータVALIDATE_METADATAの値がtrue
に設定されているときに、このメソッドをコールすると、現行のユーザーがマッピング・ドキュメント内のメタデータ名前空間を使用できない場合はエラーが発生します。
例
埋込みDICOMコンテンツからメタデータを抽出します。
declare obj orddicom; metadata xmltype; begin select dicom_src into obj from medical_image_obj where id = 1; -- extract all the metadata using the default mapping document. metadata := obj.extractMetadata(); -- extract the standard metadata using the default mapping document. metadata := obj.extractMetadata('standard'); -- extract the standard metadata by specifying the mapping document. metadata := obj.extractMetadata('standard', 'ordcmmp.xml'); end; /
7.4.3 getAttributeByName( )
構文
getAttributeByName(attributeName IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
SQタイプの属性以外のDICOM属性に対して、DICOM属性の値をVARCHAR2文字列として返します。SQタイプ属性の場合、このメソッドはXMLコードのセグメントをVARCHAR2文字列として返します。このメソッドを使用して、埋込みDICOMコンテンツからの単一の属性を取得します。
プラグマ
なし。
例外
なし。
使用上の注意
DICOM属性の検索および取得に最適なメソッドの詳細は、タスク4: DICOM属性の検索および取得を参照してください。
例
指定のDICOM属性の名前を戻します。
declare obj orddicom; res varchar2(4000); begin select dicom_src into obj from medical_image_obj where id = 1; obj.setProperties; -- Patient ID attribute, this will return patient ID value res := obj.getAttributeByName('Patient ID'); dbms_output.put_line('Patient ID attribute: ' || res); -- attribute in SQ type, this will return an xml segment. res := obj.getAttributeByName('Source Image Sequence'); dbms_output.put_line('Source Image Sequence attribute: ' || res); end ; /
7.4.4 getAttributeByTag( )
構文
getAttributeByTag(tag IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
SQタイプの属性以外のDICOM属性に対して、DICOM属性の値をVARCHAR2文字列として返します。SQタイプ属性の場合、このメソッドはXMLコードのセグメントをVARCHAR2文字列として返します。このメソッドを使用して、埋込みDICOMコンテンツの単一の属性を取得します。
プラグマ
なし。
例外
なし。
使用上の注意
DICOM属性の検索および取得に最適なメソッドの詳細は、タスク4: DICOM属性の検索および取得を参照してください。
例
指定のDICOM属性のタグを戻します。
declare obj orddicom; res varchar2(4000); begin select dicom_src into obj from medical_image_obj where id = 1; obj.setProperties; -- Patient ID attribute, this will return patient ID value res := obj.getAttributeByTag('00100020'); dbms_output.put_line('Patient ID attribute: ' || res); -- attribute in SQ type, this will return an xml segment. res := obj.getAttributeByTag('00082112'); dbms_output.put_line('Source Image Sequence attribute: ' || res); end ; /
7.4.5 getContent( )
構文
getContent( ) RETURN BLOB DETERMINISTIC
説明
ORDDicomオブジェクトのsource属性に格納されている埋込みDICOMコンテンツを戻します。DICOMコンテンツがインポートされていない場合、このメソッドは、BLOBハンドルまたはNULL値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのsource属性のコンテンツを戻します。
select t.dicom_src.getContent() from medical_image_obj t;
7.4.6 getContentLength( )
構文
getContentLength( ) RETURN INTEGER DETERMINISTIC PARALLEL_ENABLE
説明
埋込みDICOMコンテンツの長さを戻します。このメソッドは、ORDDicomオブジェクトのcontentLength属性の値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを呼び出す前に、setProperties( )メソッドをコールする必要があります。
例
ORDDicomオブジェクトのcontentLength属性の値を戻します。
select t.dicom_src.getContentLength() from medical_image_obj t;
7.4.7 getSeriesInstanceUID( )
構文
getSeriesInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSERIES_INSTANCE_UID属性の値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを呼び出す前に、setProperties( )メソッドをコールする必要があります。
例
ORDDicomオブジェクトのSERIES_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getSeriesInstanceUID() from medical_image_obj t;
7.4.8 getSOPClassUID( )
構文
getSOPClassUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSOP_CLASS_UID属性の値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを呼び出す前に、setProperties( )メソッドをコールする必要があります。
例
ORDDicomオブジェクトのSOP_CLASS_UID属性の値を戻します。
select t.dicom_src.getSOPClassUID() from medical_image_obj t;
7.4.9 getSOPInstanceUID( )
構文
getSOPInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのSOP_INSTANCE_UID属性の値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを呼び出す前に、setProperties( )メソッドをコールする必要があります。
例
ORDDicomオブジェクトのSOP_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getSOPInstanceUID() from medical_image_obj t;
7.4.10 getSourceInformation( )
構文
getSourceInformation( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
"source_type://source_location/source_name"
フォームのURLとして、ORDDicomオブジェクトのsource属性からソース情報を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース情報を戻します。
select t.dicom_src.getSourceInformation() from medical_image_obj t;
7.4.11 getSourceLocation( )
構文
getSourceLocation( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース位置を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース位置を戻します。
select t.dicom_src.getSourceLocation() from medical_image_obj t;
7.4.12 getSourceName( )
構文
getSourceName( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース名を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース名を戻します。
select t.dicom_src.getSourceName() from medical_image_obj t;
7.4.13 getSourceType( )
構文
getSourceType( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース・タイプを戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース・タイプを戻します。
select t.dicom_src.getSourceType() from medical_image_obj t;
7.4.14 getStudyInstanceUID( )
構文
getStudyInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSTUDY_INSTANCE_UID属性の値を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを呼び出す前に、setProperties( )メソッドをコールする必要があります。
例
ORDDicomオブジェクトのSTUDY_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getStudyInstanceUID() from medical_image_obj t;
7.4.15 import( )
構文
import(SELF IN OUT NOCOPY ORDDicom, setproperties IN INTEGER DEFAULT 1)
説明
現行のソースからDICOMコンテンツをインポートします。このメソッドは、source_type、source_locationおよびsource_nameパラメータをコンストラクタに渡すことによって、ORDDicomオブジェクトにsource
属性がすでに設定されていると想定します。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、ORDDicomオブジェクトがBLOB以外のソースから構築され、BLOBにインポートする必要がある場合に使用します。
import( )メソッドは、ユーザーがアクセス権を持つデータベース・ディレクトリのオブジェクトからのみ読み取ります。つまり、SQL文のCREATE DIRECTORYを使用して作成したディレクトリ・オブジェクト、または読取り権限を付与されたディレクトリ・オブジェクトにアクセスできます。
たとえば、次のSQL*Plusコマンドを実行すると、ディレクトリ・オブジェクトが作成され、ディレクトリc:\mydir\work
内の任意のファイルに対する読取り権限がユーザー<user>
に付与されます。これらのコマンドを実行する前に、ディレクトリ・オブジェクトを作成する権限を持ったユーザーとして接続しておく必要があります。
CREATE OR REPLACE DIRECTORY DICOMDIR AS 'c:\mydir\work'; GRANT READ ON DIRECTORY DICOMDIR TO <user>;
DICOMオブジェクトが次のように挿入されると想定します。
insert into medical_image_obj (id, dicom_src) values (1, ORDDicom('FILE', 'DICOMDIR', 'imported.dcm');
ユーザーは、ORDDicomオブジェクトのimport( )メソッドを使用して、このディレクトリのimported.dcm
ファイルからDICOMコンテンツをインポートできます。
obj.import();
ディレクトリおよび表の定義の詳細は、「ORDDicomオブジェクトの例」を参照してください。
例
DICOM属性をインポートします。
declare obj orddicom; begin select dicom_src into obj from medical_image_obj where id = 1 for update; if (obj.isLocal() = 0) then obj.import(); end if; update medical_image_obj set dicom_src = obj where id = 1; end; /
7.4.16 isAnonymous( )
構文
isAnonymous(anonymityDocName IN VARCHAR2 DEFAULT 'ordcman.xml') RETURN INTEGER
説明
データ・モデル・リポジトリに格納されている指定の匿名ドキュメントを使用して、埋込みDICOMコンテンツが匿名かどうかを判別します。このメソッドは、データが匿名の場合に1
の値を返し、それ以外の場合は0
の値を返します。
プラグマ
なし。
例外
なし。
使用上の注意
makeAnonymous( )メソッドをコールする前にこのメソッドを使用して、患者を特定する情報が埋込みDICOMコンテンツから削除されているかどうかを調べます。(makeAnonymous( )メソッドも参照してください。)
例
埋込みDICOMコンテンツが匿名かどうかを確認します。
select t.dicom_src.isAnonymous('ordcman.xml') from medical_image_obj t;
7.4.17 isConformanceValid( )
構文
isConformanceValid(constraintName IN VARCHAR2) RETURN INTEGER
説明
準拠の検証チェックを実行して、埋込みDICOMコンテンツがconstraingNameパラメータによって識別された特定の制約セットに準拠しているかどうかを判別します。このメソッドは、準拠が有効な場合に1
の値を返し、それ以外の場合に0
の値を返します。
また、このメソッドは制約ドキュメントからのエラー・メッセージもログに記録し、これはパブリック・ビューorddcm_conformance_vld_msgsを問い合せることで表示できます。パブリック・ビューorddcm_constraint_namesには制約名のリストが含まれます。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドをSQL問合せからコールする場合、制約ルール定義に<ACTION>要素が何も含まれていないことを確認します。
プリファレンス・パラメータEXP_IF_NULL_ATTR_IN_CONSTRAINTは、準拠検証中に欠落している属性またはNULLの属性値が見つかったときに例外をスローするかどうかを示すために使用します。このプリファレンス・パラメータの詳細は、「EXP_IF_NULL_ATTR_IN_CONSTRAINTプリファレンス・パラメータの定義」を参照してください。
例
ORDDicomオブジェクトの準拠性が有効であることを確認します。その後、生成された準拠の検証メッセージを表示します。
declare cursor dicom_src_cur is select dicom_src from medical_image_obj order by id; begin for rec in dicom_src_cur loop dbms_output.put_line('isConformanceValid(PatientModule): ' || rec.dicom_src.isConformanceValid('PatientModule')); end loop; end; / select t1.id, t2.message, t2.msg_time time from medical_image_obj t1, orddcm_conformance_vld_msgs t2 where t1.dicom_src.sop_instance_uid = t2.sop_instance_uid and t2.rule_name = 'PatientModule';
7.4.18 isLocal( )
構文
isLocal( ) RETURN INTEGER DETERMINISTIC PARALLEL_ENABLE
説明
ソースのローカル状態を戻します。DICOMコンテンツがソースBLOBに格納されている場合、オブジェクトはローカルとして定義されます。DICOMコンテンツが外部的にオペレーティング・システム固有のファイルに格納されている場合、オブジェクトはローカルとして定義されません。このメソッドは、オブジェクトがローカルの場合に1
の値を返し、それ以外の場合は0
の値を返します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
DICOMコンテンツがローカルかどうかを確認します。
select t.dicom_src.isLocal() from medical_image_obj t; declare obj orddicom; begin select dicom_src into obj from medical_image_obj where id = 1 for update; if (obj.isLocal() = 0) then obj.import(); end if; update medical_image_obj set dicom_src = obj where id = 1; end; /
7.4.19 makeAnonymous( )
構文
makeAnonymous(SELF IN ORDDicom, dest_SOP_INSTANCE_UID IN VARCHAR2, dest IN OUT NOCOPY ORDDicom, anonymityDocName IN VARCHAR2 DEFAULT 'ordcman.xml')
説明
患者を特定する情報を別のORDDicomオブジェクトにコピーした後、指定された匿名ドキュメントに基づいて、それらの情報をORDDicomオブジェクトから削除します。宛先ORDDicomオブジェクトの埋込みDICOMコンテンツとmetadata属性の両方が匿名化されます。
パラメータ
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、データの共有および検索で使用される埋込みDICOMコンテンツから患者を特定する情報を削除するために使用します。
例
宛先ORDDicomオブジェクトから患者を特定する情報を削除します。
注:
<unique-UID>は、DICOMコンテンツを作成する組織、およびその組織内のDICOMコンテンツを識別するUIDで置き換えてください。
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;
/
7.4.20 BLOBに対するprocessCopy( )
構文
processCopy(SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY BLOB)
説明
ORDDicomオブジェクトをソース・イメージとして使用して、指定された処理操作をイメージに対して実行し、作成されたイメージを宛先BLOBに格納します。元のORDDicomオブジェクトは変更されません。
パラメータ
- command
-
処理演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、
frame
、contentFormat
、fileFormat
、compressionFormat
、cut
、scale
、rotate
などがあります。処理演算子の詳細は、DICOMの処理およびサポートされているフォーマットを参照してください。 - dest
-
ORDDicomオブジェクトに対する処理コマンドの出力が含まれる宛先BLOB。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを使用して、ORDDicomオブジェクトに対する処理操作を実行し、結果をBLOBに格納します。この場合、BLOB内の出力は、イメージまたはビデオ・コンテンツです。
DICOMコンテンツの処理をサポートするエンコーディング・ルールの詳細は、「DICOMのエンコーディング規則」を参照してください。DICOM処理の詳細は、DICOMの処理およびサポートされている形式を参照してください。
プリファレンス・パラメータVALIDATE_METADATAは、OracleのデフォルトDICOMメタデータ・スキーマと照合してXML文書を検証するかどうかを指定するために使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
例
DICOMコンテンツをBLOBにコピーして処理します。
declare obj orddicom; dest blob; begin select dicom_src, blob_dest into obj, dest from medical_image_obj where id = 1 for update; obj.processCopy('fileFormat=jpeg maxScale=100 100', dest); end; /
7.4.21 ORDDicomに対するprocessCopy( )
構文
processCopy(SELF IN ORDDicom, command IN VARCHAR2, dest_SOP_INSTANCE_UID IN VARCHAR2, dest IN OUT NOCOPY ORDDicom, metadata IN SYS.XMLTYPE DEFAULT NULL)
説明
ORDDicomオブジェクトをソース・イメージとして使用して、指定された処理操作をイメージに対して実行し、生成されたイメージを宛先ORDDicomオブジェクトに格納します。元のORDDicomオブジェクトは変更されません。
パラメータ
- command
-
処理演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、
compressionFormat
、frame
、contentFormat
、cut
、scale
、rotate
などがあります。処理演算子の詳細は、DICOMの処理およびサポートされているフォーマットを参照してください。 - dest_SOP_INSTANCE_UID
-
宛先ORDDicomオブジェクトのSOPインスタンスUIDを指定します。宛先DICOMコンテンツはグローバルに一意である必要があります。
- dest
-
新しいメタデータを使用して新しいDICOMコンテンツが格納される空のORDDicomオブジェクト。
- metadata
-
新しいDICOMコンテンツに書き込む新しいメタデータを指定します。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを使用して、ORDDicomオブジェクトに対する処理操作を実行し、結果をORDDicomオブジェクトに格納します。この場合、出力は、イメージまたはビデオ・コンテンツです。
DICOMコンテンツの処理をサポートするエンコーディング・ルールの詳細は、「DICOMのエンコーディング規則」を参照してください。DICOM処理の詳細は、DICOMの処理およびサポートされている形式を参照してください。
プリファレンス・パラメータVALIDATE_METADATAは、OracleのデフォルトDICOMメタデータ・スキーマと照合してXML文書を検証するかどうかを指定するために使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
例
DICOMコンテンツをORDDicomオブジェクトにコピーしてから、処理します。
注:
<unique-UID>は、DICOMコンテンツを作成する組織、およびその組織内のDICOMコンテンツを識別するUIDで置き換えてください。
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.processcopy('compressionFormat=jpeg',
dest_sop_instance_uid,
obj_dest);
update medical_image_obj set dicom_dest = obj_dest where id = 1;
end;
/
7.4.22 ORDImageに対するprocessCopy( )
構文
processCopy(SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY ORDImage)
説明
ORDDicomオブジェクトをソース・イメージとして使用して、指定された処理操作をイメージに対して実行し、生成されたイメージを宛先ORDImageオブジェクトに格納します。元のORDDicomオブジェクトは変更されません。
パラメータ
- command
-
画像処理の演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、
frame
、contentFormat
、fileFormat
、compressionFormat
、cut
、scale
、rotate
などがあります。イメージ処理演算子の詳細は、DICOMの処理およびサポートされている形式を参照してください。 - dest
-
DICOMメタデータを使用せずに処理された新しいORDImageオブジェクトを格納するための、空のORDImageオブジェクトを指定します。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを使用して、Webフォームでの表示に適した非DICOMイメージを埋込みDICOMコンテンツから取得します。
画像コンテンツの処理をサポートするエンコーディング・ルールの詳細は、「DICOMのエンコーディング規則」を参照してください。DICOM処理の詳細は、DICOMの処理およびサポートされている形式を参照してください。
プリファレンス・パラメータVALIDATE_METADATAは、OracleのデフォルトDICOMメタデータ・スキーマと照合してXML文書を検証するかどうかを指定するために使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
例
DICOMコンテンツをORDImageオブジェクトにコピーしてから、処理します。
declare obj_src orddicom; obj_dest ordimage; begin select dicom_src, image_dest into obj_src, obj_dest from medical_image_obj where id = 1 for update; obj_src.processcopy('fileFormat=jpeg maxScale=100 100', obj_dest); update medical_image_obj set image_dest = obj_dest where id = 1; end; /
7.4.23 setProperties( )
構文
setProperties(SELF IN OUT NOCOPY ORDDicom)
説明
ORDDicomオブジェクトの属性を設定します。ORDDicomオブジェクトの属性が移入され、埋込みDICOMコンテンツの属性がORDDicomオブジェクトのmetadata属性に抽出されます。XMLメタデータは、デフォルトのメタデータ・スキーマの名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
に準拠しています。
リポジトリにストアド・タグ・リスト・ドキュメントが含まれている場合、XMLメタデータには、ストアド・タグ・リストで指定されたDICOM属性のみが含まれます。そうでない場合、埋め込まれたDICOMコンテンツからのすべての属性がXMLメタデータに含まれます。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、ORDDicomオブジェクトの属性を移入し、埋込みDICOMコンテンツからメタデータを取得するために使用します。
プリファレンス・パラメータXML_SKIP_ATTRは、XMLにエンコードするときに省略するDICOM属性のサイズ制限を指定するために使用します。このプリファレンス・パラメータの詳細は、「XML_SKIP_ATTRプリファレンス・パラメータの定義」を参照してください。
プリファレンス・パラメータVALIDATE_METADATAを使用して、Oracle XML DBに登録されている特定のXMLスキーマに照らしてXMLドキュメントを検証するかどうかを指定します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
例
ORDDicomオブジェクトの属性を設定します。
declare obj orddicom; begin select dicom_src into obj from medical_image_obj where id = 1 for update; obj.setProperties(); update medical_image_obj set dicom_src = obj where id = 1; end; /
7.4.24 writeMetadata( )
構文
writeMetadata(SELF IN ORDDicom, metadata IN SYS.XMLTYPE, dest IN OUT NOCOPY ORDDicom)
説明
宛先ORDDicomオブジェクトに既存のORDDicomオブジェクトのコピーを作成し、メタデータを変更することによって提供されるメタデータを使用して、現行のORDDicomオブジェクトを変更します。元のORDDicomオブジェクトは変更されません。宛先ORDDicomオブジェクトの埋込みDICOMコンテンツの属性は、入力されたメタデータからコピーされます。
パラメータ
- metadata
-
XMLTypeのデータ型で格納されている入力メタデータを指定します。宛先ORDDicomオブジェクトでは、入力メタデータを使用して、ソースORDDicomオブジェクトの属性と同一の属性の値の更新、または新しい属性の追加が実行されます。メタデータは、名前空間
http://xmlns.oracle.com/ord/dicom/metadata_1_0
を持つデフォルトのメタデータ・スキーマに準拠している必要があります。メタデータのSOPインスタンスUIDでは、宛先DICOMコンテンツがグローバルに一意である必要があります。 - dest
-
新しいメタデータを含む新しい埋込みDICOMコンテンツを格納するための、空のORDDicomオブジェクトを指定します。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、埋込みDICOMコンテンツの属性を更新するために使用します。
また、このメソッドを使用して、プライベート属性を埋込みDICOMコンテンツに追加することもできます。
メタデータ抽出をサポートするエンコーディング・ルールの詳細は、「DICOMのエンコーディング規則」を参照してください。
プリファレンス・パラメータVALIDATE_METADATAは、OracleのデフォルトDICOMメタデータ・スキーマと照合してXML文書を検証するかどうかを指定するために使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義」を参照してください。
プリファレンス・パラメータSQ_WRITE_LENは、DICOMシーケンス(SQ)タイプのエンコード方法を指定するために使用します。このプリファレンス・パラメータの詳細は、「SQ_WRITE_LENプリファレンス・パラメータの定義」を参照してください。
例
新しいメタデータを埋込みDICOMコンテンツのコピーに書き込みます。
declare obj_src orddicom; obj_dest orddicom; metadata xmltype; begin metadata := xmltype(bfilename('DICOMDIR', 'wm_meta.xml'), nls_charset_id('AL32UTF8'), 'http://xmlns.oracle.com/ord/dicom/metadata_1_0'); select dicom_src, dicom_dest into obj_src, obj_dest from medical_image_obj where id = 1 for update; obj_src.writeMetadata(metadata, obj_dest); update medical_image_obj set dicom_dest = obj_dest where id = 1; end; /