Esempi di ricerca FHIR per l'API di Azure per FHIR
Importante
L'API di Azure per FHIR verrà ritirata il 30 settembre 2026. Seguire le strategie di migrazione per passare al servizio FHIR® di Servizi per i dati sanitari di Azure entro tale data. A causa del ritiro dell'API di Azure per FHIR, le nuove distribuzioni non saranno consentite a partire dal 1° aprile 2025. Il servizio FHIR di Servizi per i dati sanitari di Azure è la versione evoluta dell'API di Azure per FHIR che consente ai clienti di gestire i servizi FHIR, DICOM e MedTech con integrazioni in altri servizi di Azure.
Di seguito sono riportati esempi di utilizzo di operazioni di ricerca FHIR® (Fast Healthcare Interoperability Resources), inclusi parametri di ricerca e modificatori, ricerca con catena e inversa, ricerca composita, visualizzazione del set di voci successivo per i risultati della ricerca e ricerca con una POST
richiesta. Per altre informazioni sulla ricerca, vedere Panoramica della ricerca FHIR.
Parametri dei risultati della ricerca
_includere
_include
cerca tra le risorse quelle che includono il parametro specificato della risorsa. Ad esempio, è possibile cercare tra le MedicationRequest
risorse solo quelle che includono informazioni sulle prescrizioni per un paziente specifico, ovvero il reference
parametro patient
. Nell'esempio seguente vengono estratti tutti i MedicationRequests
pazienti a cui viene fatto riferimento da MedicationRequests
.
GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient
Nota
_include e _revinclude sono limitati a 100 elementi.
_revinclude
_revinclude
consente di cercare la direzione opposta come _include
. Ad esempio, è possibile cercare i pazienti e quindi invertire includono tutti gli incontri che fanno riferimento ai pazienti:
GET [your-fhir-server]/Patient?_revinclude=Encounter:subject
_elementi
_elements
restringe il risultato della ricerca a un subset di campi per ridurre le dimensioni della risposta omettendo dati non necessari. Il parametro accetta un elenco delimitato da virgole di elementi di base.
GET [your-fhir-server]/Patient?_elements=identifier,active
Da questa richiesta si ottiene un bundle di pazienti in cui ogni risorsa include solo gli identificatori e lo stato attivo del paziente. Le risorse in questa risposta contengono un meta.tag
valore per SUBSETTED
indicare che sono un set incompleto di risultati.
Modificatori di ricerca
:non
:not
consente di trovare le risorse in cui un attributo non è true. Ad esempio, è possibile cercare i pazienti in cui il sesso non è femminile.
GET [your-fhir-server]/Patient?gender:not=female
Come valore restituito, si otterrebbero tutte le voci dei pazienti in cui il sesso non è femminile, inclusi valori vuoti (voci specificate senza sesso). Questo è diverso dalla ricerca di Pazienti in cui il sesso è maschile, perché non includerebbe le voci senza un sesso specifico.
:mancante
:missing
restituisce tutte le risorse che non hanno un valore per l'elemento specificato quando il valore è true
e restituisce tutte le risorse che contengono l'elemento specificato quando il valore è false
. Per elementi di tipo di dati semplici, :missing=true
corrisponde a tutte le risorse in cui l'elemento è presente con estensioni ma ha un valore vuoto. Nell'esempio seguente viene illustrato come trovare tutte le Patient
risorse che mancano informazioni sulla data di nascita.
GET [your-fhir-server]/Patient?birthdate:missing=true
:esatto
:exact
viene usato per string
i parametri e restituisce risultati che corrispondono esattamente al parametro, ad esempio nella concatenazione di maiuscole e minuscole e caratteri.
GET [your-fhir-server]/Patient?name:exact=Jon
Questa richiesta restituisce Patient
risorse che hanno esattamente lo stesso nome di Jon
. Se la risorsa contiene Pazienti con nomi come Jonathan
o joN
, la ricerca ignorerà e ignora la risorsa perché non corrisponde esattamente al valore specificato.
:Contiene
:contains
viene usato per string
i parametri e cerca le risorse con corrispondenze parziali del valore specificato in qualsiasi punto della stringa all'interno del campo in cui viene eseguita la ricerca. contains
non fa distinzione tra maiuscole e minuscole e consente la concatenazione dei caratteri. Ad esempio:
GET [your-fhir-server]/Patient?address:contains=Meadow
Questa richiesta restituirà tutte le Patient
risorse con address
campi con valori che contengono la stringa "Meadow". Ciò significa che è possibile avere indirizzi che includono valori come "Meadowers" o "59 Meadow ST" restituiti come risultati della ricerca.
Ricerca concatenata
Per eseguire una serie di operazioni di ricerca che coprono più parametri di riferimento, è possibile "concatenare" la serie di parametri di riferimento aggiungendoli alla richiesta del server uno alla volta usando un punto .
. Ad esempio, se si desidera visualizzare tutte le DiagnosticReport
risorse con un subject
riferimento a una Patient
risorsa che include un particolare name
oggetto :
GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah
Questa richiesta restituirà tutte le DiagnosticReport
risorse con un soggetto paziente denominato "Sarah". .
Periodo dopo che il campo Patient
esegue la ricerca concatenato sul parametro di riferimento del subject
parametro .
Un altro uso comune di una ricerca regolare (non una ricerca concatenato) è trovare tutti gli incontri per un paziente specifico. Patient
spesso hanno uno o più Encounter
con un soggetto. Di seguito viene eseguita la ricerca di tutte le Encounter
risorse per un Patient
oggetto con l'oggetto specificato id
.
GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
Usando la ricerca concatenata, è possibile trovare tutte le Encounter
risorse che corrispondono a una determinata Patient
informazione, ad esempio birthdate
.
GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20
Ciò consentirebbe di cercare Encounter
risorse in tutti i pazienti con il valore di data di nascita specificato.
Inoltre, la ricerca concatenato può essere eseguita più volte in una richiesta usando il simbolo &
, che consente di cercare più condizioni in una richiesta. In questi casi, la ricerca concatenato "indipendentemente" cerca ogni parametro, anziché cercare condizioni che soddisfano tutte le condizioni contemporaneamente:
GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
In questo modo verranno restituite tutte le Patient
risorse con "Sarah" come generalPractitioner
e con un generalPractitioner
oggetto con l'indirizzo con il wa di stato. In altre parole, se un paziente aveva Sarah dallo stato NY e Bill dallo stato WA entrambi indicati come il paziente generalPractitioner
, vengono restituiti entrambi.
Per gli scenari in cui la ricerca deve essere un'operazione AND
che copre tutte le condizioni come gruppo, vedere l'esempio in Ricerca composita.
Ricerca con catena inversa
La ricerca con catena consente di cercare le risorse in base alle proprietà delle risorse a cui fanno riferimento. L'uso della ricerca con catena inversa consente di farlo in altro modo. È possibile cercare le risorse in base alle proprietà delle risorse a cui fanno riferimento, usando _has
il parametro . Ad esempio, una Observation
risorsa ha un parametro patient
di ricerca che fa riferimento a una risorsa Paziente. Usare quanto segue per trovare tutte le risorse paziente a cui fa Observation
riferimento con un oggetto specifico code
.
GET [base]/Patient?_has:Observation:patient:code=527
Questa richiesta restituisce le risorse paziente a cui fa riferimento Observation
il codice 527
.
Inoltre, la ricerca con catena inversa può avere una struttura ricorsiva. Ad esempio, il codice seguente cerca tutti i pazienti in Observation
cui l'osservazione ha un evento di controllo da un utente janedoe
specifico.
GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Nota
Nell'API di Azure per FHIR e nel server FHIR open source supportato da Azure Cosmos DB, la ricerca concatenato e la ricerca con concatenata inversa è un'implementazione MVP. Per eseguire una ricerca concatenata in Azure Cosmos DB, l'implementazione descrive l'espressione di ricerca e rilascia le sottoquery per risolvere le risorse corrispondenti. Questa operazione viene eseguita per ogni livello dell'espressione. Se una query restituisce più di 100 risultati, verrà generato un errore.
Ricerca composita
Per cercare risorse che soddisfano più condizioni contemporaneamente, usare una ricerca composita che unisce una sequenza di valori di singolo parametro con un simbolo $
. Il risultato sarà l'intersezione delle risorse che corrispondono a tutte le condizioni specificate dai parametri di ricerca uniti. Tali parametri di ricerca sono denominati parametri di ricerca compositi e definiscono un nuovo parametro che combina i più parametri in una struttura annidata. Ad esempio, la ricerca seguente trova tutte le DiagnosticReport
risorse che contengono Observation
un valore di potassio minore o uguale a 9,2.
GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Questa richiesta specifica il componente contenente un codice di 2823-3
, che in questo caso sarebbe di potassio. Dopo il $
simbolo, specifica l'intervallo del valore per il componente utilizzando lt
per "minore o uguale a" e 9.2
per l'intervallo di valori di potassio.
Cercare il set di voci successivo
Il numero massimo di voci che è possibile restituire per ogni singola query di ricerca è 1000. Se più di 1.000 voci corrispondenti alla query di ricerca, è possibile utilizzare la procedura seguente per visualizzare le voci maggiori di 1000.
Usare il valore del token url
di continuazione in searchset
, come nel risultato seguente Bundle
.
"resourceType": "Bundle",
"id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
"meta": {
"lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
},
"type": "searchset",
"link": [
{
"relation": "next",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
},
{
"relation": "self",
"url": "[your-fhir-server]/Patient?_sort=_lastUpdated"
}
],
Eseguire quindi una richiesta GET per l'URL fornito nel campo relation: next
.
GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Verrà restituito il set di voci successivo per il risultato della ricerca. searchset
è il set completo di voci dei risultati della ricerca e il token url
di continuazione è il collegamento fornito dal server per recuperare le voci che non vengono visualizzate nel primo 1000.
Eseguire ricerche con POST
Tutti gli esempi di ricerca indicati in precedenza richiedevano l'uso GET
. È anche possibile eseguire operazioni di ricerca usando POST
le richieste tramite _search
.
POST [your-fhir-server]/Patient/_search?_id=45
Questa richiesta restituisce Patient
le risorse con il id
valore 45. Come per le richieste GET, il server determina quale set di risorse soddisfa la condizione e restituisce una risorsa bundle nella risposta HTTP.
Un altro esempio di ricerca con POST in cui i parametri di query vengono inviati come corpo del modulo è il seguente.
POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Passaggi successivi
In questo articolo si è appreso come eseguire ricerche usando parametri di ricerca, modificatori e strumenti di ricerca FHIR diversi. Per altre informazioni sulla ricerca FHIR, vedere
Nota
FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.