8 ORDDicomオブジェクト型のリファレンス
Oracle Multimediaには、DICOM形式の医療用画像やその他のデータの格納、管理および操作をサポートするORDDicomオブジェクト型が用意されています。
ORDDicomオブジェクトは、一度だけ書き込まれるオブジェクトとして使用されます。画像の処理や圧縮によって新しいORDDicomオブジェクトを生成するためには、新しいORDDicomオブジェクト、ORDImageオブジェクトまたはBLOBを作成する必要があります。
ORDDicomオブジェクト型は、ordcspec.sql
ファイルに定義されています。インストール後、このファイルは次のOracleホーム・ディレクトリに格納されています。
<ORACLE_HOME>
/ord/im/admin
(LinuxおよびUNIXの場合)
<ORACLE_HOME>
\ord\im\admin
(Windowsの場合)
この章では、ORDDicomオブジェクト・インタフェースの属性、コンストラクタおよびメソッドについて説明します。
この章では、次の内容を説明します。
関連項目:
他のDICOMアプリケーション・プログラミング・インタフェース(API)については、表3-1を参照してください。
8.1 ORDDicomオブジェクトの例
この章の例では、MEDICAL_IMAGE_OBJ表を使用します。これらの例について読む際は、MEDICAL_IMAGE_OBJ表の定義を参照してください。
ORDDicomのメソッドを使用する前に、いくつかのデータを表にロードする必要があります。たとえば、SQL*Loaderユーティリティ、Javaクライアントまたはimport( )メソッドを使用できます。例中のファイルは、実際のDICOMファイルで置き換えてください。
注意:
(BLOBを直接変更するか、外部ソースを変更して)DICOMコンテンツ自体を操作した場合は、setProperties( )メソッドをコールして、オブジェクト属性の同期化が保持されていることを確認します。また、更新時刻が修正されていることも確認する必要があります。そうしないと、オブジェクト属性がDICOMコンテンツと一致しなくなります。
詳細は、setProperties( )メソッドを参照してください。
8.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>;
8.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コンテンツ。
8.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の予約属性。
8.3 ORDDicomのコンストラクタ
この項では、次のORDDicomコンストラクタ・ファンクションについて説明します。
ORDDicomオブジェクトは、SQL文またはPL/SQLプログラムの次のコンストラクタを使用して構築できます。
ORDDicomオブジェクトには、埋込みBLOB属性があります。BLOBロケータは、アクセスする前に初期化する必要があります。したがって、新しく構築されたORDDicomオブジェクト(一時BLOBを使用して構築された場合を除く)は、これらのORDDicomオブジェクトでオブジェクト・メンバーのメソッドをコールする前に、表に挿入する必要があります。
8.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;
8.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;
8.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());
8.4 ORDDicomのメソッド
この項では、次のORDDicomメソッドのリファレンス情報を示します。
注意:
この項では、<unique-UID>は、DICOMコンテンツに対する全世界的にグローバルな一意識別子を表す、ドットで連結された64バイトの数字列を表します。UIDは、通常、DICOMコンテンツを作成する組織を一意に識別するルートと、組織内のDICOMコンテンツを一意に識別する接尾辞で構成されます。この項の一部の例では、<unique-UID>を適切なUIDで置き換える必要があります。
8.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; /
8.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オブジェクトのmetadata属性およびその他の属性は影響されません。
パラメータ
- 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へのエンコード時に省略の基準となるDICOM属性のサイズ制限を指定するには、プリファレンス・パラメータXML_SKIP_ATTRを使用します。このプリファレンス・パラメータの詳細は、XML_SKIP_ATTRプリファレンス・パラメータの定義を参照してください。
グローバルまたはローカルのXMLスキーマとしてOracle XML DBに登録されている特定のXMLスキーマに照らしあわせてXMLドキュメントを検証するかどうかを指定するには、プリファレンス・パラメータVALIDATE_METADATAを使用します。このプリファレンス・パラメータの詳細は、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; /
8.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 ; /
8.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 ; /
8.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;
8.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;
8.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;
8.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;
8.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;
8.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;
8.4.11 getSourceLocation( )
形式
getSourceLocation( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース位置を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース位置を戻します。
select t.dicom_src.getSourceLocation() from medical_image_obj t;
8.4.12 getSourceName( )
形式
getSourceName( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース名を戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース名を戻します。
select t.dicom_src.getSourceName() from medical_image_obj t;
8.4.13 getSourceType( )
形式
getSourceType( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース・タイプを戻します。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
なし。
例
ORDDicomオブジェクトのソース・タイプを戻します。
select t.dicom_src.getSourceType() from medical_image_obj t;
8.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;
8.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; /
8.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;
8.4.17 isConformanceValid( )
形式
isConformanceValid(constraintName IN VARCHAR2) RETURN INTEGER
説明
準拠の検証チェックを実行して、埋込みDICOMコンテンツがconstraintNameパラメータによって識別される特定の一連の制約に準拠しているかどうかを確認します。このメソッドは、準拠が有効な場合に1
の値を戻し、それ以外の場合は0
の値を戻します。
また、このメソッドは制約ドキュメントからのエラー・メッセージを記録し、エラー・メッセージはパブリック・ビューorddcm_conformance_vld_msgsを問い合せることで表示できます。パブリック・ビューorddcm_constraint_namesには制約名のリストが表示されます。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドがSQL問合せからコールされた場合、制約ルール定義に<ACTION>要素が含まれていないことを確認してください。
準拠の検証中に欠落した属性またはnullの属性値が見つかったときに例外をスローするかどうかを指定するには、プリファレンス・パラメータEXP_IF_NULL_ATTR_IN_CONSTRAINTを使用します。このプリファレンス・パラメータの詳細は、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';
8.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; /
8.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;
/
8.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の処理およびサポートされる形式を参照してください。
XMLドキュメントをOracleのデフォルトのDICOMメタデータ・スキーマに照らしあわせて検証するかどうかを指定するには、プリファレンス・パラメータVALIDATE_METADATAを使用します。このプリファレンス・パラメータの詳細は、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; /
8.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の処理およびサポートされる形式を参照してください。
XMLドキュメントをOracleのデフォルトのDICOMメタデータ・スキーマに照らしあわせて検証するかどうかを指定するには、プリファレンス・パラメータVALIDATE_METADATAを使用します。このプリファレンス・パラメータの詳細は、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;
/
8.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オブジェクトを指定します。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドを使用して、埋込みDICOMコンテンツからWebフォームでの表示に適した非DICOM画像を取得します。
画像コンテンツの処理をサポートするエンコーディング・ルールの詳細は、DICOMエンコーディング・ルールを参照してください。DICOM処理の詳細は、DICOMの処理およびサポートされる形式を参照してください。
XMLドキュメントをOracleのデフォルトのDICOMメタデータ・スキーマに照らしあわせて検証するかどうかを指定するには、プリファレンス・パラメータVALIDATE_METADATAを使用します。このプリファレンス・パラメータの詳細は、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; /
8.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属性のみが含まれます。それ以外の場合、XMLメタデータには、埋め込まれたDICOMコンテンツからのすべての属性が含まれます。
パラメータ
なし。
プラグマ
なし。
例外
なし。
使用上の注意
このメソッドは、ORDDicomオブジェクトの属性を移入し、埋込みDICOMコンテンツからメタデータを取得するために使用します。
XMLへのエンコード時に省略の基準となるDICOM属性のサイズ制限を指定するには、プリファレンス・パラメータXML_SKIP_ATTRを使用します。このプリファレンス・パラメータの詳細は、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; /
8.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エンコーディング・ルールを参照してください。
XMLドキュメントをOracleのデフォルトのDICOMメタデータ・スキーマに照らしあわせて検証するかどうかを指定するには、プリファレンス・パラメータVALIDATE_METADATAを使用します。このプリファレンス・パラメータの詳細は、VALIDATE_METADATAプリファレンス・パラメータの定義を参照してください。
DICOMシーケンス(SQ)型のエンコード方法を指定するには、プリファレンス・パラメータSQ_WRITE_LENを使用します。このプリファレンス・パラメータの詳細は、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; /