Dela via


Så här använder du IotJsonPathContent-mallar med enhetsmappning för MedTech-tjänsten

Anteckning

FHIR® (Fast Healthcare Interoperability Resources) är en öppen hälsospecifikation.

Den här artikeln innehåller en översikt över hur du använder IotJsonPathContent-mallar i enhetsmappning för MedTech-tjänsten.

Grundläggande om IotJsonPathContent-mallar

IotJsonPathContent-mallar kan användas när MedTech-tjänsten matar in enhetsmeddelanden som dirigeras från en Azure IoT Hub. När IotJsonPathContent-mallar används i enhetsmappningen extraherar MedTech-tjänsten enhets-ID och tidsstämpel för mätning från metadata som tillhandahålls av en IoT-hubb. DeviceIdExpression och TimestampExpression bör inte ingå i IotJsonPathContent-mallar.

MedTech-tjänstens IotJsonPathContent-mallar stöder JSON-uttrycksspråket JSONPath. Uttryck används för att identifiera vilken mall som ska användas med ett visst JSON-enhetsmeddelande (till exempel TypeMatchExpression) och för att extrahera specifika värden som krävs för att skapa ett normaliserat meddelande (till exempel PatientIdExpression, ValueExpression osv.). IotJsonPathContent-mallar liknar CalculatedContent-mallarna förutom att DeviceIdExpression och TimestampExpression inte stöds.

Anteckning

JMESPath stöds inte av IotJsonPathContent-mallar.

Ett uttryck definieras som:

<name of expression> : <the expression>

I följande exempel typeMatchExpression definieras som:

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

Om Din MedTech-tjänst har konfigurerats för att mata in enhetsmeddelanden från en IoT-hubb behöver du inte använda IotJsonPathContent-mallar. CalculatedContent-mallar kan användas förutsatt att du definierar DeviceIdExpression och TimestampExpression korrekt.

IotJsonPathContent-mallarna tillåter matchning på och extrahering av värden från ett enhetsmeddelande som lästs från en Azure Event Hubs händelsehubb via följande uttryck:

Element Beskrivning JSONPath-uttrycksexempel
typeMatchExpression Uttrycket som MedTech-tjänsten utvärderar mot enhetens meddelandenyttolast. Om tjänsten hittar ett matchande tokenvärde betraktar den mallen som en matchning. $..[?(@heartRate)]
patientIdExpression Uttrycket för att extrahera patientidentifieraren. Krävs när MedTech-tjänsternas lösningstyp är inställd på Skapa och valfritt när MedTech-tjänstens lösningstyp är inställd på Lookup. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Valfritt: Uttrycket för att extrahera mötesidentifieraren. $.Body.encounterId
correlationIdExpression Valfritt: Uttrycket för att extrahera korrelationsidentifieraren. Du kan använda dessa utdata för att gruppera värden i en enda observation i FHIR-målmappningen. $.Body.correlationId
values[].valueExpression Uttrycket för att extrahera det önskade värdet. $.Body.heartRate

Viktigt

MedTech-tjänsten använder enhets-ID:t som definierats i IoT Hub som FHIR-resursens enhetsidentifierare. Om MedTech-tjänsten har konfigurerats för att använda en typ av identitetsmatchning av sökningmåste det finnas en enhetsresurs med matchande enhetsidentifierare i FHIR-tjänsten, annars uppstår ett fel när enhetsmeddelandet bearbetas. Om Identitetsmatchningstypen för MedTech-tjänsten är inställd på Skapa måste en patientIdExpression inkluderas i enhetsmappningen så att en ny patientresurs och enhetsresurs kan skapas om de inte redan finns.

Anteckning

Lösningstypen anger hur MedTech-tjänsten associerar enhetsdata med enhetsresurser och patientresurser. MedTech-tjänsten läser enhets- och patientresurser från FHIR-tjänsten med hjälp av enhetsidentifierare och patientidentifierare. Om en påträffad identifierare anges och extraheras från nyttolasten för enhetsdata länkas den till observationen om det finns ett påträff på FHIR-tjänsten med den identifieraren. Om påträffade identifierare har normaliserats, men det inte finns något FHIR-möte med den påträffade identifieraren, genereras ett FhirResourceNotFound-undantag . Mer information om hur du konfigurerar lösningstypen för MedTech-tjänsten finns i Konfigurera fliken Mål.

