Delen via


IotJsonPathContent-sjablonen gebruiken met de MedTech-serviceapparaattoewijzing

Notitie

Fast Healthcare Interoperability Resources (FHIR®) is een open gezondheidszorgspecificatie.

Dit artikel bevat een overzicht van het gebruik van IotJsonPathContent-sjablonen binnen een MedTech-serviceapparaattoewijzing.

Basisprincipes van sjabloon IotJsonPathContent

IotJsonPathContent-sjablonen kunnen worden gebruikt wanneer de MedTech-service apparaatberichten opneemt die zijn doorgestuurd van een Azure IoT Hub. Wanneer IotJsonPathContent-sjablonen worden gebruikt in de apparaattoewijzing, extraheert de MedTech-service de apparaat-id en meettijdstempel uit metagegevens die door een IoT-hub worden geleverd. De sjablonen DeviceIdExpression en TimestampExpression mogen niet worden opgenomen in de sjablonen IotJsonPathContent.

De IotJsonPathContent-sjablonen van de MedTech-service ondersteunen de JSON-expressietaal JSONPath. Expressies worden gebruikt om te bepalen welke sjabloon moet worden gebruikt met een bepaald JSON-apparaatbericht (bijvoorbeeld: TypeMatchExpression) en om specifieke waarden te extraheren die nodig zijn om een genormaliseerd bericht te maken (bijvoorbeeld: PatientIdExpression, ValueExpression, enzovoort). IotJsonPathContent-sjablonen zijn vergelijkbaar met de CalculatedContent-sjablonen , behalve dat DeviceIdExpression en TimestampExpression niet worden ondersteund.

Notitie

JMESPath wordt niet ondersteund door IotJsonPathContent-sjablonen.

Een expressie wordt gedefinieerd als:

<name of expression> : <the expression>

In het volgende voorbeeld typeMatchExpression wordt gedefinieerd als:

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

Als uw MedTech-service is ingesteld voor het opnemen van apparaatberichten van een IoT-hub, hoeft u geen IotJsonPathContent-sjablonen te gebruiken. CalculatedContent-sjablonen kunnen worden gebruikt, ervan uitgaande dat u de DeviceIdExpression en TimestampExpression correct definieert.

Met de IotJsonPathContent-sjablonen kunnen waarden worden gevonden en geëxtraheerd uit een apparaatbericht dat wordt gelezen uit een Azure Event Hubs Event Hub via de volgende expressies:

Element Beschrijving Voorbeeld van JSONPath-expressie
typeMatchExpression De expressie die de MedTech-service evalueert op basis van de nettolading van het apparaatbericht. Als de service een overeenkomende tokenwaarde vindt, wordt de sjabloon als een overeenkomst beschouwd. $..[?(@heartRate)]
patientIdExpression De expressie voor het extraheren van de patiënt-id. Vereist wanneer het resolutietype van de MedTech-services is ingesteld op Maken en optioneel wanneer het resolutietype van de MedTech-service is ingesteld op Opzoeken. $.SystemProperties.iothub-connection-device-id
encounterIdExpression Optioneel: de expressie om de ontmoetings-id te extraheren. $.Body.encounterId
correlationIdExpression Optioneel: de expressie voor het extraheren van de correlatie-id. U kunt deze uitvoer gebruiken om waarden in één observatie in de FHIR-doeltoewijzing te groepeerd. $.Body.correlationId
values[].valueExpression De expressie om de gewenste waarde te extraheren. $.Body.heartRate

Belangrijk

De MedTech-service gebruikt de apparaat-id die in IoT Hub is gedefinieerd als de apparaat-id van de FHIR-resource. Als de MedTech-service is ingesteld voor het gebruik van het identiteitsomzettingstype Lookup, moet er een apparaatresource met een overeenkomende apparaat-id aanwezig zijn in de FHIR-service, anders treedt er een fout op wanneer het apparaatbericht wordt verwerkt. Als het identiteitsomzettingstype van de MedTech-service is ingesteld op Maken, moet een patientIdExpression worden opgenomen in de apparaattoewijzing, zodat een nieuwe patiëntresource en apparaatresource kunnen worden gemaakt als deze nog niet bestaan.

Notitie

Het oplossingstype geeft aan hoe de MedTech-service apparaatgegevens koppelt aan apparaatresources en patiëntresources. De MedTech-service leest apparaat- en patiëntresources uit de FHIR-service met behulp van apparaat-id's en patiënt-id's. Als een ontmoetings-id wordt opgegeven en geëxtraheerd uit de nettolading van de apparaatgegevens, wordt deze gekoppeld aan de waarneming als er een aantreft op de FHIR-service met die id. Als de id van de ontmoeting is genormaliseerd, maar er geen FHIR-ontmoeting bestaat met die ontmoetings-id, wordt een FhirResourceNotFound-uitzondering gegenereerd. Zie Het tabblad Doel configureren voor meer informatie over het configureren van het type MedTech-serviceoplossing.

