你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
验证操作:概述
重要
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 和医疗技术服务,并集成到其他 Azure 服务。
在 Azure API for FHIR 中的存储配置文件文章中,介绍了 FHIR 配置文件的基础知识并存储它们。 本文将指导你了解如何对 $validate
配置文件验证资源。 根据配置文件验证资源意味着检查资源是否符合配置文件,包括实施指南中列出的 Resource.meta.profile
规范。
$validate
是 Fast Healthcare 互操作性资源(FHIR)中的一项操作,可让你确保 FHIR® 资源符合基本资源要求或指定的配置文件。 此操作可确保 Azure API for FHIR 中的数据具有预期的特性和值。 有关验证操作的信息,请访问 HL7 FHIR 规范。 根据规范,可以使用模式指定 $validate
,例如创建和更新:
create
:Azure API for FHIR 检查配置文件内容是否与现有资源是唯一的,并且可以将其创建为新资源。update
:检查配置文件是否是针对指定现有资源的更新(未对不可变字段进行更改)。
提供了不同的方法来验证资源:
- 使用验证操作验证现有资源。
- 使用验证操作验证新资源。
- 使用标头验证资源 CREATE/UPDATE。
Azure API for FHIR 将始终作为$validate操作的验证结果返回 OperationOutcome
。 Azure API for FHIR 服务执行两个步骤验证,一旦资源传递到$validate终结点-第一步是基本验证,以确保可以分析资源。 在资源分析期间,需要修复各个错误,然后再继续下一步。 成功分析资源后,将执行完整验证作为第二步。
注意
要用于验证的任何值集都必须上传到 FHIR 服务器。 这包括属于 FHIR 规范的任何值集,以及实现指南中定义的任何 ValueSet。 仅支持包含所有代码的完整列表的完全展开值集。 不支持引用外部源的任何 ValueSet 定义。
验证现有资源
若要验证现有资源,请在 GET
请求中使用 $validate
:
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 服务中未创建验证资源时,无需$validate即可发送 POST 请求来创建资源。
使用标头验证资源 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 许可使用。