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
, timestampExpression
a 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.