Expressietalen

JSONPath is de standaardexpressietaal en het opnemen van een expressietaal in een IotJsonPathContent-sjabloon wordt niet ondersteund. Als u de expressietaal in een expressieobject probeert op te geven, mislukt de sjabloon IotJsonPathContent met het expressieobject.

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

Tip

Zie JSONPath - XPath voor JSON Voor meer informatie over JSONPath. IotJsonPathContent-sjablonen gebruiken de JSON .NET-implementatie voor het omzetten van JSONPath-expressies.

Voorbeeld

Wanneer de MedTech-service een apparaatbericht verwerkt, worden de sjablonen in CollectionContent gebruikt om het bericht te evalueren. De typeMatchExpression wordt gebruikt om te bepalen of de sjabloon moet worden gebruikt om een genormaliseerd bericht te maken van het apparaatbericht. Als de typeMatchExpression resulteert in waar, wordt de valueExpression waarde gebruikt om de JSON-waarden uit het apparaatbericht te zoeken en te extraheren en een genormaliseerd bericht te maken.

Tip

Visual Studio Code met de Azure IoT Hub-extensie is een aanbevolen methode voor het verzenden van IoT-apparaatberichten naar uw IoT-hub voor testen en probleemoplossing.

U kunt het foutopsporingsprogramma van de MedTech-servicetoewijzing gebruiken voor hulp bij het maken, bijwerken en oplossen van problemen met het MedTech-serviceapparaat en de FHIR-doeltoewijzingen. Met het foutopsporingsprogramma voor toewijzingen kunt u eenvoudig in realtime inline-aanpassingen bekijken en aanbrengen, zonder dat u de Azure Portal hoeft te verlaten. Het foutopsporingsprogramma voor toewijzingen kan ook worden gebruikt voor het uploaden van testapparaatberichten om te zien hoe ze eruitzien nadat ze zijn verwerkt in genormaliseerde berichten en zijn omgezet in FHIR-waarnemingen.

In dit voorbeeld gebruiken we een apparaatbericht waarmee gegevens worden vastgelegd heartRate :

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

Notitie

Om adresvervalsing van apparaten in D2C-berichten (apparaat-naar-cloud) te voorkomen, verrijkt Azure IoT Hub alle apparaatberichten met extra eigenschappen voordat ze naar de Event Hub worden doorgestuurd. Bijvoorbeeld: Eigenschappen: iothub-creation-time-utc en Systeemeigenschappen: iothub-connection-device-id. Zie Anti-adresvervalsingseigenschappen voor meer informatie.

patientIdExpression is alleen vereist voor MedTech-services in de modus Maken ; Als lookup echter wordt gebruikt, moet er een apparaatresource met een overeenkomende apparaat-id aanwezig zijn in de FHIR-doelservice. In deze voorbeelden wordt ervan uitgegaan dat uw MedTech-service zich in de modus Maken bevindt. Zie Het tabblad Doel configureren voor meer informatie over de eigenschappenDoel maken en Opzoeken.

De IoT-hub verrijkt het apparaatbericht en stuurt het door naar de Event Hub voordat de MedTech-service het apparaatbericht van de Event Hub leest:

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

We gebruiken deze apparaattoewijzing voor de normalisatiefase:

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

Het resulterende genormaliseerde bericht ziet er als volgt uit na de normalisatiefase:

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

Tip

Zie Problemen met medTech-service-implementatiefouten oplossen voor hulp bij het oplossen van veelvoorkomende fouten bij de implementatie van de MedTech-service.

Zie Fouten oplossen met behulp van de MedTech-servicelogboeken voor hulp bij het oplossen van MedTech-servicefouten.

Volgende stappen

In dit artikel hebt u geleerd hoe u IotJsonPathContent-sjablonen gebruikt met de MedTech-serviceapparaattoewijzing.

Zie Voor het implementeren van de MedTech-service met apparaatberichtroutering ingeschakeld via een Azure IoT Hub

Zie voor een overzicht van de FHIR-bestemmingstoewijzing van de MedTech-service

Zie voor een overzicht van de medtech-servicevoorbeelden voor toewijzingen op basis van scenario's

FHIR® is een gedeponeerd handelsmerk van Health Level Seven International, geregistreerd bij het U.S. Trademark Office en wordt gebruikt met hun toestemming.