Riferimenti tra risorse FHIR

Questa pagina spiega in che modo l'API Cloud Healthcare supporta i riferimenti alle risorse FHIR.

Panoramica

I riferimenti alle risorse FHIR sono collegamenti direzionali da una risorsa di origine a una risorsa di destinazione. I riferimenti alle risorse FHIR possono essere utilizzati per connettere le risorse. Ad esempio, il tipo di risorsa FHIR Observation ha un campo subject di tipo Riferimento, che può essere utilizzato per collegarsi a una risorsa Patient come oggetto dell'osservazione.

I riferimenti alle risorse FHIR possono anche essere circolari. Ad esempio, il tipo di risorsa FHIR CarePlan ha un campo replaces che può puntare a un altro CarePlan.

L'elemento più importante nella struttura di riferimento FHIR è reference. Gli altri elementi, come display e identifier, sono resi persistenti così come sono nell'API Cloud Healthcare.

I formati supportati di Reference.reference nell'API Cloud Healthcare includono:

Riferimento alle risorse locali

I riferimenti alle risorse sono definiti come RESOURCE_TYPE/RESOURCE_ID. L'API Cloud Healthcare supporta inoltre la visualizzazione del nome completo dell'archivio FHIR davanti a RESOURCE_TYPE/RESOURCE_ID. Ad esempio, FHIR_STORE_NAME/RESOURCE_TYPE/RESOURCE_ID. Se utilizzi questo formato, il nome dell'archivio deve corrispondere all'archivio FHIR della richiesta. In caso contrario, la richiesta viene rifiutata a causa di riferimenti non locali.

L'opzione di configurazione del negozio FhirStore.disableReferentialIntegrity controlla il controllo dell'integrità referenziale per la convalida del riferimento locale, che è abilitata per impostazione predefinita. Per ulteriori informazioni sul controllo dell'integrità referenziale, consulta Integrità referenziale FHIR.

Riferimenti con più versioni

L'API Cloud Healthcare supporta i riferimenti a una versione specifica della risorsa di destinazione. Per collegarti a una versione specifica della risorsa di destinazione, utilizza il formato dopo RESOURCE_ID/_history/VERSION_ID] nel riferimento locale.

Quando è abilitato il controllo di integrità referenziale, il server verifica che la versione storica esista nell'archivio FHIR. Il metodo Resource-purge rimuove le versioni cronologiche a prescindere dal fatto che vi si faccia riferimento.

Riferimenti condizionali

In alternativa a specificare esplicitamente l'ID risorsa di destinazione, executeBundle accetta una query di ricerca di riferimento condizionale per la risorsa di destinazione che viene risolta nell'ID risorsa di destinazione al momento della richiesta. Ad esempio: Patient?identifier=abc.

Se la query di ricerca non risolve una risorsa di destinazione o si risolve in più di una risorsa di destinazione, il server rifiuta la richiesta indipendentemente dal fatto che il controllo dell'integrità referenziale sia abilitato o meno.

URI che inizia con urn:uuid o urn:oid

Quando utilizzi il metodo executeBundle con un bundle di transazioni, puoi utilizzare i riferimenti all'identificatore univoco universale (UUID) o all'identificatore di oggetto(OID) per risolvere i riferimenti ad altre risorse in fase di creazione o aggiornamento nello stesso bundle. Per ulteriori informazioni, consulta la guida alla gestione dei bundle FHIR.

URL esterno completo

Gli URL esterni completi, come http://www.example.com/abc, vengono archiviati nel campo di riferimento senza modifiche. L'API Cloud Healthcare non risolve l'URL o non prova a verificarne la validità.

Quando l'URL esterno completo corrisponde all'URL completo dell'archivio FHIR della richiesta, il riferimento viene considerato come riferimento a una risorsa locale.

Riferimento frammento

Un frammento di riferimento rimanda a una risorsa contenuta incorporata in una risorsa. Ad esempio, se un record di osservazione menziona un professionista generico, ma non esiste una directory del professionista controllata, non è possibile creare una risorsa del professionista completa. Il medico generico è una risorsa riservata all'Osservazione. I campi di riferimento su una risorsa possono puntare alle risorse incorporate utilizzando il formato #[INLINE_RESOURCE_ID].

Nel seguente esempio FHIR R4, p1 e p2 sono ID risorsa incorporati a cui viene fatto riferimento come #p1 e #p2:

{
  "resourceType": "Observation",
  "contained": [
    {
      "resourceType":"Patient",
      "id": "p1",
      "generalPractitioner": {"reference": "#p2"}
    },
    {
      "resourceType":"Practitioner",
      "id": "p2"
    }
  ],
  "status": "final",
  "subject": {"reference": "#p1"},
  "performer": [{"reference": "#p2"}]
}

[INLINE_RESOURCE_ID] deve esistere come risorsa contenuta all'interno della risorsa, altrimenti il server rifiuta la richiesta. Alla risorsa contenuta è possibile fare riferimento solo al relativo container o ad altre risorse contenute all'interno dello stesso container.