Come usare i modelli IotJsonPathContent con il mapping dei dispositivi del servizio MedTech
Nota
Fast Healthcare Interoperability Resources (FHIR®) è una specifica sanitaria aperta.
Questo articolo offre una panoramica dell'uso dei modelli IotJsonPathContent all'interno di un mapping dei dispositivi del servizio MedTech.
Nozioni di base sul modello IotJsonPathContent
IotJsonPathContent modelli possono essere usati quando il servizio MedTech inserisce i messaggi del dispositivo indirizzati da un hub IoT di Azure. Quando i modelli IotJsonPathContent vengono usati nel mapping dei dispositivi, il servizio MedTech estrae l'ID dispositivo e il timestamp di misurazione dai metadati forniti da un hub IoT. DeviceIdExpression e TimestampExpression non devono essere inclusi nei modelli IotJsonPathContent.
I modelli IotJsonPathContent del servizio MedTech supportano JSON Expression Language JSONPath. Le espressioni vengono usate per identificare il modello da usare con un determinato messaggio di dispositivo JSON (ad esempio TypeMatchExpression) e per estrarre valori specifici necessari per creare un messaggio normalizzato, ad esempio PatientIdExpression, ValueExpression e così via. I modelli IotJsonPathContent sono simili ai modelli CalculatedContent , ad eccezione dei modelli DeviceIdExpression e TimestampExpression non sono supportati.
Nota
JMESPath non è supportato dai modelli IotJsonPathContent.
Un'espressione è definita come:
<name of expression> : <the expression>
Nell'esempio seguente viene typeMatchExpression
definito come:
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
Se il servizio MedTech è configurato per inserire i messaggi dei dispositivi da un hub IoT, non è necessario usare i modelli IotJsonPathContent. I modelli CalculatedContent possono essere usati presupponendo che si definiscano correttamente DeviceIdExpression e TimestampExpression.
I modelli IotJsonPathContent consentono la corrispondenza e l'estrazione di valori da un messaggio del dispositivo letti da un hub eventi di Hub eventi di Azure tramite le espressioni seguenti:
Elemento | Descrizione | Esempio di espressione JSONPath |
---|---|---|
typeMatchExpression | Espressione valutata dal servizio MedTech rispetto al payload del messaggio del dispositivo. Se il servizio trova un valore di token corrispondente, considera il modello una corrispondenza. | $..[?(@heartRate)] |
patientIdExpression | Espressione da estrarre l'identificatore del paziente. Obbligatorio quando il tipo di risoluzione dei servizi MedTech è impostato su Crea e facoltativo quando il tipo di risoluzione del servizio MedTech è impostato su Ricerca. | $.SystemProperties.iothub-connection-device-id |
encounterIdExpression | Facoltativo: espressione per estrarre l'identificatore di incontro. | $.Body.encounterId |
correlationIdExpression | Facoltativo: espressione per estrarre l'identificatore di correlazione. È possibile usare questo output per raggruppare i valori in una singola osservazione nel mapping di destinazione FHIR. | $.Body.correlationId |
valori[].valueExpression | Espressione da estrarre il valore desiderato. | $.Body.heartRate |
Importante
Il servizio MedTech userà l'ID dispositivo definito nell'hub IoT come identificatore del dispositivo di risorsa FHIR. Se il servizio MedTech è configurato per usare un tipo di risoluzione delle identità di Ricerca, una risorsa dispositivo con un identificatore di dispositivo corrispondente deve esistere nel servizio FHIR o si verificherà un errore quando viene elaborato il messaggio del dispositivo. Se il tipo di risoluzione delle identità del servizio MedTech è impostato su Crea, deve essere incluso nel mapping dei dispositivi in patientIdExpression
modo che sia possibile creare una nuova risorsa paziente e una risorsa Dispositivo se non esistono già.
Nota
Il tipo Di risoluzione specifica in che modo il servizio MedTech associa i dati del dispositivo alle risorse del dispositivo e alle risorse del paziente. Il servizio MedTech legge le risorse dispositivo e paziente dal servizio FHIR usando identificatori di dispositivo e identificatori dei pazienti. Se un identificatore di verifica viene specificato ed estratto dal payload dei dati del dispositivo, viene collegato all'osservazione se esiste un incontro nel servizio FHIR con tale identificatore. Se l'identificatore di verifica è stato normalizzato correttamente, ma non esiste un'eccezione FHIR Encounter con tale identificatore, viene generata un'eccezione FhirResourceNotFound . Per altre informazioni sulla configurazione del tipo di risoluzione del servizio MedTech, vedere Configurare la scheda Destinazione.
Linguaggi di espressione
JSONPath è il linguaggio di espressione predefinito e l'inclusione di un linguaggio di espressione all'interno di un modello IotJsonPathContent non è supportato. Se si tenta di specificare il linguaggio dell'espressione in un oggetto expression, il modello IotJsonPathContent contenente l'oggetto expression ha esito negativo.
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
Suggerimento
Per altre informazioni su JSONPath, vedere JSONPath - XPath per JSON. I modelli IotJsonPathContent usano l'implementazione JSON .NET per la risoluzione delle espressioni JSONPath.
Esempio
Quando il servizio MedTech elabora un messaggio di dispositivo, i modelli in CollectionContent vengono usati per valutare il messaggio. Viene typeMatchExpression
usato per determinare se il modello deve essere usato per creare un messaggio normalizzato dal messaggio del dispositivo. Se restituisce typeMatchExpression
true, il valueExpression
valore viene usato per individuare ed estrarre i valori JSON dal messaggio del dispositivo e creare un messaggio normalizzato.
Suggerimento
Visual Studio Code con l'estensione hub IoT di Azure è un metodo consigliato per l'invio di messaggi di dispositivo IoT all'hub IoT per il test e la risoluzione dei problemi.
È possibile usare il debugger di mapping dei servizi MedTech per assistenza per la creazione, l'aggiornamento e la risoluzione dei problemi relativi ai mapping di destinazione del servizio MedTech e FHIR. Il debugger mapping consente di visualizzare e apportare facilmente modifiche inline in tempo reale, senza mai dover lasciare l'portale di Azure. Il debugger di mapping può essere usato anche per caricare i messaggi del dispositivo di test per vedere come verranno elaborati in messaggi normalizzati e trasformati in osservazioni FHIR.
In questo esempio viene usato un messaggio del dispositivo che acquisisce heartRate
i dati:
{
"PatientId": "patient1",
"HeartRate" : "78"
}
Nota
Per evitare lo spoofing dei dispositivi nei messaggi D2C (device-to-cloud), hub IoT di Azure arricchire tutti i messaggi del dispositivo con proprietà aggiuntive prima di instradarli all'hub eventi. Ad esempio: Proprietà: iothub-creation-time-utc
e SystemProperties: iothub-connection-device-id
. Per altre informazioni, vedere Proprietà anti-spoofing.
patientIdExpression
è obbligatorio solo per i servizi MedTech nella modalità Crea ; Tuttavia, se viene usata ricerca , una risorsa dispositivo con un identificatore di dispositivo corrispondente deve esistere nel servizio FHIR di destinazione. Questi esempi presuppongono che il servizio MedTech sia in modalità Crea . Per altre informazioni sulle proprietà Crea e Ricercadestinazione, vedere Configurare la scheda Destinazione.
L'hub IoT arricchisce e indirizza il messaggio del dispositivo all'hub eventi prima che il servizio MedTech legge il messaggio del dispositivo dall'hub eventi:
{
"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"
}
}
Questo mapping dei dispositivi viene usato per la fase di normalizzazione:
{
"templateType": "CollectionContent",
"template": [
{
"templateType": "IotJsonPathContent",
"template": {
"typeName": "HeartRate",
"typeMatchExpression": "$..[?(@Body.HeartRate)]",
"patientIdExpression": "$.Body.PatientId",
"values": [
{
"required": true,
"valueExpression": "$.Body.HeartRate",
"valueName": "HeartRate"
}
]
}
}
]
}
Il messaggio normalizzato risultante avrà un aspetto simile al seguente dopo la fase di normalizzazione:
{
"type": "HeartRate",
"occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
"deviceId": "sampleDeviceId",
"patientId": "patient1",
"properties": [
{
"name": "HeartRate",
"value": "78"
}
]
}
Suggerimento
Per assistenza nella correzione degli errori comuni di distribuzione del servizio MedTech, vedere Risolvere gli errori di distribuzione del servizio MedTech.
Per assistenza sulla correzione degli errori del servizio MedTech, vedere Risolvere gli errori usando i log del servizio MedTech.
Passaggi successivi
In questo articolo si è appreso come usare i modelli IotJsonPathContent con il mapping dei dispositivi del servizio MedTech.
Per distribuire il servizio MedTech con il routing dei messaggi del dispositivo abilitato tramite un hub IoT di Azure, vedere
Per una panoramica del mapping di destinazione del servizio MedTech FHIR, vedere
Per una panoramica degli esempi di mapping basati su scenari di servizio MedTech, vedere
FHIR® è un marchio registrato di Health Level Seven International, registrato in U.S. Trademark Office e viene usato con l'autorizzazione.