Cara menggunakan templat IotJsonPathContent dengan pemetaan perangkat layanan MedTech
Catatan
Fast Healthcare Interoperability Resources (FHIR®) adalah spesifikasi layanan kesehatan terbuka.
Artikel ini memberikan gambaran umum tentang cara menggunakan templat IotJsonPathContent dalam pemetaan perangkat layanan MedTech.
Dasar-dasar templat IotJsonPathContent
Templat IotJsonPathContent dapat digunakan saat layanan MedTech menyerap pesan perangkat yang dirutekan dari Azure IoT Hub. Ketika templat IotJsonPathContent digunakan dalam pemetaan perangkat, layanan MedTech mengekstrak ID perangkat dan tanda waktu pengukuran dari metadata yang disediakan oleh hub IoT. DeviceIdExpression dan TimestampExpression tidak boleh disertakan dalam templat IotJsonPathContent.
Templat IotJsonPathContent layanan MedTech mendukung bahasa ekspresi JSON JSONPath. Ekspresi digunakan untuk mengidentifikasi templat mana yang akan digunakan dengan pesan perangkat JSON tertentu (misalnya: TypeMatchExpression) dan untuk mengekstrak nilai tertentu yang diperlukan untuk membuat pesan yang dinormalisasi (misalnya: PatientIdExpression, ValueExpression, dll.). Templat IotJsonPathContent mirip dengan templat CalculatedContent kecuali DeviceIdExpression dan TimestampExpression tidak didukung.
Catatan
JMESPath tidak didukung oleh templat IotJsonPathContent.
Ekspresi didefinisikan sebagai:
<name of expression> : <the expression>
Dalam contoh berikut, typeMatchExpression
didefinisikan sebagai:
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
Jika layanan MedTech Anda disiapkan untuk menyerap pesan perangkat dari hub IoT, Anda tidak diharuskan menggunakan templat IotJsonPathContent. Templat CalculatedContent dapat digunakan dengan asumsi bahwa Anda menentukan DeviceIdExpression dan TimestampExpression dengan benar.
Templat IotJsonPathContent memungkinkan pencocokan pada dan mengekstrak nilai dari pesan perangkat yang dibaca dari hub peristiwa Azure Event Hubs melalui ekspresi berikut:
Elemen | Deskripsi | Contoh ekspresi JSONPath |
---|---|---|
typeMatchExpression | Ekspresi yang dievaluasi layanan MedTech terhadap payload pesan perangkat. Jika layanan menemukan nilai token yang cocok, layanan menganggap templat cocok. | $..[?(@heartRate)] |
patientIdExpression | Ekspresi untuk mengekstrak pengidentifikasi pasien. Diperlukan saat jenis Resolusi layanan MedTech diatur ke Buat, dan opsional saat jenis Resolusi layanan MedTech diatur ke Pencarian. | $.SystemProperties.iothub-connection-device-id |
encounterIdExpression | Opsional: Ekspresi untuk mengekstrak pengidentifikasi pertemuan. | $.Body.encounterId |
correlationIdExpression | Opsional: Ekspresi untuk mengekstrak pengidentifikasi korelasi. Anda dapat menggunakan output ini untuk mengelompokkan nilai ke dalam satu pengamatan dalam pemetaan tujuan FHIR. | $.Body.correlationId |
values[].valueExpression | Ekspresi untuk mengekstrak nilai yang diinginkan. | $.Body.heartRate |
Penting
Layanan MedTech akan menggunakan ID perangkat yang ditentukan di hub IoT sebagai pengidentifikasi perangkat sumber daya FHIR. Jika layanan MedTech disiapkan untuk menggunakan jenis resolusi identitas Pencarian, sumber daya Perangkat dengan pengidentifikasi perangkat yang cocok harus ada di layanan FHIR atau kesalahan akan terjadi saat pesan perangkat diproses. Jika jenis resolusi identitas layanan MedTech diatur ke Buat, patientIdExpression
harus disertakan dalam pemetaan perangkat sehingga sumber daya Pasien dan sumber daya Perangkat baru dapat dibuat jika belum ada.
Catatan
Jenis Resolusi menentukan bagaimana layanan MedTech mengaitkan data perangkat dengan sumber daya Perangkat dan sumber daya Pasien. Layanan MedTech membaca sumber daya Perangkat dan Pasien dari layanan FHIR menggunakan pengidentifikasi perangkat dan pengidentifikasi pasien. Jika pengidentifikasi pertemuan ditentukan dan diekstrak dari payload data perangkat, pengidentifikasi ditautkan ke pengamatan jika ada pertemuan pada layanan FHIR dengan pengidentifikasi tersebut. Jika pengidentifikasi pertemuan berhasil dinormalisasi, tetapi tidak ada Pertemuan FHIR dengan pengidentifikasi yang ditemukan, pengecualian FhirResourceNotFound akan dilemparkan. Untuk informasi selengkapnya tentang mengonfigurasi jenis Resolusi layanan MedTech, lihat Mengonfigurasi tab Tujuan.
Bahasa ekspresi
JSONPath adalah bahasa ekspresi default, dan penyertaan bahasa ekspresi dalam templat IotJsonPathContent tidak didukung. Jika Anda mencoba menentukan bahasa ekspresi dalam objek ekspresi, templat IotJsonPathContent yang berisi objek ekspresi gagal.
"templateType": "IotJsonPathContent",
"template": {
"typeName": "heartrate",
"typeMatchExpression": "$..[?(@heartRate)]",
...
}
Tip
Untuk informasi selengkapnya tentang JSONPath, lihat JSONPath - XPath untuk JSON. Templat IotJsonPathContent menggunakan implementasi JSON .NET untuk menyelesaikan ekspresi JSONPath.
Contoh
Saat layanan MedTech memproses pesan perangkat, templat di CollectionContent digunakan untuk mengevaluasi pesan.
typeMatchExpression
digunakan untuk menentukan apakah templat harus digunakan atau tidak untuk membuat pesan yang dinormalisasi dari pesan perangkat.
typeMatchExpression
Jika mengevaluasi ke true, maka valueExpression
nilai digunakan untuk menemukan dan mengekstrak nilai JSON dari pesan perangkat dan membuat pesan yang dinormalisasi.
Tip
Visual Studio Code dengan ekstensi Azure IoT Hub adalah metode yang direkomendasikan untuk mengirim pesan perangkat IoT ke hub IoT Anda untuk pengujian dan pemecahan masalah.
Anda dapat menggunakan debugger Pemetaan layanan MedTech untuk bantuan membuat, memperbarui, dan memecahkan masalah perangkat layanan MedTech dan pemetaan tujuan FHIR. Debugger Pemetaan memungkinkan Anda untuk dengan mudah melihat dan membuat penyesuaian sebaris secara real time, tanpa harus meninggalkan portal Azure. Debugger Pemetaan juga dapat digunakan untuk mengunggah pesan perangkat pengujian untuk melihat bagaimana tampilannya setelah diproses menjadi pesan yang dinormalisasi dan diubah menjadi Pengamatan FHIR.
Dalam contoh ini, kami menggunakan pesan perangkat yang menangkap heartRate
data:
{
"PatientId": "patient1",
"HeartRate" : "78"
}
Catatan
Untuk menghindari spoofing perangkat dalam pesan perangkat ke cloud (D2C), Azure IoT Hub memperkaya semua pesan perangkat dengan properti tambahan sebelum merutekannya ke hub peristiwa. Misalnya: Properti: iothub-creation-time-utc
dan SystemProperties: iothub-connection-device-id
. Untuk informasi selengkapnya, lihat Properti anti-spoofing.
patientIdExpression
hanya diperlukan untuk layanan MedTech dalam mode Buat ; namun, jika Pencarian sedang digunakan, sumber daya Perangkat dengan pengidentifikasi perangkat yang cocok harus ada di layanan FHIR tujuan. Contoh-contoh ini mengasumsikan layanan MedTech Anda berada dalam mode Buat . Untuk informasi selengkapnya tentang properti Buat dan TujuanPencarian, lihat Mengonfigurasi tab Tujuan.
Hub IoT memperkaya dan merutekan pesan perangkat ke pusat aktivitas sebelum layanan MedTech membaca pesan perangkat dari hub peristiwa:
{
"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"
}
}
Kami menggunakan pemetaan perangkat ini untuk tahap normalisasi:
{
"templateType": "CollectionContent",
"template": [
{
"templateType": "IotJsonPathContent",
"template": {
"typeName": "HeartRate",
"typeMatchExpression": "$..[?(@Body.HeartRate)]",
"patientIdExpression": "$.Body.PatientId",
"values": [
{
"required": true,
"valueExpression": "$.Body.HeartRate",
"valueName": "HeartRate"
}
]
}
}
]
}
Pesan yang dinormalisasi yang dihasilkan akan terlihat seperti ini setelah tahap normalisasi:
{
"type": "HeartRate",
"occurrenceTimeUtc": "2023-07-25T20:41:26.046Z",
"deviceId": "sampleDeviceId",
"patientId": "patient1",
"properties": [
{
"name": "HeartRate",
"value": "78"
}
]
}
Tip
Untuk bantuan dalam memperbaiki kesalahan penyebaran layanan MedTech umum, lihat Memecahkan masalah kesalahan penyebaran layanan MedTech.
Untuk bantuan dalam memperbaiki kesalahan layanan MedTech, lihat Memecahkan masalah kesalahan menggunakan log layanan MedTech.
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara menggunakan templat IotJsonPathContent dengan pemetaan perangkat layanan MedTech.
Untuk menyebarkan layanan MedTech dengan perutean pesan perangkat yang diaktifkan melalui Azure IoT Hub, lihat
Untuk gambaran umum pemetaan tujuan FHIR layanan MedTech, lihat
Untuk gambaran umum sampel pemetaan berbasis skenario layanan MedTech, lihat
FHIR® adalah merek dagang terdaftar dari Health Level Seven International, terdaftar di Kantor Merek Dagang AS dan digunakan dengan izin mereka.