A CalculatedContent sablonok használata a MedTech szolgáltatás eszközleképezésével

Megjegyzés

A Fast Healthcare Interoperability Resources (FHIR®) egy nyílt egészségügyi specifikáció.

Ez a cikk áttekintést nyújt a CalculatedContent sablonok MedTech szolgáltatásbeli eszközleképezésen belüli használatáról.

A CalculatedContent sablon alapjai

A MedTech szolgáltatás CalculatedContent sablonjai két JSON-kifejezésnyelvet támogatnak: JSONPath és JMESPath. A kifejezések segítségével azonosítható, hogy melyik sablont használja egy adott JSON-eszközüzenettel (például: TypeMatchExpression), valamint a normalizált üzenet létrehozásához szükséges konkrét értékek kinyerésére (például: TimestampExpression, DeviceIdExpression stb.).

Megjegyzés

Ha nem határoz meg kifejezésnyelvet, a MedTech szolgáltatás eszközleképezési sablonjai a sablonhoz konfigurált alapértelmezett kifejezésnyelvet használják. Az alapértelmezett érték a JSONPath, de szükség esetén felülírhatja.

A kifejezés a következőképpen van definiálva:

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

A következő példában typeMatchExpression a következőként van definiálva:

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

A CalculatedContent sablonok lehetővé teszik az értékek egyeztetését és kinyerését egy eszközüzenetből egy Azure Event Hubs eseményközpontból az alábbi kifejezések használatával:

Elem Leírás Példa JSONPath-kifejezésre Példa JMESPath-kifejezésre
typeMatchExpression A MedTech szolgáltatás által kiértékelt kifejezés az eszközüzenet hasznos adatai alapján. Ha a szolgáltatás talál egyező tokenértéket, a sablont egyezésnek tekinti. A szolgáltatás kiértékeli az összes későbbi kifejezést az itt megadott kinyert tokenérték alapján. $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression Az eszközazonosító kinyerésére vonatkozó kifejezés. $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression A mérték OccurrenceTimeUtc értékének időbélyeg-értékét kinyerő kifejezés. $.matchedToken.endDate @.matchedToken.endDate
patientIdExpression A betegazonosító kinyerésére vonatkozó kifejezés. Akkor szükséges , ha a MedTech-szolgáltatások Felbontás típusaLétrehozás értékre van állítva, és nem kötelező , ha a MedTech szolgáltatás Felbontás típusaKeresési értékre van állítva. $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression Nem kötelező: A találkozás azonosítójának kinyerésére alkalmas kifejezés. $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression Nem kötelező: A korrelációs azonosító kinyeréséhez szükséges kifejezés. Ezzel a kimenettel egyetlen megfigyelésbe csoportosíthatja az értékeket az FHIR-célleképezésben. $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression A kívánt érték kinyerésére vonatkozó kifejezés. $.matchedToken.heartRate @.matchedToken.heartRate

Megjegyzés

A Megoldás típusa azt határozza meg, hogy a MedTech szolgáltatás hogyan társítsa az eszközadatokat az eszközerőforrásokhoz és a patient erőforrásokhoz. A MedTech szolgáltatás eszköz- és betegerőforrásokat olvas be az FHIR szolgáltatásból eszközazonosítók és betegazonosítók használatával. Ha meg van adva és kinyer egy találkozási azonosítót az eszközadatok hasznos adataiból, akkor a rendszer társítja a megfigyeléshez, ha az FHIR szolgáltatásban ilyen azonosítóval találkozik. Ha a találkozás azonosítója sikeresen normalizálva van, de nem létezik FHIR-találkozás ezzel a találkozási azonosítóval, a rendszer kivételt ad a FhirResourceNotFound kivételnek. A MedTech szolgáltatásfeloldási típus konfigurálásáról további információt a Cél lap konfigurálása című témakörben talál.

Kifejezésnyelvek

A kifejezéshez használni kívánt nyelv megadásakor a következő értékek érvényesek:

Kifejezés nyelve Érték
JSONPath JsonPath
JMESPath JmesPath

Mivel a JSONPath az alapértelmezett kifejezésnyelv, nem szükséges belefoglalni a kifejezés nyelvét egy CalculatedContent sablonba.

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

A CalculatedContent sablon alapértelmezett kifejezésnyelvét a paraméterrel defaultExpressionLanguage is beállíthatja:

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

