Partager via


Exemples de recherches FHIR pour l’API Azure pour FHIR

Important

L’API Azure pour FHIR sera mise hors service le 30 septembre 2026. Suivez les stratégies de migration pour passer au service FHIR® de Services de données de santé Azure d’ici à cette date. En raison de la mise hors service de l’API Azure pour FHIR, les nouveaux déploiements ne seront plus autorisés à compter du 1er avril 2025. Le service FHIR des Services de données de santé Azure est la version évoluée de l’API Azure pour FHIR qui permet aux clients de gérer les services FHIR, DICOM et MedTech avec des intégrations dans d’autres services Azure.

Voici des exemples d’utilisation des opérations de recherche FHIR® (Fast Healthcare Interoperability Resources), notamment les paramètres de recherche et les modificateurs, la recherche chaîne et inverse, la recherche composite, l’affichage de l’ensemble d’entrées suivant pour les résultats de la recherche et la recherche avec une POST requête. Pour plus d’informations sur la recherche, consultez Vue d’ensemble de la recherche FHIR.

Paramètres des résultats de la recherche

_include

_include recherche les ressources qui incluent le paramètre spécifié de la ressource. Par exemple, vous pouvez rechercher parmi les ressources MedicationRequest pour trouver uniquement celles qui incluent des informations sur les prescriptions d’un patient spécifique, qui est le paramètre reference patient. L’exemple suivant extrait tous les MedicationRequests patients référencés à partir du MedicationRequests.

 GET [your-fhir-server]/MedicationRequest?_include=MedicationRequest:patient

Remarque

_include et _revinclude sont limités à 100 éléments.

_revinclude

_revinclude vous permet de rechercher la direction opposée en tant que _include. Par exemple, vous pouvez rechercher des patients, puis inverser l’ensemble des rencontres qui référencent les patients :

GET [your-fhir-server]/Patient?_revinclude=Encounter:subject

_elements

_elements limite le résultat de la recherche à un sous-ensemble de champs pour réduire la taille de la réponse en omettant les données inutiles. Le paramètre accepte une liste séparée par des virgules d’éléments de base.

GET [your-fhir-server]/Patient?_elements=identifier,active

À partir de cette demande, vous obtenez un ensemble de patients où chaque ressource inclut uniquement les identificateurs et l’état actif du patient. Les ressources de cette réponse contiennent une meta.tag valeur permettant d’indiquer SUBSETTED qu’elles sont un ensemble incomplet de résultats.

Modificateurs de recherche

:not

:not vous permet de trouver des ressources où un attribut n’est pas true. Par exemple, vous pouvez rechercher des patients où le sexe n’est pas féminin.

GET [your-fhir-server]/Patient?gender:not=female

En tant que valeur de retour, vous obtenez toutes les entrées de patients dont le sexe n’est pas féminin, y compris les valeurs vides (entrées spécifiées sans sexe). Cela diffère de la recherche de patients dont le sexe est masculin, car cela n’inclurait pas les entrées sans sexe spécifique.

:missing

:missing retourne toutes les ressources qui n’ont pas de valeur pour l’élément spécifié lorsque la valeur est true, et retourne toutes les ressources qui contiennent l’élément spécifié lorsque la valeur est false. Pour les éléments de type de données simples, :missing=true correspond à toutes les ressources où l’élément est présent avec des extensions, mais a une valeur vide. L’exemple suivant montre comment rechercher toutes les Patient ressources manquantes lors de la date de naissance.

GET [your-fhir-server]/Patient?birthdate:missing=true

:exact

:exact est utilisé pour les paramètres string et retourne des résultats qui correspondent précisément au paramètre, notamment au niveau de la casse et des caractères concaténés.

GET [your-fhir-server]/Patient?name:exact=Jon

Cette requête retourne des ressources Patient qui ont exactement le même nom que Jon. Si la ressource avait des patients avec des noms tels que Jonathan ou joN, la recherche ignore la ressource, car elle ne correspond pas exactement à la valeur spécifiée.

:contains

:contains est utilisé pour les paramètres string et recherche des ressources avec des correspondances partielles de la valeur spécifiée n’importe où dans la chaîne dans le champ recherché. contains n’est pas sensible à la casse et autorise la concaténation de caractères. Par exemple :

GET [your-fhir-server]/Patient?address:contains=Meadow

Cette requête retourne toutes les Patient ressources avec address des champs qui ont des valeurs qui contiennent la chaîne « Meadow ». Cela signifie que vous pourriez avoir des adresses qui incluent des valeurs telles que « Meadowers » ou « 59 Meadow ST » retournées en tant que résultats de recherche.

Pour effectuer une série d’opérations de recherche qui couvrent plusieurs paramètres de référence, vous pouvez mettre en chaîne la série de paramètres de référence en les ajoutant à la demande de serveur un par un à l’aide d’un point .. Par exemple, si vous souhaitez afficher toutes les ressources DiagnosticReport avec une référence subject à une ressource Patient qui inclut un name particulier :

 GET [your-fhir-server]/DiagnosticReport?subject:Patient.name=Sarah

Cette demande retournerait toutes les ressources DiagnosticReport avec un sujet patient nommé « Sarah ». Le point . après que le champ Patient effectue la recherche chaînée sur le paramètre de référence du paramètre subject.

Une autre utilisation courante d’une recherche régulière (pas une recherche chaînée) recherche toutes les rencontres pour un patient spécifique. Patientont souvent un ou plusieurs Encounters avec un sujet. L’exemple suivant recherche toutes les Encounter ressources pour un Patient avec le fichier fourni id.

GET [your-fhir-server]/Encounter?subject=Patient/78a14cbe-8968-49fd-a231-d43e6619399f

