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オブジェクト・インタフェースの属性、コンストラクタおよびメソッドについて説明します。

この章では、次の内容を説明します。

関連項目:

表3-1

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

注:

各データベース・セッションの開始時にはsetDataModel( )プロシージャをコールしてください。

詳細は、setDataModel( )プロシージャを参照してください。

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

パラメータ

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;

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

パラメータ

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;

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に保持されます。

パラメータ

dest_type

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

dest_location

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

dest_name

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

プラグマ

なし。

例外

なし。

使用上の注意

このメソッドは、埋込み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コンテンツから抽出するメタデータのタイプを指定する文字列です。有効な値はALLMAPPEDおよび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コンテンツからの単一の属性を取得します。

パラメータ

attributeName

指定した属性の名前。

definerName

属性の定義者の名前を指定します。デフォルト名は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コンテンツの単一の属性を取得します。

パラメータ

tag

DICOM属性または項目タグの指定に使用するコード値を16進文字列で指定します。

definerName

属性の定義者の名前を指定します。デフォルト名は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属性がすでに設定されていると想定します。

パラメータ

setproperties

DICOM属性がORDDicomオブジェクトのメタデータ属性に抽出されるかどうかを決定するインジケータ・フラグです。値が1の場合、DICOM属性はORDDicomオブジェクトのmetadata属性に抽出され、ORDDicomオブジェクトの属性が移入されます。値が0の場合、DICOM属性は抽出されません。デフォルトは1です。

プラグマ

なし。

例外

なし。

使用上の注意

このメソッドは、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の値を返します。

パラメータ

anonymityDocName

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

プラグマ

なし。

例外

なし。

使用上の注意

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には制約名のリストが含まれます。

パラメータ

constraintName

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

プラグマ

なし。

例外

なし。

使用上の注意

このメソッドを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属性の両方が匿名化されます。

パラメータ

dest_SOP_INSTANCE_UID

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

dest

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

anonymityDocName

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

プラグマ

なし。

例外

なし。

使用上の注意

このメソッドは、データの共有および検索で使用される埋込み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

処理演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、framecontentFormatfileFormatcompressionFormatcutscalerotateなどがあります。処理演算子の詳細は、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

処理演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、compressionFormatframecontentFormatcutscalerotateなどがあります。処理演算子の詳細は、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

画像処理の演算子を入力として受け入れるコマンド文字列を指定します。有効な値には、framecontentFormatfileFormatcompressionFormatcutscalerotateなどがあります。イメージ処理演算子の詳細は、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;
/