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.
Ricerca concatenata
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.
Ricerca concatenata inversa
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
Ricerca composita
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.