Questa pagina spiega le istruzioni di base per cercare risorse FHIR in un datastore FHIR. La ricerca di risorse FHIR è il modo principale per eseguire query e ottenere insight dai dati FHIR.
Puoi cercare le risorse FHIR nell'API Cloud Healthcare nei seguenti modi:
- Utilizzo del visualizzatore FHIR nella console Google Cloud.
- Utilizzando il metodo
projects.locations.datasets.fhirStores.fhir.search
. Il metodo offre i seguenti modi per cercare risorse FHIR:- Richieste
GET
- Richieste
POST
- Richieste
Questa pagina riassume molte delle funzionalità di ricerca di uso comune, ma non è un elenco esaustivo delle parti della specifica di ricerca FHIR supportata dall'API Cloud Healthcare.
Utilizzo del visualizzatore FHIR
Il visualizzatore FHIR è una pagina della console Google Cloud che ti consente di cercare e visualizzare i contenuti delle risorse FHIR.
Per cercare risorse in un datastore FHIR, completa i seguenti passaggi:
Nella console Google Cloud, vai alla pagina Visualizzatore FHIR.
Nell'elenco a discesa Archivio FHIR, seleziona un set di dati, quindi seleziona un datastore FHIR nel set di dati.
Per filtrare l'elenco dei tipi di risorse, cerca quelli che vuoi visualizzare:
Fai clic sul campo Tipo di risorsa.
Nell'elenco a discesa Proprietà che viene visualizzato, seleziona Tipo di risorsa.
Inserisci un tipo di risorsa.
Per cercare un altro tipo di risorsa, seleziona O dall'elenco a discesa Operatori visualizzato, quindi inserisci un altro tipo di risorsa.
Nell'elenco dei tipi di risorsa, seleziona quello in cui vuoi eseguire la ricerca.
Nella casella di ricerca per la tabella delle risorse che viene visualizzata, inserisci il valore che vuoi cercare.
Il visualizzatore FHIR mostra i risultati di ricerca in una tabella. Dopo aver selezionato una risorsa, il visualizzatore FHIR visualizza i contenuti della risorsa.
Quando visualizzi i contenuti di una risorsa, puoi cercare i dati all'interno della risorsa.
Per cercare dati all'interno di una risorsa:
Seleziona una risorsa.
Nel riquadro Visualizzatore FHIR, fai clic sulla scheda Elementi.
Nella casella di ricerca, inserisci il valore da cercare.
download di dati binari all'interno delle risorse FHIR
Per scaricare i dati binari disponibili associati a una risorsa nel visualizzatore FHIR, segui questi passaggi:
Seleziona una risorsa.
Nel riquadro Visualizzatore FHIR, fai clic sulla scheda Elementi.
Se necessario, espandi gli elementi per accedere all'elemento di risorsa richiesto.
Fai clic su Scarica file per scaricare i dati disponibili.
Creazione ed esecuzione di query di ricerca avanzate
Puoi utilizzare le query di ricerca avanzata per cercare risorse FHIR specifiche utilizzando la specifica di ricerca FHIR.
Per creare una query di ricerca avanzata, procedi nel seguente modo:
Nella pagina del visualizzatore FHIR, fai clic sulla scheda Ricerca.
Per creare una query di ricerca, fai clic su Apri Query Builder.
Viene visualizzato il riquadro Selezione query.
Dall'elenco Seleziona un tipo di risorsa FHIR, scegli il tipo di risorsa FHIR che vuoi cercare.
Fai clic su Continua.
Dall'elenco Parametro, seleziona il parametro che vuoi utilizzare per cercare le risorse.
Dall'elenco Modificatore, seleziona il modificatore da applicare alla query. L'elenco include solo i modificatori compatibili con il tipo di dati del parametro selezionato.
Questa è una selezione facoltativa. Se non è selezionato alcun modificatore, viene eseguito un controllo di uguaglianza.
Nel campo Valore, inserisci il valore del parametro di ricerca.
Per aggiungere più di un valore parametro, fai clic su O. In questo modo puoi includere più valori del parametro della risorsa nella query di ricerca.
Durante la creazione della query di ricerca, questa viene visualizzata nel riquadro Anteprima query. Per visualizzare l'URL completo della query di ricerca, fai clic su Mostra percorso completo.
Per aggiungere più di un parametro, fai clic su E.
Fai clic su Continua.
Per includere le risorse a cui fanno riferimento quelle restituite nella query di ricerca, scegli il parametro risorsa dall'elenco a discesa Parametri inclusi.
Per includere le risorse che fanno riferimento alle risorse restituite nella query di ricerca, scegli il parametro risorsa dall'elenco a discesa Inverti parametri inclusi.
Fai clic su Fine per salvare la query di ricerca.
La query di ricerca salvata viene visualizzata nel campo Operazione di ricerca FHIR.
Per cercare risorse con la query, fai clic su Esegui ricerca.
I risultati di ricerca vengono visualizzati nell'elenco Risultati di ricerca. Per visualizzare i dettagli di una risorsa restituita dalla ricerca, fai clic su una risorsa nell'elenco.
Per salvare la query come modello, fai clic su Salva modello e scegli Salva modello o Salva modello con nome. Ti vengono richiesti un nome e una descrizione per la query. I parametri di ricerca vengono salvati in un modello, ma gli eventuali valori definiti vengono rimossi.
Esempio di query di ricerca
L'esempio seguente mostra una query di ricerca che cerca risorse delle dichiarazioni di un fornitore di servizi sanitari specifico, Practitioner/12345, per il mese di agosto 2021:
- Parametro:
care-team
- Valore:
Practitioner/12345
- Valore:
- Operatore: AND
- Parametro:
created
- Prefisso:
lt (lesser than)
- Valore:
8/1/21, 12:00 AM
- Prefisso:
- Operatore: AND
- Parametro:
created
- Prefisso:
gt (greater than)
- Valore:
8/31/21, 11:59 PM
- Prefisso:
Questo viene configurato come segue nel riquadro Selezione query e la query viene visualizzata in anteprima nel riquadro Anteprima query. La query verrà visualizzata nel campo Operazione di ricerca FHIR.
Modifica delle query di ricerca
Per modificare una query di ricerca, procedi in uno dei seguenti modi:
- Per modificare la query in Query Builder, fai clic su Apri Query Builder.
- Per modificare manualmente la query, modifica i valori parametro nella casella di testo.
Esecuzione dei modelli di query
Per eseguire una query da un modello salvato, segui questi passaggi:
Fai clic su Modelli salvati.
Viene visualizzata la scheda Modelli di ricerca del riquadro Selezione query, che mostra tutti i modelli di query salvati.
Seleziona il modello di query che vuoi eseguire e fai clic su Fine.
La query di ricerca del modello viene visualizzata nel campo Operazione di ricerca FHIR senza alcun valore.
Per definire i valori della query di ricerca, modifica i valori dei parametri nel campo.
Fai clic su Esegui ricerca per cercare le risorse con la query.
Utilizzo del metodo search
Per cercare risorse FHIR con l'API REST, utilizza il metodo projects.locations.datasets.fhirStores.fhir.search
. Puoi chiamare il metodo utilizzando le richieste GET
o POST
.
Utilizzo del metodo search
con GET
Gli esempi riportati di seguito mostrano come cercare risorse in un determinato datastore FHIR utilizzando il metodo projects.locations.datasets.fhirStores.fhir.search
con GET
.
curl
Per cercare risorse in un datastore FHIR, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati
- Il nome del datastore FHIR
- Il tipo di risorsa da cercare
- Una stringa di query contenente le informazioni che stai cercando, come descritto nella sezione Creazione di una query di ricerca
- Un token di accesso
Il seguente esempio mostra una richiesta GET
che utilizza curl
per cercare tutti i pazienti con il cognome "Smith".
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?family:exact=Smith"
Se la richiesta ha esito positivo, il server restituisce la risposta come Bundle
FHIR in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
voci nell'array Bundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Paziente che include i dati al suo interno:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
PowerShell
Per cercare risorse in un datastore FHIR, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati
- Il nome del datastore FHIR
- Il tipo di risorsa da cercare
- Una stringa di query contenente le informazioni che stai cercando, come descritto nella sezione Creazione di una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta GET
mediante Windows PowerShell per cercare tutti i pazienti con il cognome "Smith".
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE?family:exact=Smith" | ConvertTo-Json
Se la richiesta ha esito positivo, il server restituisce la risposta come Bundle
FHIR in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
voci nell'array Bundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Paziente che include i dati al suo interno:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Java
Node.js
Python
Utilizzo del metodo search
con POST
Gli esempi riportati di seguito mostrano come cercare risorse in un determinato datastore FHIR utilizzando il metodo projects.locations.datasets.fhirStores.fhir.search
con POST
.
curl
Per cercare risorse in un datastore FHIR, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome del set di dati
- Il nome del datastore FHIR
- Il tipo di risorsa da cercare
- Una stringa di query contenente le informazioni che stai cercando, come descritto nella sezione Creazione di una query di ricerca
- Un token di accesso
Il seguente esempio mostra una richiesta POST
che utilizza curl
per cercare tutti i pazienti con il cognome "Smith".
curl -X POST \ --data "" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/fhir+json; charset=utf-8" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/_search?family:exact=Smith"
Se la richiesta ha esito positivo, il server restituisce la risposta come Bundle
FHIR in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
voci nell'array Bundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Paziente che include i dati al suo interno:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
PowerShell
Per cercare risorse in un datastore FHIR, effettua una richiesta POST
e specifica le seguenti informazioni:
- Il nome del set di dati
- Il nome del datastore FHIR
- Il tipo di risorsa da cercare
- Una stringa di query contenente le informazioni che stai cercando, come descritto nella sezione Creazione di una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta POST
mediante Windows PowerShell per cercare tutti i pazienti con il cognome "Smith".
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/_search?family:exact=Smith" | ConvertTo-Json
Se la richiesta ha esito positivo, il server restituisce la risposta come Bundle
FHIR in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
voci nell'array Bundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Paziente che include i dati al suo interno:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Java
Node.js
Python
Costruzione di una query di ricerca
La stringa di query è una serie di coppie name=value
codificate in forma di URL. Una ricerca
combina tutte le coppie con un valore logico AND
. Ogni valore può essere un elenco di valori separati da virgole, che vengono trattati come un OR
logico di questi valori. Ad esempio, Patient?key1=value1&key2=value2,value3
è una ricerca
delle risorse pazienti che utilizza i seguenti criteri:
(key1 = value1) AND (key2 = value2 OR key2 = value3)
Non esiste una sintassi per eseguire un'operazione di tipo OR
su due coppie name=value
.
Ogni tipo di risorsa FHIR definisce i propri parametri di ricerca in ogni versione di FHIR. I parametri disponibili sono documentati nella specifica FHIR per ogni risorsa. Per un esempio, consulta Paziente FHIR R4. Puoi recuperare i parametri in modo programmatico attraverso l'istruzione di capacità. L'API Cloud Healthcare supporta la maggior parte dei parametri di ricerca; puoi trovare le esclusioni tramite l'istruzione di funzionalità o la dichiarazione di conformità FHIR.
Impaginazione e ordinamento
Il numero di risorse restituite su ogni pagina dei risultati di ricerca FHIR dipende dai seguenti fattori:
- Il parametro
_count
. Controlla il numero massimo di risorse restituite dal metodo di ricerca. Ad esempio,_count=10
restituisce al massimo 10 risorse corrispondenti alla query. Il valore predefinito è 100 e il valore massimo consentito è 1000. - La dimensione dei dati della risposta. Una pagina di risultati di ricerca potrebbe restituire meno risorse rispetto al valore specificato nel parametro
_count
se le dimensioni della risposta sono grandi.
Se una ricerca restituisce un numero di risorse superiore a quello consentito in una singola pagina, la risposta include un URL di impaginazione nel campo Bundle.link
. Potrebbero
essere restituiti più valori in questo campo; il valore con
Bundle.link.relation = next
indica che puoi utilizzare il valore
Bundle.link.url
corrispondente per recuperare la pagina successiva.
Il valore di Bundle.total
indica il numero totale di risorse corrispondenti. Questo valore è esatto se i risultati rientrano completamente in una pagina, ma diventa una stima approssimativa poiché il numero di risultati supera una pagina.
Puoi ottenere un totale esatto per una ricerca che corrisponde a molti risultati seguendo ripetutamente i link di impaginazione fino a esaurimento dei risultati.
Per saperne di più sui totali di impaginazione e ricerca, consulta Implementazione dei totali di impaginazione e ricerca con la ricerca FHIR.
Puoi ordinare i risultati utilizzando il parametro _sort
, che accetta un elenco separato da virgole di nomi dei parametri di ricerca in ordine di priorità. Puoi
utilizzare un prefisso -
per indicare l'ordine decrescente. Ad esempio, la seguente query è ordinata in base allo stato in ordine crescente, in base alla data in ordine decrescente e in base alla categoria in ordine crescente.
_sort=status,-date,category
Ritardo di indicizzazione
Le risorse FHIR sono indicizzate in modo asincrono, quindi potrebbe verificarsi un leggero ritardo tra il momento in cui una risorsa viene creata o modificata e il momento in cui la modifica si riflette nei risultati di ricerca. L'unica eccezione sono i dati degli identificatori di risorsa,
che sono indicizzati in modo sincrono come indice speciale. Di conseguenza, la ricerca con l'identificatore di risorsa non è soggetta a ritardo di indicizzazione. Per utilizzare l'indice sincrono speciale, il termine di ricerca per l'identificatore deve essere nel pattern identifier=[system]|[value]
o identifier=[value]
ed è possibile utilizzare uno dei seguenti parametri dei risultati di ricerca:
_count
_include
_revinclude
_summary
_elements
Se la query contiene altri parametri di ricerca, verrà utilizzato l'indice asincrono standard. Tieni presente che la ricerca rispetto all'indice speciale
è ottimizzata per risolvere un numero ridotto di corrispondenze. La ricerca non è ottimizzata se i criteri di ricerca degli identificatori corrispondono a un numero elevato (ovvero più di 2000) di risorse. Per una query di ricerca che corrisponde a un numero elevato di risorse, puoi evitare di utilizzare lo speciale indice sincrono includendo un parametro _sort
aggiuntivo nella query. Utilizza _sort=-_lastUpdated
per mantenere
l'ordinamento predefinito.
Ricerca in tutti i tipi di risorse
Alcuni parametri di ricerca, mostrati da un trattino basso iniziale come _id
, si applicano a tutti i tipi di risorsa. Questi parametri per tutte le risorse sono elencati nella specifica FHIR per il Tipo di risorsa.
Quando utilizzi questi parametri di ricerca, puoi eseguire una ricerca su più tipi di risorse omettendo il tipo di risorsa dal percorso della richiesta. Ad esempio, l'uso di GET .../fhir?_id=1234
anziché GET .../fhir/Patient?_id=1234
di ricerche in tutte le risorse FHIR anziché solo in una risorsa Patient. Puoi utilizzare il parametro speciale _type
con questo tipo di richiesta per limitare i risultati a un elenco separato da virgole di tipi di risorse. Ad esempio, la seguente query
restituisce solo risultati corrispondenti per le risorse Observation
e Condition
:
GET .../fhir?_tag=active&_type=Observation,Condition
Tipi di dati
Ogni parametro di ricerca definito da FHIR ha un tipo di dati, che include tipi primitivi come il seguente:
- Stringa
- Numero
- Data
I tipi di dati includono anche i seguenti tipi complessi:
- Token
- Riferimento
- Quantità
Ogni tipo di dati ha la propria sintassi per specificare i valori. Ogni tipo di dati supporta modificatori che alterano il modo in cui viene eseguita la ricerca.
Le sezioni seguenti mostrano come utilizzare i tipi di dati. Per ulteriori dettagli su altri tipi di dati, sintassi dei valori e modificatori, consulta Funzionalità di ricerca FHIR avanzate.
Numero
Cerca valori interi o in virgola mobile. Per cambiare il criterio di confronto, aggiungi il prefisso al valore con uno dei seguenti modificatori:
ne
lt
le
gt
ge
Ad esempio, utilizza [parameter]=100
per l'uguaglianza o [parameter]=ge100
per un valore maggiore o uguale a 100.
Data
Esegue ricerche in qualsiasi tipo di data, ora o periodo. Il formato del parametro della data è il seguente:
yyyy-mm-ddThh:mm:ss[Z|(+|-)hh:mm]
Si applicano gli stessi modificatori di prefisso utilizzati per numero.
Stringa
Il valore predefinito è una ricerca con prefisso che non è sensibile alle maiuscole, agli accenti o ad altri segni diacritici.
Token
Cerca una corrispondenza stringa esatta di un "codice". Puoi limitare la ricerca all'URI di un "system" che indica il set di valori da cui proviene il codice utilizzando il seguente formato:
[parameter]=[system]|[code]
Ad esempio, la seguente ricerca corrisponde al codice 10738-3, ma solo se qualificato come valore da un sistema di codifica con l'URI specificato:
code=http://hl7.org/fhir/ValueSet/observation-codes|10738-3
Quantità
Cerca un valore numerico utilizzando gli stessi modificatori di prefisso di numero. Puoi qualificare la ricerca con un sistema e un codice specifici che indicano le unità del valore nel seguente formato:
[parameter]=[prefix][number]|[system]|[code]
Ad esempio, la seguente query cerca valori della quantità inferiori a 9,1 con il sistema e il codice unità specificati:
value-quantity=lt9.1|http://unitsofmeasure.org|mg
Riferimento
Cerca i riferimenti tra le risorse. Puoi utilizzare le seguenti query per i riferimenti alle risorse all'interno di un datastore FHIR:
[parameter]=[id]
[parameter]=[type]/[id]
Puoi utilizzare [parameter]=[url]
per specificare tramite URL i riferimenti che potrebbero essere esterni al datastore FHIR.
Gestione dei parametri di ricerca
Per impostazione predefinita, il metodo di ricerca applica una gestione "permissiva", che ignora i parametri non riconosciuti dalla ricerca. Il metodo di ricerca esegue la ricerca utilizzando tutti i parametri rimanenti nella richiesta, il che potrebbe restituire più risorse del previsto.
La risposta include quanto segue:
- Un valore in
Bundle.link
con un valore diBundle.link.relation = self
- Il valore
Bundle.link.url
di un URL contenente solo i parametri applicati correttamente alla ricerca. Puoi controllare questo valore per determinare se alcuni parametri sono stati ignorati.
Puoi impostare l'intestazione HTTP della richiesta su Prefer: handling=strict
su una richiesta di ricerca. L'impostazione dell'intestazione fa sì che il datastore FHIR restituisca un errore su qualsiasi parametro non riconosciuto.