Validación de recursos de FHIR en perfiles de Azure Health Data Services

En el artículo sobre los perfiles de almacén del servicio FHIR , ha recorrido los conceptos básicos de los perfiles de FHIR y los almacena. El servicio FHIR de Azure Health Data Services (denominado servicio FHIR) permite validar los recursos con perfiles para ver si los recursos se ajustan a los perfiles. Este artículo le guiará a través de cómo usar $validate para validar recursos con perfiles.

$validate es una operación en Fast Healthcare Interoperability Resources (FHIR®) que permite asegurarse de que un recurso de FHIR se ajusta a los requisitos de recursos base o a un perfil especificado. Esta operación garantiza que los datos del servicio FHIR tengan los atributos y valores esperados. Para obtener información sobre la operación de validación, visite especificación de HL7 FHIR. Por especificación, el modo se puede especificar con $validate, como crear y actualizar:

  • create: Azure API for FHIR comprueba que el contenido del perfil es único de los recursos existentes y que es aceptable crearlo como un nuevo recurso.
  • update: comprueba que el perfil es una actualización del recurso existente designado (que no se realiza ningún cambio en los campos inmutables).

Hay diferentes maneras de validar el recurso:

  • Opción 1: Validar un recurso existente con la operación de validación.
  • Opción 2: Validar un nuevo recurso con la operación de validación.
  • Opción 3: Validar en el recurso CREATE/UPDATE mediante el encabezado .

En la validación correcta de un recurso existente o nuevo con la operación de validación, el recurso no se conserva en el servicio FHIR. Use la opción 3: Validar en el recurso CREATE/UPDATE mediante el encabezado , para conservar el recurso validado correctamente en el servicio FHIR.

El servicio FHIR siempre devolverá como OperationOutcome resultado de validación para $validate operación. El servicio FHIR realiza dos pasos de validación, una vez que un recurso se pasa a $validate punto de conexión: el primer paso es una validación básica para asegurarse de que se puede analizar el recurso. Durante el análisis de recursos, es necesario corregir errores individuales antes de continuar con el paso siguiente. Una vez que el recurso se analiza correctamente, la validación completa se lleva a cabo como segundo paso.

Nota:

Los conjuntos de valores que se van a usar para la validación deben cargarse en el servidor de FHIR. Esto incluye los conjuntos de valores que forman parte de la especificación de FHIR, así como los conjuntos de valores definidos en las guías de implementación. Solo se admiten conjuntos de valores totalmente expandidos que contienen una lista completa de todos los códigos. No se admiten las definiciones de ValueSet que hagan referencia a orígenes externos.

Opción 1: Validación de un recurso existente

Para validar un recurso existente, use $validate en una solicitud GET:

GET http://<your FHIR service base URL>/{resource}/{resource ID}/$validate

Por ejemplo:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Patient/a6e11662-def8-4dde-9ebc-4429e68d130e/$validate

En este ejemplo, va a validar el recurso a6e11662-def8-4dde-9ebc-4429e68d130e Patient existente en el recurso base Patient. Si es válido, obtendrá un OperationOutcome ejemplo de código como el ejemplo de código siguiente:

{
    "resourceType": "OperationOutcome",
    "issue": [
        {
            "severity": "information",
            "code": "informational",
            "diagnostics": "All OK"
        }
    ]
}

Si el recurso no es válido, obtendrá un código de error y un mensaje de error con detalles sobre por qué el recurso no es válido. Un ejemplo OperationOutcome se devuelve con mensajes de error y podría ser similar al ejemplo de código siguiente:

{
    "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"
            ]
        }
    ]
}

En este ejemplo, el recurso no se ajustaba al perfil de paciente proporcionado, que requería un valor de identificador de paciente y sexo.

Si desea especificar un perfil como parámetro, puede especificar la dirección URL canónica con la que se va a validar el perfil, como el ejemplo siguiente para el perfil base HL7 para heartrate:

GET https://myworkspace-myfhirserver.fhir.azurehealthcareapis.com/Observation/12345678/$validate?profile=http://hl7.org/fhir/StructureDefinition/heartrate

Opción 2: Validación de un nuevo recurso

Si desea validar un nuevo recurso que está cargando en el servidor, puede realizar una POST solicitud:

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

Por ejemplo:

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

Esta solicitud validará primero el recurso. Se creará un nuevo recurso que especifique en la solicitud después de la validación. El servidor siempre devolverá un OperationOutcome como resultado.

Opción 3: Validar en el recurso CREATE/UPDATE mediante el encabezado

Puede elegir cuándo desea validar el recurso, como en el recurso CREATE o UPDATE. De forma predeterminada, el servicio FHIR está configurado para no participar en la validación en el recurso Create/Update. Esta funcionalidad permite validar en Create/Update, mediante el x-ms-profile-validation encabezado . Establezca "x-ms-profile-validation" en true para la validación.

Nota:

En el servicio FHIR de código abierto, puede cambiar la configuración del servidor, en CoreFeatures.

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

Para habilitar la validación estricta, use el encabezado "Prefer: handling" con value strict. Al establecer este encabezado, la advertencia de validación se notificará como un error.

Pasos siguientes

En este artículo, ha aprendido a validar los recursos con perfiles mediante $validate. Para obtener información sobre las otras características admitidas del servicio FHIR, consulte

FHIR® es una marca registrada de HL7 y se usa con su permiso.