共用方式為


針對 Azure 健康資料服務中的設定檔驗證 FHIR 資源

在 FHIR 服務文章的存放區配置檔中,您已逐步解說 FHIR 配置檔的基本概念,並加以儲存。 Azure Health Data Services 中的 FHIR 服務(因此稱為 FHIR 服務)允許對配置文件驗證資源,以查看資源是否符合配置檔。 本文將引導您瞭解如何針對 $validate 配置文件驗證資源。

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

  • create:FHIR 服務會檢查配置檔內容是否與現有資源是唯一的,而且可接受建立為新資源。

  • update:檢查配置檔是否為針對所提名現有資源的更新(不會對不可變的欄位進行任何變更)。

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

  • 選項 1:使用驗證作業驗證現有的資源。
  • 選項 2:使用驗證作業驗證新資源。
  • 選項 3:使用標頭驗證資源 CREATE/ UPDATE。

在驗證作業成功驗證現有/新資源時,資源不會保存至 FHIR 服務。 使用選項 3:使用標頭在資源 CREATE/ UPDATE 上驗證,將成功驗證的資源保存到 FHIR 服務。

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

注意

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

選項 1:驗證現有的資源

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

GET http://<your FHIR service 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://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate

選項 2:驗證新的資源

如果您要驗證要上傳至伺服器的新資源,您可以執行 POST 要求:

POST http://<your FHIR service base URL>/{Resource}/$validate

例如:

POST https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/$validate

此要求會先驗證資源。 您在要求中指定的新資源將會在驗證之後建立。 伺服器一律會傳回 OperationOutcome 做為結果的 。

選項 3:使用標頭驗證資源 CREATE/UPDATE

您可以選擇何時想要驗證資源,例如在資源 CREATEUPDATE上。 根據預設,FHIR 服務會設定為退出資源 Create/Update上的驗證。 這項功能允許使用 x-ms-profile-validation 標頭在 上Create/Update驗證。 將 『x-ms-profile-validation』 設定為 true 以進行驗證。

注意

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

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

若要啟用嚴格的驗證,請使用具有 strict 值的 「偏好:處理」標頭。 藉由設定此標頭,驗證警告將會回報為錯誤。

下一步

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

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