Riferimenti tra risorse FHIR

Questa pagina spiega in che modo l'API Cloud Healthcare supporta Riferimenti delle risorse FHIR.

Panoramica

I riferimenti alle risorse FHIR sono link direzionali da una risorsa di origine a un risorsa di destinazione. I riferimenti alle risorse FHIR possono essere utilizzati per connettere le risorse. Per Ad esempio, il tipo di risorsa FHIR Observation ha un campo subject il tipo di riferimento, 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, la risorsa FHIR il tipo 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, sono persistenti così come sono nell'API Cloud Healthcare.

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

Riferimento risorsa locale

I riferimenti alle risorse sono definiti RESOURCE_TYPE/RESOURCE_ID. L'API Cloud Healthcare supporta anche l'anteposizione 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 del datastore deve corrispondere al datastore FHIR della richiesta. In caso contrario, la richiesta viene rifiutata a causa di riferimenti non locali.

L'opzione di configurazione del datastore FhirStore.disableReferentialIntegrity controlla il controllo dell'integrità referenziale per la convalida dei riferimenti locali, è abilitata per impostazione predefinita. Per ulteriori informazioni sul controllo dell'integrità referenziale, vedi Integrità referenziale FHIR.

Riferimenti sottoposti al controllo delle 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] in il riferimento locale.

Quando il controllo dell'integrità referenziale è abilitato, il server verifica che versione storica esiste nel datastore FHIR. La Resource-purge rimuove le versioni cronologiche a prescindere dall'eventuale riferimento.

Riferimenti condizionali

In alternativa a specificare esplicitamente l'ID risorsa di destinazione, executeBundle accetta un riferimento condizionale query di ricerca per la risorsa di destinazione che si risolve nell'ID risorsa di destinazione in l'ora della richiesta. Ad esempio: Patient?identifier=abc.

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

URI che inizia con urn:uuid o urn:oid

Quando utilizzi il executeBundle con un pacchetto di transazioni, un identificatore univoco universale (UUID) o un oggetto I riferimenti identificatori(OID) possono essere utilizzati per risolvere i riferimenti ad altre risorse essere creati o aggiornati nello stesso bundle. Per ulteriori informazioni, consulta Guida alla gestione dei bundle FHIR.

URL esterno completo

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

Quando l'URL esterno completo corrisponde all'URL completo del datastore FHIR del viene considerato come un riferimento di risorsa locale.

Riferimento frammento

Un frammento di riferimento punta a un risorsa contenuta incorporati in una risorsa. Ad esempio, se un record di osservazione menziona una ma non esiste una directory controllata per i professionisti, Impossibile creare la risorsa del medico. Il medico di base è un nel record di osservazione. I campi Riferimento su una risorsa possono puntare alle risorse incorporate nel formato #[INLINE_RESOURCE_ID].

Nel seguente esempio di FHIR R4, p1 e p2 sono ID risorse in linea 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 dell'istruzione risorsa, in caso contrario il server rifiuta la richiesta. È possibile fare riferimento alla risorsa contenuta solo dal relativo contenitore o da altre risorse contenute nello stesso contenitore.