Megosztás a következőn keresztül:


IotJsonPathContent-sablonok használata a MedTech szolgáltatás eszközleképezésével

Fontos

A MedTech szolgáltatás elavulását 2025. május 3-ával kezdeményezték. Ha a MedTech szolgáltatás használata már nem prioritás, bontsa ki a példányt, amely itt található. Az aktív példányok támogatása a következő régiókban 2028. május 3-ával fejeződik be: USA 2. nyugati régiója, Egyesült Királyság déli régiója, Nyugat-Európa, USA keleti régiója, USA 2. keleti régiója, Közép-India, Észak-Európa. A MedTech szolgáltatás nyílt forráskódú verziója itt található.

Ez a cikk áttekintést nyújt az IotJsonPathContent sablonok MedTech szolgáltatáseszköz-leképezésen belüli használatáról.

Az IotJsonPathContent sablon alapjai

Az IotJsonPathContent sablonok akkor használhatók, amikor a MedTech szolgáltatás az Azure IoT Hub -ból irányított eszközüzeneteket fogad be. Ha IotJsonPathContent-sablonokat használ a eszközleképezési, a MedTech szolgáltatás kinyeri az eszközazonosítót és a mérési időbélyeget az IoT Hub által biztosított metaadatokból. A DeviceIdExpression és a TimestampExpression nem szerepelhet az IotJsonPathContent sablonokban.

Az IotJsonPathContent MedTech szolgáltatássablonjai támogatják a JSONPath JSON-kifejezésnyelvet. A kifejezések egy adott JSON-eszközüzenethez (például TypeMatchExpression) használandó sablon azonosítására és a normalizált üzenet létrehozásához szükséges konkrét értékek kinyerésére szolgálnak (például: PatientIdExpression, ValueExpression stb.). Az IotJsonPathContent-sablonok hasonlóak a CalculatedContent sablonokhoz, de a DeviceIdExpression és a TimestampExpression nem támogatott.

Megjegyzés

Az IotJsonPathContent sablonok nem támogatják a JMESPath alkalmazást.

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

<name of expression> : <the expression>

Az alábbi példában a typeMatchExpression a következőképpen van definiálva:

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

Ha a MedTech szolgáltatás az eszközüzenetek IoT Hubról való betöltésére van beállítva, akkor nem kell IotJsonPathContent-sablonokat használnia. A CalculatedContent sablonok akkor használhatók, ha helyesen definiálja a DeviceIdExpression és a TimestampExpression parancsot.

Az IotJsonPathContent-sablonok lehetővé teszik az értékek egyeztetését és kinyerését egy Azure Event Hubs-eseményközpontból beolvasott eszközüzenetből az alábbi kifejezésekkel:

Elem Leírás Példa JSONPath-kifejezésre
típusmegfelelési kifejezés Az a kifejezés, amelyet a MedTech szolgáltatás kiértékel az eszközüzenet hasznos adatai alapján. Ha a szolgáltatás talál egy egyező token értéket, akkor a sablont egyezésnek tekinti. $..[?(@heartRate)]
patientIdExpression A betegazonosító kinyerésére alkalmas kifejezés. Kötelező, amikor a MedTech szolgáltatás Felbontás típusaLétrehozásvan beállítva, és választható, amikor a MedTech szolgáltatás Felbontás típusaKeresésvan beállítva. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Nem kötelező: A találkozás azonosítójának kinyerésére alkalmas kifejezés. $.Body.encounterId
correlationIdExpression Nem kötelező: A korrelációs azonosító kinyerésére vonatkozó kifejezés. Ezzel a kimenettel egyetlen megfigyelésbe csoportosíthatja az értékeket az FHIR® célleképezésében. $.Body.correlationId
értékek[].valueExpression A keresett érték kinyerésére vonatkozó kifejezés. $.Body.heartRate

Fontos

A MedTech szolgáltatás az IoT Hubban definiált eszközazonosítót használja FHIR erőforrás-azonosítóként. Ha a MedTech szolgáltatás úgy van beállítva, hogy keresésiidentitásfeloldási típust használjon, az egyező eszközazonosítóval rendelkező eszközerőforrásnak kell lennie az FHIR szolgáltatásban, vagy hiba történik az eszközüzenet feldolgozásakor. Ha a MedTech szolgáltatás identitásfeloldási típusa a létrehozása, akkor a patientIdExpression-nek szerepelnie kell az eszközleképezésben, hogy létrehozhassunk egy új betegerőforrást és eszközerőforrást, ha azok még nem léteznek.

Megjegyzés

A Felbontás típusa határozza meg, hogy a MedTech szolgáltatás hogyan társítja az eszközadatokat az eszközerőforrásokhoz és a Patient-erőforrásokhoz. A MedTech szolgáltatás az FHIR szolgáltatásból az eszköz- és betegerőforrásokat olvassa be, eszközazonosítók, és betegazonosítóksegítségével. Ha egy találkozási azonosító van megadva és kinyerve az eszközadatok hasznos adataiból, akkor a rendszer összekapcsolja a megfigyeléssel, ha az FHIR szolgáltatásban ilyen azonosítóval találkozik. Ha a találkozási azonosító sikeresen normalizálva van, de nem létezik FHIR-találkozás ezzel a találkozási azonosítóval, FhirResourceNotFound kivétel keletkezik. A MedTech szolgáltatás felbontástípusánakkonfigurálásáról további információt a Céllap konfigurálásacímű témakörben talál.

