Teilen über


Verwenden von CalculatedContent-Vorlagen mit der Gerätezuordnung des MedTech-Diensts

Hinweis

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

Dieser Artikel bietet eine Übersicht über die Verwendung von CalculatedContent-Vorlagen in einer Gerätezuordnung des MedTech-Diensts.

Grundlagen der CalculatedContent-Vorlage

Die Vorlagen für den MedTech-Dienst CalculatedContent unterstützen zwei JSON-Ausdruckssprachen: JSONPath und JMESPath. Ausdrücke werden verwendet, um zu identifizieren, welche Vorlage mit einer bestimmten JSON-Gerätenachricht verwendet werden soll (z. B. TypeMatchExpression) und um bestimmte Werte zu extrahieren, die zum Erstellen einer normalisierten Nachricht erforderlich sind (z. B. TimestampExpression, DeviceIdExpression usw.).

Hinweis

Wenn Sie keine Ausdruckssprache definieren, verwenden die Gerätezuordnungsvorlagen des MedTech-Diensts die Standardausdruckssprache, die für die Vorlage konfiguriert ist. Der Standardwert ist JSONPath, sie können jedoch bei Bedarf überschrieben werden.

Ein Ausdruck wird wie folgt definiert:

<name of expression> : {
   "value" : <the expression>,
   "language": <the expression language>
}

Im folgenden Beispiel typeMatchExpression ist definiert als:

"templateType": "CalculatedContent",
"template": {
   "typeName": "heartrate",
   "typeMatchExpression": {
      "value" : "$..[?(@heartRate)]",
      "language": "JsonPath"
   },
...
}

Die CalculatedContent-Vorlagen ermöglichen das Abgleichen und Extrahieren von Werten aus einer Gerätenachricht, die über die folgenden Ausdrücke aus einem Azure Event Hubs Event Hub gelesen wird:

Element BESCHREIBUNG JSONPath-Ausdrucksbeispiel JMESPath-Ausdrucksbeispiel
typeMatchExpression Der Ausdruck, den der MedTech-Dienst anhand der Gerätenachrichtennutzlast auswertet. Wenn der Dienst einen übereinstimmenden Tokenwert findet, betrachtet er die Vorlage als Übereinstimmung. Der Dienst wertet alle späteren Ausdrücke anhand des hier übereinstimmend extrahierten Tokenwerts aus. $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression Der Ausdruck zum Extrahieren des Gerätebezeichners. $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression Der Ausdruck zum Extrahieren des Zeitstempelwerts für den Wert der OccurrenceTimeUtc Messung. $.matchedToken.endDate @.matchedToken.endDate
patientIdExpression Der Ausdruck zum Extrahieren des Patientenbezeichners. Erforderlich , wenn der Auflösungstyp der MedTech-Dienste auf Erstellen festgelegt ist, und optional , wenn der Auflösungstyp des MedTech-Diensts auf Lookup festgelegt ist. $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression Optional: Der Ausdruck zum Extrahieren des Begegnungsbezeichners. $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression Optional: Der Ausdruck zum Extrahieren des Korrelationsbezeichners. Sie können diese Ausgabe verwenden, um Werte in einer einzelnen Beobachtung in der FHIR-Zielzuordnung zu gruppieren. $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression Der Ausdruck zum Extrahieren des gewünschten Werts. $.matchedToken.heartRate @.matchedToken.heartRate

Hinweis

Der Lösungstyp gibt an, wie der MedTech-Dienst Gerätedaten mit Geräte- und Patientenressourcen zuordnet. Der MedTech-Dienst liest Geräte- und Patientenressourcen aus dem FHIR-Dienst mithilfe von Gerätebezeichnern und Patientenbezeichnern. Wenn ein Begegnungsbezeichner angegeben und aus der Gerätedatennutzlast extrahiert wird, wird er mit der Beobachtung verknüpft, wenn eine Begegnung im FHIR-Dienst mit diesem Bezeichner vorhanden ist. Wenn der Begegnungsbezeichner erfolgreich normalisiert wurde, aber keine FHIR-Begegnung mit diesem Begegnungsbezeichner vorhanden ist, wird eine FhirResourceNotFound-Ausnahme ausgelöst. Weitere Informationen zum Konfigurieren des MedTech-Dienstauflösungstyps finden Sie unter Konfigurieren der Registerkarte Ziel.

Ausdruckssprachen

Wenn Sie die Sprache angeben, die für den Ausdruck verwendet werden soll, sind die folgenden Werte gültig:

Ausdruckssprache Wert
JSONPath JsonPath
JMESPath JmesPath

Da JSONPath die Standardausdruckssprache ist, ist es nicht erforderlich, die Ausdruckssprache in eine CalculatedContent-Vorlage einzuschließen.

"templateType": "CalculatedContent",
   "template": {
      "typeName": "heartrate",
      "typeMatchExpression": "$..[?(@heartRate)]",
...
}

Sie können die Standardausdruckssprache für eine CalculatedContent-Vorlage auch explizit festlegen, indem Sie den defaultExpressionLanguage -Parameter verwenden:

