驗證作業:概觀

重要

Azure API for FHIR 將於 2026 年 9 月 30 日淘汰。 請遵循移轉策略,依該日期轉換至 Azure Health Data Services FHIR 服務。 由於 Azure API for FHIR 已淘汰,因此從 2025 年 4 月 1 日開始,將不允許新的部署。 Azure Health Data Services FHIR 服務 是已演進的 Azure API for FHIR 版本,可讓客戶管理 FHIR、DICOM 和 MedTech 服務,並整合至其他 Azure 服務。

Azure API for FHIR 的存放區設定檔一文中,您已逐步解說 FHIR 配置檔的基本概念,並加以儲存。 本文將引導您瞭解如何針對 $validate 配置文件驗證資源。 根據配置文件驗證資源表示檢查資源是否符合配置檔,包括或實作指南中 Resource.meta.profile 所列的規格。

$validate 是Fast Healthcare互操作性資源 (FHIR) 中的作業,可讓您確保 FHIR® 資源符合基底資源需求或指定的配置檔。 此作業可確保 Azure API for FHIR 中的數據具有預期的屬性和值。 如需驗證作業的相關信息,請造訪 HL7 FHIR 規格。 每個規格都可以使用 $validate來指定Mode,例如建立和更新:

  • create:Azure API for FHIR 會檢查配置檔內容是否與現有資源是唯一的,而且可接受建立為新資源。
  • update:檢查配置檔是否為針對所提名現有資源的更新(不會對不可變的欄位進行任何變更)。

有不同方式可供您驗證資源:

  • 使用驗證作業驗證現有的資源。
  • 使用驗證作業來驗證新的資源。
  • 使用標頭驗證資源 CREATE/ UPDATE。

Azure API for FHIR 一律會傳回 OperationOutcome 作為$validate作業的驗證結果。 Azure API for FHIR 服務會執行兩個步驟驗證,一旦資源傳遞至$validate端點,第一個步驟是基本驗證,以確保可以剖析資源。 在資源剖析期間,必須先修正個別錯誤,再繼續進行下一個步驟。 成功剖析資源之後,會執行完整驗證作為第二個步驟。

注意

任何要用於驗證的值集都必須上傳至 FHIR 伺服器。  這包括屬於 FHIR 規格的任何 Valuesset,以及實作指南中定義的任何 ValueSet。  僅支援包含所有程式代碼完整清單的完整展開值集。  不支持參考外部來源的任何 ValueSet 定義。

驗證現有的資源

若要驗證現有的資源,請在 $validate 要求中使用 GET

GET http://<your Azure API for FHIR base URL>/{resource}/{resource ID}/$validate

例如:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate

在此範例中,您會針對基底病患資源 a6e11662-def8-4dde-9ebc-4429e68d130e 驗證現有的病患資源。 如果有效,您會收到 OperationOutcome 如下列程式代碼範例所示的 :

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "information",
            "code": "informational",
            "diagnostics": "All OK"
        }
    ]
}

如果資源無效,您會收到錯誤碼和錯誤訊息,其中包含資源無效原因的詳細數據。 OperationOutcome範例會以錯誤訊息傳回,可能看起來像下列程式代碼範例:

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.identifier.value' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient.identifier[1]"
            ]
        },
        {
            "severity": "error",
            "code": "invalid",
            "details": {
                "coding": [
                    {
                        "system": "http://hl7.org/fhir/dotnet-api-operation-outcome",
                        "code": "1028"
                    }
                ],
                "text": "Instance count for 'Patient.gender' is 0, which is not within the specified cardinality of 1..1"
            },
            "location": [
                "Patient"
            ]
        }
    ]
}

在此範例中,資源不符合提供的病患配置檔,該配置檔需要病患標識碼值和性別。

如果您想要將設定檔指定為參數,您可以指定要驗證的設定檔標準 URL,例如下列範例中的 HL7 基底設定檔 heartrate

GET https://myAzureAPIforFHIR.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate

驗證新的資源

如果您想要驗證要上傳至 Azure API for FHIR 的新資源,您可以執行 POST 要求:伺服器一律會傳回 OperationOutcome 作為結果。

POST http://<your Azure API for FHIR base URL>/{Resource}/$validate

例如:

POST https://myAzureAPIforFHIR.azurehealthcareapis.com/Patient/$validate

此要求會驗證資源。 在 FHIR 服務中未建立驗證資源時,您必須傳送 POST 要求,而不需$validate來建立資源。

使用標頭驗證資源 CREATE/ UPDATE。

根據預設,Azure API for FHIR 會設定為退出資源 Create/Update上的驗證。 這項功能允許使用 x-ms-profile-validation 標頭在 上Create/Update驗證。 將 『x-ms-profile-validation』 設定為 true 以進行驗證。

注意

在開放原始碼 FHIR 服務中,您可以在 CoreFeatures 底下變更伺服器組態設定。

{
   "FhirServer": {
      "CoreFeatures": {
            "ProfileValidationOnCreate": true,
            "ProfileValidationOnUpdate": false
        }
}

下一步

在本文中,您已瞭解如何使用 來驗證配置檔的資源 $validate。 若要瞭解其他 Azure API for FHIR 支援的功能,請參閱

FHIR® 是 HL7註冊商標,並搭配 HL7 的許可權使用。