En esta página, se explica cómo la API de Cloud Healthcare admite las referencias de recursos de FHIR.
Descripción general
Las referencias de recursos de FHIR son vínculos direccionales que apuntan a un recurso de destino a partir de un recurso de origen. Las referencias de recursos de FHIR se pueden usar para conectar recursos. Por ejemplo, el tipo de recurso de FHIR Observation
tiene un campo de Referencia del tipo subject
, que se puede usar para vincular a un recurso Patient
como sujeto de la observación.
Las referencias de recursos de FHIR también pueden ser circulares. Por ejemplo, el tipo de recurso de FHIR CarePlan
tiene un campo replaces
que puede apuntar a otro CarePlan
.
El elemento más importante en la estructura de referencia de FHIR es la referencia.
Los otros elementos, como display
y identifier
, se conservan como en la API de Cloud Healthcare.
Los formatos compatibles de Reference.reference
en la API de Cloud Healthcare incluyen los siguientes:
- Referencia de recursos locales
- URI que comienza con
urn:uuid
ourn:oid
- URL externa completa
- Referencia de fragmentos
Referencia de recursos locales
Las referencias de recursos se definen como RESOURCE_TYPE/RESOURCE_ID
.
La API de Cloud Healthcare también admite anteponer el nombre completo del almacén de FHIR frente a RESOURCE_TYPE/RESOURCE_ID
. Por ejemplo, FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID
.
Si usas este formato, el nombre del almacén debe coincidir con el almacén de FHIR de la solicitud.
De lo contrario, se rechaza la solicitud debido a referencias no locales.
La opción de configuración de almacenes FhirStore.disableReferentialIntegrity
controla la verificación de integridad referencial para la validación de referencia local, que se habilita de forma predeterminada. Para obtener más información sobre la verificación de integridad referencial, consulta Integridad referencial de FHIR.
Referencias con versiones
La API de Cloud Healthcare admite referencias a una versión específica del recurso de destino. Para establecer un vínculo a una versión específica del recurso de destino, usa el formato que sigue después de RESOURCE_ID/_history/VERSION_ID
] en la referencia local.
Cuando la verificación de integridad referencial está habilitada, el servidor verifica que la versión histórica exista en el almacén de FHIR. El método Resource-purge
quita las versiones históricas sin importar si se hace referencia a ellas.
Referencias condicionales
Como alternativa a especificar explícitamente el ID del recurso de destino,
executeBundle
Acepta una referencia condicional.
para el recurso de destino que se resuelve como el ID del recurso objetivo en
la hora de la solicitud. Por ejemplo, Patient?identifier=abc
.
Si la búsqueda no se resuelve en un recurso de destino o se resuelve en más de uno, el servidor rechaza la solicitud, independientemente de si está habilitada la verificación de integridad referencial.
URI que comienza con urn:uuid
o urn:oid
Cuando usas el método executeBundle
con un paquete de transacciones, las referencias de identificador único universal (UUID) o de identificador de objeto (OID) se pueden usar para resolver referencias en otros recursos que se crean o actualizan en el mismo paquete. Para obtener más información, consulta la guía de administración de paquetes de FHIR.
URL externa completa
Las URL externas completas, como http://www.example.com/abc
, se almacenan sin modificar en el campo de referencia. La API de Cloud Healthcare no resuelve la URL ni intenta verificar su validez.
Cuando la URL externa completa coincide con la URL completa del almacén de FHIR de la solicitud, la referencia se trata como una referencia de recurso local.
Referencia de fragmentos
Un fragmento de referencia apunta a un
recurso contenido
intercalada en un recurso. Por ejemplo, si un registro de observación menciona a un profesional general, pero no hay un directorio de profesionales controlado, no se puede crear un recurso de profesional completo. El profesional general es un recurso contenido en el registro de observación. Los campos de referencia de un recurso pueden apuntar a los recursos intercalados con la forma #[INLINE_RESOURCE_ID]
.
En la siguiente muestra de FHIR R4, p1
y p2
son ID de recursos intercalados a los que se hace referencia como #p1
y #p2
:
{
"resourceType": "Observation",
"contained": [
{
"resourceType":"Patient",
"id": "p1",
"generalPractitioner": {"reference": "#p2"}
},
{
"resourceType":"Practitioner",
"id": "p2"
}
],
"status": "final",
"subject": {"reference": "#p1"},
"performer": [{"reference": "#p2"}]
}
El [INLINE_RESOURCE_ID]
debe existir como un recurso contenido dentro del recurso; de lo contrario, el servidor rechaza la solicitud. El contenedor contenido solo puede hacer referencia a su contenedor o a otros recursos contenidos dentro del mismo contenedor.