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 è truee 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.

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 nameoggetto :

 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. Patientspesso hanno uno o più Encountercon 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.

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 janedoespecifico.

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.

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.