Riferimenti tra risorse FHIR

In questa pagina viene spiegato in che modo l'API Cloud Healthcare supporta i riferimenti a risorseFHIR.

Panoramica

I riferimenti alle risorse FHIR sono link 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 Reference, che può essere utilizzato per il collegamento 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 della struttura di riferimento FHIR è riferimento. Gli altri elementi, come display e identifier, vengono mantenuti così come sono nell'API Cloud Healthcare.

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

Riferimento risorsa locale

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

L'opzione di configurazione dello store FhirStore.disableReferentialIntegrity controlla il controllo di integrità di riferimento per la convalida del riferimento locale, che è attivato per impostazione predefinita. Per ulteriori informazioni sul controllo dell'integrità di riferimento, consulta l'integrità del riferimento referente.

Riferimenti con più versioni

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

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

Riferimenti condizionali

In alternativa all'indicazione esplicita di ID risorsa di destinazione, executeBundle accetta una query di ricerca di riferimento condizionale per la risorsa di destinazione, che si risolve nell'ID risorsa di destinazione al momento della richiesta. Ad esempio: Patient?identifier=abc.

Se la query di ricerca non si risolve in 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à di riferimento sia abilitato.

URI che inizia con urn:uuid o urn:oid

Quando utilizzi il metodo executeBundle con un bundle di transazioni, puoi fare riferimento a riferimenti univoci (UUID) o identificatori di oggetti(OUID) per risolvere i riferimenti ad altre risorse create o aggiornate nello stesso bundle. Per ulteriori informazioni, consulta la guida alla gestione dei pacchetti FHIR.

URL esterno completo

Gli URL esterni completi, ad esempio http://www.example.com/abc, vengono archiviati non modificati nel campo di riferimento. L'API Cloud Healthcare non risolve l'URL o non tenta di verificarne la validità.

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

Riferimento frammenti

Un riferimento a un frammento fa riferimento a una risorsa contenuta incorporata in una risorsa. Ad esempio, se un record di osservazione menziona un professionista, ma non esiste una directory controllata da un professionista, non è possibile creare una risorsa completa per il professionista. Il medico di base è una risorsa contenuta nel record di osservazione. I campi di riferimento di una risorsa possono puntare alle risorse incorporate utilizzando il formato #[INLINE_RESOURCE_ID].

Nell'esempio FHIR R4 seguente, 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. Il riferimento alla risorsa contenuta può essere effettuato solo dal container o da altre risorse contenute all'interno dello stesso container.