Verwenden benutzerdefinierter Funktionen mit der Gerätezuordnung des MedTech-Diensts

Hinweis

Fast Healthcare Interoperability Resources (FHIR®) ist eine offene Spezifikation für das Gesundheitswesen.

Viele Funktionen sind verfügbar, wenn JMESPath als Ausdruckssprache verwendet wird. Neben den integrierten Funktionen, die im Rahmen der JMESPath-Spezifikation verfügbar sind, können auch viele weitere benutzerdefinierte Funktionen verwendet werden. In diesem Artikel wird beschrieben, wie Sie die für den MedTech-Dienst spezifischen benutzerdefinierten Funktionen mit der Gerätezuordnung des MedTech-Diensts verwenden.

Tipp

Sie können den MedTech-Dienstzuordnungsdebugger für die Erstellung, Aktualisierung und Problembehandlung der Geräte- und FHIR-Zielzuordnungen des MedTech-Diensts verwenden. Mit dem Zuordnungsdebugger können Sie Inlineanpassungen ganz einfach in Echtzeit anzeigen und vornehmen, ohne den Azure-Portal verlassen zu müssen. Der Zuordnungsdebugger kann auch zum Hochladen von Testgerätemeldungen verwendet werden, um zu sehen, wie diese nach der Verarbeitung in normalisierte Nachrichten und der Transformation in FHIR-Beobachtungen aussehen.

Funktionssignatur

Jede Funktion verfügt über eine Signatur, die der JMESPath-Spezifikation folgt. Diese Signatur kann wie folgt dargestellt werden:

return_type function_name(type $argname)

Die Signatur gibt die gültigen Typen für die Argumente an. Wenn ein ungültiger Typ für ein Argument übergeben wird, tritt ein Fehler auf.

Wichtig

Wenn mathematische Funktionen ausgeführt werden, muss das Endergebnis in einen C#-Long-Wert passen können. Wenn das Endergebnis nicht in einen C#-Long-Wert passt, tritt ein mathematischer Fehler auf.

Wie bereits erwähnt, können diese Funktionen nur verwendet werden, wenn JmesPath als Ausdruckssprache angegeben wird. Standardmäßig lautet die Ausdruckssprache JsonPath. Die Ausdruckssprache kann beim Definieren des Ausdrucks geändert werden.

Beispiele:

"templateType": "CalculatedContent",
    "template": {
        "typeName": "heartrate",
        "patientIdExpression": {
            "value": "insertString('123', 'patient', `0`) ",
            "language": "JmesPath"
        },
        ...
    }

In diesem Beispiel wird der insertString-Ausdruck verwendet, um die Patienten-ID patient123zu generieren.

Literalwerte

Konstantenwerte können für Funktionen bereitgestellt werden.

  • Numerische Werte sollten in Backticks eingeschlossen werden: '
    • Beispiel: add('10', '10')
  • Zeichenfolgenwerte sollten in einfache Anführungszeichen eingeschlossen werden: '
    • Beispiel: insertString('mple', 'sa', '0')

Weitere Informationen finden Sie in der JMESPath-Spezifikation.

Ausnahmebehandlung

Ausnahmen können an verschiedenen Stellen innerhalb des Lebenszyklus der Gerätedatenverarbeitung auftreten. Hier sind die verschiedenen Punkte aufgeführt, in denen Ausnahmen auftreten können:

Aktion When Ausnahmen, die während der Analyse der Gerätezuordnung auftreten können Ergebnis
Analyse der Gerätezuordnung Jedes Mal, wenn ein neuer Batch von Gerätenachrichten empfangen wird, wird die Gerätezuordnung geladen und analysiert. Fehler beim Analysieren der Gerätezuordnung. Das System versucht, die neueste Gerätezuordnung neu zu laden und zu analysieren, bis die Analyse erfolgreich ist. Es werden keine neuen Gerätemeldungen verarbeitet, bis die Analyse erfolgreich war.
Analyse der Gerätezuordnung Jedes Mal, wenn ein neuer Batch von Gerätenachrichten empfangen wird, wird die Gerätezuordnung geladen und analysiert. Fehler beim Analysieren von Ausdrücken. Das System versucht, die neueste Gerätezuordnung neu zu laden und zu analysieren, bis die Analyse erfolgreich ist. Es werden keine neuen Gerätemeldungen verarbeitet, bis die Analyse erfolgreich war.
Funktionsausführung Jedes Mal, wenn eine Funktion für Gerätedaten in einer Gerätenachricht ausgeführt wird. Eingabegerätedaten stimmen nicht mit denen der Funktionssignatur überein. Das System beendet die Verarbeitung dieser Gerätenachricht. Die Gerätenachricht wird nicht wiederholt.
Funktionsausführung Jedes Mal, wenn eine Funktion für Gerätedaten in einer Gerätenachricht ausgeführt wird. Alle anderen Ausnahmen, die in der Beschreibung der Funktion aufgeführt sind. Das System beendet die Verarbeitung dieser Gerätenachricht. Die Gerätenachricht wird nicht wiederholt.

