Share via


Esempi di ricerca FHIR per l'API di Azure per FHIR

Di seguito sono riportati alcuni esempi di utilizzo delle operazioni di ricerca FHIR® (Fast Healthcare Interoperability Resources), tra cui 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

_Includono

_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, verrà eseguito il pull di MedicationRequests tutti i 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

In questa richiesta si otterrà un bundle di pazienti, ma ogni risorsa includerà solo gli identificatori e lo stato attivo del paziente. Le risorse in questa risposta restituita conterranno un meta.tag valore pari SUBSETTED a per indicare che sono un set di risultati incompleto.

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 i 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 semplici elementi del tipo di dati, :missing=true corrisponderà a tutte le risorse in cui l'elemento è presente con estensioni, ma ha un valore vuoto. Ad esempio, se si desidera trovare tutte le Patient risorse che mancano informazioni sulla data di nascita, è possibile eseguire le operazioni seguenti:

GET [your-fhir-server]/Patient?birthdate:missing=true

:Esatta

: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 con il nome esattamente uguale a Jon. Se la risorsa contiene Pazienti con nomi come Jonathan o joN, la ricerca ignora 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 restituisce tutte le Patient risorse con campi con address 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 per uno 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:

 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. Patients avrà spesso uno o più Encounterelementi con un soggetto. Per cercare 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 informazione Patient , ad esempio birthdate:

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Ciò consentirebbe non solo di cercare Encounter risorse per un singolo paziente, ma 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 le 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 indirizzo con il wa di stato. In altre parole, se un paziente aveva Sarah dallo stato NY e Bill dal WA di stato entrambi fatto riferimento come il paziente generalPractitioner, il verrebbe restituito.

Per gli scenari in cui la ricerca deve essere un'operazione AND che copre tutte le condizioni come gruppo, fare riferimento all'esempio di ricerca composita seguente.

La ricerca concatena consente di cercare le risorse in base alle proprietà delle risorse a cui fanno riferimento. L'uso della ricerca con catena inversa consente di eseguire l'operazione in altro modo. È possibile cercare le risorse in base alle proprietà delle risorse a cui fanno riferimento, usando il _has parametro . Ad esempio, Observation la risorsa ha un parametro patient di ricerca che fa riferimento a una risorsa Paziente. Per trovare tutte le risorse dei pazienti a cui viene fatto Observation riferimento con un oggetto specifico code:

GET [base]/Patient?_has:Observation:patient:code=527

Questa richiesta restituisce le risorse paziente a cui viene fatto riferimento Observation con il codice 527.

Inoltre, la ricerca a catena inversa può avere una struttura ricorsiva. Ad esempio, se si vuole cercare tutti i pazienti in Observation cui l'osservazione ha un evento di controllo da un utente janedoespecifico, è possibile eseguire le operazioni seguenti:

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 concatenata inversa è un'implementazione MVP. Per eseguire la 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 la ricerca composita che unisce una sequenza di valori di singolo parametro con un simbolo $. Il risultato restituito 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 nidificata. Ad esempio, se si desidera trovare 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 possono essere restituite per ogni singola query di ricerca è 1000. Tuttavia, potrebbero essere presenti più di 1000 voci che corrispondono alla query di ricerca e potrebbe essere necessario visualizzare il set successivo di voci dopo le prime 1000 voci restituite. In questo caso, si userà il valore del Bundle token url di continuazione in searchset come nel risultato seguente:

    "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"
        }
    ],

Si eseguirà inoltre una richiesta GET per l'URL fornito nel campo relation: next:

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Verrà restituito il set successivo di voci per il risultato della ricerca. searchset è il set completo di voci dei risultati di ricerca e il token url di continuazione è il collegamento fornito dal server per recuperare le voci che non vengono visualizzate nel primo set perché la restrizione sul numero massimo di voci restituite per una query di ricerca.

Eseguire ricerche con POST

Tutti gli esempi di ricerca indicati in precedenza hanno usato GET le richieste. È anche possibile eseguire operazioni di ricerca usando POST le richieste usando _search:

POST [your-fhir-server]/Patient/_search?_id=45

Questa richiesta restituirà tutte le Patient risorse con il id valore 45. Come nelle richieste GET, il server determina quale set di risorse soddisfa le condizioni 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 è:

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

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