Esempi di ricerca FHIR

Di seguito sono riportati alcuni esempi di chiamate API di ricerca FHIR® (Fast Healthcare Interoperabil Resources) con vari parametri di ricerca, modificatori, ricerche concatenati e concatenati, ricerche composte, 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 istanze delle risorse e includere nei risultati altre risorse a cui fa riferimento le istanze delle risorse di destinazione. Ad esempio, è possibile usare _include per eseguire query per MedicationRequest le risorse e limitare la ricerca alle prescrizioni per un paziente specifico. Il servizio FHIR restituirà quindi le MedicationRequest risorse e la risorsa a Patient cui si fa riferimento. Nell'esempio seguente, la richiesta eseguirà il pull di tutte le istanze di risorse nel database e tutti i MedicationRequest pazienti a cui fa riferimento le MedicationRequest istanze:

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

Nota

Il servizio FHIR in Azure Health Data Services limita le ricerche con _include e _revinclude per restituire un massimo di 100 elementi.

_revinclude

_revinclude consente di cercare istanze delle risorse e includere nei risultati altre risorse che fanno riferimento alle istanze delle 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

Nella richiesta precedente si riceverà un bundle di pazienti, ma ogni voce includerà solo gli identificatori e lo stato attivo del paziente. Le voci nella risposta conterranno un meta.tag valore di SUBSETTED per 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 pazienti che non sono femminili:

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

In cambio, si otterrebbero tutte le Patient risorse il cui gender valore di elemento non femaleè , inclusi i pazienti senza alcun valore di genere specificato. Ciò è diverso dalla ricerca Patient di risorse con il male valore di genere, poiché ciò ignora 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 corrisponderà 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 chiamare:

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

:exact

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

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

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

:contains

:contains viene utilizzata per eseguire query per string gli elementi di tipo e consente la corrispondenza con il valore specificato ovunque all'interno del campo. contains è insensibile e riconosce le stringhe corrispondenti concatenate con altri caratteri. Ad esempio:

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

Questa richiesta restituisce tutte le Patient risorse con address campi di 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 riferimento a un subject paziente specificato da name:

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

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

Un altro uso comune della ricerca FHIR è trovare tutti gli incontri per un paziente specifico. Per eseguire una ricerca regolare (non concatenata) per Encounter le risorse che fanno riferimento a un Patient oggetto con un determinato id:

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

Usando la ricerca concatenata, è possibile trovare tutte le Encounter risorse che fanno riferimento ai pazienti i cui dettagli corrispondono a un parametro di ricerca. L'esempio seguente illustra come cercare incontri che fanno riferimento ai pazienti limitati da birthdate:

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

Ciò restituirà 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. In questi casi con &la ricerca concatenata "indipendentemente" analizza ogni valore dell'elemento:

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

Ciò restituirebbe tutte le Patient risorse che hanno un riferimento a "Sarah" come generalPractitioner un riferimento a un generalPractitioner oggetto 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 denominato Bill dallo stato di Washington, questo avrebbe soddisfatto le condizioni per una corrispondenza positiva quando si esegue questa ricerca.

Per gli scenari in cui la ricerca richiede una condizione AND logica che controlla rigorosamente i valori degli elementi associati, fare riferimento agli esempi di ricerca compositi riportati di seguito.

L'uso della ricerca concatenata inversa in FHIR consente di cercare istanze di risorse di destinazione a cui fa 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 verifica la presenza di un riferimento a una Patient risorsa. Per trovare tutte le Patient risorse a cui fa riferimento un oggetto Observation con una specifica code:

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

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

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

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

Per cercare risorse che contengono elementi raggruppati come coppie connesse logicamente, FHIR definisce la ricerca composita, che aggiunge i valori di singolo parametro insieme all'operatore $ , formando una coppia connessa di parametri. In una ricerca composita si verifica una corrispondenza positiva quando l'intersezione dei valori degli elementi soddisfa tutte le condizioni impostate nei parametri di ricerca associati. Ad esempio, se si desidera trovare 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 viene fatto 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 valore del codice componente con un OR logico. Ad esempio, per eseguire una query per le osservazioni con pressione sanguigna diastolica maggiore di 90 O pressione sanguigna systolic 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 possono essere restituite contemporaneamente da una query di ricerca è 1000. Tuttavia, potrebbero essere presenti più di 1000 istanze di risorsa che corrispondono alla query di ricerca e si vuole recuperare il set successivo di risultati dopo le prime 1000 voci. In tal caso, si userebbe il valore del token url di continuazione (ad esempio "next") nel searchset bundle restituito dalla ricerca:

    "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 fornito:

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

Verrà restituito il set successivo di voci per i risultati della ricerca. Il searchset bundle è il set completo di voci dei risultati di 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).

Ricerca con POST

Tutti gli esempi di ricerca indicati in precedenza usano GET le richieste. Tuttavia, è anche possibile effettuare chiamate API di ricerca FHIR usando POST il _search parametro:

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

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

Un'altra funzionalità di 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

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