Jak używać szablonów IotJsonPathContent z mapowaniem urządzeń usługi MedTech

Uwaga

Fast Healthcare Interoperability Resources (FHIR®) to otwarta specyfikacja opieki zdrowotnej.

Ten artykuł zawiera omówienie sposobu używania szablonów IotJsonPathContent w ramach mapowania urządzeń usługi MedTech.

Podstawy szablonu IotJsonPathContent

Szablony IotJsonPathContent mogą być używane, gdy usługa MedTech pozyskuje komunikaty urządzeń kierowane z Azure IoT Hub. Gdy szablony IotJsonPathContent są używane w ramach mapowania urządzenia, usługa MedTech wyodrębnia identyfikator urządzenia i znacznik czasu pomiaru z metadanych dostarczonych przez centrum IoT. Szablony DeviceIdExpression i TimestampExpression nie powinny być uwzględniane w szablonach IotJsonPathContent.

Szablony IotJsonPathContent usługi MedTech obsługują język wyrażeń JSON JSONPath. Wyrażenia służą do identyfikowania szablonu do użycia z danym komunikatem urządzenia JSON (na przykład TypeMatchExpression) i wyodrębniania określonych wartości wymaganych do utworzenia znormalizowanego komunikatu (na przykład: PatientIdExpression, ValueExpression itp.). Szablony IotJsonPathContent są podobne do szablonów CalculatedContent , z wyjątkiem parametrów DeviceIdExpression i TimestampExpression, nie są obsługiwane.

Uwaga

Ścieżka JMESPath nie jest obsługiwana przez szablony IotJsonPathContent.

Wyrażenie jest definiowane jako:

<name of expression> : <the expression>

W poniższym przykładzie typeMatchExpression zdefiniowano następującą definicję:

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

Jeśli usługa MedTech jest skonfigurowana do pozyskiwania komunikatów urządzeń z centrum IoT Hub, nie musisz używać szablonów IotJsonPathContent. Szablony CalculatedContent można użyć przy założeniu, że poprawnie zdefiniujesz parametr DeviceIdExpression i TimestampExpression.

Szablony IotJsonPathContent umożliwiają dopasowywanie i wyodrębnianie wartości z komunikatu urządzenia odczytanego z centrum zdarzeń Azure Event Hubs za pomocą następujących wyrażeń:

Element Opis Przykład wyrażenia JSONPath
typeMatchExpression Wyrażenie, które usługa MedTech oblicza względem ładunku komunikatu urządzenia. Jeśli usługa znajdzie pasującą wartość tokenu, uzna szablon za zgodny. $..[?(@heartRate)]
patientIdExpression Wyrażenie do wyodrębnienia identyfikatora pacjenta. Wymagane , gdy typ rozpoznawania usług MedTech ma wartość Utwórz i opcjonalnie , gdy typ rozwiązania usługi MedTech jest ustawiony na Lookup. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Opcjonalnie: wyrażenie do wyodrębnienia identyfikatora spotkania. $.Body.encounterId
correlationIdExpression Opcjonalnie: wyrażenie do wyodrębnienia identyfikatora korelacji. Te dane wyjściowe umożliwiają grupowanie wartości w pojedynczej obserwacji w mapowaniu docelowym FHIR. $.Body.correlationId
values[].valueExpression Wyrażenie do wyodrębnienia żądanej wartości. $.Body.heartRate

Ważne

Usługa MedTech będzie używać identyfikatora urządzenia zdefiniowanego w usłudze IoT Hub jako identyfikatora urządzenia zasobu FHIR. Jeśli usługa MedTech jest skonfigurowana do używania typu rozpoznawania tożsamości lookup, zasób urządzenia z pasującym identyfikatorem urządzenia musi istnieć w usłudze FHIR lub wystąpi błąd podczas przetwarzania komunikatu urządzenia. Jeśli typ rozpoznawania tożsamości usługi MedTech ma wartość Utwórz, należy dołączyć element do mapowania urządzenia, patientIdExpression aby można było utworzyć nowy zasób pacjenta i zasób urządzenia, jeśli jeszcze nie istnieją.

Uwaga

Typ rozwiązania określa sposób, w jaki usługa MedTech kojarzy dane urządzenia z zasobami urządzenia i zasobami pacjenta. Usługa MedTech odczytuje zasoby urządzenia i pacjenta z usługi FHIR przy użyciu identyfikatorów urządzeń i identyfikatorów pacjentów. Jeśli zostanie określony identyfikator spotkania i wyodrębniony z ładunku danych urządzenia, jest on połączony z obserwacją, jeśli spotkanie istnieje w usłudze FHIR z tym identyfikatorem. Jeśli identyfikator napotkania został pomyślnie znormalizowany, ale nie istnieje błąd FHIR Encounter z tym identyfikatorem napotkania, zgłaszany jest wyjątek FhirResourceNotFound . Aby uzyskać więcej informacji na temat konfigurowania typu rozpoznawania usługi MedTech, zobacz konfigurowanie karty Miejsce docelowe.

