Validación de recursos de FHIR en perfiles de Azure Health Data Services
En el artículo Perfiles de almacén del servicio FHIR®, ha seguido los conceptos básicos de los perfiles de FHIR y los almacena. El servicio FHIR de Azure Health Data Services permite validar los recursos con perfiles para ver si los recursos se ajustan a los perfiles. En este artículo se explica cómo usar $validate
para validar los recursos en 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 de un servicio FHIR tengan los atributos y valores esperados. Para obtener información sobre la operación de validación, visite Especificación de FHIR de HL7.
Por especificación, el modo se puede especificar con $validate
, como crear y actualizar:
create
: el servicio 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 (es decir, no se realizan cambios 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 o UPDATE mediante un 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 para conservar correctamente los recursos validados en el servicio FHIR.
El servicio FHIR siempre devuelve como OperationOutcome
resultado de validación una operación de $validate. Una vez que un recurso se pasa a $validate punto de conexión, el servicio FHIR realiza dos pasos de validació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 un recurso se analiza correctamente, la validación completa se realiza como segundo paso.
Nota:
Los conjuntos de valores que se van a usar para la validación deben cargarse en el servidor 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 los 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 GET
solicitud.
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
Paciente existente en el recurso De paciente base. Si es válido, obtendrá un OperationOutcome
ejemplo 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 un género.
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 de 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 va a cargar 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 valida el recurso. Se creará un nuevo recurso que especifique en la solicitud después de la validación.
El servidor siempre devuelve un OperationOutcome
como resultado.
Opción 3: Validar en el recurso CREATE o UPDATE mediante un 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 la validación mediante Create/Update
el x-ms-profile-validation
encabezado . Establézcalo en x-ms-profile-validation
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 un encabezado "Prefer: handling" con value strict. Al establecer este encabezado, se notifica una advertencia de validación 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 compatibles con el servicio FHIR, consulte
Nota:
FHIR® es una marca registrada de HL7 y se usa con su permiso.