Проверка ресурсов FHIR на основе профилей в Службах данных Работоспособности Azure
В профилях магазина в статье службы FHIR вы прошли основные сведения о профилях FHIR® и их хранении. Служба FHIR в Службах данных Работоспособности Azure позволяет проверить ресурсы для профилей, чтобы узнать, соответствуют ли ресурсы профилям. В этой статье описывается, как использовать $validate
проверку ресурсов для профилей.
$validate
— это операция в ресурсах быстрого взаимодействия со здравоохранением (FHIR), которая позволяет гарантировать соответствие ресурса FHIR базовым требованиям или указанному профилю. Эта операция гарантирует, что данные в службе FHIR имеют ожидаемые атрибуты и значения. Сведения об операции проверки см . в спецификации HL7 FHIR.
Для каждой спецификации можно указать $validate
режим, например создание и обновление:
create
: служба FHIR проверяет, что содержимое профиля уникально из существующих ресурсов, и что оно приемлемо для создания в качестве нового ресурса.update
: проверяет, является ли профиль обновлением для номинированного существующего ресурса (т. е. изменения не вносятся в неизменяемые поля).
Существуют различные способы проверки ресурса:
- Вариант 1. Проверка существующего ресурса с помощью операции проверки.
- Вариант 2. Проверка нового ресурса с помощью операции проверки.
- Вариант 3. Проверка ресурса CREATE или UPDATE с помощью заголовка.
При успешной проверке существующего или нового ресурса с помощью операции проверки ресурс не сохраняется в службе FHIR. Используйте вариант 3, чтобы успешно сохранить проверенные ресурсы в службе FHIR.
Служба FHIR всегда возвращает OperationOutcome
результаты проверки для операции $validate. После того как ресурс передается в конечную точку $validate, служба FHIR выполняет двухфакторную проверку. Первым шагом является базовая проверка, обеспечивая возможность синтаксического анализа ресурса. Во время синтаксического анализа ресурсов перед переходом к следующему шагу необходимо исправить отдельные ошибки. После успешного анализа ресурса полная проверка выполняется во втором шаге.
Примечание.
Все наборы значений, которые должны использоваться для проверки, должны быть отправлены на сервер FHIR. Сюда входят все наборы значений, которые являются частью спецификации FHIR, а также любые наборы значений, определенные в руководствах по реализации. Поддерживаются только полностью развернутые наборы значений, содержащие полный список всех кодов. Все определения 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
}
}
Чтобы включить строгую проверку, используйте заголовок Prefer: handling с строгим значением. Задав этот заголовок, предупреждение проверки сообщается как ошибка.
Следующие шаги
Из этой статьи вы узнали, как проверить ресурсы на основе профилей.$validate
Дополнительные сведения о других поддерживаемых функциях службы FHIR см. в статье
Примечание.
FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешением HL7 .