Mappages de la boîte à outils d’intégration des données : exemples et cas d’utilisation
La boîte à outils d’intégration des données fournit une collection extensive de mappages par défaut créés pour être conformes à la spécification HL7 FHIR.
Les mappages d’entités et les mappages d’attributs par défaut se déploient en tant qu’enregistrements Dataverse et sont hautement configurables pour répondre aux exigences de votre solution. Cet article comprend quelques exemples associés à l’utilisation de ces mappages.
Pour plus d’informations sur la configuration de ces mappages, consultez Configurer les mappages d’entités et Configurer les mappages d’attributs. Les Dataverse Healthcare API, le processus d’écriture différée et les tables de données de santé virtuelles utilisent les mêmes mappages configurés.
Exemples de mappages d’entités
Cette section répertorie des exemples d’utilisation de mappages d’entités.
Exemple 1 : consultation patient
Lorsque vous ajoutez une consultation avec un patient au DSE (dossiers de santé électroniques) du patient, le mappage d’entité fournit les règles de transformation dont les Dataverse Healthcare API ont besoin pour transformer FHIR en enregistrements Dataverse.
Le mappage d’entités msemr_encounter ↔ Rendez-vous connecte la ressource Azure FHIR Rendez-vous à l’entité Dataverse msemr_encounter.
Les modifications de données dans la ressource Rendez-vous sur le système de dossier de santé du client déclenchent un nouveau message dans les Dataverse Healthcare API. Par exemple, si Dataverse Healthcare API Azure Logic App est déployé à l’aide du Modèle de pipeline de données de soins de santé, un nouveau pack FHIR est publié dans le stockage d’objets blob. L’application logique traite ensuite ce pack et le publie dans Dataverse via les Dataverse Healthcare API.
Les Dataverse Healthcare API utilisent le mappage d’entités msemr_encounter ↔ Rendez-vous. Les mappages d’attributs associés transforment les ressources FHIR entrantes en leurs enregistrements représentatifs dans Dataverse.
Exemple 2 : mise à jour du patient dans Dataverse et écriture différée
Cet exemple considère un scénario dans lequel vous mettez à jour un dossier patient dans Dataverse et souhaitez que cette modification soit réécrite dans votre système DME (dossiers médicaux électroniques) via les Services de données de santé Azure.
Le mappage d’entités de la boîte à outils d’intégration des données contact ↔ Patient associe la ressource Azure FHIR Patient à l’entité Dataverse Contact.
Un changement de données dans un dossier patient dans Dataverse déclenche un plug-in d’écriture différée Dataverse.
Ce plug-in Dataverse envoie un message concernant l’enregistrement modifié au point de terminaison du FHIR sortant configuré dans la section d’écriture différée des paramètres d’intégration.
Dans cet exemple, le point de terminaison du FHIR est configuré pour valider directement sur les services de données de santé Azure.
Vous pouvez également configurer une application de relais, comme une application logique Azure ou une fonction Azure, qui peut publier le message à la fois dans votre service DME et dans les services de données de santé Azure.
Remarque
Nous vous recommandons de garder les données des patients, des médecins, ainsi que les données cliniques gérées et référencées synchronisées avec Microsoft Cloud for Healthcare.
Pour plus d’informations sur la configuration de l’écriture différée, accédez à Vue d’ensemble de l’écriture différée pour les Dataverse Healthcare API.
Exemples de mappages d’attributs
Cette section inclut des exemples pour configurer différents types de mappages d’attributs que vous pourriez rencontrer.
Exemple 1 : champ existant de chaîne simple
L’exemple suivant obtient la valeur du nom d’un patient de FHIR pour l’envoyer à Dataverse ou met à jour la valeur d’attribut lastname
de Dataverse sur l’élément family
dans FHIR.
`{"s": "$.name[?(@.use=='usual')].family"}`
Ce mappage suppose que la valeur name
existe toujours et peut être localisée via le JSONPath défini sur la ressource FHIR.
Exemple 2 : champ existant ou non existant
L’exemple suivant obtient ou met à jour le champ city
de address[0]
s’il existe. Si cette mise à jour provenait de Dataverse et que address[0]
n’existait pas dans FHIR, cela crée un address[0]
parent et définit la valeur city
de Dataverse. Cela crée également des valeurs d’espace réservé ou par défaut pour d’autres attributs à partir de Dataverse qui pourraient manquer dans FHIR.
{
"s": "$.address[0].city",
"c": {
"p": "address[0]",
"a": [
{
"line": ["x"]
},
{
"city": "%"
},
{
"state": "x"
},
{
"postalCode": "x"
},
{
"country": "x"
}
]
}
}
Remarque
Pour les valeurs de chaîne, l’ensemble de valeurs est la chaîne littérale définie dans le tableau d’attributs, sauf s’il s’agit de l’une des séquences de caractères spéciaux. Ces séquences de caractères spéciaux sont remplacées par des valeurs comme suit :
- % – Copier la valeur de l’attribut Dataverse.
- %% - Copier le type de la ressource de référence FHIR (exemple, Patient).
- %%% – Copier le type et l’ID de la ressource de référence FHIR (exemple, Patient/1234).
Exemple 3 : nom du patient
Appliquez les règles de la section précédente et utiliser l’exemple suivant pour mettre à jour le nom du patient.
{"s": "$.name[?(@use=='official')].given[0]", "c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]} }
- "s" = Extraire le
given name
d’un patient FHIR pour le charger dans Dataverse - "c" = Créer le
given name
d’un patient quand il n’existe pas dans FHIR - "p" = Objet parent de l’entrée à créer
- "a" = Tableau de paramètres à utiliser au moment de la création de "c"
Note
Les crochets {}
contiennent l’expression, tandis que les virgules ","
séparent les segments de l’expression. Cependant, les crochets du tableau []
signifient que l’expression contient au moins deux segments complets.
"s": "$.name[?(@use=='official')].given[0]"
"c": {"p": "name[0]", "a": [{"use": "official"}, {"family": "x"}, {"given": ["%"]}]
Exemple 4 : codeable concept
Faire correspondre les concepts codables FHIR de FHIR à Dataverse est identique à la correspondance des éléments de chaîne JSON. La seule différence est qu’il faut un niveau supplémentaire pour accéder aux détails.
- L’URL de l’extension est
http://hl7.org/fhir/StructureDefinition/patient-religion
- Nous voulons accéder à l’élément
valueCodeableConcept
à l’intérieur de cette entrée d’extension. - Nous voulons la première entrée dans le tableau de codage.
- Nous voulons mapper l’affichage pour afficher les informations dans FHIR qui sont attachées à un système de codage.
Ressource FHIR
JSONPath
{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].display"}
Exemple 5 : mapper les informations textuelles
- L’URL de l’extension est
http://hl7.org/fhir/StructureDefinition/patient-religion
- Nous voulons accéder à l’élément
valueCodeableConcept
à l’intérieur de cette entrée d’extension. - Nous voulons mapper le texte pour afficher les informations fournies à FHIR par Epic.
Ressource FHIR
JSONPath
{"s": "$.extension[?(@.url=='http://hl7.org/fhir/StructureDefinition/patient-religion')].valueCodeableConcept.coding[0].text"}
Exemple 6 : valeur mappée
Pour un autre exemple, vous pouvez créer un mappage d’attributs pour le genre. Dans Dataverse, le nom de l’attribut est gendercode.
Dans le mappage d’entités pour le contact, sélectionnez + Nouveau mappage d’attributs de service de mise à jour.
Puisque le genre désigne une liste de sélection, le Type d’action est Valeur mappée.
Genre dans Dataverse correspond à une liste de sélection. Comme il s’agit également d’une liste de sélection dans FHIR, vous mappez les valeurs de la liste de sélection FHIR aux valeurs de la liste de sélection Dataverse.
Sélectionnez Carte de l’élément FHIR pour ajouter la carte de l’élément FHIR pour le genre. Dans cet exemple, une chaîne de recherche JSON vous permet d’accéder au genre de l’élément FHIR.
Sélectionnez Enregistrer.
En arrière-plan, le système détermine que le genre est un groupe d’options. Vous devez mapper plusieurs valeurs pour ce groupe d’options.
Dans Mise en correspondance des valeurs, entrez la valeur FHIR Azure à mapper pour le groupe d’options. Par exemple, saisissez homme pour l’option Homme (valeur Dataverse = 1) et entrez femme pour l’option Femme (valeur Dataverse = 2).
Sélectionnez Enregistrer.
Exemple 7 : définir la valeur par défaut
Dans cet exemple, définissez une valeur par défaut pour les mappages de valeurs.
Dans le mappage d’entités pour le contact, sélectionnez + Nouveau mappage d’attributs de service de mise à jour.
Pour Nom d’attribut, sélectionnez Type de contact (msemr_contacttype).
Type de contact dans Dataverse est un groupe d’options. Étant donné que vous amenez des patients, vous voulez toujours que le type de contact soit la valeur par défaut.
Pour Type d’action, sélectionnez Définir la valeur par défaut.
Un mappage d’éléments FHIR n’est pas nécessaire, car vous ne définissez que la valeur par défaut. Dans ce cas, FHIR n’a aucun concept de type de contact, mais Dataverse en a besoin.
Sélectionnez Enregistrer.
Dans Mise en correspondance des valeurs, sélectionnez la première ligne et sélectionnez Modifier.
Dans Mise en correspondance des valeurs d’attribut, sélectionnez Patient pour le champ Étiquette OptionSet.
Le champ Valeur affiche la valeur par défaut du type de contact. Dataverse Healthcare API remplit automatiquement la valeur Dataverse.
Sélectionnez Enregistrer et fermer.
SousMappages de valeurs, la valeur par défaut Dataverse est définie. Chaque fois que Dataverse Healthcare API entre et crée un patient, il définit le champ Type de contact sur Patient.
Exemple 8 : recherche
Les étapes suivantes fournissent un exemple de mappage d’un attribut Dataverse qui est de type Recherche.
Dans le mappage d’entités pour le contact, sélectionnez + Nouveau mappage d’attributs de service de mise à jour.
Pour Nom d’attribut, sélectionnez Praticien principal (msemr_generalpractitioner).
Le Type d’attribut de l’attribut Praticien principal est Recherche (une opération de recherche dans l’entité Contact).
Pour Type d’action, le seul type d’action est Référence FK (référence de clé étrangère). Vous devez indiquer à Dataverse Healthcare API comment définir cette recherche.
Ajoutez la valeur Mappage des éléments FHIR pour le praticien principal.
Pour Référence des ressources FHIR, sélectionnez Praticien.
Dans Dataverse, la référence d’entité pour le praticien principal est Contact. La référence des ressources FHIR est Praticien.
Sélectionnez Enregistrer.
Si un attribut Dataverse est de type Recherche, vous pouvez créer uniquement un mappage qui est une référence de clé étrangère (FK). Pour configurer la référence FK, spécifiez la ressource FHIR à laquelle vous mappez cette entité de destination.
Exemple 9 : mapper le codeable concept
La procédure suivante fournit un exemple de mappage d’un attribut Dataverse de type Codeable concept.
Sous Configuration des mappages, sélectionnez Mappages d’entités.
Sous Nom de l’entité, sélectionnez msemr_observation.
Dans les mappages d’attributs associés, sélectionnez + Nouveau mappage d’attributs de service de mise à jour.
Pour Nom d’attribut, sélectionnez Code du dénominateur de rapport (msemr_valueratiodenominatorcode).
Le Type d’attribut de cet attribut est Recherche. Il s’agit d’une opération de recherche pour l’entité
msemr_codeableconcept
, qui est un type d’entité spécial dans le modèle de données. Ce type d’entité est traité différemment des autres entités.Pour Type d’action, le seul type d’action est Codeable concept.
Ajoutez la valeur Mappage des éléments FHIR pour l’attribut.
Pour Type de concept pouvant être codé, sélectionnez Code d’unité de quantité.
Un type codeable concept est similaire à un grand groupe d’options, et chaque valeur du groupe d’options a un type. Il vous permet de regrouper et de filtrer des groupes d’options. Notez que le champ Valeur du type de codeable concept est complété automatiquement lorsque vous sélectionnez Code d’unité de quantité comme type de codeable concept. Vous n’aviez pas besoin de connaître la valeur du groupe d’options pour le code d’unité de quantité.
Sélectionnez Enregistrer.
Maintenant, lorsque Dataverse crée une observation, il doit définir le codeable concept. Dataverse trouve ce codeable concept en recherchant dans les tables tous les codeable concepts dont le type Code d’unité de quantité correspond à la valeur du code. Un concept pouvant être codé est composé d’un texte, d’un code et du type. FHIR connaît le code, connaît le texte, mais ne sait pas à partir de quel type de concept pouvant être codé réaliser l’extraction.
Limitations actuelles
- Les positions d’insertion ou de création de tableau dynamique ne peuvent être absolues. La sélection est dynamique en utilisant JSONPath.
- Les données de valeur doivent être formatées en JSON pour les champs tels que les chaînes UTF-8 de l’attribut de destination, les dates UTC JSON et les booléens.
Outils
Vous pouvez utiliser plusieurs outils pour tester les chaînes JSONPath, y compris les applications suivantes :
- Évaluateur en ligne JSONPath
- JSON Escape et Unescape
- Extension du chemin d’accès JSON pour Visual Studio Code
Pour plus d’informations sur l’utilisation de ces outils, consultez Instructions sur JSONPath.