Jak používat šablony CalculatedContent s mapováním zařízení služby MedTech

Poznámka

Fast Healthcare Interoperability Resources (FHIR®) je otevřená specifikace zdravotní péče.

Tento článek obsahuje přehled použití šablon CalculatedContent v rámci mapování zařízení služby MedTech.

Základy šablony CalculatedContent

Šablony služby MedTech CalculatedContent podporují dva jazyky výrazů JSON: JSONPath a JMESPath. Výrazy slouží k identifikaci šablony, která se má použít s danou zprávou zařízení JSON (například TypeMatchExpression), a k extrahování konkrétních hodnot, které jsou potřeba k vytvoření normalizované zprávy (například: TimestampExpression, DeviceIdExpression atd.).

Poznámka

Pokud nedefinujete jazyk výrazů, šablony mapování zařízení služby MedTech použijí výchozí jazyk výrazů, který je pro šablonu nakonfigurovaný. Výchozí hodnota je JSONPath, ale v případě potřeby ji můžete přepsat.

Výraz je definován jako:

<name of expression> : {
   "value" : <the expression>,
   "language": <the expression language>
}

V následujícím příkladu typeMatchExpression je definován jako:

"templateType": "CalculatedContent",
"template": {
   "typeName": "heartrate",
   "typeMatchExpression": {
      "value" : "$..[?(@heartRate)]",
      "language": "JsonPath"
   },
...
}

Šablony CalculatedContent umožňují porovnávání a extrahování hodnot ze zpráv zařízení přečtených z centra událostí Azure Event Hubs pomocí následujících výrazů:

Element Popis Příklad výrazu JSONPath Příklad výrazu JMESPath
typový_názv Výraz, který služba MedTech vyhodnocuje vůči datové části zprávy zařízení. Pokud služba najde odpovídající hodnotu tokenu, považuje šablonu za shodu. Služba vyhodnocuje všechny pozdější výrazy oproti hodnotě extrahovaného tokenu, která je zde shodná. $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression Výraz pro extrahování identifikátoru zařízení. $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression Výraz pro extrahování hodnoty časového razítka OccurrenceTimeUtc pro hodnotu měření. $.matchedToken.endDate @.matchedToken.endDate
patientIdExpression Výraz pro extrahování identifikátoru pacienta. Vyžaduje se , pokud je typ řešení služby MedTech nastavený na Vytvořit, a volitelné , pokud je typ řešení služby MedTech nastavený na Lookup. $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression Volitelné: Výraz pro extrahování identifikátoru výskytu. $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression Volitelné: Výraz pro extrahování identifikátoru korelace. Tento výstup můžete použít k seskupení hodnot do jednoho pozorování v mapování cíle FHIR. $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression Výraz pro extrahování požadované hodnoty $.matchedToken.heartRate @.matchedToken.heartRate

Poznámka

Typ řešení určuje, jak služba MedTech přidruží data zařízení k prostředkům zařízení a prostředkům pacientů. Služba MedTech čte prostředky zařízení a pacientů ze služby FHIR pomocí identifikátorů zařízení a identifikátorů pacientů. Pokud je zadán identifikátor setkání a extrahován z datové části zařízení, je propojen s pozorováním, pokud ve službě FHIR existuje s tímto identifikátorem. Pokud je identifikátor setkání úspěšně normalizován, ale s tímto identifikátorem není FHIR Encounter, vyvolá se výjimka FhirResourceNotFound . Další informace o konfiguraci typu řešení služby MedTech najdete v tématu Konfigurace karty Cíl.

Jazyky výrazů

Při zadávání jazyka, který se má použít pro výraz, jsou platné následující hodnoty:

Jazyk výrazů Hodnota
JSONPath JsonPath
JMESPath JmesPath

Vzhledem k tomu, že JSONPath je výchozí jazyk výrazu, není nutné zahrnout jazyk výrazu do šablony CalculatedContent.

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

Výchozí jazyk výrazu pro šablonu CalculatedContent můžete také explicitně nastavit pomocí parametru defaultExpressionLanguage :

"templateType": "CalculatedContent",
   "template": {
      "typeName": "heartrate",
      "defaultExpressionLanguage": "JmesPath",
      "typeMatchExpression": "[Body][?contains(keys(@), `heartRate`)] | @[0]",
...
}

Tip

Další informace o jsonPath najdete v tématu JSONPath – XPath pro JSON. Šablony CalculatedContent používají k překladu výrazů JSONPath implementaci JSON .NET .