À l’aide de la recherche chaînée, vous pouvez trouver toutes les Encounter ressources qui correspondent à un élément d’information Patient particulier, tel que le birthdate.

GET [your-fhir-server]/Encounter?subject:Patient.birthdate=1987-02-20

Cela permettrait de rechercher Encounter des ressources sur tous les patients qui ont la valeur de date de naissance spécifiée.

En outre, la recherche chaînée peut être effectuée plusieurs fois dans une requête à l’aide du symbole &, ce qui vous permet de rechercher plusieurs conditions dans une requête. Dans ce cas, la recherche chaînée « indépendamment » recherche chaque paramètre, au lieu de rechercher des conditions qui répondent uniquement à toutes les conditions à la fois :

GET [your-fhir-server]/Patient?general-practitioner:Practitioner.name=Sarah&general-practitioner:Practitioner.address-state=WA

Cela retournerait toutes les ressources Patient qui ont « Sarah » comme generalPractitioner et ont un(e) generalPractitioner qui est l’adresse dont l’état est Washington. En d’autres termes, si un patient avait Sarah de l’état NY et Bill de l’état WA tous deux référencés comme le generalPractitionerpatient, les deux sont retournés.

Pour les scénarios dans lesquels la recherche doit être une AND opération qui couvre toutes les conditions en tant que groupe, reportez-vous à l’exemple de recherche composite.

La recherche en chaîne vous permet de rechercher des ressources en fonction des propriétés des ressources auxquelles elles font référence. L’utilisation de la recherche en chaîne inverse vous permet de le faire de l’autre façon. Vous pouvez rechercher des ressources en fonction des propriétés des ressources qui y font référence, à l’aide du paramètre _has. Par exemple, une Observation ressource a un paramètre patient de recherche faisant référence à une ressource patient. Utilisez ce qui suit pour rechercher toutes les ressources patient référencées par Observation un élément spécifique code.

GET [base]/Patient?_has:Observation:patient:code=527

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

En outre, la recherche chaînée inverse peut avoir une structure récursive. Par exemple, les recherches suivantes recherchent tous les patients qui ont Observation l’endroit où l’observation a un événement d’audit d’un utilisateur janedoespécifique.

GET [base]/Patient?_has:Observation:patient:_has:AuditEvent:entity:agent:Practitioner.name=janedoe

Remarque

Dans l’API Azure pour FHIR et le serveur FHIR open source soutenus par Azure Cosmos DB, la recherche chaînée et la recherche en chaînée inversée sont une implémentation MVP. Pour effectuer une recherche chaînée sur Azure Cosmos DB, l’implémentation décrit l’expression de recherche et émet des sous-requêtes pour résoudre les ressources mises en correspondance. Cette opération est effectuée pour chaque niveau de l’expression. Si une requête retourne plus de 100 résultats, une erreur est levée.

Pour rechercher des ressources qui répondent à plusieurs conditions à la fois, utilisez une recherche composite qui joint une séquence de valeurs de paramètre unique avec un symbole $. Le résultat est l’intersection des ressources qui correspondent à toutes les conditions spécifiées par les paramètres de recherche joints. Ces paramètres de recherche sont appelés des paramètres de recherche composites et ils définissent un nouveau paramètre qui combine les différents paramètres dans une structure imbriquée. Par exemple, la recherche suivante recherche toutes les DiagnosticReport ressources qui contiennent Observation une valeur de potassium inférieure ou égale à 9,2.

GET [your-fhir-server]/DiagnosticReport?result.code-value-quantity=2823-3$lt9.2

Cette requête spécifie le composant contenant un code de 2823-3, qui dans ce cas serait du potassium. Après le symbole $, il spécifie la plage de la valeur du composant à l’aide de lt pour « inférieur ou égal à » et 9.2 pour la plage de valeurs de potassium.

Rechercher le jeu d’entrées suivant

Le nombre maximal d’entrées pouvant être retournées par une requête de recherche unique est de 1 000. Si plus de 1 000 entrées correspondent à la requête de recherche, vous pouvez utiliser la procédure suivante pour afficher les entrées supérieures à 1 000.
Utilisez la valeur du jeton url de continuation dans searchset, comme dans le résultat suivant Bundle .

    "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"
        }
    ],

Effectuez ensuite une requête GET pour l’URL fournie sous le champ relation: next.

GET [your-fhir-server]/Patient?_sort=_lastUpdated&ct=WzUxMDAxNzc1NzgzODc5MjAwODBd

Cela retourne le jeu d’entrées suivant pour votre résultat de recherche. Il searchset s’agit de l’ensemble complet d’entrées de résultats de recherche, et le jeton url de continuation est le lien fourni par le serveur pour récupérer les entrées qui ne s’affichent pas dans les 1 000 premiers.

Rechercher à l’aide de POST

Tous les exemples de recherche mentionnés précédemment ont été utilisés GET . Vous pouvez également effectuer des opérations de recherche à l’aide de requêtes à l’aide POST de _search.

POST [your-fhir-server]/Patient/_search?_id=45

Cette requête retourne Patient des ressources avec la id valeur 45. Comme pour les requêtes GET, le serveur détermine quel de l’ensemble de ressources répond à la condition et retourne une ressource groupée dans la réponse HTTP.

Un autre exemple de recherche à l’aide de POST où les paramètres de requête sont envoyés en tant que corps de formulaire est le suivant.

POST [your-fhir-server]/Patient/_search
content-type: application/x-www-form-urlencoded

name=John

Étapes suivantes

Dans cet article, vous avez découvert comment effectuer des recherches à l’aide de différents paramètres de recherche, modificateurs et outils de recherche FHIR. Pour plus d'informations sur la recherche FHIR, voir

Remarque

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