Partage via


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 patient123de 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.