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

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

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

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

Существует несколько способов проверки ресурса:

  • Вариант 1. Проверка существующего ресурса с помощью операции проверки.
  • Вариант 2. Проверка нового ресурса с помощью операции проверки.
  • Вариант 3. Проверка ресурса CREATE/UPDATE с помощью заголовка.

При успешной проверке существующего или нового ресурса с помощью операции проверки ресурс не сохраняется в службе FHIR. Используйте вариант 3. Проверка ресурса CREATE/UPDATE с помощью заголовка, чтобы сохранить успешно проверенный ресурс в службе FHIR.

Служба FHIR всегда возвращает в OperationOutcome качестве результатов проверки для операции $validate. Служба FHIR выполняет двухэтапную проверку после того, как ресурс передается в конечную точку $validate. Первый шаг — это базовая проверка, чтобы убедиться, что ресурс можно проанализировать. Во время анализа ресурсов необходимо исправить отдельные ошибки, прежде чем переходить к следующему шагу. После успешного анализа ресурса в качестве второго шага выполняется полная проверка.

Примечание

Все наборы значений, используемые для проверки, должны быть отправлены на сервер 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 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

Вариант 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 со значением strict. Если задать этот заголовок, предупреждение о проверке будет сообщаться как об ошибке.

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

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

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