"templateType": "CalculatedContent",
   "template": {
      "typeName": "heartrate",
      "defaultExpressionLanguage": "JmesPath",
      "typeMatchExpression": "[Body][?contains(keys(@), `heartRate`)] | @[0]",
...
}

Tipp

Weitere Informationen zu JSONPath finden Sie unter JSONPath – XPath für JSON. CalculatedContent-Vorlagen verwenden die JSON .NET-Implementierung zum Auflösen von JSONPath-Ausdrücken.

Weitere Informationen zu JMESPath finden Sie unter JMESPath-Spezifikation. CalculatedContent-Vorlagen verwenden die JMESPath .NET-Implementierung zum Auflösen von JMESPath-Ausdrücken.

Benutzerdefinierte Funktionen

Eine Reihe von benutzerdefinierten Funktionen für den MedTech-Dienst ist ebenfalls verfügbar. Die benutzerdefinierten MedTech-Dienstfunktionen liegen außerhalb der Funktionen, die im Rahmen der JMESPath-Spezifikation bereitgestellt werden. Weitere Informationen zu den benutzerdefinierten MedTech-Dienstfunktionen finden Sie unter Verwenden von benutzerdefinierten Funktionen mit der Gerätezuordnung des MedTech-Diensts.

Beispiel

Wenn der MedTech-Dienst eine Gerätenachricht verarbeitet, werden die Vorlagen in CollectionContent verwendet, um die Nachricht auszuwerten. Wird typeMatchExpression verwendet, um zu bestimmen, ob die Vorlage verwendet werden soll, um eine normalisierte Nachricht aus der Gerätenachricht zu erstellen. Wenn als typeMatchExpression true ausgewertet wird, werden die deviceIdExpressionWerte , timestampExpressionund valueExpression verwendet, um die JSON-Werte aus der Gerätenachricht zu suchen und zu extrahieren und eine normalisierte Nachricht zu erstellen. In diesem Beispiel werden alle Ausdrücke in JSONPath geschrieben, es wäre jedoch gültig, alle Ausdrücke in JMESPath zu schreiben. Es liegt an dem Vorlagenautor, zu bestimmen, welche Ausdruckssprache am besten geeignet ist.

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.

In diesem Beispiel verwenden wir eine Gerätenachricht, die Daten erfasst heartRate :

{
    "heartRate": "78",
    "endDate": "2023-03-13T22:46:01.8750000",
    "deviceId": "device01"
}

Der Event Hub erweitert die Gerätenachricht, bevor der MedTech-Dienst die Gerätenachricht vom Event Hub liest:

{
    "Body": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    }
}

Wir verwenden diese Gerätezuordnung für die Normalisierungsphase:

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "CalculatedContent",
            "template": {
                "typeName": "heartrate",
                "typeMatchExpression": "$..[?(@heartRate)]",
                "deviceIdExpression": "$.matchedToken.deviceId",
                "timestampExpression": "$.matchedToken.endDate",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.matchedToken.heartRate",
                        "valueName": "hr"
                    }
                ]
            }
        }
    ]
}

Wichtig

Der MedTech-Dienst wird anhand der eingehenden Gerätedatennutzlast ausgewertet typeMatchExpression . Wenn der Dienst einen übereinstimmenden Tokenwert findet, betrachtet er die Vorlage als Übereinstimmung.

Der MedTech-Dienst wertet alle späteren Ausdrücke anhand eines neuen Tokenwerts aus. Dieser neue Tokenwert enthält sowohl die ursprüngliche Gerätedatennutzlast als auch den hier übereinstimmend extrahierten Tokenwert.

Auf diese Weise stehen die ursprüngliche Gerätedatennutzlast und das übereinstimmende Objekt jedem späteren Ausdruck zur Verfügung. Der extrahierte Tokenwert ist als -Eigenschaft matchedTokenverfügbar.

{
    "Body": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    },
    "matchedToken": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    }
}

Die resultierende normalisierte Nachricht sieht nach der Normalisierungsphase wie folgt aus:

[
    {
        "type": "heartrate",
        "occurrenceTimeUtc": "2023-03-13T22:46:01.875Z",
        "deviceId": "device01",
        "properties": [
            {
                "name": "hr",
                "value": "78"
            }
        ]
    }
]

Tipp

Hilfe bei der Behandlung von MedTech-Dienstbereitstellungsfehlern finden Sie unter Behandeln von Fehlern bei der MedTech-Dienstbereitstellung.

Hilfe bei der Behandlung von MedTech-Dienstfehlern finden Sie unter Behandeln von Fehlern mithilfe der MedTech-Dienstprotokolle.

Nächste Schritte

In diesem Artikel haben Sie erfahren, wie Sie CalculatedContent-Vorlagen mit der Gerätezuordnung des MedTech-Diensts verwenden.

Informationen zur Verwendung der benutzerdefinierten MedTech-Dienstfunktionen 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 US-Markenamt und wird mit Genehmigung verwendet.