Share via


Exemples de recherche FHIR

Vous trouverez ci-dessous quelques exemples d’appels d’API de recherche FHIR® (Fast Healthcare Interoperability Resources) avec différents paramètres de recherche, modificateurs, recherches chaînées et chaînées inversées, recherches composites, POST demandes de recherche, etc. Pour 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 ressource cible. Par exemple, vous pouvez utiliser _include pour MedicationRequest rechercher des ressources et limiter la recherche aux ordonnances d’un patient spécifique. Le service FHIR retourne ensuite les MedicationRequest ressources ainsi que la ressource référencée Patient . Dans l’exemple ci-dessous, la demande 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

Notes

Le service FHIR dans Azure Health Data Services limite les recherches avec _include et _revinclude à retourner 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 ressource cible. 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 restreint 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

Dans la demande ci-dessus, vous recevrez un lot de patients, mais chaque entrée n’inclura que les identificateurs et l’état actif du patient. Les entrées de la réponse contiennent une meta.tag valeur de SUBSETTED pour indiquer 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 ressources dont gender la Patient valeur d’élément n’est pas female, y compris les patients sans valeur de sexe spécifiée. Cela est différent 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é lorsque :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 dont la valeur est vide. Par exemple, si vous souhaitez rechercher toutes les Patient ressources qui manquent d’informations sur birthdate, vous pouvez appeler :

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 exactement à la casse et à la séquence de caractères complète de la valeur de l’élément.

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

Cette requête retourne des Patient ressources qui ont le given nom ou family de Jon. 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 les string éléments de type et autorise les 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 des champs d’élément address qui contiennent la chaîne « Meadow » (sans respect de la casse). Cela signifie que vous pouvez avoir des adresses avec des valeurs telles que « Meadows Lane », « Pinemeadow Place » ou « Meadowlark St » qui retournent des correspondances positives.

Pour effectuer des opérations de recherche qui couvrent des é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:

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

Cette demande retournerait toutes les DiagnosticReport ressources avec un sujet patient nommé « Sarah ». Pointe . la recherche chaînée vers l’élément name au sein de la ressource référencée Patient .

Une autre utilisation courante de la recherche FHIR est la recherche de toutes les rencontres pour un patient spécifique. Pour effectuer une recherche régulière (non chaînée) de Encounter ressources qui référencent un Patient avec un donné id:

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

À l’aide de la recherche chaînée, vous pouvez trouver toutes les Encounter ressources qui référencent des patients dont les détails correspondent à un paramètre de recherche. L’exemple ci-dessous montre comment rechercher des rencontres référençant des patients restreints par birthdate:

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

Cela retourne toutes les instances qui référencent des 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 & , qui permet de rechercher plusieurs références dans une seule requête. Dans ce cas, avec &, la recherche chaînée analyse « indépendamment » pour chaque valeur d’élément :

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

Cela retournerait toutes les Patient ressources qui ont une référence à « Sarah » en plus generalPractitioner une référence à un generalPractitioner qui a une adresse dans l’État de Washington. En d’autres termes, si un patient avait une generalPractitioner Sarah nommée de l’État de New York et un autre generalPractitioner nommé Bill de l’État de Washington, cela remplirait les 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éments jumelés, reportez-vous aux exemples de recherche composite ci-dessous.

L’utilisation de la recherche 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 y font référence. Cette opération est effectuée 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 avec un spécifique code:

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

Cette requête retourne les Patient ressources référencées par Observation les ressources avec le code 527.

En outre, la recherche 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 un Observation , où l’observation est référencée par un d’un AuditEvent praticien spécifique nommé janedoe:

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

Pour rechercher des ressources qui contiennent des éléments regroupés sous forme de paires logiquement connectées, FHIR définit la recherche composite, qui joint des valeurs de paramètre uniques à l’opérateur $ , formant une paire de paramètres connectée. Dans une recherche composite, une correspondance positive se produit lorsque l’intersection de valeurs d’élément satisfait à toutes les conditions définies dans les paramètres de recherche associés. Par exemple, si vous souhaitez rechercher 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 associés dans ce cas sont l’élément code (à partir d’une Observation ressource référencée comme le result) et l’élément value connecté à .code En suivant le code avec l’opérateur $ , la value condition est définie sur 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 interroger les observations avec une pression artérielle diastolique supérieure à 90 OU une 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 en tant qu’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 1000. 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 utilisez la valeur du jeton url de continuation (c’est-à-dire "next") dans le searchset bundle retourné par la recherche :

    "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 demander GET l’URL fournie :

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

Cela retournerait l’ensemble d’entrées suivant pour vos résultats de recherche. L’offre searchset groupée 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 ci-dessus utilisent GET des demandes. Toutefois, vous pouvez également effectuer des appels d’API de recherche FHIR à l’aide POST du _search paramètre :

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

Cette requête retourne l’instance de Patient 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 retourne un bundle dans la réponse HTTP.

Une autre fonctionnalité de la recherche avec POST est qu’elle vous permet d’envoyer les paramètres de requête sous forme de 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

FHIR® est une marque déposée de HL7 utilisé avec l’autorisation de HL7.