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 deviceIdExpression
waarden , timestampExpression
en 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.
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.