Další informace o JMESPath najdete v tématu Specifikace JMESPath. Šablony CalculatedContent používají implementaci JMESPath .NET pro překlad výrazů JMESPath.

Vlastní funkce

K dispozici je také sada vlastních funkcí pro službu MedTech. Vlastní funkce služby MedTech jsou mimo funkce poskytované jako součást specifikace JMESPath. Další informace o vlastních funkcích služby MedTech najdete v tématu Použití vlastních funkcí s mapováním zařízení služby MedTech.

Příklad

Když služba MedTech zpracovává zprávu zařízení, šablony v KolekciContent se použijí k vyhodnocení zprávy. Slouží typeMatchExpression k určení, jestli se má šablona použít k vytvoření normalizované zprávy ze zprávy zařízení. Pokud se typeMatchExpression vyhodnotí jako true, hodnoty deviceIdExpression, timestampExpressiona valueExpression se použijí k vyhledání a extrahování hodnot JSON ze zprávy zařízení a vytvoření normalizované zprávy. V tomto příkladu jsou všechny výrazy napsané v jsonPath, ale bylo by platné napsat všechny výrazy v JMESPath. Záleží na autorovi šablony, aby určil, který jazyk výrazu je nejvhodnější.

Tip

Ladicí program Mapování služby MedTech vám pomůže s vytvářením, aktualizací a řešením potíží se zařízením služby MedTech a mapováním cílů FHIR. Ladicí program mapování umožňuje snadno zobrazit a provádět vložené úpravy v reálném čase, aniž byste museli opustit Azure Portal. Ladicí program mapování se dá použít také k nahrávání zpráv testovacího zařízení, abyste viděli, jak budou vypadat po jejich zpracování na normalizované zprávy a transformaci na pozorování FHIR.

V tomto příkladu používáme zprávu zařízení, která zachytává heartRate data:

{
    "heartRate": "78",
    "endDate": "2023-03-13T22:46:01.8750000",
    "deviceId": "device01"
}

Centrum událostí obohacuje zprávu zařízení předtím, než služba MedTech přečte zprávu zařízení z centra událostí:

{
    "Body": {
        "heartRate": "78",
        "endDate": "2023-03-13T22:46:01.8750000",
        "deviceId": "device01"
    }
}

Pro fázi normalizace používáme toto mapování zařízení:

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "CalculatedContent",
            "template": {
                "typeName": "heartrate",
                "typeMatchExpression": "$..[?(@heartRate)]",
                "deviceIdExpression": "$.matchedToken.deviceId",
                "timestampExpression": "$.matchedToken.endDate",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.matchedToken.heartRate",
                        "valueName": "hr"
                    }
                ]
            }
        }
    ]
}

Důležité

Služba MedTech vyhodnocuje typeMatchExpression příchozí datovou část zařízení. Pokud služba najde odpovídající hodnotu tokenu, považuje šablonu za shodu.

Služba MedTech vyhodnocuje všechny pozdější výrazy proti nové hodnotě tokenu. Tato nová hodnota tokenu obsahuje datovou část původního zařízení i hodnotu extrahovaného tokenu, která se zde shoduje.

Tímto způsobem bude pro každý pozdější výraz k dispozici datová část původního zařízení a odpovídající objekt. Hodnota extrahovaného tokenu je k dispozici jako vlastnost 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"
    }
}

Výsledná normalizovaná zpráva bude po fázi normalizace vypadat takto:

[
    {
        "type": "heartrate",
        "occurrenceTimeUtc": "2023-03-13T22:46:01.875Z",
        "deviceId": "device01",
        "properties": [
            {
                "name": "hr",
                "value": "78"
            }
        ]
    }
]

Tip

Pomoc s řešením chyb nasazení služby MedTech najdete v tématu Řešení chyb nasazení služby MedTech.

Pomoc s řešením chyb služby MedTech najdete v tématu Řešení chyb pomocí protokolů služby MedTech.

Další kroky

V tomto článku jste zjistili, jak používat šablony CalculatedContent s mapováním zařízení služby MedTech.

Informace o používání vlastních funkcí služby MedTech najdete v tématu

Přehled mapování cílů FHIR služby MedTech najdete v tématu

Přehled ukázek mapování na základě scénářů služby MedTech najdete v tématu

FHIR® je registrovaná ochranná známka společnosti Health Level Seven International registrovaná v americkém úřadu pro ochranné známky a používá se s povolením.