Questa pagina spiega in che modo l'API Cloud Healthcare supporta Riferimenti delle risorse FHIR.
Panoramica
I riferimenti alle risorse FHIR sono link diretti da una risorsa di origine a una 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, 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 persistenti così come sono
nell'API Cloud Healthcare.
I formati supportati di Reference.reference
nell'API Cloud Healthcare include:
- Riferimento risorsa locale
- URI che inizia con
urn:uuid
ourn:oid
- URL esterno completo
- Riferimento ai frammenti
Riferimento alla risorsa locale
I riferimenti alle risorse sono definiti come
RESOURCE_TYPE/RESOURCE_ID
.
L'API Cloud Healthcare supporta anche l'aggiunta del nome completo del datastore FHIR
davanti a RESOURCE_TYPE/RESOURCE_ID
. Per
un 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, consulta Integrità referenziale FHIR.
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 dell'integrità referenziale è abilitato, il server verifica che la versione storica esista nell'archivio FHIR. La
Resource-purge
rimuove le versioni cronologiche indipendentemente dal fatto che vi si faccia riferimento o meno.
Riferimenti condizionali
In alternativa a specificare esplicitamente l'ID risorsa di destinazione,
executeBundle
accetta una query di ricerca con riferimento condizionale per la risorsa di destinazione che risolve nell'ID risorsa di destinazione al
momento della richiesta. Ad esempio: Patient?identifier=abc
.
Se la query di ricerca non risolve in una risorsa di destinazione o in più di una, 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 metodo
executeBundle
con un bundle di transazioni, puoi utilizzare riferimenti a UUID (Universally Unique Identifier) o OID (Object Identifier) per risolvere i riferimenti ad altre risorse
in fase di creazione o aggiornamento nello stesso bundle. Per saperne di più, consulta la 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
non tenta di verificarne la validità.
Quando l'URL esterno completo corrisponde all'URL completo dell'archivio FHIR della richiesta, il riferimento viene trattato come un riferimento a una 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 un
medico di base, ma non esiste una directory di medici controllata, non è possibile creare una risorsa completa per il medico. Il medico di base è una risorsa contenuta nel record Osservazione. I campi di riferimento di una risorsa possono puntare alle risorse incorporate utilizzando la forma #[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. La risorsa contenuta può
a cui vi fa riferimento solo il container o altre risorse contenute all'interno dello stesso
containerizzato.