Comment utiliser des fonctions personnalisées avec le mappage d’appareils de service MedTech
Notes
Fast Healthcare Interoperability Resources (FHIR®) est une spécification de soins de santé ouverte.
De nombreuses fonctions sont disponibles lors de l’utilisation de JMESPath comme langage d’expression. Outre les fonctions intégrées disponibles dans le cadre de la spécification JMESPath, de nombreuses autres fonctions personnalisées peuvent également être utilisées. Cet article explique comment utiliser les fonctions personnalisées propres au service MedTech avec le mappage d’appareils de service MedTech.
Conseil
Vous pouvez utiliser le débogueur de mappage du service MedTech pour obtenir de l’aide sur la création, la mise à jour et la résolution des problèmes liés à l’appareil de service MedTech et aux mappages de destination FHIR. Le débogueur de mappage vous permet d’afficher et d’effectuer facilement des ajustements inline en temps réel, sans jamais avoir à quitter le Portail Azure. Le débogueur de mappage peut également être utilisé pour charger des messages d’appareil de test afin de voir comment ils seront traités en messages normalisés et transformés en observations FHIR.
Signature de fonction
Chaque fonction a une signature qui suit la spécification JMESPath. Cette signature peut être représentée comme suit :
return_type function_name(type $argname)
La signature indique les types valides pour les arguments. Si un type non valide est passé pour un argument, une erreur se produit.
Important
Lorsque des fonctions liées aux mathématiques sont effectuées, le résultat final doit être en mesure de s’adapter à une valeur longue C# . Si le résultat final ne peut pas tenir dans une valeur longue C#, une erreur mathématique se produit.
Comme indiqué précédemment, ces fonctions ne peuvent être utilisées que lors de la spécification de JmesPath comme langage d’expression. Par défaut, le langage d’expression est JsonPath. Le langage d’expression peut être modifié lors de la définition de l’expression.
Par exemple :
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"patientIdExpression": {
"value": "insertString('123', 'patient', `0`) ",
"language": "JmesPath"
},
...
}
Cet exemple utilise l’expression insertString pour générer l’ID patient123
de patient .
Valeurs littérales
Des valeurs constantes peuvent être fournies aux fonctions.
- Les valeurs numériques doivent être placées dans des backticks : '
- Exemple : add('10', '10')
- Les valeurs de chaîne doivent être placées entre guillemets simples : '
- Exemple : insertString('mple', 'sa', '0')
Pour plus d’informations, consultez la spécification JMESPath.
Gestion des exceptions
Des exceptions peuvent se produire à différents moments du cycle de vie du traitement des données de l’appareil. Voici les différents points où des exceptions peuvent se produire :
Action | Lorsque le répertoire | Exceptions qui peuvent se produire pendant l’analyse du mappage d’appareil | Résultat |
---|---|---|---|
Analyse de mappage d’appareils | Chaque fois qu’un nouveau lot de messages d’appareil est reçu, le mappage d’appareil est chargé et analysé. | Échec de l’analyse du mappage d’appareil. | Le système tente de recharger et d’analyser le mappage d’appareil le plus récent jusqu’à ce que l’analyse réussisse. Aucun nouveau message d’appareil n’est traité tant que l’analyse n’a pas réussi. |
Analyse de mappage d’appareils | Chaque fois qu’un nouveau lot de messages d’appareil est reçu, le mappage d’appareil est chargé et analysé. | Échec de l’analyse des expressions. | Le système tente de recharger et d’analyser le mappage d’appareil le plus récent jusqu’à ce que l’analyse réussisse. Aucun nouveau message d’appareil n’est traité tant que l’analyse n’a pas réussi. |
Exécution de la fonction | Chaque fois qu’une fonction est exécutée sur des données d’appareil dans un message d’appareil. | Les données d’appareil d’entrée ne correspondent pas à celles de la signature de fonction. | Le système arrête le traitement de ce message d’appareil. Le message de l’appareil n’est pas retenté. |
Exécution de la fonction | Chaque fois qu’une fonction est exécutée sur des données d’appareil dans un message d’appareil. | Toutes les autres exceptions répertoriées dans la description de la fonction. | Le système arrête le traitement de ce message d’appareil. Le message de l’appareil n’est pas retenté. |
Fonctions mathématiques
add
number add(number $left, number $right)
Retourne le résultat de l’ajout de l’argument de gauche à l’argument de droite.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | add('10', '10') | 20 |
{"left »: 40, « right »: 50} | add(gauche, droite) | 90 |
{"left »: 0, « right »: 50} | add(gauche, droite) | 50 |
divide
number divide(number $left, number $right)
Retourne le résultat de la division de l’argument gauche par l’argument droit.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | divide('10', '10') | 1 |
{"left »: 40, « right »: 50} | divide(gauche, droite) | 0,8 |
{"left »: 0, « right »: 50} | divide(gauche, droite) | 0 |
{"left »: 50, « right »: 0} | divide(gauche, droite) | erreur mathématique : diviser par zéro |
multiply
number multiply(number $left, number $right)
Retourne le résultat de la multiplication de l’argument gauche par l’argument droit.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | multiply('10', '10') | 100 |
{"left »: 40, « right »: 50} | multiplie(gauche, droite) | 2000 |
{"left »: 0, « right »: 50} | multiplie(gauche, droite) | 0 |
pow
number pow(number $left, number $right)
Retourne le résultat de l’élévation de l’argument gauche à la puissance de l’argument droit.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | pow('10', '10') | 10000000000 |
{"left »: 40, « right »: 50} | pow(gauche, droite) | erreur mathématique : dépassement de capacité |
{"left »: 0, « right »: 50} | pow(gauche, droite) | 0 |
{"left »: 100, « right »: 0.5} | pow(gauche, droite) | 10 |
soustraction
number subtract(number $left, number $right)
Retourne le résultat de la soustraction de l’argument droit de l’argument de gauche.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | soustraire('10', '10') | 0 |
{"left »: 40, « right »: 50} | soustraire(gauche, droite) | -10 |
{"left »: 0, « right »: 50} | soustraire(gauche, droite) | \- 50 |
Fonctions de chaînes
insertString
string insertString(string $original, string $toInsert, number pos)
Produit une nouvelle chaîne en insérant la valeur de toInsert
dans la chaîne original
. La chaîne est insérée à la position pos
dans la chaîne original
.
Si l’argument positionnel est basé sur zéro, la position de zéro fait référence au premier caractère de la chaîne.
Si l’argument positionnel fourni est hors de la plage de la longueur de original
, une erreur se produit.
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
n/a | insertString('mple', 'sa', 0 ) |
« sample » |
{"original »: « mple », « toInsert »: « sa », « pos »: 0} | insertString(original, toInsert, pos) | « sample » |
{"original »: « suess », « toInsert »: « cc », « pos »: 2} | insertString(original, toInsert, pos) | « réussite » |
{"original »: « myString », « toInsert »: « !! », « pos »: 8} | insertString(original, toInsert, pos) | « myString!! » |
Fonctions de date
fromUnixTimestamp
string fromUnixTimestamp(number $unixTimestampInSeconds)
Produit un horodatage conforme à la norme ISO 8061 à partir de l’horodatage Unix donné. L’horodatage est représenté comme le nombre de secondes depuis l’époque (1er janvier 1970).
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
{"unix »: 1625677200} | fromUnixTimestamp(unix) | « 2021-07-07T17:00:00+0 » |
{"unix »: 0} | fromUnixTimestamp(unix) | « 1970-01-01T00:00:00+0 » |
fromUnixTimestampMs
string fromUnixTimestampMs(number $unixTimestampInMs)
Produit un horodatage conforme à la norme ISO 8061 à partir de l’horodatage Unix donné. L’horodatage est représenté par le nombre de millisecondes depuis l’époque (1er janvier 1970).
Exemples :
Étant donné | Expression | Résultats |
---|---|---|
{"unix »: 1626799080000} | fromUnixTimestampMs(unix) | « 2021-07-20T16:38:00+0 » |
{"unix »: 0} | fromUnixTimestampMs(unix) | « 1970-01-01T00:00:00+0 » |
Conseil
Consultez l’article du service MedTech Résoudre les erreurs à l’aide des journaux du service MedTech pour obtenir de l’aide pour résoudre les erreurs à l’aide des journaux du service MedTech.
Étapes suivantes
Dans cet article, vous avez appris à utiliser les fonctions personnalisées du service MedTech dans le mappage d’appareil.
Pour obtenir une vue d’ensemble du mappage d’appareils de service MedTech, consultez
Pour obtenir une vue d’ensemble du mappage de destination FHIR du service MedTech, consultez
Pour obtenir une vue d’ensemble des exemples de mappages basés sur des scénarios de service MedTech, consultez
FHIR® est une marque déposée de la Health Level Seven International, enregistrée auprès de l’U.S. Trademark Office et utilisée avec leur autorisation.