Referencias de recursos FHIR

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

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.