你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

根据 Azure Health Data Services 中的配置文件验证 FHIR 资源

FHIR 服务中的存储配置文件 一文中,你已演练 FHIR 配置文件的基础知识并存储它们。 Azure Health Data Services 中的 FHIR 服务 (因此称为 FHIR 服务) 允许根据配置文件验证资源,以查看资源是否符合配置文件。 本文将指导你了解如何使用 $validate 根据配置文件验证资源。

$validate 是 Fast Healthcare Interoperability Resources (FHIR®) 中的一项操作,可用于确保 FHIR 资源符合基本资源要求或指定的配置文件。 此操作可确保 FHIR 服务中的数据具有预期的属性和值。 有关验证操作的信息,请访问 HL7 FHIR 规范。 根据规范,可以使用 指定 $validateMode,例如创建和更新:

  • create:Azure API for FHIR 检查配置文件内容是否在现有资源中是唯一的,以及创建为新资源是否可接受。
  • update:检查配置文件是否是针对已指定现有资源 (不更改) 不可变字段的更新。

提供了不同的方法来验证资源:

  • 选项 1:使用验证操作验证现有资源。
  • 选项 2:使用验证操作验证新资源。
  • 选项 3:使用标头在资源 CREATE/UPDATE 上验证。

使用验证操作成功验证现有/新资源后,资源不会持久保存到 FHIR 服务中。 使用选项 3:使用标头在资源 CREATE/UPDATE 上验证,将成功验证的资源保存到 FHIR 服务。

FHIR 服务将始终返回 OperationOutcome 作为$validate操作的验证结果。 FHIR 服务在将资源传递到$validate终结点后执行两个步骤验证 - 第一步是基本验证,以确保资源可以分析。 在资源分析期间,需要在继续下一步之前修复各个错误。 成功分析资源后,将执行完全验证作为第二步。

注意

任何要用于验证的值集都必须上传到 FHIR 服务器。 这包括属于 FHIR 规范的任何值集,以及实现指南中定义的任何 ValueSet。 仅支持包含所有代码的完整列表的完全展开的值集。 不支持引用外部源的任何 ValueSet 定义。

选项 1:验证现有资源

若要验证现有资源,请在 GET 请求中使用 $validate

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

在此示例中,你将针对基本 Patient 资源 a6e11662-def8-4dde-9ebc-4429e68d130e 验证现有的 Patient 资源。 如果有效,你将获得 , 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 的“Prefer: handling”标头。 通过设置此标头,验证警告将报告为错误。

后续步骤

本文介绍了如何使用 根据配置文件 $validate验证资源。 若要了解 FHIR 服务支持的其他功能,请参阅

FHIR® 是 HL7 的注册商标,经 HL7 许可使用。