Questa pagina spiega in che modo l'API Cloud Healthcare supporta i riferimenti alle risorse FHIR.
Panoramica
I riferimenti alle risorse FHIR sono collegamenti 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 Riferimento, che può essere utilizzato per collegarsi 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 resi persistenti così come sono
nell'API Cloud Healthcare.
I formati supportati di Reference.reference
nell'API Cloud Healthcare includono:
- Riferimento per le risorse locali
- URI che inizia con
urn:uuid
ourn:oid
- URL esterno completo
- Riferimento frammento
Riferimento alle risorse locali
I riferimenti alle risorse sono definiti come RESOURCE_TYPE/RESOURCE_ID
.
L'API Cloud Healthcare supporta inoltre la visualizzazione 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 dell'archivio deve corrispondere all'archivio 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 del riferimento locale, che è 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 collegarti a una versione specifica della risorsa di destinazione, utilizza il formato dopo RESOURCE_ID/_history/VERSION_ID
] nel riferimento locale.
Quando è abilitato il controllo di integrità referenziale, il server verifica che la versione storica esista nell'archivio FHIR. Il metodo Resource-purge
rimuove le versioni cronologiche a prescindere dal fatto che vi si faccia riferimento.
Riferimenti condizionali
In alternativa a specificare esplicitamente l'ID risorsa di destinazione, executeBundle
accetta una query di ricerca di riferimento condizionale per la risorsa di destinazione che viene risolta nell'ID risorsa di destinazione al momento della richiesta. Ad esempio: Patient?identifier=abc
.
Se la query di ricerca non risolve 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à referenziale sia abilitato o meno.
URI che inizia con urn:uuid
o urn:oid
Quando utilizzi il metodo executeBundle
con un bundle di transazioni, puoi utilizzare i riferimenti all'identificatore univoco universale (UUID) o all'identificatore di oggetto(OID) per risolvere i riferimenti ad altre risorse in fase di creazione o aggiornamento nello stesso bundle. Per ulteriori informazioni, consulta la guida alla gestione dei bundle FHIR.
URL esterno completo
Gli URL esterni completi, come http://www.example.com/abc
, vengono archiviati
nel campo di riferimento senza modifiche. L'API Cloud Healthcare non risolve l'URL o non prova a verificarne la validità.
Quando l'URL esterno completo corrisponde all'URL completo dell'archivio FHIR della richiesta, il riferimento viene considerato come riferimento a una risorsa locale.
Riferimento frammento
Un frammento di riferimento rimanda a una risorsa contenuta incorporata in una risorsa. Ad esempio, se un record di osservazione menziona un professionista generico, ma non esiste una directory del professionista controllata, non è possibile creare una risorsa del professionista completa. Il medico generico è una risorsa
riservata all'Osservazione. I campi di riferimento su una risorsa possono puntare
alle risorse incorporate utilizzando il formato #[INLINE_RESOURCE_ID]
.
Nel seguente esempio FHIR R4, 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. Alla risorsa contenuta è possibile fare riferimento solo al relativo container o ad altre risorse contenute all'interno dello stesso container.