Questa pagina spiega le istruzioni di base per la ricerca di risorse FHIR in un datastore FHIR. Ricerca di Le risorse FHIR sono 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.
- Viene utilizzato il metodo
projects.locations.datasets.fhirStores.fhir.search
. Il metodo fornisce i seguenti modi per cercare le risorse FHIR:- Richieste
GET
- Richieste
POST
- Richieste
Questa pagina riassume molti delle funzioni di ricerca di uso comune, ma non è un elenco esaustivo delle parti Specifica di ricerca FHIR supportate dall'API Cloud Healthcare.
Utilizzo del visualizzatore FHIR
Il visualizzatore FHIR è una pagina della console Google Cloud che ti consente di cercare e visualizza i contenuti delle risorse FHIR.
Per cercare risorse in un datastore FHIR, completa i seguenti passaggi:
Nella console Google Cloud, vai alla pagina del visualizzatore FHIR.
Nell'elenco a discesa FHIR Store, seleziona un set di dati, quindi seleziona a 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à visualizzato, seleziona Tipo di risorsa:
Inserisci un tipo di risorsa.
Per cercare un altro tipo di risorsa, seleziona OPPURE dall'elenco a discesa Operatori visualizzato e inserisci un altro tipo di risorsa.
Nell'elenco dei tipi di risorsa, seleziona quello che vuoi eseguire ricerche.
Nella casella di ricerca della tabella delle risorse visualizzata, inserisci il valore che vuoi cercare.
Il visualizzatore FHIR mostra i risultati di ricerca in una tabella. Dopo aver selezionato un risorsa, il visualizzatore FHIR visualizza i contenuti della risorsa.
Quando visualizzi i contenuti di una risorsa, puoi cercare i dati all'interno risorsa.
Per cercare dati all'interno di una risorsa, segui questi passaggi:
Seleziona una risorsa.
Nel riquadro del Visualizzatore FHIR, fai clic sulla scheda Elementi.
Nella casella di ricerca, inserisci il valore che vuoi cercare.
Download di dati binari all'interno delle risorse FHIR
Per scaricare i dati binari disponibili associati a una risorsa nel file FHIR seguire questi passaggi:
Seleziona una risorsa.
Nel riquadro del Visualizzatore FHIR, fai clic sulla scheda Elementi.
Se necessario, espandi gli elementi per accedere all'elemento risorsa richiesto.
Fai clic su Scarica file per scaricare i dati disponibili.
Creazione ed esecuzione di query di ricerca avanzate
Puoi utilizzare query di ricerca avanzate per cercare risorse FHIR specifiche utilizzando la specifica FHIR per la ricerca.
Per creare una query di ricerca avanzata, completa i seguenti passaggi:
Nella pagina Visualizzatore FHIR, fai clic sulla scheda Cerca.
Per creare una query di ricerca, fai clic su Apri Query Builder.
Viene visualizzato il riquadro Selezione query.
Nell'elenco Seleziona un tipo di risorsa FHIR, scegli la risorsa FHIR il tipo di risorsa che vuoi cercare.
Fai clic su Continua.
Nell'elenco Parametro, seleziona il parametro che vuoi utilizzare. per cercare le risorse.
Nell'elenco Modificatore, seleziona il modificatore da applicare al query. L'elenco include solo i modificatori compatibili con il tipo di dati del parametro selezionato.
La selezione è facoltativa. Se non è selezionato alcun modificatore, viene eseguito un controllo di uguaglianza.
Nel campo Valore, inserisci il valore del parametro di query.
Per aggiungere più di un valore del parametro, fai clic su OPPURE. 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 nella scheda Query Anteprima. Per visualizzare l'URL completo della query di ricerca, fai clic su Mostra completo del tuo percorso di apprendimento.
Per aggiungere più di un parametro, fai clic su E.
Fai clic su Continua.
Per includere le risorse a cui fanno riferimento le risorse restituite in query di ricerca, scegli il parametro risorsa tra Parametri inclusi dall'elenco a discesa.
Per includere le risorse che fanno riferimento alle risorse restituite nella ricerca una query, scegli il parametro risorsa dalla colonna Inverti incluso parametri.
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 contenenti la query, fai clic su Esegui ricerca.
I risultati di ricerca vengono visualizzati nell'elenco Risultati di ricerca. Per visualizzare 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 viene chiesto di specificare un nome e una descrizione per la query. I parametri di ricerca vengono salvati in un modello, ma tutti i valori definiti rimosso.
Esempio di query di ricerca
L'esempio seguente mostra una query di ricerca che cerca le risorse Claim 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:
Viene configurata come segue nel riquadro Selezione query e la query viene visualizzata in anteprima nel riquadro Anteprima query. La query viene visualizzata Operazione di ricerca FHIR.
Modificare le 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.
Eseguire modelli di query
Per eseguire una query da un modello salvato, completa i seguenti passaggi:
Fai clic su Modelli salvati.
Viene visualizzata la scheda Cerca modelli del riquadro Selezione query, che mostrano tutti i modelli di query salvati.
Seleziona il modello di query da eseguire e fai clic su Fine.
La query di ricerca del modello viene visualizzata nell'operazione di ricerca FHIR. campo senza valori.
Per definire i valori della query di ricerca, modifica i valori dei parametri nel campo.
Fai clic su Esegui ricerca per cercare risorse contenenti la query.
Se utilizzi il 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 le risorse in un determinato archivio FHIR utilizzando il metodo projects.locations.datasets.fhirStores.fhir.search
con GET
.
curl
Per cercare le risorse in un archivio 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 Realizzare una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta GET
che utilizza curl
per cercare tutte
pazienti con 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 riesce, il server restituisce la risposta come Bundle
FHIR in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
nell'array Bundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Patient, inclusi 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 le risorse in un archivio 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 Creare una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta GET
mediante Windows PowerShell per eseguire una ricerca
per tutti i pazienti con cognome "Rossi".
$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 riesce, il server restituisce la risposta come Bundle
FHIR
in formato JSON. Bundle.type
è searchset
e i risultati di ricerca sono
nell'array Bundle.entry
. In questo esempio, la richiesta restituisce un
singola risorsa paziente, inclusi 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 projects.locations.datasets.fhirStores.fhir.search
con POST
.
curl
Per cercare risorse in un datastore FHIR, effettua una richiesta POST
e
specificare 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 Creare una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta POST
che utilizza curl
per cercare tutte
pazienti con 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 riesce, 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 un
singola risorsa paziente, inclusi 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
specificare 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 Realizzare una query di ricerca
- Un token di accesso
L'esempio seguente mostra una richiesta POST
mediante Windows PowerShell per eseguire una ricerca
per tutti i pazienti con cognome "Rossi".
$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
nell'array Bundle.entry
. In questo esempio, la richiesta restituisce un
singola risorsa paziente, inclusi 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
Costruire una query di ricerca
La stringa di query è una serie di coppie name=value
codificate sotto forma di URL. Una ricerca
combina tutte le coppie con un AND
logico. Ogni valore può essere un
elenco di valori separati da virgole, che vengono trattati come OR
logici di questi valori
e i relativi valori. Ad esempio, Patient?key1=value1&key2=value2,value3
è una ricerca su
Risorse per i pazienti che utilizzano i seguenti criteri:
(key1 = value1) AND (key2 = value2 OR key2 = value3)
Non esiste una sintassi per eseguire un OR
di due coppie name=value
.
Ogni tipo di risorsa FHIR definisce i propri parametri di ricerca in ogni versione FHIR. I parametri disponibili sono documentati nella specifica FHIR per ogni risorsa. Per un esempio, vedi FHIR R4 Patient. Puoi recuperare i parametri in modo programmatico tramite l'istruzione di abilitazione. L'API Cloud Healthcare supporta la maggior parte dei parametri di ricerca; puoi trovare esclusioni tramite la dichiarazione di capacità o la dichiarazione di conformità FHIR.
Impaginazione e ordinamento
Il numero di risorse restituite su ogni pagina dei risultati della ricerca FHIR dipende in base ai seguenti fattori:
- Il parametro
_count
. Controlla il numero massimo di risorse riportate 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 elevate.
Se una ricerca restituisce più risorse rispetto al numero di risorse che possono essere visualizzate in una pagina, la risposta include un URL di paginazione nel campo Bundle.link
. In questo campo possono essere restituiti più valori. Il valore con Bundle.link.relation = next
indica che puoi utilizzare il corrispondente Bundle.link.url
per recuperare la pagina successiva.
Il valore di Bundle.total
indica il numero totale di corrispondenze
Google Cloud. Questo valore è esatto se i risultati rientrano interamente in un'unica pagina, ma
diventa una stima approssimativa quando il numero di risultati supera una pagina.
Puoi ottenere il totale esatto per una ricerca che corrisponde a molti risultati
seguenti link di impaginazione finché non vengono visualizzati
esausto.
Per ulteriori informazioni sull'impaginazione e sui totali di ricerca, consulta Implementazione dell'impaginazione e dei totali di ricerca con la ricerca FHIR.
Puoi ordinare i risultati utilizzando il parametro _sort
, che accetta una
elenco separato da virgole di nomi dei parametri di ricerca in ordine di priorità. Puoi
utilizza il prefisso -
per indicare l'ordine decrescente. Ad esempio, la seguente query
ordina per stato crescente, rompendo i legami per data (ordine decrescente) e interruzione
eventuali legami rimanenti per categoria (ordine crescente):
_sort=status,-date,category
Ritardo di indicizzazione
Le risorse FHIR vengono indicizzate in modo asincrono, pertanto potrebbe esserci 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 delle risorse,
che vengono indicizzati in modo sincrono come indice speciale. Di conseguenza, la ricerca utilizzando
l'identificatore di risorsa non è soggetto a ritardo nell'indicizzazione. Per utilizzare l'indice
sincronico speciale, il termine di ricerca per l'identificatore deve avere il pattern
identifier=[system]|[value]
o identifier=[value]
e puoi utilizzare uno dei seguenti
parametri dei risultati di ricerca:
_count
_include
_revinclude
_summary
_elements
Se la tua query contiene altri parametri di ricerca, lo stato
al suo posto. Tieni presente che la ricerca nell'indice speciale
ottimizzato per risolvere un numero ridotto di corrispondenze. La ricerca non viene ottimizzata se
i criteri di ricerca degli identificatori corrispondono a un numero elevato (ossia più di 2000)
Google Cloud. Per una query di ricerca che corrisponde a un gran numero di risorse,
puoi evitare di usare lo speciale indice sincrono includendo un ulteriore
_sort
nella query. Usa _sort=-_lastUpdated
se vuoi conservare
secondo l'ordinamento predefinito.
Ricerca in tutti i tipi di risorse
Alcuni parametri di ricerca, indicati da un trattino basso iniziale come _id
,
si applicano a tutti i tipi di risorse. Questi parametri, costituiti da tutte le risorse, sono elencati nel
Specifica FHIR per il tipo di risorsa.
Quando utilizzi questi parametri di ricerca, puoi eseguire una ricerca su più
omettendo il tipo di risorsa dal percorso di richiesta. Ad esempio,
l'utilizzo di GET .../fhir?_id=1234
anziché GET .../fhir/Patient?_id=1234
consente di eseguire ricerche
in tutte le risorse FHIR anziché solo in una risorsa Patient. Puoi utilizzare il parametro speciale _type
con questo tipo di richiesta di limitare i risultati a un campo
l'elenco dei tipi di risorse. Ad esempio, la seguente query
restituisce solo i 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 di base come i seguenti:
- Stringa
- Numero
- Data
I tipi di dati includono anche i seguenti tipi complessi:
- Token
- Riferimento
- Quantità
Ogni tipo di dati ha una propria sintassi per specificare i valori. Ogni tipo di dati supporta i 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 tipi di dati aggiuntivi, sintassi dei valori e modificatori, consulta Funzionalità di ricerca FHIR avanzate.
Numero
Cerca valori interi o con rappresentazione in virgola mobile. Per cambiare il criterio di confronto, inserisci il prefisso il valore con uno dei seguenti modificatori:
ne
lt
le
gt
ge
Ad esempio, utilizza [parameter]=100
per l'uguaglianza oppure [parameter]=ge100
per maggiore di
o uguale a 100.
Data
Cerca su qualsiasi tipo di data, ora o periodo. Il parametro data è il seguente:
yyyy-mm-ddThh:mm:ss[Z|(+|-)hh:mm]
Si applicano gli stessi modificatori di prefisso utilizzati per number.
Stringa
Per impostazione predefinita viene usata una ricerca per prefisso che non fa distinzione tra maiuscole e minuscole. accenti o altri segni diacritici.
Token
Cerca la corrispondenza stringa esatta di un "codice". Puoi definire l'ambito della ricerca all'URI di un "sistema" che indica il valore del set di dati da cui viene ricavato il codice il seguente formato:
[parameter]=[system]|[code]
Ad esempio, la seguente ricerca corrisponde a un codice di 10738-3, ma solo quando qualificato come valore da un sistema di codifica con URI specificato:
code=http://hl7.org/fhir/ValueSet/observation-codes|10738-3
Quantità
Cerca un valore numerico utilizzando gli stessi modificatori di prefisso di number. Puoi qualificare la ricerca con un sistema e un codice specifici che indicano unità del valore nel seguente formato:
[parameter]=[prefix][number]|[system]|[code]
Ad esempio, la seguente query cerca valori di quantità inferiori a 9,1 con il sistema di unità e il codice 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 i riferimenti tramite URL
che potrebbero non essere all'interno del datastore FHIR.
Gestione dei parametri di ricerca
Per impostazione predefinita, il metodo di ricerca applica la gestione "permissiva", che ignora i parametri non riconosciuti dalla ricerca. Il metodo di ricerca esegue la ricerca utilizzando eventuali parametri rimanenti nella richiesta, il che potrebbe restituire più risorse del previsto.
La risposta include quanto segue:
- Un valore in
Bundle.link
con il valoreBundle.link.relation = self
- Un
Bundle.link.url
di un URL contenente solo i parametri che sono stati applicati correttamente alla ricerca. Puoi controllare questo valore per determinare se i parametri sono stati ignorati.
Puoi impostare l'intestazione HTTP della richiesta su Prefer: handling=strict
per una ricerca
richiesta. L'impostazione dell'intestazione fa sì che il datastore FHIR restituisca un errore per tutti i messaggi non riconosciuti
.