Exemples de recherche FHIR
Voici des exemples d’appels d’API de recherche Fast Healthcare Interopérabilité Resources (FHIR®) avec différents paramètres de recherche, modificateurs, recherches chaînées et inversées, recherches composites, POST
requêtes de recherche, etc. Pour obtenir une présentation générale des concepts de recherche FHIR, consultez Vue d’ensemble de la recherche FHIR.
Paramètres des résultats de la recherche
_include
_include
vous permet de rechercher des instances de ressources et d’inclure dans les résultats d’autres ressources référencées par les instances de ressources cibles. Par exemple, vous pouvez utiliser _include
pour rechercher MedicationRequest
des ressources et limiter la recherche aux prescriptions d’un patient spécifique. Le service FHIR retourne ensuite les MedicationRequest
ressources et la ressource référencée Patient
. Dans l’exemple suivant, la requête extrait toutes les MedicationRequest
instances de ressources de la base de données et tous les patients référencés par les MedicationRequest
instances.
GET {{FHIR_URL}}/MedicationRequest?_include=MedicationRequest:patient
Remarque
Le service FHIR dans Azure Health Data Services limite les recherches et _include
_revinclude
retourne un maximum de 100 éléments.
_revinclude
_revinclude
vous permet de rechercher des instances de ressources et d’inclure dans les résultats d’autres ressources qui référencent les instances de ressources cibles. Par exemple, vous pouvez rechercher des patients, puis inverser l’ensemble des rencontres qui référencent les patients.
GET {{FHIR_URL}}/Patient?_revinclude=Encounter:subject
_elements
_elements
limite les informations contenues dans les résultats de la recherche à un sous-ensemble des éléments définis pour un type de ressource. Le _elements
paramètre accepte une liste séparée par des virgules d’éléments de base.
GET {{FHIR_URL}}/Patient?_elements=identifier,active
La demande précédente retourne un ensemble de patients. Chaque entrée inclut uniquement les identificateurs et l’état actif du patient. Les entrées de la réponse contiennent une meta.tag
valeur indiquant SUBSETTED
que tous les éléments définis pour la ressource ne sont pas inclus.
Modificateurs de recherche
:not
:not
vous permet de rechercher des ressources avec un élément qui n’a pas de valeur donnée. Par exemple, vous pouvez rechercher des patients qui ne sont pas des femmes.
GET {{FHIR_URL}}/Patient?gender:not=female
En retour, vous obtenez toutes les Patient
ressources dont gender
la valeur d’élément n’est pas female
, y compris les patients sans valeur de genre spécifiée. Cela diffère de la recherche Patient
de ressources avec la male
valeur de genre, car cela ignorerait les patients sans sexe spécifié.
:missing
:missing
retourne toutes les ressources qui n’ont pas de valeur pour l’élément spécifié quand :missing=true
. En outre, :missing
retourne toutes les ressources qui contiennent l’élément spécifié lorsque :missing=false
. Pour les éléments de type de données simples, :missing=true
correspond à toutes les ressources où un élément est présent, mais a une valeur vide. Par exemple, si vous souhaitez rechercher toutes les Patient
ressources qui manquent d’informations, birthdate
vous pouvez effectuer l’appel suivant.
GET {{FHIR_URL}}/Patient?birthdate:missing=true
:exact
:exact
est utilisé pour rechercher des éléments avec string
des types de données et retourne positif si la valeur du paramètre correspond précisément à la casse et à la séquence de caractères complète de la valeur d’élément.
GET {{FHIR_URL}}/Patient?name:exact=Jon
Cette requête retourne Patient
des ressources dont le nom ou family
le given
nom Jon
est . S’il y avait des patients avec des noms tels que Jonathan
ou JON
, la recherche ignorerait ces ressources, car leurs noms ne correspondent pas exactement à la valeur spécifiée.
:contains
:contains
est utilisé pour interroger des string
éléments de type et permet des correspondances avec la valeur spécifiée n’importe où dans le champ. contains
ne respecte pas la casse et reconnaît les chaînes correspondantes concaténées avec d’autres caractères. Par exemple :
GET {{FHIR_URL}}/Patient?address:contains=Meadow
Cette requête retourne toutes les Patient
ressources avec address
des champs d’élément qui contiennent la chaîne « Meadow » (qui ne respecte pas la casse). Cela signifie que vous pourriez avoir des adresses avec des valeurs telles que « Meadows Lane », « Pinemeadow Place » ou « Meadowlark St » qui retournent des correspondances positives.
Recherche chaînée
Pour effectuer des opérations de recherche qui couvrent les éléments contenus dans une ressource référencée, vous pouvez « chaîner » une série de paramètres avec .
. Par exemple, si vous souhaitez afficher toutes les DiagnosticReport
ressources avec une subject
référence à un patient spécifié par name
, utilisez la requête suivante.
GET {{FHIR_URL}}/DiagnosticReport?subject:Patient.name=Sarah
Cette demande retourne toutes les DiagnosticReport
ressources avec un sujet patient nommé « Sarah ». Pointe .
la recherche chaînée vers l’élément name
dans la ressource référencée Patient
.
Une autre utilisation courante de la recherche FHIR consiste à trouver toutes les rencontres pour un patient spécifique. Pour effectuer une recherche régulière (non chaînée) pour Encounter
rechercher les ressources qui font référence à une Patient
utilisation donnée id
, procédez comme suit.
GET {{FHIR_URL}}/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f
À l’aide de la recherche chaînée, vous pouvez trouver toutes les ressources qui référencent les Encounter
patients dont les détails correspondent à un paramètre de recherche. L’exemple suivant montre comment rechercher des rencontres référençant les patients restreints par birthdate
.
GET {{FHIR_URL}}/Encounter?subject:Patient.birthdate=1987-02-20
Cela retourne toutes les instances qui référencent les Encounter
patients avec la valeur spécifiée birthdate
.
En outre, vous pouvez lancer plusieurs recherches chaînées à l’aide de l’opérateur &
, ce qui permet de rechercher plusieurs références dans une requête. Dans les cas où &
la recherche chaînée « indépendamment » analyse chaque valeur d’élément.
GET {{FHIR_URL}}/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA
Cela renvoie toutes les Patient
ressources qui ont une référence à « Sarah » comme generalPractitioner
une référence plus une référence à un generalPractitioner
qui a une adresse dans l’état de Washington. En d’autres termes, si un patient avait un generalPractitioner
nom Sarah de l’état de New York et un autre generalPractitioner
nommé Bill de l’État de Washington, les deux répondraient aux conditions d’une correspondance positive lors de cette recherche.
Pour les scénarios dans lesquels la recherche nécessite une condition AND logique qui vérifie strictement les valeurs d’élément jumelées, reportez-vous aux exemples de recherche composites suivants.
Recherche en chaînée inversée
L’utilisation de la recherche en chaînée inversée dans FHIR vous permet de rechercher des instances de ressources cibles référencées par d’autres ressources. En d’autres termes, vous pouvez rechercher des ressources en fonction des propriétés des ressources qui les font référence. Cela s’effectue avec le _has
paramètre. Par exemple, la Observation
ressource a un paramètre patient
de recherche qui recherche une référence à une Patient
ressource. Pour rechercher toutes les Patient
ressources référencées par un Observation
code spécifique code
, utilisez le code suivant.
GET {{FHIR_URL}}/Patient?_has:Observation:patient:code=527
Cette requête retourne Patient
des ressources référencées par Observation
des ressources avec le code 527
.
En outre, la recherche en chaînée inversée peut avoir une structure récursive. Par exemple, si vous souhaitez rechercher tous les patients référencés par une Observation
observation référencée par un AuditEvent
médecin spécifique nommé janedoe
, utilisez :
GET {{FHIR_URL}}/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe
Recherche composite
Pour rechercher des ressources qui contiennent des éléments regroupés en tant que paires connectées logiquement, FHIR définit la recherche composite, qui joint des valeurs de paramètre uniques avec l’opérateur $
, formant une paire de paramètres connectée. Dans une recherche composite, une correspondance positive se produit lorsque l’intersection des valeurs d’élément satisfait à toutes les conditions définies dans les paramètres de recherche jumelés. L’exemple suivant interroge toutes les DiagnosticReport
ressources qui contiennent une valeur de potassium inférieure 9.2
à :
GET {{FHIR_URL}}/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2
Les éléments jumelés dans ce cas seraient l’élément (d’une Observation
ressource référencée en tant que result
) et l’élément value
connecté au code
.code
Suivant le code avec l’opérateur $
définit la value
condition comme lt
(pour « inférieur à ») 9.2
(pour la valeur mmol/L de potassium).
Les paramètres de recherche composite peuvent également être utilisés pour filtrer plusieurs quantités de valeurs de code de composant avec une OR logique. Par exemple, pour rechercher des observations avec une pression artérielle diastolique supérieure à 90 OR pression artérielle systolique supérieure à 140 :
GET {{FHIR_URL}}/Observation?component-code-value-quantity=http://loinc.org|8462-4$gt90,http://loinc.org|8480-6$gt140
Notez comment ,
fonctionne l’opérateur OR logique entre les deux conditions.
Afficher le jeu d’entrées suivant
Le nombre maximal de ressources pouvant être retournées à la fois à partir d’une requête de recherche est de 1 000. Toutefois, vous pouvez avoir plus de 1 000 instances de ressources qui correspondent à la requête de recherche, et vous souhaitez récupérer le jeu de résultats suivant après les 1 000 premières entrées. Dans ce cas, vous allez utiliser la valeur de jeton url
de continuation (autrement dit, "next"
) dans le searchset
bundle retourné par la recherche comme suit.
"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"
}
],
Vous devez effectuer une GET
demande pour l’URL fournie :
GET {{FHIR_URL}}/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd
Cela retourne le jeu d’entrées suivant pour vos résultats de recherche. Le searchset
bundle est l’ensemble complet d’entrées de résultats de recherche et le jeton url
de continuation est le lien fourni par le service FHIR pour récupérer les entrées qui ne correspondent pas au premier sous-ensemble (en raison de la restriction sur le nombre maximal d’entrées retournées pour une page).
Rechercher à l’aide de POST
Tous les exemples de recherche mentionnés ici utilisent GET
des demandes. Toutefois, vous pouvez également effectuer des appels d’API de recherche FHIR à l’aide POST
du _search
paramètre comme suit.
POST {{FHIR_URL}}/Patient/_search?_id=45
Cette requête retourne l’instance Patient
de ressource avec la valeur donnée id
. Comme pour GET
les requêtes, le serveur détermine quelles instances de ressources répondent aux conditions et retournent un bundle dans la réponse HTTP.
Une autre fonctionnalité de recherche est POST
qu’elle vous permet d’envoyer les paramètres de requête en tant que corps de formulaire.
POST {{FHIR_URL}}/Patient/_search
content-type: application/x-www-form-urlencoded
name=John
Étapes suivantes
Dans cet article, vous avez découvert la recherche dans FHIR à l’aide de paramètres de recherche, de modificateurs et d’autres méthodes. Pour plus d’informations sur la recherche FHIR, consultez
Remarque
FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.