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の場合)
Oracle Multimediaには、ORDDicomオブジェクト型について次の情報が含まれます。
この章では、ORDDicomオブジェクト・インタフェースの属性、コンストラクタおよびメソッドについて説明します。 他のDICOMアプリケーション・プログラミング・インタフェース(API)の詳細は、次の章を参照してください。
DICOM Java APIの詳細は、『Oracle Multimedia DICOM Java API Reference』を参照してください。
この章で説明するメソッドでは、MEDICAL_IMAGE_OBJ表に基づいて例が示されています。これらの例は、Product Media(PM)サンプル・スキーマに作成されています。 例を参照する際は、次のMEDICAL_IMAGE_OBJ表の定義を参照してください。 サンプル・スキーマの詳細は、『Oracle Databaseサンプル・スキーマ』を参照してください。
ORDDicomのメソッドを使用する前に、いくつかのデータを表にロードする必要があります。 たとえば、SQL*Loaderユーティリティ、Javaクライアントまたはimport( )メソッドを使用できます。 例に示すファイルは、実際のDICOMファイルに置き換えてください。
注意: (BLOBを直接変更するか、外部ソースを変更して)DICOMコンテンツ自体を操作した場合は、setProperties( )メソッドをコールして、オブジェクト属性の同期化が保持されていることを確認します。 また、更新時刻が修正されていることも確認する必要があります。 そうしないと、オブジェクト属性がDICOMコンテンツと一致しなくなります。 |
例を実行する前に、次の文を発行する必要があります。ここで/mydir/work
は、ユーザーpm
がDICOMファイルを検索できるディレクトリです。
CREATE OR REPLACE DIRECTORY DICOMDIR as '/mydir/work'; GRANT READ, WRITE ON DIRECTORY DICOMDIR TO pm;
データを表にロードする前に、データを格納する表および列を作成する必要があります。 次に示すPL/SQLコードでは、5つの列を含むMEDICAL_IMAGE_OBJ表が作成されます。
CONNECT pm
Enter password: password
CREATE TABLE MEDICAL_IMAGE_OBJ
(
id integer primary key,
dicom_src ordsys.orddicom,
dicom_dest ordsys.orddicom,
image_dest ordsys.ordimage,
blob_dest blob
);
COMMIT;
この例の補足説明は次のとおりです。
dicom_src: ORDDicomオブジェクトのソースDICOMコンテンツ。
dicom_dest: ORDDicomオブジェクトの宛先DICOMコンテンツ。
image_dest: ORDImageオブジェクトの宛先DICOMコンテンツ。
blob_dest: BLOBの宛先DICOMコンテンツ。
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の予約属性。
ORDDicomオブジェクトは、SQL文またはPL/SQLプログラムの次のコンストラクタを使用して構築できます。
ORDDicomオブジェクトには、埋込みBLOB属性があります。 BLOBロケータは、アクセスする前に初期化する必要があります。 したがって、新しく構築されたORDDicomオブジェクト(一時BLOBを使用して構築された場合を除く)は、これらのORDDicomオブジェクトでオブジェクト・メンバーのメソッドをコールする前に、表に挿入する必要があります。 この項では、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スキーマに準拠します。
パラメータ
BLOBに格納されている埋込みDICOMコンテンツを指定します。
DICOM属性を埋込みDICOMコンテンツから抽出するかどうかを決定するインジケータ・フラグです。 値が1
の場合、DICOM属性は構築されたORDDicomオブジェクトのmetadata属性に抽出され、ORDDicomオブジェクトの属性が移入されます。 値が0
の場合、DICOM属性は抽出されません。 デフォルトは0
です。
プラグマ
なし
例外
なし
使用上の注意
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;
構文
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スキーマに準拠します。
パラメータ
ORDImageオブジェクトに格納されている埋込みDICOMコンテンツを指定します。
DICOM属性を埋込みDICOMコンテンツから抽出するかどうかを決定するインジケータ・フラグです。 値が1
の場合、DICOM属性は構築されたORDDicomオブジェクトのmetadata属性に抽出され、ORDDicomオブジェクトの属性が移入されます。 値が0
の場合、DICOM属性は抽出されません。 デフォルトは0
です。
プラグマ
なし
例外
なし
使用上の注意
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;
構文
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'
に設定されています。LOCALの場合、データのソースはBLOBのデータベースにローカルに格納されます。 デフォルト値を使用すると、ローカル・ソースを含む空のオブジェクトが構築されます。 source_typeパラメータの値を'FILE'
に設定すると、外部FILEとして格納されているソースを使用して、ORDDicomオブジェクトが構築されます。 メタデータは、デフォルトのXMLマッピング・ドキュメントで定義されているXMLスキーマに準拠します。
パラメータ
ソースのタイプを指定します。 有効な値は、'FILE'
または'LOCAL'
です。
ディレクトリ内のソースの位置を指定します(source_type='FILE'
の場合に使用)。
ソースのファイル名を指定します(source_type='FILE'
の場合に使用)。
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());
この項では、次のORDDicomのメソッドに関するリファレンス情報を示します。
構文
export(SELF IN ORDDicom, dest_type IN VARCHAR2, dest_location IN VARCHAR2, dest_name IN VARCHAR2)
説明
埋込みDICOMコンテンツを指定の宛先にエクスポートします。 データが宛先にコピーされる際、データはソースBLOBに保持されます。
パラメータ
宛先のタイプを指定します('FILE'
のみサポートされています)。
宛先の位置を指定します(有効なOracleディレクトリ・オブジェクトである必要があります)。
宛先のファイル名を指定します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、埋込みDICOMコンテンツをローカル・ファイル・システムにエクスポートするために使用します。
例
埋込みDICOMコンテンツを指定のファイルにエクスポートします。
declare obj orddicom; begin select dicom_src into obj from medical_image_obj where id = 1; obj.export('FILE', 'DICOMDIR', 'exported.dcm'); end; /
構文
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属性は影響されません。
パラメータ
DICOMコンテンツから抽出するメタデータのタイプを指定する文字列です。 有効な値は、'ALL'
、'MAPPED'
および'STANDARD'
です。 デフォルトは'ALL'
です。
このパラメータの値が'ALL'
の場合は、埋込みDICOMコンテンツのすべての属性が抽出されます。 この値が'MAPPED'
に設定されている場合は、マップ済の属性のみが抽出されます。 また、この値が'STANDARD'
に設定されている場合は、DICOM標準規格に準拠している属性と、マップ済の属性のみが抽出されます。
マッピング・ドキュメントの名前を指定します。 デフォルトのマッピング・ドキュメント'ordcmmp.xml'
はインストール中にロードされます。 このドキュメントでは、デフォルトのメタデータ名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
を参照します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、埋込みDICOMコンテンツからメタデータをXMLコードとして取得し、そのデータを検索または表示用のデータベース表に格納するために使用します。
例
埋込み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; /
構文
getAttributeByName (attributeName IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
SQタイプの属性以外のDICOM属性に対して、VARCHAR2文字列にDICOM属性の値を戻します。 SQタイプの属性の場合、このメソッドはVARCHAR2文字列にXMLコードのセグメントを戻します。 このメソッドはヘルパー型のみです。
パラメータ
属性または項目の名前を指定します。
属性の定義者の名前を指定します。 デフォルト名は'DICOM'
です。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、埋込みDICOMコンテンツの単一の属性を取得するために使用します。 パフォーマンス上の理由から、2つまたは3つを超える属性の取得には、このメソッドを使用しないでください。
このメソッドを初めてコールする前に、setProperties( )メソッドをコールする必要があります。
このメソッドは、最大のパフォーマンスを必要とするアプリケーションで使用することはお薦めしません。
例
指定の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 ; /
構文
getAttributeByTag (tag IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
SQタイプの属性以外のDICOM属性に対して、VARCHAR2文字列にDICOM属性の値を戻します。 SQタイプの属性の場合、このメソッドはVARCHAR2文字列にXMLコードのセグメントを戻します。 このメソッドはヘルパー型のみです。
パラメータ
DICOM属性または項目タグの指定に使用するコード値を16進文字列で指定します。 シーケンス・タイプ(SQ)の子属性にアクセスするには、"."
表記を使用します。 たとえば、"00082218.00080100"
は、解剖学的領域シーケンス(タグ"00082218"
)のコード値(タグ"00080100"
)を戻します。 また、"00080005[2]"
は、特定のキャラクタ・セット属性(タグ"00080005"
)の2つ目の項目の値を戻します。
属性の定義者の名前を指定します。 デフォルト名は'DICOM'
です。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、埋込みDICOMコンテンツの単一の属性を取得するために使用します。 パフォーマンス上の理由から、2つまたは3つを超える属性の取得には、このメソッドを使用しないでください。
このメソッドを初めてコールする前に、setProperties( )メソッドをコールする必要があります。
このメソッドは、最大のパフォーマンスを必要とするアプリケーションで使用することはお薦めしません。
例
指定の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 ; /
構文
getContent( ) RETURN BLOB DETERMINISTIC
説明
ORDDicomオブジェクトのsource属性に格納されている埋込みDICOMコンテンツを戻します。 DICOMコンテンツがインポートされていない場合、このメソッドは、BLOBハンドルまたはNULL値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのsource属性のコンテンツを戻します。
select t.dicom_src.getContent() from medical_image_obj t;
構文
getContentLength( ) RETURN INTEGER DETERMINISTIC PARALLEL_ENABLE
説明
埋込みDICOMコンテンツの長さを戻します。 このメソッドは、ORDDicomオブジェクトのcontentLength属性の値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのcontentLength属性の値を戻します。
select t.dicom_src.getContentLength() from medical_image_obj t;
構文
getSeriesInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSERIES_INSTANCE_UID属性の値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのSERIES_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getSeriesInstanceUID() from medical_image_obj t;
構文
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;
構文
getSourceLocation( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース位置を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのソース位置を戻します。
select t.dicom_src.getSourceLocation() from medical_image_obj t;
構文
getSourceName( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース名を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのソース名を戻します。
select t.dicom_src.getSourceName() from medical_image_obj t;
構文
getSourceType( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのsource属性からソース・タイプを戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのソース・タイプを戻します。
select t.dicom_src.getSourceType() from medical_image_obj t;
構文
getSOPClassUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSOP_CLASS_UID属性の値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのSOP_CLASS_UID属性の値を戻します。
select t.dicom_src.getSOPClassUID() from medical_image_obj t;
構文
getSOPInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE
説明
ORDDicomオブジェクトのSOP_INSTANCE_UID属性の値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのSOP_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getSOPInstanceUID() from medical_image_obj t;
構文
getStudyInstanceUID( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE,
説明
ORDDicomオブジェクトのSTUDY_INSTANCE_UID属性の値を戻します。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトのSTUDY_INSTANCE_UID属性の値を戻します。
select t.dicom_src.getStudyInstanceUID() from medical_image_obj t;
構文
import(SELF IN OUT NOCOPY ORDDicom, setproperties IN INTEGER DEFAULT 1)
説明
現行のソースからDICOMコンテンツをインポートします。 このメソッドは、source_type、source_locationおよびsource_nameパラメータをコンストラクタに渡すことによって、source
属性がORDDicomオブジェクトにすでに設定されていることを想定しています。
パラメータ
DICOM属性をORDDicomオブジェクトのmetadata属性に抽出するかどうかを決定するインジケータ・フラグです。 値が1
の場合、DICOM属性はORDDicomオブジェクトのmetadata属性に抽出され、ORDDicomオブジェクトの属性が移入されます。 値が0
の場合、DICOM属性は抽出されません。 デフォルトは1
です。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、ORDDicomオブジェクトがBLOB以外のソースから構築され、BLOBにインポートする必要がある場合に使用します。
例
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; /
構文
isAnonymous(anonymityDocName IN VARCHAR2 DEFAULT 'ordcman.xml') RETURN INTEGER
説明
データ・モデル・リポジトリに格納されている指定の匿名ドキュメントを使用して、埋込みDICOMコンテンツが匿名かどうかを決定します。 このメソッドは、データが匿名の場合に1
の値を戻し、それ以外の場合は0
の値を戻します。
パラメータ
匿名ドキュメントの名前を指定します。 デフォルト名は"ordcman.xml"
です。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、makeAnonymous( )メソッドをコールする前に、患者を特定する情報が埋込みDICOMコンテンツから削除されているかどうかを調べるために使用します。
例
埋込みDICOMコンテンツが匿名かどうかを確認します。
select t.dicom_src.isAnonymous('ordcman.xml') from medical_image_obj t;
構文
isConformanceValid( constraintName IN VARCHAR2 ) RETURN INTEGER
説明
constraintNameパラメータによって識別される特定の一連の制約に対して、埋込みDICOMコンテンツが準拠しているかどうかを確認するために、準拠の検証チェックを実行します。 このメソッドは、準拠している場合に1
の値を戻し、それ以外の場合は0
の値を戻します。
また、このメソッドは、制約ドキュメントからのエラー・メッセージを記録します。これらのメッセージは、パブリック情報ビューorddcm_conformance_vld_msgsを問い合せて表示できます。 パブリック情報ビューorddcm_constraint_namesには、制約名のリストが含まれます。
パラメータ
準拠の検証チェックに使用する制約名を指定します。
プラグマ
なし
例外
なし
使用上の注意
なし
例
ORDDicomオブジェクトが制約に準拠しているかどうかを確認します。 その後、生成された準拠の検証メッセージを表示します。
select t.dicom_src.isConformanceValid('PatientModule') from medical_image_obj t; 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';
構文
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; /
構文
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属性の両方が匿名化されます。
パラメータ
宛先ORDDicomオブジェクトのSOPインスタンスUIDを指定します。 宛先DICOMコンテンツはグローバルに一意である必要があります。
匿名のORDDicomオブジェクトを格納するための、空のORDDicomオブジェクトを指定します。
匿名ドキュメントの名前を指定します。 デフォルト名は"ordcman.xml"
です。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、データの共有および検索で使用される埋込み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;
/
この例の補足説明は次のとおりです。
<unique-UID>: DICOMコンテンツに対して全世界的にグローバルな一意識別子を表す、ドットで連結された64バイトの数字列です。 UIDは、通常、DICOMコンテンツを作成する組織を一意に識別するルートと、組織内のDICOMコンテンツを一意に識別する接尾辞で構成されます。
構文
processCopy (SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY BLOB)
説明
入力するORDDicom画像オブジェクトを宛先BLOBにコピーし、宛先BLOBで指定された処理操作を実行します。 入力された元のORDDicomオブジェクトは変更されません。
パラメータ
画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、frame
、contentFormat
、fileFormat
、compressionFormat
、cut
、scale
、rotate
などがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。
ORDDicom画像で処理コマンドの出力を含む宛先BLOBを指定します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、ORDDicomオブジェクトから画像をコピーした後、その画像を処理してBLOBに移すために使用します。 この場合、BLOBの出力はラスター画像です。
また、このメソッドを使用して、波形図やビデオDICOMコンテンツの処理を行うこともできます。 この場合、BLOBの出力はAVI形式のビデオ・ファイルです。
画像コンテンツの処理をサポートするエンコーディング・ルールの詳細は、付録Cを参照してください。
例
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; /
構文
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画像オブジェクトで指定された処理操作を実行します。 画像情報で更新されるのは、宛先ORDDicom画像のDICOM属性のみです。 入力された元のORDDicomオブジェクトは変更されません。
パラメータ
画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、compressionFormat
、frame
、contentFormat
、cut
、scale
、rotate
などがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。
宛先ORDDicomオブジェクトのSOPインスタンスUIDを指定します。 宛先DICOMコンテンツはグローバルに一意である必要があります。
新しいメタデータを含む新しいDICOM画像を格納するための、空のORDDicomオブジェクトを指定します。
新しいDICOM画像に書き込まれる新しいメタデータを指定します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、現行の埋込みDICOMコンテンツの画像データを変更または修正するために使用します。
また、このメソッドは、JPEGまたはJPEG 2000を使用して圧縮された画像コンテンツを含むORDDicomオブジェクトの作成にも使用できます。
さらに、このメソッドを使用して、複数フレームのORDDicomオブジェクトから単一フレームをORDDicomオブジェクトに抽出することもできます。
画像コンテンツの処理をサポートするエンコーディング・ルールの詳細は、付録Cを参照してください。
例
ORDDicomオブジェクトを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.processcopy('compressionFormat=jpeg',
dest_sop_instance_uid,
obj_dest);
update medical_image_obj set dicom_dest = obj_dest where id = 1;
end;
/
この例の補足説明は次のとおりです。
<unique-UID>: DICOMコンテンツに対して全世界的にグローバルな一意識別子を表す、ドットで連結された64バイトの数字列です。 UIDは、通常、DICOMコンテンツを作成する組織を一意に識別するルートと、組織内のDICOMコンテンツを一意に識別する接尾辞で構成されます。
構文
processCopy (SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY ORDImage)
説明
入力するORDDicom画像オブジェクトを宛先ORDImageオブジェクトにコピーし、宛先ORDImageオブジェクトで指定された処理操作を実行します。 入力された元のORDDicomオブジェクトは変更されません。
パラメータ
画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、frame
、contentFormat
、fileFormat
、compressionFormat
、cut
、scale
、rotate
などがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。
DICOMメタデータを使用せずに処理された新しいORDImageオブジェクトを格納するための、空のORDImageオブジェクトを指定します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、Webフォームでの表示に適している画像を埋込みDICOMコンテンツから取得するために使用します。
画像コンテンツの処理をサポートするエンコーディング・ルールの詳細は、付録Cを参照してください。
例
ORDDicomオブジェクトを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; /
構文
setProperties (SELF IN OUT NOCOPY ORDDicom)
説明
ORDDicomオブジェクトの属性を設定します。 ORDDicomオブジェクトの属性が移入され、埋込みDICOMコンテンツのすべての属性がORDDicomオブジェクトのmetadata属性に抽出されます。 XMLメタデータは、デフォルトのメタデータ・スキーマの名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
に準拠しています。
パラメータ
なし
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、ORDDicomオブジェクトの属性を移入し、埋込みDICOMコンテンツからメタデータを取得するために使用します。
例
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; /
構文
writeMetadata (SELF IN ORDDicom, metadata IN SYS.XMLTYPE, dest IN OUT NOCOPY ORDDicom)
説明
宛先ORDDicomオブジェクトに既存のORDDicomオブジェクトのコピーを作成し、メタデータを変更することによって提供されるメタデータを使用して、現行のORDDicomオブジェクトを変更します。 元のORDDicomオブジェクトは変更されません。 宛先ORDDicomオブジェクトの埋込みDICOMコンテンツの属性は、入力されたメタデータからコピーされます。
パラメータ
XMLTypeのデータ型で格納されている入力メタデータを指定します。 宛先ORDDicomオブジェクトでは、入力メタデータを使用して、ソースORDDicomオブジェクトの属性と同一の属性値が更新されるか、または新しい属性が追加されます。 メタデータは、名前空間http://xmlns.oracle.com/ord/dicom/metadata_1_0
を持つデフォルトのメタデータ・スキーマに準拠している必要があります。 メタデータのSOPインスタンスUIDでは、宛先DICOMコンテンツがグローバルに一意である必要があります。
新しいメタデータを含む新しい埋込みDICOMコンテンツを格納するための、空のORDDicomオブジェクトを指定します。
プラグマ
なし
例外
なし
使用上の注意
このメソッドは、埋込みDICOMコンテンツの属性を更新するために使用します。
また、このメソッドを使用して、プライベート属性を埋込みDICOMコンテンツに追加することもできます。
メタデータの抽出をサポートするエンコーディング・ルールの詳細は、付録Cを参照してください。
例
新しいメタデータを埋込み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; /