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 è true
e 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.
Ricerca concatenata
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.
Patient
s avrà spesso uno o più Encounter
elementi 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.
Ricerca con catena inversa
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 janedoe
specifico, è 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.
Ricerca composita
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.