Проверка ресурсов FHIR на соответствие профилям в службах azure Health Data Services

$validate — это операция в ресурсах быстрого взаимодействия в сфере здравоохранения (FHIR®), которая позволяет убедиться, что ресурс FHIR соответствует базовым требованиям к ресурсам или указанному профилю. Это ценная операция, гарантирующая, что данные на сервере FHIR имеют ожидаемые атрибуты и значения.

В статье о профилях магазина в службе FHIR описаны основные сведения о профилях FHIR и их хранении. Служба FHIR в службах azure Health Data Services (которая называется службой FHIR) позволяет выполнять проверку ресурсов по профилям, чтобы проверить, соответствуют ли ресурсы профилям. В этой статье описано, как использовать $validate для проверки ресурсов по профилям. Дополнительные сведения о профилях FHIR за пределами этой статьи см. на HL7.org.

Проверка ресурсов по профилям

Ресурсы FHIR могут выражать свое соответствие определенным профилям. Это позволяет службе FHIR проверять заданные ресурсы по профилям. Проверка ресурса по профилю означает проверку соответствия ресурса профилю, включая спецификации, перечисленные в Resource.meta.profile или в руководстве по реализации. Проверить ресурс можно двумя способами.

  • Операцию можно использовать для $validate ресурса, который уже находится в службе FHIR.
  • Вы можете включить при $validate создании или обновлении ресурса.

В обоих случаях вы можете решить с помощью конфигурации службы FHIR, что делать, если ресурс не соответствует требуемому профилю.

Использование $validate

Операция $validate проверяет, является ли предоставленный профиль допустимым и соответствует ли ресурс указанному профилю. Как упоминалось в спецификациях HL7 FHIR, можно также указать режим для $validate, например создание и обновление:

  • create: сервер проверяет уникальность содержимого профиля из существующих ресурсов и допустимость создания в качестве нового ресурса.
  • update: проверяет, является ли профиль обновлением для назначенного существующего ресурса (то есть изменения не вносятся в неизменяемые поля).

Сервер всегда будет возвращать в OperationOutcome качестве результатов проверки.

Проверка существующего ресурса

Чтобы проверить существующий ресурс, используйте $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 Patient по базовому ресурсу 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

Проверка нового ресурса

Если вы хотите проверить новый ресурс, отправляемый на сервер, можно выполнить POST запрос:

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

Например:

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

Этот запрос сначала проверит ресурс. Новый ресурс, указанный в запросе, будет создан после проверки. Сервер всегда будет возвращать в OperationOutcome качестве результата .

Проверка при создании ресурса или обновлении ресурса

Вы можете выбрать, когда вы хотите проверить ресурс, например для ресурса CREATE или UPDATE. По умолчанию служба FHIR настроена на отказ от проверки ресурса Create/Update. Для проверки в Create/Updateможно использовать x-ms-profile-validation заголовок true: x-ms-profile-validation: true.

Примечание

В службе FHIR с открытым кодом можно изменить параметр конфигурации сервера в разделе CoreFeatures.

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

Дальнейшие действия

Из этой статьи вы узнали, как проверять ресурсы на соответствие профилям с помощью $validate. Дополнительные сведения о других поддерживаемых функциях службы FHIR см. в статье.

FHIR® является зарегистрированным товарным знаком HL7 и используется с разрешения HL7.