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, timestampExpressioni 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.