Partage via


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, birthdatevous 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 Jonest . 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.

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.

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

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.