Kifejezésnyelvek

A JSONPath az alapértelmezett kifejezési nyelv, és egy kifejezés nyelvének az IotJsonPathContent sablonba való felvétele nem támogatott. Ha egy kifejezésobjektumban megkísérli megadni a kifejezés nyelvét, a kifejezésobjektumot tartalmazó IotJsonPathContent sablon meghiúsul.

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

Jótanács

További információ a JSONPathról: JSONPath – XPath for JSON. Az IotJsonPathContent-sablonok a JSON .NET implementáció használatával értékelik ki a JSONPath-kifejezéseket.

Példa

Amikor a MedTech szolgáltatás egy eszközüzenetet dolgoz fel, a CollectionContent sablonjaival értékeli ki az üzenetet. A typeMatchExpression annak meghatározására szolgál, hogy a sablon használható-e normalizált üzenet létrehozásához az eszközüzenetből. Ha a typeMatchExpression értéke igaz, akkor a valueExpression érték használatával megkeresheti és kinyerheti a JSON-értékeket az eszközüzenetből, és normalizált üzenetet hozhat létre.

Jótanács

Visual Studio Code és az Azure IoT Hub bővítmény ajánlott módszer az IoT-eszközüzenetek IoT Hubra való küldéséhez teszteléshez és hibaelhárításhoz.

A MedTech szolgáltatás leképezési hibakereső használható 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ő lehetővé teszi a beágyazott beállítások valós idejű megtekintését és módosítását anélkül, hogy el kellene hagynia az Azure Portalt. A leképezési hibakereső a teszteszköz-üzenetek feltöltéséhez is használható, hogy lássa, hogyan fognak kinézni a normalizált üzenetekké való feldolgozás után, és hogyan alakíthatók át FHIR-megfigyelésekké.

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

{
    "PatientId": "patient1",
    "HeartRate" : "78"
}

Megjegyzés

Az eszközhamisítás elkerülése érdekében az Azure IoT Hub további tulajdonságokkal bővíti az összes eszközüzenetet az eseményközpontba való átirányítás előtt. Például: Tulajdonságok: iothub-creation-time-utc és Rendszertulajdonságok: iothub-connection-device-id. További információ: Hamisítás elleni tulajdonságok.

patientIdExpression csak a MedTech-szolgáltatásokhoz szükséges a Create módban; ha azonban a Keresés módot használják, akkor a cél FHIR szolgáltatásban léteznie kell egy eszközerőforrásnak, amely egyező eszközazonosítóval rendelkezik. Ezek a példák feltételezik, hogy a MedTech szolgáltatás létrehozása módban van. A létrehozása és Kereséscéltulajdonságokcímű témakörben talál további információt A céllap konfigurálásacímű témakörben.

Az IoT Hub kibővíti és átirányítja az eszközüzenetet az eseményközpontba, mielőtt a MedTech szolgáltatás felolvassa az eszközüzenetet az eseményközpontból:

{
    "Body": {
        "PatientId": "patient1",
        "HeartRate": "78"
    },
    "SystemProperties": {
        "iothub-enqueuedtime": "2023-07-25T20:41:26.046Z",
        "iothub-connection-device-id": "sampleDeviceId"
    },
    "Properties": {
        "iothub-creation-time-utc": "2023-07-25T20:41:26.046Z"
    }
}   

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

{
    "templateType": "CollectionContent",
    "template": [
        {
            "templateType": "IotJsonPathContent",
            "template": {
                "typeName": "HeartRate",
                "typeMatchExpression": "$..[?(@Body.HeartRate)]",
                "patientIdExpression": "$.Body.PatientId",
                "values": [
                    {
                        "required": true,
                        "valueExpression": "$.Body.HeartRate",
                        "valueName": "HeartRate"
                    }
                ]
            }
        }
    ]    
}

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

{
    "type": "HeartRate",
    "occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
    "deviceId": "sampleDeviceId",
    "patientId": "patient1",
    "properties": [
        {
            "name": "HeartRate",
            "value": "78"
        }
    ]
}

Jótanács

A MedTech szolgáltatás gyakori üzembehelyezési hibáinak elhárításához a MedTech szolgáltatás üzembe helyezési hibáinak elhárításacímű témakörben talál segítséget.

Ha segítségre van szüksége a MedTech szolgáltatás hibáinak elhárításához, olvassa el A MedTech szolgáltatásnaplókhasználatával kapcsolatos hibák elhárítása.

Következő lépések

Eszközüzenetek fogadása az Azure IoT Hubon keresztül

A FHIR célleképezés áttekintése

A MedTech szolgáltatás forgatókönyvalapú leképezési mintáinak áttekintése

Megjegyzés

Az FHIR® a HL7 bejegyzett védjegye, amelyet a HL7 engedélyével használnak.