Mathematische Funktionen

add

number add(number $left, number $right)

Gibt das Ergebnis des Hinzufügens des linken Arguments zum rechten Argument zurück.

Beispiele:

Vorgabe expression Ergebnis
add('10', '10') 20
{"left": 40, "right": 50} add(left, right) 90
{"left": 0, "right": 50} add(left, right) 50

divide

number divide(number $left, number $right)

Gibt das Ergebnis der Aufteilung des linken Arguments durch das rechte Argument zurück.

Beispiele:

Vorgabe expression Ergebnis
divide('10', '10') 1
{"left": 40, "right": 50} divide(left, right) 0.8
{"left": 0, "right": 50} divide(left, right) 0
{"left": 50, "right": 0} divide(left, right) mathematischer Fehler: Dividieren durch Null

multiply

number multiply(number $left, number $right)

Gibt das Ergebnis der Multiplikation des linken Arguments mit dem rechten Argument zurück.

Beispiele:

Vorgabe expression Ergebnis
multiply('10', '10') 100
{"left": 40, "right": 50} multiplizieren(links, rechts) 2000
{"left": 0, "right": 50} multiplizieren(links, rechts) 0

pow

number pow(number $left, number $right)

Gibt das Ergebnis des Auslösens des linken Arguments auf die Stärke des rechten Arguments zurück.

Beispiele:

Vorgabe expression Ergebnis
pow('10', '10') 10000000000
{"left": 40, "right": 50} pow(left, right) mathematischer Fehler: Überlauf
{"left": 0, "right": 50} pow(left, right) 0
{"left": 100, "right": 0.5} pow(left, right) 10

Subtrahieren

number subtract(number $left, number $right)

Gibt das Ergebnis des Subtrahierens des rechts-Arguments vom linken Argument zurück.

Beispiele:

Vorgabe expression Ergebnis
subtrahieren('10', '10') 0
{"left": 40, "right": 50} subtrahieren(links, rechts) -10
{"left": 0, "right": 50} subtrahieren(links, rechts) -50

Zeichenfolgenfunktionen

insertString

string insertString(string $original, string $toInsert, number pos)

Erzeugt eine neue Zeichenfolge, indem der Wert von toInsert in die Zeichenfolge originaleingefügt wird. Die Zeichenfolge wird an der Position pos innerhalb der Zeichenfolge originaleingefügt.

Wenn das Positionsargument nullbasiert ist, bezieht sich die Position von 0 auf das erste Zeichen innerhalb der Zeichenfolge.

Wenn das angegebene Positionsargument außerhalb des Bereichs der Länge von originalliegt, tritt ein Fehler auf.

Beispiele:

Vorgabe expression Ergebnis
insertString('mple', 'sa', 0) "Beispiel"
{"original": "mple", "toInsert": "sa", "pos": 0} insertString(original, toInsert, pos) "Beispiel"
{"original": "suess", "toInsert": "cc", "pos": 2} insertString(original, toInsert, pos) "Erfolg"
{"original": "myString", "toInsert": "!!", "pos": 8} insertString(original, toInsert, pos) "myString!!"

Datumsfunktionen

fromUnixTimestamp

string fromUnixTimestamp(number $unixTimestampInSeconds)

Erzeugt einen ISO 8061-konformen Zeitstempel aus dem angegebenen Unix-Zeitstempel. Der Zeitstempel wird als Anzahl von Sekunden seit der Epoche (1. Januar 1970) dargestellt.

Beispiele:

Vorgabe expression Ergebnis
{"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)

Erzeugt einen ISO 8061-konformen Zeitstempel aus dem angegebenen Unix-Zeitstempel. Der Zeitstempel wird als Anzahl von Millisekunden seit der Epoche (1. Januar 1970) dargestellt.

Beispiele:

Vorgabe expression Ergebnis
{"unix": 1626799080000} fromUnixTimestampMs(unix) "2021-07-20T16:38:00+0"
{"unix": 0} fromUnixTimestampMs(unix) "1970-01-01T00:00:00+0"

Tipp

Hilfe beim Beheben von Fehlern mithilfe der MedTech-Dienstprotokolle finden Sie im MedTech-Dienstartikel Beheben von Fehlern mithilfe der MedTech-Dienstprotokolle.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie die benutzerdefinierten MedTech-Dienstfunktionen innerhalb der Gerätezuordnung verwenden.

Eine Übersicht über die Gerätezuordnung des MedTech-Diensts finden Sie unter

Eine Übersicht über die FHIR-Zielzuordnung des MedTech-Diensts finden Sie unter

Eine Übersicht über die Beispiele für szenariobasierte Zuordnungen des MedTech-Diensts finden Sie unter

FHIR® ist eine eingetragene Marke von Health Level Seven International, eingetragen im U.S. Trademark Office und wird mit deren Genehmigung verwendet.