ヘッダーをスキップ
Oracle Multimedia DICOM開発者ガイド
11g リリース1(11.1)
E05685-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

5 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の場合)

Oracle Multimediaには、ORDDicomオブジェクト型について次の情報が含まれます。

この章では、ORDDicomオブジェクト・インタフェースの属性、コンストラクタおよびメソッドについて説明します。 他のDICOMアプリケーション・プログラミング・インタフェース(API)の詳細は、次の章を参照してください。

DICOM Java APIの詳細は、『Oracle Multimedia DICOM Java API Reference』を参照してください。

5.1 ORDDicomオブジェクトの例で使用されるメディア表とディレクトリの定義

この章で説明するメソッドでは、MEDICAL_IMAGE_OBJ表に基づいて例が示されています。これらの例は、Product Media(PM)サンプル・スキーマに作成されています。 例を参照する際は、次のMEDICAL_IMAGE_OBJ表の定義を参照してください。 サンプル・スキーマの詳細は、『Oracle Databaseサンプル・スキーマ』を参照してください。

ORDDicomのメソッドを使用する前に、いくつかのデータを表にロードする必要があります。 たとえば、SQL*Loaderユーティリティ、Javaクライアントまたはimport( )メソッドを使用できます。 例に示すファイルは、実際のDICOMファイルに置き換えてください。


注意:

(BLOBを直接変更するか、外部ソースを変更して)DICOMコンテンツ自体を操作した場合は、setProperties( )メソッドをコールして、オブジェクト属性の同期化が保持されていることを確認します。 また、更新時刻が修正されていることも確認する必要があります。 そうしないと、オブジェクト属性がDICOMコンテンツと一致しなくなります。

5.1.1 ディレクトリの定義

例を実行する前に、次の文を発行する必要があります。ここで/mydir/workは、ユーザーpmがDICOMファイルを検索できるディレクトリです。

CREATE OR REPLACE DIRECTORY DICOMDIR as '/mydir/work';
GRANT READ, WRITE ON DIRECTORY DICOMDIR TO pm;

5.1.2 MEDICAL_IMAGE_OBJ表の定義

データを表にロードする前に、データを格納する表および列を作成する必要があります。 次に示す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オブジェクト型

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,

この例の補足説明は次のとおりです。


ORDDicomのコンストラクタ

ORDDicomオブジェクトは、SQL文またはPL/SQLプログラムの次のコンストラクタを使用して構築できます。

ORDDicomオブジェクトには、埋込みBLOB属性があります。 BLOBロケータは、アクセスする前に初期化する必要があります。 したがって、新しく構築されたORDDicomオブジェクト(一時BLOBを使用して構築された場合を除く)は、これらのORDDicomオブジェクトでオブジェクト・メンバーのメソッドをコールする前に、表に挿入する必要があります。 この項では、ORDDicomのコンストラクタについて説明します。


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スキーマに準拠します。

パラメータ

data

BLOBに格納されている埋込みDICOMコンテンツを指定します。

setproperties

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;

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スキーマに準拠します。

パラメータ

data

ORDImageオブジェクトに格納されている埋込みDICOMコンテンツを指定します。

setproperties

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( )

構文

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スキーマに準拠します。

パラメータ

source_type

ソースのタイプを指定します。 有効な値は、'FILE'または'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());

ORDDicomのメソッド

この項では、次のORDDicomのメソッドに関するリファレンス情報を示します。


export( )

構文

export(SELF IN ORDDicom, dest_type IN VARCHAR2, dest_location IN VARCHAR2, dest_name IN VARCHAR2)

説明

埋込みDICOMコンテンツを指定の宛先にエクスポートします。 データが宛先にコピーされる際、データはソースBLOBに保持されます。

パラメータ

dest_type

宛先のタイプを指定します('FILE'のみサポートされています)。

dest_location

宛先の位置を指定します(有効なOracleディレクトリ・オブジェクトである必要があります)。

dest_name

宛先のファイル名を指定します。

プラグマ

なし

例外

なし

使用上の注意

このメソッドは、埋込み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( )

構文

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コードとして取得し、そのデータを検索または表示用のデータベース表に格納するために使用します。

埋込み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( )

構文