Języki wyrażeń

JSONPath jest domyślnym językiem wyrażeń, a włączenie języka wyrażeń w szablonie IotJsonPathContent nie jest obsługiwane. Jeśli próbujesz określić język wyrażeń w obiekcie wyrażenia, szablon IotJsonPathContent zawierający obiekt wyrażenia zakończy się niepowodzeniem.

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

Porada

Aby uzyskać więcej informacji na temat ścieżki JSONPath, zobacz JSONPath — XPath for JSON. Szablony IotJsonPathContent używają implementacji JSON .NET do rozpoznawania wyrażeń JSONPath.

Przykład

Gdy usługa MedTech przetwarza komunikat urządzenia, szablony w kolekcjiContent są używane do oceny komunikatu. Służy typeMatchExpression do określania, czy szablon powinien być używany do tworzenia znormalizowanego komunikatu z komunikatu urządzenia. Jeśli wartość typeMatchExpression ma wartość true, valueExpression zostanie użyta do zlokalizowania i wyodrębnienia wartości JSON z komunikatu urządzenia i utworzenia znormalizowanego komunikatu.

Porada

Visual Studio Code z rozszerzeniem Azure IoT Hub jest zalecaną metodą wysyłania komunikatów urządzeń IoT do centrum IoT na potrzeby testowania i rozwiązywania problemów.

Debuger mapowania usługi MedTech umożliwia tworzenie, aktualizowanie i rozwiązywanie problemów z urządzeniem usługi MedTech i mapowaniami miejsc docelowych FHIR. Debuger mapowania umożliwia łatwe wyświetlanie i wprowadzanie wbudowanych korekt w czasie rzeczywistym bez konieczności opuszczania Azure Portal. Debuger mapowania może również służyć do przekazywania testowych komunikatów urządzeń, aby zobaczyć, jak będą one wyglądać po przetworzeniu w znormalizowane komunikaty i przekształcone w obserwacje FHIR.

W tym przykładzie używamy komunikatu urządzenia, który przechwytuje heartRate dane:

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

Uwaga

Aby uniknąć fałszowania urządzeń w komunikatach typu urządzenie-chmura (D2C), Azure IoT Hub wzbogaca wszystkie komunikaty urządzeń o dodatkowe właściwości przed przekierowaniem ich do centrum zdarzeń. Na przykład: Właściwości: iothub-creation-time-utc i SystemProperties: iothub-connection-device-id. Aby uzyskać więcej informacji, zobacz Właściwości ochrony przed fałszowaniem.

patientIdExpression jest wymagane tylko dla usług MedTech w trybie tworzenia ; Jeśli jednak wyszukiwanie jest używane, zasób urządzenia z pasującym identyfikatorem urządzenia musi istnieć w docelowej usłudze FHIR. W tych przykładach założono, że usługa MedTech jest w trybie tworzenia . Aby uzyskać więcej informacji na temat właściwości Tworzenie i wyszukiwaniemiejsca docelowego, zobacz Konfigurowanie karty Miejsce docelowe.

Centrum IoT wzbogaca i kieruje komunikat urządzenia do centrum zdarzeń, zanim usługa MedTech odczytuje komunikat urządzenia z centrum zdarzeń:

{
    "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"
    }
}   

Używamy tego mapowania urządzenia dla etapu normalizacji:

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

Wynikowy znormalizowany komunikat będzie wyglądać następująco po etapie normalizacji:

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

Porada

Aby uzyskać pomoc w rozwiązywaniu typowych błędów wdrażania usługi MedTech, zobacz Rozwiązywanie problemów z błędami wdrażania usługi MedTech.

Aby uzyskać pomoc dotyczącą naprawiania błędów usługi MedTech, zobacz Rozwiązywanie problemów z błędami przy użyciu dzienników usługi MedTech.

Następne kroki

W tym artykule przedstawiono sposób używania szablonów IotJsonPathContent z mapowaniem urządzeń usługi MedTech.

Aby wdrożyć usługę MedTech z włączonym routingiem komunikatów urządzenia za pośrednictwem Azure IoT Hub, zobacz

Aby zapoznać się z omówieniem mapowania lokalizacji docelowej FHIR usługi MedTech, zobacz

Aby zapoznać się z omówieniem przykładów mapowań opartych na scenariuszach usługi MedTech, zobacz

FHIR® jest zastrzeżonym znakiem towarowym Health Level Seven International, zarejestrowanym w Amerykańskim Biurze Znaków Towarowych i jest używany z ich pozwoleniem.