DICOM 檔案結構正確(可解析)不代表臨床可用。缺少必要標籤(如 Patient ID、Study Date)、標籤值違反語義約束(如 Modality=CT 但無 Slice Thickness)、私有標籤衝突,皆會導致下游 PACS、AI 模型、影像交換失敗。Oracle Multimedia 內建 Conformance Validation(一致性驗證) 機制,支援依據約束定義文檔(XML)自動檢查,本文示範完整驗證流程。
MANDATORY(必須存在)、CONDITIONAL(條件存在)、OPTIONAL(可選)、VALUE_RANGE(值域)、CODE_SEQUENCE(代碼表)。-- 1. 載入資料模型(Session 級,建議連接池初始化執行)
EXEC ORDSYS.ORD_DICOM.setDataModel();
-- 2. 執行驗證,回傳 1=符合, 0=不符合
SELECT id,
t.dicom.isConformanceValid('OracleOrdObject') AS conformant
FROM medical_image_table t;
'OracleOrdObject' 為預設約束規則集名稱,對應 ordcmct.xml 中的根規則集。
驗證失敗時,詳細訊息寫入系統視圖 ORDDCM_CONFORMANCE_VLD_MSGS:
DESC ORDDCM_CONFORMANCE_VLD_MSGS;
-- 欄位:SOP_INSTANCE_UID, RULE_NAME, MESSAGE, SEVERITY, LOCATION
SELECT * FROM ORDDCM_CONFORMANCE_VLD_MSGS;
SOP_INSTANCE_UID RULE_NAME MESSAGE SEVERITY
1.2.3.4.5.6.7.8.9 PatientModule Missing mandatory tag (0010,0020) Patient ID ERROR
1.2.3.4.5.6.7.8.9 CTImageModule Value out of range: Slice Thickness WARNING
DECLARE
v_conformant NUMBER;
v_count NUMBER := 0;
v_fail NUMBER := 0;
BEGIN
ORDSYS.ORD_DICOM.setDataModel();
FOR rec IN (SELECT id, dicom FROM medical_image_table) LOOP
v_count := v_count + 1;
v_conformant := rec.dicom.isConformanceValid('OracleOrdObject');
IF v_conformant = 0 THEN
v_fail := v_fail + 1;
DBMS_OUTPUT.PUT_LINE('ID=' || rec.id || ' FAILED');
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE('Total: ' || v_count || ', Failed: ' || v_fail);
END;
/
-- 查看所有失敗詳情
SELECT * FROM ORDDCM_CONFORMANCE_VLD_MSGS ORDER BY SOP_INSTANCE_UID, SEVERITY DESC;
HospitalPolicy
MANDATORY
00080080
HOSP_[0-9]{4}
Institution Name must follow HOSP_XXXX format
ERROR
-- 1. 以 SYS 權限載入自訂約束文檔
EXEC ORDSYS.ORD_DICOM.setDataModel(); -- 重新載入會自動掃描 $ORACLE_HOME/ord/dicom/constraint 下的 XML
-- 2. 驗證時指定規則集名稱
SELECT t.dicom.isConformanceValid('HospitalPolicy') FROM medical_image_table t;
| 策略 | 適用場景 | 實作方式 |
|---|---|---|
| 阻擋匯入 | PACS 歸檔入口、AI 訓練資料入庫 | 匯入 PL/SQL 中呼叫 isConformanceValid,失敗則 RAISE_APPLICATION_ERROR |
| 標記隔離 | 歷史資料遷移、外部影像接收 | 新增 conformance_status VARCHAR2(20) 欄,定期報表追蹤 |
| 自動修正 | 可預測的缺失(如自動填入 InstitutionName) | 驗證失敗後觸發修正程序,再重新驗證 |
| 審計追蹤 | 合規稽核、品質報告 | 將 ORDDCM_CONFORMANCE_VLD_MSGS 定期歸檔至審計表 |
PARALLEL 分區表 + DBMS_PARALLEL_EXECUTE 分塊處理。Oracle Multimedia 的 isConformanceValid 提供資料庫內建、標準化、可擴充的 DICOM 品質閘門。將約束規則從應用程式碼下沉至資料庫層,不僅確保所有入庫路徑(SQL*Loader、PL/SQL、外部表、GoldenGate)一致受檢,更讓 DBA 能以 SQL 直接稽核全庫合規狀態,是構建可信醫學影像資料資產的關鍵基礎設施。