getAttributeByName (attributeName IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE

説明

SQタイプの属性以外のDICOM属性に対して、VARCHAR2文字列にDICOM属性の値を戻します。 SQタイプの属性の場合、このメソッドはVARCHAR2文字列にXMLコードのセグメントを戻します。 このメソッドはヘルパー型のみです。

パラメータ

attributeName

属性または項目の名前を指定します。

definerName

属性の定義者の名前を指定します。 デフォルト名は'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( )

構文

getAttributeByTag (tag IN VARCHAR2, definerName IN VARCHAR2 DEFAULT 'DICOM') RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE

説明

SQタイプの属性以外のDICOM属性に対して、VARCHAR2文字列にDICOM属性の値を戻します。 SQタイプの属性の場合、このメソッドはVARCHAR2文字列にXMLコードのセグメントを戻します。 このメソッドはヘルパー型のみです。

パラメータ

tag

DICOM属性または項目タグの指定に使用するコード値を16進文字列で指定します。 シーケンス・タイプ(SQ)の子属性にアクセスするには、"."表記を使用します。 たとえば、"00082218.00080100"は、解剖学的領域シーケンス(タグ"00082218")のコード値(タグ"00080100")を戻します。 また、"00080005[2]"は、特定のキャラクタ・セット属性(タグ"00080005")の2つ目の項目の値を戻します。

definerName

属性の定義者の名前を指定します。 デフォルト名は'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( )

構文

getContent( ) RETURN BLOB DETERMINISTIC

説明

ORDDicomオブジェクトのsource属性に格納されている埋込みDICOMコンテンツを戻します。 DICOMコンテンツがインポートされていない場合、このメソッドは、BLOBハンドルまたはNULL値を戻します。

パラメータ

なし

プラグマ

なし

例外

なし

使用上の注意

なし

ORDDicomオブジェクトのsource属性のコンテンツを戻します。

   select t.dicom_src.getContent() from medical_image_obj t;

getContentLength( )

構文

getContentLength( ) RETURN INTEGER DETERMINISTIC PARALLEL_ENABLE

説明

埋込みDICOMコンテンツの長さを戻します。 このメソッドは、ORDDicomオブジェクトのcontentLength属性の値を戻します。

パラメータ

なし

プラグマ

なし

例外

なし

使用上の注意

なし

ORDDicomオブジェクトのcontentLength属性の値を戻します。

   select t.dicom_src.getContentLength() from medical_image_obj t;

getSeriesInstanceUID( )

構文

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( )

構文

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( )

構文

getSourceLocation( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE

説明

ORDDicomオブジェクトのsource属性からソース位置を戻します。

パラメータ

なし

プラグマ

なし

例外

なし

使用上の注意

なし

ORDDicomオブジェクトのソース位置を戻します。

   select t.dicom_src.getSourceLocation() from medical_image_obj t;

getSourceName( )

構文

getSourceName( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE

説明

ORDDicomオブジェクトのsource属性からソース名を戻します。

パラメータ

なし

プラグマ

なし

例外

なし

使用上の注意

なし

ORDDicomオブジェクトのソース名を戻します。

   select t.dicom_src.getSourceName() from medical_image_obj t;

getSourceType( )

構文

getSourceType( ) RETURN VARCHAR2 DETERMINISTIC PARALLEL_ENABLE

説明

ORDDicomオブジェクトのsource属性からソース・タイプを戻します。

パラメータ

なし

プラグマ

なし

例外

なし

使用上の注意

なし

ORDDicomオブジェクトのソース・タイプを戻します。

   select t.dicom_src.getSourceType() from medical_image_obj t;

getSOPClassUID( )

構文

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( )

構文

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( )

構文

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( )

構文

import(SELF IN OUT NOCOPY ORDDicom, setproperties IN INTEGER DEFAULT 1)

説明

現行のソースからDICOMコンテンツをインポートします。 このメソッドは、source_type、source_locationおよびsource_nameパラメータをコンストラクタに渡すことによって、source属性がORDDicomオブジェクトにすでに設定されていることを想定しています。

パラメータ

setproperties

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( )

構文

isAnonymous(anonymityDocName IN VARCHAR2 DEFAULT 'ordcman.xml') RETURN INTEGER

説明

データ・モデル・リポジトリに格納されている指定の匿名ドキュメントを使用して、埋込みDICOMコンテンツが匿名かどうかを決定します。 このメソッドは、データが匿名の場合に1の値を戻し、それ以外の場合は0の値を戻します。

パラメータ

anonymityDocName

匿名ドキュメントの名前を指定します。 デフォルト名は"ordcman.xml"です。

プラグマ

なし

例外

なし

使用上の注意

このメソッドは、makeAnonymous( )メソッドをコールする前に、患者を特定する情報が埋込みDICOMコンテンツから削除されているかどうかを調べるために使用します。

埋込みDICOMコンテンツが匿名かどうかを確認します。

   select t.dicom_src.isAnonymous('ordcman.xml') from medical_image_obj t;

isConformanceValid( )

構文

isConformanceValid( constraintName IN VARCHAR2 ) RETURN INTEGER

説明

constraintNameパラメータによって識別される特定の一連の制約に対して、埋込みDICOMコンテンツが準拠しているかどうかを確認するために、準拠の検証チェックを実行します。 このメソッドは、準拠している場合に1の値を戻し、それ以外の場合は0の値を戻します。

また、このメソッドは、制約ドキュメントからのエラー・メッセージを記録します。これらのメッセージは、パブリック情報ビューorddcm_conformance_vld_msgsを問い合せて表示できます。 パブリック情報ビューorddcm_constraint_namesには、制約名のリストが含まれます。

パラメータ

constraintName

準拠の検証チェックに使用する制約名を指定します。

プラグマ

なし

例外

なし

使用上の注意

なし

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( )

構文

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( )

構文

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属性の両方が匿名化されます。

パラメータ

dest_SOP_INSTANCE_UID

宛先ORDDicomオブジェクトのSOPインスタンスUIDを指定します。 宛先DICOMコンテンツはグローバルに一意である必要があります。

dest

匿名のORDDicomオブジェクトを格納するための、空のORDDicomオブジェクトを指定します。

anonymityDocName

匿名ドキュメントの名前を指定します。 デフォルト名は"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;
/

この例の補足説明は次のとおりです。


BLOBへのprocessCopy( )

構文

processCopy (SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY BLOB)

説明

入力するORDDicom画像オブジェクトを宛先BLOBにコピーし、宛先BLOBで指定された処理操作を実行します。 入力された元のORDDicomオブジェクトは変更されません。

パラメータ

command

画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、framecontentFormatfileFormatcompressionFormatcutscalerotateなどがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。

dest

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;
/

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画像オブジェクトで指定された処理操作を実行します。 画像情報で更新されるのは、宛先ORDDicom画像のDICOM属性のみです。 入力された元のORDDicomオブジェクトは変更されません。

パラメータ

command

画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、compressionFormatframecontentFormatcutscalerotateなどがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。

dest_SOP_INSTANCE_UID

宛先ORDDicomオブジェクトのSOPインスタンスUIDを指定します。 宛先DICOMコンテンツはグローバルに一意である必要があります。

dest

新しいメタデータを含む新しいDICOM画像を格納するための、空のORDDicomオブジェクトを指定します。

metadata

新しい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;
/

この例の補足説明は次のとおりです。


ORDImageへのprocessCopy( )

構文

processCopy (SELF IN ORDDicom, command IN VARCHAR2, dest IN OUT NOCOPY ORDImage)

説明

入力するORDDicom画像オブジェクトを宛先ORDImageオブジェクトにコピーし、宛先ORDImageオブジェクトで指定された処理操作を実行します。 入力された元のORDDicomオブジェクトは変更されません。

パラメータ

command

画像処理の演算子を入力として受け入れるコマンド文字列を指定します。 有効な値には、framecontentFormatfileFormatcompressionFormatcutscalerotateなどがあります。 画像処理の演算子の完全なリストおよび各演算子の詳細は、『Oracle Multimediaリファレンス』のprocess( )メソッドに関する説明を参照してください。

dest

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( )

構文

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( )

構文

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コンテンツに追加することもできます。

メタデータの抽出をサポートするエンコーディング・ルールの詳細は、付録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;
/