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

Hinweis

Fast Healthcare Interoperability Resources (FHIR®) ist eine offene Spezifikation im Gesundheitswesen.

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

Grundlagen der IotJsonPathContent-Vorlage

IotJsonPathContent-Vorlagen können verwendet werden, wenn der MedTech-Dienst Gerätenachrichten erfasst, die von einem Azure IoT Hubweitergeleitet werden. Wenn IotJsonPathContent-Vorlagen innerhalb der Gerätezuordnung verwendet werden, extrahiert der MedTech-Dienst die Geräte-ID und den Messzeitstempel aus metadaten, die von einem IoT Hub bereitgestellt werden. DeviceIdExpression und TimestampExpression sollten nicht in iotJsonPathContent-Vorlagen enthalten sein.

Die IotJsonPathContent-Vorlagen des MedTech-Diensts unterstützen die JSON-Ausdruckssprache JSONPath. Ausdrücke werden verwendet, um zu identifizieren, welche Vorlage mit einer bestimmten JSON-Gerätenachricht (z. B. TypeMatchExpression) verwendet werden soll, und um bestimmte Werte zu extrahieren, die zum Erstellen einer normalisierten Nachricht erforderlich sind (z. B. PatientIdExpression, ValueExpression usw.). IotJsonPathContent-Vorlagen ähneln den CalculatedContent-Vorlagen , mit der Ausnahme, dass DeviceIdExpression und TimestampExpression nicht unterstützt werden.

Hinweis

JMESPath wird von IotJsonPathContent-Vorlagen nicht unterstützt.

Ein Ausdruck wird wie folgt definiert:

<name of expression> : <the expression>

Im folgenden Beispiel typeMatchExpression ist definiert als:

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

Wenn Ihr MedTech-Dienst für die Erfassung von Gerätenachrichten von einem IoT Hub eingerichtet ist, müssen Sie keine IotJsonPathContent-Vorlagen verwenden. CalculatedContent-Vorlagen können unter der Voraussetzung verwendet werden, dass Sie DeviceIdExpression und TimestampExpression ordnungsgemäß definieren.

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

Element BESCHREIBUNG JSONPath-Ausdrucksbeispiel
typeMatchExpression Der Ausdruck, den der MedTech-Dienst mit der Nutzlast der Gerätenachricht auswertet. Wenn der Dienst einen übereinstimmenden Tokenwert findet, betrachtet er die Vorlage als übereinstimmend. $..[?(@heartRate)]
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 Suchen festgelegt ist. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Optional: Der Ausdruck zum Extrahieren des Begegnungsbezeichners. $.Body.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. $.Body.correlationId
values[].valueExpression Der Ausdruck zum Extrahieren des gewünschten Werts. $.Body.heartRate

Wichtig

Der MedTech-Dienst verwendet die in IoT Hub definierte Geräte-ID als FHIR-Ressourcengerätebezeichner. Wenn der MedTech-Dienst für die Verwendung eines Identitätsauflösungstyps von Lookup eingerichtet ist, muss eine Geräteressource mit einem übereinstimmenden Gerätebezeichner im FHIR-Dienst vorhanden sein, sonst tritt bei der Verarbeitung der Gerätenachricht ein Fehler auf. Wenn der Identitätsauflösungstyp des MedTech-Diensts auf Erstellen festgelegt ist, muss ein patientIdExpression in die Gerätezuordnung einbezogen werden, damit eine neue Patientenressource und eine Geräteressource erstellt werden können, falls sie noch nicht vorhanden sind.

Hinweis

Der Lösungstyp gibt an, wie der MedTech-Dienst Gerätedaten mit Geräteressourcen und Patientenressourcen verknüpft. 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 Encounter 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

JSONPath ist die Standardausdrucksprache, und die Einbindung einer Ausdruckssprache in eine IotJsonPathContent-Vorlage wird nicht unterstützt. Wenn Sie versuchen, die Ausdruckssprache in einem Ausdrucksobjekt anzugeben, schlägt die IotJsonPathContent-Vorlage, die das Ausdrucksobjekt enthält, fehl.

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

Tipp

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

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 der typeMatchExpression als true ausgewertet wird, wird der valueExpression Wert verwendet, um die JSON-Werte aus der Gerätenachricht zu suchen und zu extrahieren und eine normalisierte Nachricht zu erstellen.

Tipp

Visual Studio Code mit der Azure IoT Hub-Erweiterung ist eine empfohlene Methode zum Senden von IoT-Gerätenachrichten an Ihren IoT Hub zum Testen und Zur Problembehandlung.

Sie können den MedTech-Dienstzuordnungsdebugger verwenden, um Hilfe beim Erstellen, Aktualisieren und Problembehandlung für das MedTech-Dienstgerät und die FHIR-Zielzuordnungen zu erhalten. 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 sie nach der Verarbeitung in normalisierte Nachrichten und der Transformation in FHIR-Beobachtungen aussehen.

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

{
    "PatientId": "patient1",
    "HeartRate" : "78"
}

Hinweis

Um das Spoofing von Geräten in D2C-Nachrichten (Device-to-Cloud) zu vermeiden, reichert Azure IoT Hub alle Gerätenachrichten mit zusätzlichen Eigenschaften an, bevor sie an den Event Hub weitergeleitet werden. Beispiel: Eigenschaften: iothub-creation-time-utc und SystemEigenschaften: iothub-connection-device-id. Weitere Informationen finden Sie unter Anti-Spoofing-Eigenschaften.

patientIdExpression ist nur für MedTech-Dienste im Erstellungsmodus erforderlich; Wenn jedoch Lookup verwendet wird, muss im Ziel-FHIR-Dienst eine Geräteressource mit einem übereinstimmenden Gerätebezeichner vorhanden sein. In diesen Beispielen wird davon ausgegangen, dass sich Ihr MedTech-Dienst im Modus Erstellen befindet. Weitere Informationen zu den Eigenschaften Create and LookupDestination finden Sie unter Konfigurieren der Registerkarte Ziel.

Der IoT Hub bereichert und leitet die Gerätenachricht an den Event Hub weiter, bevor der MedTech-Dienst die Gerätenachricht aus dem Event Hub liest:

{
    "Body": {
        "PatientId": "patient1",
        "HeartRate": "78"
    },
    "SystemProperties": {
        "iothub-enqueuedtime": "2023-07-25T20:41:26.046Z",
        "iothub-connection-device-id": "sampleDeviceId"
    },
    "Properties": {
        "iothub-creation-time-utc": "2023-07-25T20:41:26.046Z"
    }
}   

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

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "IotJsonPathContent",
            "template": {
                "typeName": "HeartRate",
                "typeMatchExpression": "$..[?(@Body.HeartRate)]",
                "patientIdExpression": "$.Body.PatientId",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.Body.HeartRate",
                        "valueName": "HeartRate"
                    }
                ]
            }
        }
    ]    
}

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

{
    "type": "HeartRate",
    "occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
    "deviceId": "sampleDeviceId",
    "patientId": "patient1",
    "properties": [
        {
            "name": "HeartRate",
            "value": "78"
        }
    ]
}

Tipp

Hilfe beim Beheben allgemeiner MedTech-Dienstbereitstellungsfehler finden Sie unter Problembehandlung bei Fehlern bei der MedTech-Dienstbereitstellung.

Hilfe beim Beheben von MedTech-Dienstfehlern finden Sie unter Behandeln von Fehlern mithilfe der MedTech-Dienstprotokolle.

Nächste Schritte

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

Informationen zum Bereitstellen des MedTech-Diensts mit aktiviertem Gerätenachrichtenrouting über eine Azure IoT Hub 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.