En esta página se explica cómo admite la API Cloud Healthcare las referencias de recursos FHIR.
Información general
Las referencias de recursos FHIR son enlaces direccionales de un recurso de origen a un recurso de destino. Las referencias de recursos FHIR se pueden usar para conectar recursos. Por ejemplo, el tipo de recurso FHIR Observation
tiene un campo subject
de tipo Reference, que se puede usar para vincular a un recurso Patient
como sujeto de la observación.
Las referencias de recursos FHIR también pueden ser circulares. Por ejemplo, el tipo de recurso FHIR CarePlan
tiene un campo replaces
que puede apuntar a otro CarePlan
.
El elemento más importante de la estructura de referencia de FHIR es reference.
Los demás elementos, como display
y identifier
, se conservan tal cual en la API Cloud Healthcare.
La API Cloud Healthcare admite los siguientes formatos de Reference.reference
:
- Referencia de recursos locales
- URI que empieza por
urn:uuid
ourn:oid
- URL externa completa
- Referencia de fragmento
Referencia de recursos locales
Las referencias de recursos se definen como
RESOURCE_TYPE/RESOURCE_ID
.
La API Cloud Healthcare también admite que se añada el nombre completo del almacén FHIR delante de RESOURCE_TYPE/RESOURCE_ID
. Por ejemplo, FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID
.
Si usa este formato, el nombre de la tienda debe coincidir con la tienda FHIR de la solicitud.
De lo contrario, la solicitud se rechaza debido a referencias no locales.
La opción de configuración de la tienda
FhirStore.disableReferentialIntegrity
controla la comprobación de la integridad referencial para la validación de referencias locales, que
está habilitada de forma predeterminada. Para obtener más información sobre la comprobación de la integridad referencial, consulta Integridad referencial de FHIR.
Referencias versionadas
La API Cloud Healthcare admite referencias a una versión específica del recurso de destino. Para crear un enlace a una versión específica del recurso de destino, utilice el formato
después de RESOURCE_ID/_history/VERSION_ID
] en
la referencia local.
Cuando la comprobación de la integridad referencial está habilitada, el servidor verifica que la versión histórica existe en el almacén FHIR. El método
Resource-purge
elimina las versiones históricas independientemente de si se hace referencia a ellas.
Referencias condicionales
Como alternativa a la especificación explícita del ID del recurso de destino, executeBundle
acepta una consulta de búsqueda de referencia condicional
del recurso de destino que se resuelve en el ID del recurso de destino en el momento de la solicitud. Por ejemplo, Patient?identifier=abc
.
Si la consulta de búsqueda no se resuelve en un recurso de destino o se resuelve en más de un recurso de destino, el servidor rechaza la solicitud independientemente de si la comprobación de la integridad referencial está habilitada.
URI que empieza por urn:uuid
o urn:oid
Cuando se usa el método executeBundle
con un paquete de transacciones, se pueden usar referencias de identificador único universal (UUID) o de identificador de objeto(OID) para resolver referencias a otros recursos que se estén creando o actualizando en el mismo paquete. Para obtener más información, consulta la guía sobre cómo gestionar paquetes FHIR.
URL externa completa
Las URLs externas completas, como http://www.example.com/abc
, se almacenan sin modificar en el campo de referencia. La API Cloud Healthcare no resuelve la URL ni intenta verificar su validez.
Si la URL externa completa coincide con la URL completa del almacén FHIR de la solicitud, la referencia se trata como una referencia de recurso local.
Referencia de fragmento
Una referencia a un fragmento apunta a un recurso contenido insertado en un recurso. Por ejemplo, si un registro de Observation menciona a un médico general, pero no hay ningún directorio de profesionales sanitarios controlados, no se puede crear un recurso Practitioner completo. El médico de cabecera es un recurso contenido en el registro Observation. Los campos de referencia de un recurso pueden apuntar a los recursos insertados mediante el formato #[INLINE_RESOURCE_ID]
.
En el siguiente ejemplo de FHIR R4, p1
y p2
son IDs de recursos insertados 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 recurso contenido en el recurso. De lo contrario, el servidor rechazará la solicitud. Solo se puede hacer referencia al recurso contenido desde su contenedor u otros recursos contenidos en el mismo contenedor.