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 patient123
zu 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 original
eingefügt wird. Die Zeichenfolge wird an der Position pos
innerhalb der Zeichenfolge original
eingefü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 original
liegt, 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.