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.