Tipp

További információ a JSONPath-ról: JSONPath – XPath for JSON. A CalculatedContent sablonok a JSON .NET-implementációt használják A JSONPath-kifejezések feloldásához.

További információ a JMESPath-ról: JMESPath-specifikáció. A CalculatedContent sablonok a JMESPath .NET-implementációt használják a JMESPath-kifejezések feloldásához.

Egyéni függvények

A MedTech szolgáltatáshoz egyéni függvények is elérhetők. A MedTech szolgáltatás egyéni függvényei a JMESPath-specifikáció részeként biztosított függvényen kívül esnek. A MedTech szolgáltatás egyéni függvényeivel kapcsolatos további információkért lásd: Egyéni függvények használata a MedTech szolgáltatás eszközleképezésével.

Példa

Amikor a MedTech szolgáltatás egy eszközüzenetet dolgoz fel, a CollectionContent sablonjaival értékeli ki az üzenetet. A typeMatchExpression segítségével állapítható meg, hogy a sablon használható-e normalizált üzenet létrehozására az eszközüzenetből. Ha a typeMatchExpression kiértékelése igaz, akkor a deviceIdExpression, timestampExpressiona és valueExpression az értékekkel megkeresheti és kinyerheti a JSON-értékeket az eszközüzenetből, és létrehoz egy normalizált üzenetet. Ebben a példában az összes kifejezés JSONPath nyelven van megírva, de a JMESPath-ban minden kifejezés írható. A sablon szerzője határozza meg, hogy melyik kifejezésnyelv a legmegfelelőbb.

Tipp

A MedTech szolgáltatásleképezés hibakeresőjével segítséget kaphat a MedTech szolgáltatáseszköz és az FHIR-célleképezések létrehozásához, frissítéséhez és hibaelhárításához. A leképezési hibakeresővel egyszerűen megtekintheti és valós időben elvégezheti a beágyazott módosításokat anélkül, hogy el kellene hagynia a Azure Portal. A leképezési hibakereső teszteszköz-üzenetek feltöltésére is használható, hogy lássa, hogyan fognak kinézni, miután normalizált üzenetekké dolgozták fel őket, és FHIR-megfigyelésekké alakítják át őket.

Ebben a példában egy eszközüzenetet használunk, amely adatokat rögzít heartRate :

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

Az eseményközpont kibővíti az eszközüzenetet, mielőtt a MedTech szolgáltatás beolvassa az eszközüzenetet az eseményközpontból:

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

Ezt az eszközleképezést használjuk a normalizálási fázishoz:

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

Fontos

A MedTech szolgáltatás kiértékeli typeMatchExpression a bejövő eszközadatok hasznos adatait. Ha a szolgáltatás talál egyező tokenértéket, a sablont egyezésnek tekinti.

A MedTech szolgáltatás minden későbbi kifejezést kiértékel egy új tokenérték alapján. Ez az új tokenérték az eredeti eszközadatok hasznos adatait és a kinyert jogkivonat értékét is tartalmazza.

Ily módon az eredeti eszközadatok hasznos adatai és a megfelelt objektum minden későbbi kifejezéshez elérhetők. A kinyert jogkivonat értéke tulajdonságként matchedTokenérhető el.

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

Az eredményül kapott normalizált üzenet így fog kinézni a normalizálási szakasz után:

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

Tipp

Ha segítségre van szüksége a MedTech szolgáltatás üzembehelyezési hibáinak elhárításához, tekintse meg a MedTech szolgáltatás üzembehelyezési hibáinak elhárítását ismertető cikket.

Ha segítségre van szüksége a MedTech szolgáltatás hibáinak elhárításához, tekintse meg a MedTech szolgáltatásnaplók használatával kapcsolatos hibák elhárítását ismertető cikket.

Következő lépések

Ebből a cikkből megtudhatta, hogyan használhatók a CalculatedContent sablonok a MedTech szolgáltatás eszközleképezésével.

A MedTech szolgáltatás egyéni függvényeinek használatáról további információt a

A MedTech szolgáltatás FHIR célleképezésének áttekintését lásd:

A MedTech szolgáltatás forgatókönyvalapú leképezési mintáinak áttekintéséért lásd:

Az FHIR® a Health Level Seven International bejegyzett védjegye, amely az Egyesült Államok védjegyhivatalában van regisztrálva, és engedélyekkel használja.