針對 Azure 健康資料服務中的設定檔驗證 FHIR 資源
在 FHIR 服務文章的存放區配置檔中,您已逐步解說 FHIR® 配置檔的基本概念,並加以儲存。 Azure Health Data Services 中的 FHIR 服務允許對配置檔驗證資源,以查看資源是否符合配置檔。 本文將引導您瞭解如何針對 $validate
配置文件驗證資源。
$validate
是Fast Healthcare互操作性資源 (FHIR) 中的作業,可讓您確保 FHIR 資源符合基底資源需求或指定的配置檔。 這項作業可確保 FHIR 服務中的數據具有預期的屬性和值。 如需驗證作業的相關信息,請流覽 HL7 FHIR 規格。
每個規格都可以使用 $validate
來指定Mode,例如建立和更新:
create
:FHIR 服務會檢查配置檔內容是否與現有資源是唯一的,而且可接受建立為新資源。update
:檢查配置檔是否為已提名現有資源的更新(也就是說,不會對不可變的字段進行任何變更)。
有不同方式可供您驗證資源:
- 選項 1:使用驗證作業驗證現有的資源。
- 選項 2:使用驗證作業驗證新的資源。
- 選項 3:使用標頭驗證資源 CREATE 或 UPDATE。
使用驗證作業成功驗證現有或新的資源時,資源不會保存至 FHIR 服務。 使用選項 3 將已驗證的資源成功保存至 FHIR 服務。
FHIR 服務一律會 OperationOutcome
傳回 作為$validate作業的驗證結果。 一旦資源傳遞至$validate端點,FHIR 服務會執行兩個步驟驗證。 第一個步驟是基本驗證,以確保可以剖析資源。 在資源剖析期間,必須先修正個別錯誤,才能繼續進行下一個步驟。 成功剖析資源之後,會執行完整驗證作為第二個步驟。
注意
任何要用於驗證的值集都必須上傳至 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
您可以選擇何時想要驗證資源,例如在資源 CREATE
或 UPDATE
上。 根據預設,FHIR 服務會設定為退出資源 Create/Update
上的驗證。 這項功能允許使用標頭進行Create/Update
x-ms-profile-validation
驗證。 設定 x-ms-profile-validation
為 true 以進行驗證。
注意
在開放原始碼 FHIR 服務中,您可以在 CoreFeatures 底下變更伺服器組態設定。
{
"FhirServer": {
"CoreFeatures": {
"ProfileValidationOnCreate": true,
"ProfileValidationOnUpdate": false
}
}
若要啟用嚴格的驗證,請使用具有 strict 值的「偏好:處理」標頭。 藉由設定此標頭,驗證警告會回報為錯誤。
下一步
在本文中,您已瞭解如何使用 來驗證配置檔的資源 $validate
。 若要瞭解其他 FHIR 服務支援的功能,請參閱
注意
FHIR® 是 HL7 的註冊商標,在 HL7 的許可下使用。