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
- URI che inizia con
urn:uuid
ourn:oid
- URL esterno completo
- Riferimento ai frammenti
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.