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

戻る
戻る
 
次へ
次へ
 

E リリース10.2のDICOMサポートからの移行

この付録では、Oracle Database 10g リリース2(10.2)の(ORDImageオブジェクトにおける)DICOMサポートからOracle Database 11g リリース1(11.1)の新しいDICOMサポートに、データおよびアプリケーション・コードを移行する2つのオプションについて説明します。 1つ目のオプションは、既存のアプリケーションにほとんど影響を与えません。 2つ目のオプションは、DICOMの新しい機能を十分に活用します。

この付録の例は、次に定義されているimageTable表に基づいています。

imageTable( id           integer,
            image        ordsys.ordimage,
            thumb        ordsys.ordimage

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

E.1 DICOMリレーショナル・インタフェースを使用したアプリケーションの移行

元のORDImageオブジェクトのデータを残したまま、新しいDICOMリレーショナル・インタフェースを使用して、新しいDICOMファンクションにアクセスしても、リリース10.2のアプリケーションにはほとんど影響を与えません。 また、既存のDICOMコンテンツを移動する必要もありません。

次のように、このオプションを使用します。

  1. ORDImage列のデータを残します。

  2. リリース10.2で行ったように、ORDImageメソッドを使用して、ORDImageファンクションにアクセスします。

  3. 新しいORD_DICOMリレーショナル・パッケージを使用して、新しいDICOM機能にアクセスします。

次に示すコードは、ORDImageオブジェクトを使用してDICOMコンテンツを格納する、このプロセスを示します。

alter table imageTable add (meta sys.xmltype);
declare
    img ordsys.ordimage; thb ordsys.ordimage;
    ctx raw(64) := null; meta sys.xmltype;
begin
  insert into imageTable (id,image, thumb)
      values (1, ordsys.ordimage.init(),
              ordsys.ordimage.init())
         returning image, thumb into img, thb;
  img.importFrom(ctx, 'file', 'DICOMDIR',
                 'example.dcm');
  img.processCopy('fileFormat = jfif
                  maxScale=100 100', thb);
     meta :=
  ORD_DICOM.extractMetadata(img.getContent,
        'ALL');
.
.
.

ここで、太字で強調表示されているコードの最初の2行は、DICOMメタデータをXML文書として格納するための列を追加することによって、ORDImage表(imageTable)を変更する方法を示しています。 強調表示されているコードの最後の行は、ORD_DICOMパッケージ(リレーショナル・インタフェース)のextractMetadata( )メソッドを使用して、埋込みDICOMコンテンツのすべての属性を抽出する方法を示しています。

この移行オプションを使用する利点は、次のとおりです。

このオプションを使用する唯一の不利な点は、DICOMリレーショナル・インタフェースでは新しいDICOM機能が十分に活用されないことです。

E.2 データのコピーおよびDICOMアプリケーションの書換え

ORDDicomオブジェクト型にデータをコピーし、アプリケーションを書き換えてORDDicomのメソッドを使用すると、新しいDICOM機能を十分に活用できます。

次のように、このオプションを使用します。

  1. 次のコード例に示すように、データをORDDicomオブジェクトにコピーします。

    alter table imageTable add (dicomImage
      ORDSYS.ORDDicom, metadata sys.XMLTYPE);
    -- For each row
    update imageTable t set t.dicomImage = new
      orddicom(t.image);
    alter table imageTable drop column image;
    

    ORDImage列(image)を含む既存の表(imageTable)があると想定します。この例では、DICOMコンテンツをORDDicom型として格納するためのDICOM画像列(dicomImage)を追加し、抽出された属性をXML文書として格納するためのメタデータ列(metadata)を追加して、image列からdicomImage列に新しいDICOMコンテンツをコピーすることによって表を更新した後、表からimage列を削除します。

  2. 次のコードに示すように、アプリケーションを変更して、新しいORDDicomのメソッドを使用します。

    declare
        img ordsys.orddicom; thb ordsys.ordimage;
                             meta sys.xmltype;
    begin
        insert into imageTable (id, dicomImage, thumb,
        metadata)
            values (1, ordsys.orddicom('file', 'DICOMDIR', 
                          'example.dcm', 1),
        ordsys.ordimage.init(), null))
               returning dicomimage, thumb into
               img, thb;
        img.processCopy('fileFormat=jfif maxScale=100
      100', thb);
        meta := img.extractMetadata('ALL');
    .
    .
    .
    

    このコードは、新しいORDDicomオブジェクト型を使用するために変更された既存のアプリケーションを示しています。 太字で強調表示されているコードの最初の2行は、ORDDicomオブジェクト(img)とXMLTypeメタデータ(meta)の変数宣言を示しています。 その次の強調表示されているコードの行は、ローカル・ファイル・システムのDICOMファイルを指しているORDDicomオブジェクトを含む表に、行を挿入する方法を示しています。 さらに次の強調表示されているコードの行は、Oracle Database 10g リリース2の構文に似ていますが、DICOM画像からJPEGサムネイル画像を生成する方法を示します。 最後の強調表示されているコードの行は、埋込みDICOMコンテンツのすべての属性をXML文書に抽出する方法を示しています。

    この移行オプションを使用する利点は、新しいORDDicomオブジェクト型の機能を十分に活用できることです。

    このオプションを使用する不利な点は、次のとおりです。

    • 既存のDICOMコンテンツをORDDicomオブジェクト型にコピーする必要がある。

    • Oracle Multimediaにアクセスするアプリケーションの一部を書き換える必要がある。

E.3 移行オプションの選択

アプリケーションを移行するために、新しいDICOMリレーショナル・インタフェースまたは新しいORDDicomオブジェクト型のいずれを使用するかは、現在の状況、および使用している環境に存在するアプリケーションの種類によって決まります。 たとえば、大規模なデータがあり、リソースが制限されている場合に、既存のDICOMコンテンツをORDDicomオブジェクト型にコピーするというオプションは、非常にコストがかかり実用的ではない場合があります。 かわりに、新しいDICOM機能の使用を先送りし、既存のデータへの影響を抑えて、迅速にアプリケーションを移行する方法を選択できます。 一方、ORDImageオブジェクトのデータが小規模な場合は、アプリケーションを書き換えて、既存のデータをORDDicomオブジェクト型にコピーし、DICOMの新しいすべての機能にアクセスできるようにする方法を選択できます。