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.
Recherche chaînée
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. Patient
ont souvent un ou plusieurs Encounter
s 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 generalPractitioner
patient, 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.
Recherche en chaîne inversée
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 janedoe
spé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.
Recherche composite
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.