Поделиться через


Проверка ресурсов FHIR на основе профилей в Службах данных Работоспособности Azure

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

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

  • create: служба 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 "Пациент" для базового ресурса "Пациент". Если это допустимо, вы получите 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.

Примечание.

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

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

Чтобы включить строгую проверку, используйте заголовок "Предпочитать: обработка" со значением strict. Задав этот заголовок, предупреждение о проверке будет сообщено как об ошибке.

Следующие шаги

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

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