Questa pagina spiega come l'API Cloud Healthcare supporta i riferimenti alle 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 collegare le risorse. Ad esempio, il tipo di risorsa FHIR Observation
ha un campo subject
di tipo Riferimento, che può essere utilizzato per creare un link a una risorsa Patient
come soggetto 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
, vengono mantenuti invariati come nell'API Cloud Healthcare.
I formati supportati di Reference.reference
nell'API Cloud Healthcare include:
- Riferimento alla risorsa locale
- URI che iniziano con
urn:uuid
ourn:oid
- URL esterno completo
- Riferimento al frammento
Riferimento alla risorsa locale
I riferimenti alle risorse sono definiti come
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 negozio 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 negozio
FhirStore.disableReferentialIntegrity
controlla il controllo dell'integrità referenziale per la convalida dei riferimenti locali, che
è attiva 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. Il metodo
Resource-purge
rimuove le versioni storiche indipendentemente dal fatto che siano presenti riferimenti.
Riferimenti condizionali
In alternativa a specificare esplicitamente l'ID della risorsa di destinazione,
executeBundle
accetta una query di ricerca con riferimento condizionale per la risorsa di destinazione che risolve nell'ID della 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 senza modifiche
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 del frammento
Un riferimento a un frammento fa riferimento a una
risorsa inclusa
in linea 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 di #[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 della risorsa, altrimenti il server rifiuta la richiesta. È possibile fare riferimento alla risorsa contenuta solo dal suo contenitore o da altre risorse contenute nello stesso contenitore.