Condividi tramite


Esempi di ricerca FHIR

Di seguito sono riportati esempi di chiamate API di ricerca FHIR® (Fast Healthcare Interoperability Resources) con vari parametri di ricerca, modificatori, ricerche concatenati e concatenati, ricerche composite, POST richieste di ricerca e altro ancora. Per un'introduzione generale ai concetti di ricerca FHIR, vedere Panoramica della ricerca FHIR.

Parametri dei risultati della ricerca

_include

_include consente di cercare le istanze delle risorse e di includere nei risultati altre risorse a cui fanno riferimento le istanze delle risorse di destinazione. Ad esempio, è possibile usare _include per eseguire query sulle MedicationRequest risorse e limitare la ricerca alle prescrizioni per un paziente specifico. Il servizio FHIR restituirà quindi le MedicationRequest risorse e la risorsa a cui si fa Patient riferimento. Nell'esempio seguente la richiesta esegue il pull di tutte le MedicationRequest istanze di risorse nel database e di tutti i pazienti a cui fanno riferimento le MedicationRequest istanze.

 GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient

Nota

Il servizio FHIR in Servizi dati di Integrità di Azure limita le ricerche con _include e _revinclude per restituire un massimo di 100 elementi.

_revinclude

_revinclude consente di cercare le istanze delle risorse e di includere nei risultati altre risorse che fanno riferimento alle istanze di risorse di destinazione. Ad esempio, è possibile cercare i pazienti e quindi invertire includono tutti gli incontri che fanno riferimento ai pazienti.

GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject

_elements

_elements restringe le informazioni nei risultati della ricerca a un subset degli elementi definiti per un tipo di risorsa. Il _elements parametro accetta un elenco delimitato da virgole di elementi di base.

GET {{FHIR_URL}}/Patient?_elements=identifier,active

La richiesta precedente restituisce un bundle di pazienti. Ogni voce include solo gli identificatori e lo stato attivo del paziente. Le voci nella risposta contengono un meta.tag valore per SUBSETTED indicare che non tutti gli elementi definiti per la risorsa sono inclusi.

Modificatori di ricerca

:not

:not consente di trovare risorse con un elemento che non ha un valore specificato. Ad esempio, è possibile cercare i pazienti che non sono donne.

GET {{FHIR_URL}}/Patient?gender:not=female

In cambio, si otterrebbero tutte le Patient risorse il cui gender valore dell'elemento non femaleè , inclusi i pazienti senza alcun valore di genere specificato. Questo è diverso dalla ricerca di Patient risorse con il valore di male genere, perché ciò ignorerebbe i pazienti senza sesso specificato.

:missing

:missing restituisce tutte le risorse che non hanno un valore per l'elemento specificato quando :missing=true. Restituisce inoltre :missing tutte le risorse che contengono l'elemento specificato quando :missing=false. Per elementi di tipo di dati semplici, :missing=true corrisponde a tutte le risorse in cui è presente un elemento, ma ha un valore vuoto. Ad esempio, se si desidera trovare tutte le Patient risorse mancanti in birthdate, è possibile effettuare la chiamata seguente.

GET {{FHIR_URL}}/Patient?birthdate:missing=true

:exact

:exact viene utilizzato per cercare elementi con string tipi di dati e restituisce positivo se il valore del parametro corrisponde esattamente alla sequenza di maiuscole e minuscole e caratteri completi del valore dell'elemento.

GET {{FHIR_URL}}/Patient?name:exact=Jon

Questa richiesta restituisce Patient risorse con il given nome o family .Jon Se ci fossero pazienti con nomi come Jonathan o JON, la ricerca ignorerebbe tali risorse perché i nomi non corrispondono esattamente al valore specificato.

:contains

:contains viene usato per eseguire una query per gli string elementi di tipo e consente corrispondenze con il valore specificato in qualsiasi punto del campo. contains non fa distinzione tra maiuscole e minuscole e riconosce le stringhe corrispondenti concatenate con altri caratteri. Ad esempio:

GET {{FHIR_URL}}/Patient?address:contains=Meadow

Questa richiesta restituirà tutte le Patient risorse con address campi elemento che contengono la stringa "Meadow" (senza distinzione tra maiuscole e minuscole). Ciò significa che potresti avere indirizzi con valori come "Meadows Lane", "Pinemeadow Place" o "Meadowlark St" che restituiscono corrispondenze positive.

Per eseguire operazioni di ricerca che coprono gli elementi contenuti all'interno di una risorsa a cui si fa riferimento, è possibile "concatenare" una serie di parametri insieme a .. Ad esempio, se si desidera visualizzare tutte le DiagnosticReport risorse con un subject riferimento a un paziente specificato da name, usare la query seguente.

 GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah

Questa richiesta restituisce tutte le DiagnosticReport risorse con un soggetto paziente denominato "Sarah". Punta . la ricerca concatenato all'elemento name all'interno della risorsa a cui si fa Patient riferimento.

Un altro uso comune della ricerca FHIR è trovare tutti gli incontri per un paziente specifico. Per eseguire una ricerca regolare (senza concatenamento) per Encounter le risorse che fanno riferimento a con Patient un oggetto specificato id , usare quanto segue.

GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

Usando la ricerca concatenato, è possibile trovare tutte le Encounter risorse che fanno riferimento ai pazienti i cui dettagli corrispondono a un parametro di ricerca. Nell'esempio seguente viene illustrato come cercare incontri che fanno riferimento a pazienti ristretti da birthdate.

GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20

Verranno restituite tutte le Encounter istanze che fanno riferimento ai pazienti con il valore specificato birthdate .

Inoltre, è possibile avviare più ricerche concatenati usando l'operatore & , che consente la ricerca su più riferimenti in una richiesta. Nei casi con &, la ricerca concatenata "in modo indipendente" esegue l'analisi di ogni valore dell'elemento.

GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Restituisce tutte le Patient risorse che hanno un riferimento a "Sarah" come più un generalPractitioner riferimento a un generalPractitioner che ha un indirizzo nello stato di Washington. In altre parole, se un paziente aveva un generalPractitioner nome Sarah dallo stato di New York e un altro generalPractitioner chiamato Bill dallo stato di Washington, entrambi soddisfano le condizioni per una corrispondenza positiva durante l'esecuzione di questa ricerca.

Per gli scenari in cui la ricerca richiede una condizione AND logica che controlla rigorosamente i valori degli elementi associati, vedere gli esempi di ricerca compositi seguenti.

L'uso della ricerca concatenato inversa in FHIR consente di cercare le istanze di risorse di destinazione a cui fanno riferimento altre risorse. In altre parole, è possibile cercare le risorse in base alle proprietà delle risorse a cui fanno riferimento. Questa operazione viene eseguita con il _has parametro . Ad esempio, la Observation risorsa ha un parametro patient di ricerca che controlla la presenza di un riferimento a una Patient risorsa. Per trovare tutte le Patient risorse a cui fa riferimento un oggetto Observation con un oggetto specifico code, usare il codice seguente.

GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527

Questa richiesta restituisce Patient risorse a cui fanno riferimento le Observation risorse con il codice 527.

Inoltre, la ricerca concatenato inversa può avere una struttura ricorsiva. Ad esempio, se si desidera cercare tutti i pazienti a cui fa riferimento un Observation oggetto a cui fa riferimento l'osservazione da un medico AuditEvent specifico denominato janedoe, usare:

GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Per cercare le risorse che contengono elementi raggruppati come coppie connesse logicamente, FHIR definisce la ricerca composita, che unisce i singoli valori dei parametri insieme all'operatore $ , formando una coppia di parametri connessa. In una ricerca composita, una corrispondenza positiva si verifica quando l'intersezione dei valori degli elementi soddisfa tutte le condizioni impostate nei parametri di ricerca abbinati. Nell'esempio seguente vengono eseguite query per tutte le DiagnosticReport risorse che contengono un valore di potassio minore di 9.2:

GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Gli elementi associati in questo caso sono l'elemento code (da una Observation risorsa a cui si fa riferimento come result) e l'elemento value connesso con .code Seguendo il codice con l'operatore $ imposta la value condizione come lt (per "minore di") 9.2 (per il valore mmol/L di potassio).

I parametri di ricerca compositi possono essere usati anche per filtrare più quantità di valori di codice del componente con un OR logico. Ad esempio, per eseguire una query per le osservazioni con pressione sanguigna diastolica maggiore di 90 OR pressione sanguigna systolica maggiore di 140:

GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140

Si noti come , funziona come operatore OR logico tra le due condizioni.

Visualizzare il set di voci successivo

Il numero massimo di risorse che è possibile restituire contemporaneamente da una query di ricerca è 1000. Tuttavia, potrebbero essere presenti più di 1.000 istanze di risorse che corrispondono alla query di ricerca e si vuole recuperare il set di risultati successivo dopo le prime 1.000 voci. In questo caso, si userà il valore del token url di continuazione (ovvero , "next") nel searchset bundle restituito dalla ricerca come indicato di seguito.

    "resourceType": "Bundle",
    "id": "98731cb7-3a39-46f3-8a72-afe945741bd9",
    "meta": {
        "lastUpdated": "2021-04-22T09:58:16.7823171+00:00"
    },
    "type": "searchset",
    "link": [
        {
            "relation": "next",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd"
        },
        {
            "relation": "self",
            "url": "{{FHIR_URL}}/Patient?_sort=_lastUpdated"
        }
    ],

Si effettua una GET richiesta per l'URL specificato:

GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Verrà restituito il set di voci successivo per i risultati della ricerca. Il searchset bundle è il set completo di voci dei risultati della ricerca e il token url di continuazione è il collegamento fornito dal servizio FHIR per recuperare le voci che non rientrano nel primo subset (a causa della restrizione sul numero massimo di voci restituite per una pagina).

Eseguire ricerche con POST

Tutti gli esempi di ricerca indicati qui usano GET le richieste. Tuttavia, è anche possibile effettuare chiamate API di ricerca FHIR usando POST con il _search parametro come indicato di seguito.

POST {{FHIR_URL}}/Patient/_search?_id=45

Questa richiesta restituisce l'istanza della Patient risorsa con il valore specificato id . Come per GET le richieste, il server determina quali istanze di risorse soddisfano le condizioni e restituisce un bundle nella risposta HTTP.

Un'altra funzionalità della ricerca con POST è che consente di inviare i parametri di query come corpo del modulo.

POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Passaggi successivi

In questo articolo è stata illustrata la ricerca in FHIR usando parametri di ricerca, modificatori e altri metodi. Per altre informazioni sulla ricerca FHIR, vedere

Nota

FHIR® è un marchio registrato di HL7 ed è usato con l'autorizzazione di HL7.