Uttrycksspråk

JSONPath är standarduttrycksspråket, och inkludering av ett uttrycksspråk i en IotJsonPathContent-mall stöds inte. Om du försöker ange uttrycksspråket i ett uttrycksobjekt misslyckas mallen IotJsonPathContent som innehåller uttrycksobjektet.

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

Tips

Mer information om JSONPath finns i JSONPath – XPath för JSON. IotJsonPathContent-mallar använder JSON .NET-implementeringen för att matcha JSONPath-uttryck.

Exempel

När MedTech-tjänsten bearbetar ett enhetsmeddelande används mallarna i CollectionContent för att utvärdera meddelandet. typeMatchExpression används för att avgöra om mallen ska användas för att skapa ett normaliserat meddelande från enhetsmeddelandet. typeMatchExpression Om utvärderas till sant valueExpression används värdet för att hitta och extrahera JSON-värdena från enhetsmeddelandet och skapa ett normaliserat meddelande.

Tips

Visual Studio Code med tillägget Azure IoT Hub är en rekommenderad metod för att skicka IoT-enhetsmeddelanden till din IoT-hubb för testning och felsökning.

Du kan använda felsökningsprogrammet för MedTech-tjänstens mappning för att få hjälp med att skapa, uppdatera och felsöka MedTech-tjänstenheten och FHIR-målmappningarna. Med felsökningsprogrammet mappning kan du enkelt visa och göra infogade justeringar i realtid, utan att behöva lämna Azure Portal. Felsökningsprogrammet mappning kan också användas för att ladda upp testenhetsmeddelanden för att se hur de kommer att se ut efter att ha bearbetats till normaliserade meddelanden och omvandlats till FHIR-observationer.

I det här exemplet använder vi ett enhetsmeddelande som samlar heartRate in data:

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

Anteckning

För att undvika enhetsförfalskning i meddelanden från enhet till moln (D2C) utökar Azure IoT Hub alla enhetsmeddelanden med ytterligare egenskaper innan de dirigeras till händelsehubben. Exempel: Egenskaper: iothub-creation-time-utc och SystemEgenskaper: iothub-connection-device-id. Mer information finns i Egenskaper för förfalskningsskydd.

patientIdExpression krävs endast för MedTech-tjänster i läget Skapa . Men om sökning används måste det finnas en enhetsresurs med matchande enhetsidentifierare i FHIR-måltjänsten. Dessa exempel förutsätter att Din MedTech-tjänst är i läget Skapa . Mer information om egenskaperna Skapa och slå uppmål finns i Konfigurera fliken Mål.

IoT-hubben berikar och dirigerar enhetsmeddelandet till händelsehubben innan MedTech-tjänsten läser enhetsmeddelandet från händelsehubben:

{
    "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"
    }
}   

Vi använder den här enhetsmappningen för normaliseringssteget:

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

Det resulterande normaliserade meddelandet ser ut så här efter normaliseringssteget:

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

Tips

Information om hur du åtgärdar vanliga distributionsfel för MedTech-tjänsten finns i Felsöka distributionsfel för MedTech-tjänsten.

Mer information om hur du åtgärdar MedTech-tjänstfel finns i Felsöka fel med hjälp av MedTech-tjänstloggarna.

Nästa steg

I den här artikeln har du lärt dig hur du använder IotJsonPathContent-mallar med enhetsmappningen för MedTech-tjänsten.

Information om hur du distribuerar MedTech-tjänsten med enhetsmeddelanderoutning aktiverat via en Azure IoT Hub finns i

En översikt över FHIR-målmappningen för MedTech-tjänsten finns i

En översikt över exempel på scenariobaserade mappningar för MedTech-tjänsten finns i

FHIR® är ett registrerat varumärke som tillhör Health Level Seven International, registrerat i U.S. Trademark Office och används med deras tillstånd.