Delen via


CalculatedContent-sjablonen gebruiken met de apparaattoewijzing van de MedTech-service

Notitie

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

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

Basisbeginselen van de sjabloon CalculatedContent

De MedTech-service CalculatedContent-sjablonen ondersteunen twee JSON-expressietalen: JSONPath en JMESPath. 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: TimestampExpression, DeviceIdExpression, enzovoort).

Notitie

Als u geen expressietaal definieert, gebruiken de apparaattoewijzingssjablonen van de MedTech-service de standaardexpressietaal die is geconfigureerd voor de sjabloon. De standaardwaarde is JSONPath, maar u kunt het indien nodig overschrijven.

Een expressie wordt gedefinieerd als:

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

In het volgende voorbeeld typeMatchExpression wordt gedefinieerd als:

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

Met de CalculatedContent-sjablonen kunt u waarden afstemmen op en extraheren uit een apparaatbericht dat wordt gelezen uit een Azure Event Hubs Event Hub via de volgende expressies:

Element Beschrijving Voorbeeld van JSONPath-expressie Voorbeeld van JMESPath-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. De service evalueert alle latere expressies op basis van de geëxtraheerde tokenwaarde die hier overeenkomt. $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression De expressie voor het extraheren van de apparaat-id. $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression De expressie voor het extraheren van de tijdstempelwaarde voor de waarde van OccurrenceTimeUtc de meting. $.matchedToken.endDate @.matchedToken.endDate
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. $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression Optioneel: de expressie voor het extraheren van de id van de ontmoeting. $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression Optioneel: de expressie om de correlatie-id te extraheren. U kunt deze uitvoer gebruiken om waarden te groepeer in één observatie in de FHIR-doeltoewijzing. $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression De expressie om de gewenste waarde te extraheren. $.matchedToken.heartRate @.matchedToken.heartRate

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 uit de nettolading van de apparaatgegevens wordt geëxtraheerd, 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-serviceomzetting.

Expressietalen

Wanneer u de taal opgeeft die voor de expressie moet worden gebruikt, zijn de volgende waarden geldig:

Expressietaal Waarde
JSONPath JsonPath
JMESPath JmesPath

Omdat JSONPath de standaardexpressietaal is, is het niet vereist om de expressietaal op te nemen in een CalculatedContent-sjabloon.

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

U kunt ook de standaardexpressietaal voor een CalculatedContent-sjabloon expliciet instellen met behulp van de defaultExpressionLanguage parameter :

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

Tip

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

Zie JMESPath-specificatie voor meer informatie over JMESPath. CalculatedContent-sjablonen maken gebruik van de JMESPath .NET-implementatie voor het oplossen van JMESPath-expressies.

Aangepaste functies

Er is ook een set aangepaste functies voor de MedTech-service beschikbaar. De aangepaste functies van de MedTech-service vallen buiten de functies die worden geleverd als onderdeel van de JMESPath-specificatie. Zie Aangepaste functies gebruiken met de MedTech-serviceapparaattoewijzing voor meer informatie over de aangepaste functies van de MedTech-service.

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, worden de deviceIdExpressionwaarden , timestampExpressionen valueExpression gebruikt om de JSON-waarden uit het apparaatbericht te zoeken en op te halen en een genormaliseerd bericht te maken. In dit voorbeeld worden alle expressies geschreven in JSONPath, maar het zou geldig zijn om alle expressies in JMESPath te schrijven. Het is aan de auteur van de sjabloon om te bepalen welke expressietaal het meest geschikt is.

Tip

U kunt het foutopsporingsprogramma voor de MedTech-servicetoewijzing gebruiken voor hulp bij het maken, bijwerken en oplossen van problemen met de MedTech-serviceapparaat en FHIR-doeltoewijzingen. Met het foutopsporingsprogramma voor toewijzingen kunt u eenvoudig inline aanpassingen in realtime 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 deze 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 :

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

De Event Hub verrijkt het apparaatbericht voordat de MedTech-service het apparaatbericht uit de Event Hub leest:

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

We gebruiken deze apparaattoewijzing voor de normalisatiefase:

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

Belangrijk

De MedTech-service evalueert typeMatchExpression op basis van de nettolading van binnenkomende apparaatgegevens. Als de service een overeenkomende tokenwaarde vindt, wordt de sjabloon als een overeenkomst beschouwd.

De MedTech-service evalueert alle latere expressies op basis van een nieuwe tokenwaarde. Deze nieuwe tokenwaarde bevat zowel de oorspronkelijke nettolading van apparaatgegevens als de geëxtraheerde tokenwaarde die hier overeenkomt.

Op deze manier zijn de oorspronkelijke nettolading van apparaatgegevens en het overeenkomende object beschikbaar voor elke latere expressie. De geëxtraheerde tokenwaarde is beschikbaar als de eigenschap 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"
    }
}

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

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

Tip

Zie Problemen met de implementatie van de MedTech-service oplossen voor hulp bij het oplossen van 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 CalculatedContent-sjablonen kunt gebruiken met de apparaattoewijzing van de MedTech-service.

Zie voor meer informatie over het gebruik van de aangepaste functies van de MedTech-service

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

Zie voor een overzicht van de voorbeelden van toewijzingen op basis van scenario's voor de MedTech-service

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