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.