Jak używać szablonów CalculatedContent 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 CalculatedContent w ramach mapowania urządzeń usługi MedTech.
Podstawy szablonu CalculatedContent
Szablony CalculatedContent usługi MedTech obsługują dwa języki wyrażeń JSON: JSONPath i JMESPath. 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: TimestampExpression, DeviceIdExpression itp.).
Uwaga
Jeśli nie zdefiniujesz języka wyrażeń, szablony mapowania urządzeń usługi MedTech używają domyślnego języka wyrażeń skonfigurowanego dla szablonu. Wartość domyślna to JSONPath, ale w razie potrzeby można ją zastąpić.
Wyrażenie jest definiowane jako:
<name of expression> : {
"value" : <the expression>,
"language": <the expression language>
}
W poniższym przykładzie typeMatchExpression
zdefiniowano jako:
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": {
"value" : "$..[?(@heartRate)]",
"language": "JsonPath"
},
...
}
Szablony CalculatedContent 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 | Przykład wyrażenia JMESPath |
---|---|---|---|
typeMatchExpression | Wyrażenie, które usługa MedTech oblicza względem ładunku komunikatu urządzenia. Jeśli usługa znajdzie zgodną wartość tokenu, uważa szablon za zgodny. Usługa oblicza wszystkie późniejsze wyrażenia względem wyodrębnionej wartości tokenu dopasowanej w tym miejscu. | $..[?(@heartRate)] |
[Body][?contains(keys(@), `heartRate`)] \| @[0] |
deviceIdExpression | Wyrażenie do wyodrębnienia identyfikatora urządzenia. | $.matchedToken.deviceId |
@.matchedToken.deviceId |
timestampExpression | Wyrażenie służące do wyodrębniania wartości znacznika czasu dla wartości miary OccurrenceTimeUtc . |
$.matchedToken.endDate |
@.matchedToken.endDate |
patientIdExpression | Wyrażenie do wyodrębnienia identyfikatora pacjenta. Wymagane , gdy typ rozwiązania usług MedTech jest ustawiony na Wartość Utwórz i opcjonalnie , gdy typ rozwiązania usługi MedTech jest ustawiony na Lookup. | $.matchedToken.patientId |
@.matchedToken.patientId |
encounterIdExpression | Opcjonalnie: wyrażenie do wyodrębnienia identyfikatora spotkania. | $.matchedToken.encounterId |
@.matchedToken.encounterId |
correlationIdExpression | Opcjonalnie: wyrażenie do wyodrębnienia identyfikatora korelacji. Za pomocą tych danych wyjściowych można grupować wartości w jedną obserwację w mapowaniu docelowym FHIR. | $.matchedToken.correlationId |
@.matchedToken.correlationId |
values[].valueExpression | Wyrażenie do wyodrębnienia żądanej wartości. | $.matchedToken.heartRate |
@.matchedToken.heartRate |
Uwaga
Typ rozwiązania określa sposób, w jaki usługa MedTech kojarzy dane urządzenia z zasobami urządzenia i zasobami pacjentów. Usługa MedTech odczytuje zasoby urządzeń i pacjentów z usługi FHIR przy użyciu identyfikatorów urządzeń i identyfikatorów pacjentów. Jeśli identyfikator napotkania jest określony i wyodrębniony z ładunku danych urządzenia, jest on połączony z obserwacją, jeśli w usłudze FHIR istnieje spotkanie z tym identyfikatorem. Jeśli identyfikator napotkania jest pomyślnie znormalizowany, ale nie istnieje napotkanie FHIR 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ń
Podczas określania języka do użycia dla wyrażenia prawidłowe są następujące wartości:
Język wyrażeń | Wartość |
---|---|
JSONPath | JsonPath |
JMESPath | JmesPath |
Ponieważ JSONPath jest domyślnym językiem wyrażeń, nie jest wymagane uwzględnienie języka wyrażeń w szablonie CalculatedContent.
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
Można również jawnie ustawić domyślny język wyrażeń dla szablonu CalculatedContent przy użyciu parametru defaultExpressionLanguage
:
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"defaultExpressionLanguage": "JmesPath",
"typeMatchExpression": "[Body][?contains(keys(@), `heartRate`)] | @[0]",
...
}
Porada
Aby uzyskać więcej informacji na temat ścieżki JSONPath, zobacz JSONPath — XPath for JSON. Szablony CalculatedContent używają implementacji platformy .NET JSON do rozpoznawania wyrażeń JSONPath.
Aby uzyskać więcej informacji na temat ścieżki JMESPath, zobacz Specyfikacja JMESPath. Szablony CalculatedContent używają implementacji .NET JMESPath do rozpoznawania wyrażeń JMESPath.
Funkcje niestandardowe
Dostępny jest również zestaw funkcji niestandardowych dla usługi MedTech. Funkcje niestandardowe usługi MedTech są poza funkcjami udostępnianymi w ramach specyfikacji JMESPath. Aby uzyskać więcej informacji na temat funkcji niestandardowych usługi MedTech, zobacz How to use custom functions with the MedTech device mapping (Jak używać funkcji niestandardowych z mapowaniem urządzeń usługi MedTech).
Przykład
Gdy usługa MedTech przetwarza komunikat urządzenia, szablony w kolekcjiContent są używane do oceny komunikatu. Element typeMatchExpression
służy do określania, czy szablon powinien być używany do tworzenia znormalizowanego komunikatu z komunikatu urządzenia.
typeMatchExpression
Jeśli wynik ma wartość true, wartości deviceIdExpression
, timestampExpression
i valueExpression
są używane do lokalizowania i wyodrębniania wartości JSON z komunikatu urządzenia i tworzenia znormalizowanego komunikatu. W tym przykładzie wszystkie wyrażenia są zapisywane w JSONPath, jednak prawidłowe byłoby zapisanie wszystkich wyrażeń w JMESPath. Autor szablonu decyduje o tym, który język wyrażeń jest najbardziej odpowiedni.
Porada
Debuger mapowania usługi MedTech umożliwia tworzenie, aktualizowanie i rozwiązywanie problemów z mapowaniami docelowymi urządzenia usługi MedTech i 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 komunikatów testowych 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:
{
"heartRate": "78",
"endDate": "2023-03-13T22:46:01.8750000",
"deviceId": "device01"
}
Centrum zdarzeń wzbogaca komunikat urządzenia przed odczytaniem komunikatu urządzenia z centrum zdarzeń przez usługę MedTech:
{
"Body": {
"heartRate": "78",
"endDate": "2023-03-13T22:46:01.8750000",
"deviceId": "device01"
}
}
Używamy tego mapowania urządzenia na potrzeby etapu normalizacji:
{
"templateType": "CollectionContent",
"template": [
{
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
"deviceIdExpression": "$.matchedToken.deviceId",
"timestampExpression": "$.matchedToken.endDate",
"values": [
{
"required": true,
"valueExpression": "$.matchedToken.heartRate",
"valueName": "hr"
}
]
}
}
]
}
Ważne
Usługa MedTech ocenia typeMatchExpression
ładunek przychodzących danych urządzenia. Jeśli usługa znajdzie zgodną wartość tokenu, uważa szablon za zgodny.
Usługa MedTech oblicza wszystkie późniejsze wyrażenia względem nowej wartości tokenu. Ta nowa wartość tokenu zawiera zarówno oryginalny ładunek danych urządzenia, jak i wartość wyodrębnionego tokenu dopasowaną tutaj.
W ten sposób oryginalny ładunek danych urządzenia i dopasowany obiekt są dostępne dla każdego późniejszego wyrażenia. Wyodrębniona wartość tokenu jest dostępna jako właściwość matchedToken
.
{
"Body": {
"heartRate": "78",
"endDate": "2023-03-13T22:46:01.8750000",
"deviceId": "device01"
},
"matchedToken": {
"heartRate": "78",
"endDate": "2023-03-13T22:46:01.8750000",
"deviceId": "device01"
}
}
Wynikowy znormalizowany komunikat będzie wyglądać następująco po etapie normalizacji:
[
{
"type": "heartrate",
"occurrenceTimeUtc": "2023-03-13T22:46:01.875Z",
"deviceId": "device01",
"properties": [
{
"name": "hr",
"value": "78"
}
]
}
]
Porada
Aby uzyskać pomoc dotyczącą rozwiązywania problemów z błędami wdrażania usługi MedTech, zobacz Rozwiązywanie problemów z błędami wdrażania usługi MedTech.
Aby uzyskać pomoc dotyczącą rozwiązywania problemów z błędami 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 CalculatedContent z mapowaniem urządzeń usługi MedTech.
Aby dowiedzieć się, jak używać funkcji niestandardowych usługi MedTech, zobacz
Aby zapoznać się z omówieniem mapowania docelowego usługi MedTech FHIR, 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 U.S. Trademark Office i jest używany z pozwoleniem.