この章では、DICOMデータ・モデル・リポジトリ内の構成ドキュメントの管理方法について、コード例を使用して説明します。 ORD_DICOM_ADMINパッケージがPL/SQLのみで提供されているため、コード例はパッケージと対応するようにPL/SQLで記述されています。
Oracle Multimedia DICOMには、データ・モデル・リポジトリに関連する多くの管理操作を実行するための機能が用意されています。 たとえば、管理者は、特定の組織にカスタム構成ドキュメントを追加するかどうかを決定する前に、DICOMデータ・モデル・リポジトリにあるOracleで定義された構成ドキュメントを確認することができます。 これらの構成ドキュメントに関する属性およびその他の詳細情報を管理者が取得するには、情報ビューを使用するか、またはデータ・モデル・ユーティリティのファンクションをコールします。 リポジトリに対して構成ドキュメントを管理者が挿入、更新、エクスポートまたは削除するには、ORD_DICOM_ADMINパッケージ内のプロシージャおよびファンクションを使用します。 DICOMデータ・モデル・リポジトリの管理者には、ORDADMINロールが割り当てられます。
この章は、次の項で構成されています。
ORD_DICOM_ADMINパッケージの詳細なリファレンス情報は、第9章を参照してください。
Oracle Multimedia DICOMおよびOracle Multimediaに関するその他の例、説明および情報は、次に示すOracle Technology NetworkのWebサイトで「Oracle Multimedia」の「Software」セクションを参照してください。
http://www.oracle.com/technology/products/multimedia/
次のサンプル・セッションは、マッピング・ドキュメントと制約ドキュメントをリポジトリに挿入する手順を示しています。 このサンプルでは、前提となる次のタスクが完了していることを想定しています。
ディレクトリ・オブジェクト(DICOMDIR)が作成済で、読取りアクセス権が管理者に付与されている。
マッピング・ドキュメントに関連付けられたメタデータ・スキーマが、グローバルXMLスキーマとしてOracle XML DBに登録されている。
例10-1に、スキーマをグローバル・スキーマとしてOracle XML DBに登録する方法の例を示します。
例10-1 グローバルXMLスキーマの登録
GRANT XDBADMIN TO QUINE;
Grant succeeded.
CONNECT quine
Enter password: password
Connected.
BEGIN
DBMS_XMLSCHEMA.registerSchema(
SCHEMAURL => 'http://xmlns.example.com/example.xsd',
SCHEMADOC => bfilename('XMLDIR','example.xsd'),
LOCAL => FALSE,
GENTYPES => TRUE,
GENTABLES => FALSE,
CSID => nls_charset_id('AL32UTF8'));
END;
/
XMLスキーマの登録の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
次の手順を実行します。
手順1 データ・モデルの編集
データ・モデルを編集する準備をし、他の管理者が同時に変更できないように、データ・モデルをロックします。次に例を示します。
exec ord_dicom_admin.editDataModel();
データ・モデルは、変更をパブリッシュするか、ロールバック操作を実行するか、またはセッションを終了するまで、ロックされたままです。
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
ドキュメントのリストを確認します。
手順2 新しいドキュメントの挿入
まず、次のコマンドを実行して、サンプル・マッピング・ドキュメント(sample_map.xml)を挿入します。
exec ord_dicom_admin.insertDocument('sample_map.xml', 'MAPPING', xmltype(bfilename('DICOMDIR', 'sample_map.xml'), nls_charset_id('AL32UTF8')));
サンプル・マッピング・ドキュメント(sample_map.xml)は、例2-1を参照してください。
その後、次のコマンドを実行して、サンプル制約ドキュメント(sample_ct.xml)を挿入します。
exec ord_dicom_admin.insertDocument('sample_ct.xml', 'CONSTRAINT', xmltype(bfilename('DICOMDIR', 'sample_ct.xml'), nls_charset_id('AL32UTF8')));
サンプル制約ドキュメント(sample_ct.xml)は、例2-3を参照してください。
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
挿入したドキュメントが、ドキュメントのリストに表示されることを確認します。
別の方法としては、次のコマンドを入力して、orddcm_document_types viewビューを問い合せることができます。
select * from orddcm_document_types;
この時点で、必要に応じて管理に関連するテストを実行できます。 また、rollbackDataModel( )プロシージャをコールして、変更をパブリッシュせずに操作を終了できます。 終了しない場合は、次の手順を続行します。
手順3 変更のパブリッシュ
次のコマンドを実行し、変更をパブリッシュしてデータ・モデルのロックを解除します。
exec ord_dicom_admin.publishDataModel();
データ・モデルには、挿入した構成ドキュメントが含まれます。
次のサンプル・セッションは、リポジトリ内のマッピング・ドキュメントを更新する手順を示しています。 このサンプルでは、前提となる次のタスクが完了していることを想定しています。
ディレクトリ・オブジェクト(DICOMDIR)が作成済で、読取りおよび書込みアクセス権が管理者に付与されている。
マッピング・ドキュメントに関連付けられた参照先のメタデータ・スキーマが、グローバルXMLスキーマとしてOracle XML DBに登録されている。 (例10-1を参照してください。)
XMLスキーマの登録の詳細は、『Oracle XML DB開発者ガイド』を参照してください。
次の手順を実行します。
手順1 データ・モデルの編集
10.1項の手順と同様に、データ・モデルを編集する準備をし、他の管理者が同時に変更できないように、データ・モデルをロックします。次に例を示します。
exec ord_dicom_admin.editDataModel();
データ・モデルは、変更をパブリッシュするか、ロールバック操作を実行するか、またはセッションを終了するまで、ロックされたままです。
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
ドキュメントのリストを確認します。
手順2 既存のドキュメントのエクスポート
サンプル・マッピング・ドキュメント(sample_map.xml)を編集するために、指定のファイル(sample_map_export.xml)にリポジトリからエクスポートします。次に例を示します。
exec ord_dicom_admin.exportDocument('sample_map.xml', 'DICOMDIR', 'sample_map_export.xml');
ファイルは、XMLエディタで編集できます。
手順3 既存のドキュメントの削除
次のコマンドを実行して、既存のマッピング・ドキュメント(sample_map.xml)をリポジトリから削除します。
exec ord_dicom_admin.deleteDocument('sample_map.xml');
リポジトリには、サンプル・マッピング・ドキュメントは含まれなくなります。
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
削除したドキュメントが、ドキュメントのリストに表示されないことを確認します。
手順4 エクスポートしたドキュメントの編集
手順2でエクスポートしたファイルを、XMLエディタで編集します。その後、変更を保存し、ファイルをリポジトリに挿入する前に、ファイルのアクセス権をチェックします。
手順5 編集済ドキュメントの挿入
次のコマンドを実行して、編集済のドキュメント(sample_map_edited.xml)をリポジトリに挿入します。
exec ord_dicom_admin.insertDocument('sample_map_edited.xml', 'MAPPING', xmltype(bfilename('DICOMDIR', 'sample_map_edited.xml'), nls_charset_id('AL32UTF8')));
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
更新したドキュメントが、ドキュメントのリストに表示されることを確認します。
この時点で、変更内容のテストができます。テストするには、編集済のマッピング・ドキュメントに対してextractMetadata( )メソッドを実行して、埋込みDICOMコンテンツからメタデータをXMLコードとして取得し、そのデータを検索または表示用のデータベース表に格納します。 また、rollbackDataModel( )プロシージャをコールして、変更をパブリッシュせずに操作を終了できます。 終了しない場合は、次の手順を続行します。
手順6 変更のパブリッシュ
10.1項の手順と同様に、次のコマンドを実行し、変更をパブリッシュしてデータ・モデルのロックを解除します。
exec ord_dicom_admin.publishDataModel();
データ・モデルには、更新済の構成ドキュメントが含まれます。
次のサンプル・セッションは、リポジトリから制約ドキュメントを削除する手順を示しています。 このサンプルでは、前提となる次のタスクが完了していることを想定しています。
ディレクトリ・オブジェクト(DICOMDIR)が作成済で、書込みアクセス権が管理者に付与されている。
次の手順を実行します。
手順1 データ・モデルの編集
10.1項の手順と同様に、データ・モデルを編集する準備をし、他の管理者が同時に変更できないように、データ・モデルをロックします。次に例を示します。
exec ord_dicom_admin.editDataModel();
データ・モデルは、変更をパブリッシュするか、ロールバック操作を実行するか、またはセッションを終了するまで、ロックされたままです。
手順2 既存のドキュメントのエクスポート(推奨オプション)
サンプル制約ドキュメント(sample_ct.xml)を編集するために、指定のファイル(sample_ct_export.xml)にリポジトリからエクスポートします。次に例を示します。
exec ord_dicom_admin.exportDocument('sample_ct.xml', 'DICOMDIR', 'sample_ct_export.xml');
次のコマンドを入力して、orddcm_document_refsビューを問い合せることもできます。このビューには、リポジトリ内の他のドキュメントから参照されているドキュメントのリストが表示されます。
select * from orddcm_document_refs;
ドキュメントのリストを表示して、削除しようとしている制約ドキュメントが参照されているかをチェックします。
手順3 ドキュメントの削除
次のコマンドを実行して、サンプル制約ドキュメント(sample_ct.xml)を削除します。
exec ord_dicom_admin.deleteDocument('sample_ct.xml');
リポジトリには、サンプル制約ドキュメントは含まれなくなります。
次のコマンドを入力して、orddcm_documentsビューを問い合せることもできます。
select * from orddcm_documents;
削除したドキュメントが、ドキュメントのリストに表示されないことを確認します。
この時点で、rollbackDataModel( )プロシージャをコールして、変更をパブリッシュせずに操作を終了できます。 終了しない場合は、次の手順を続行します。
手順4 変更のパブリッシュ
次のコマンドを実行し、変更をパブリッシュしてデータ・モデルのロックを解除します。
exec ord_dicom_admin.publishDataModel();
データ・モデルには、削除した構成ドキュメントは含まれません。