Cara menggunakan templat CalculatedContent dengan pemetaan perangkat layanan MedTech

Catatan

Fast Healthcare Interoperability Resources (FHIR®) adalah spesifikasi layanan kesehatan terbuka.

Artikel ini menyediakan gambaran umum tentang cara menggunakan templat CalculatedContent dalam pemetaan perangkat layanan MedTech.

Dasar-dasar templat CalculatedContent

Templat Layanan MedTech CalculatedContent mendukung dua bahasa ekspresi JSON: JSONPath dan JMESPath. 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: TimestampExpression, DeviceIdExpression, dll.).

Catatan

Jika Anda tidak menentukan bahasa ekspresi, templat pemetaan perangkat layanan MedTech menggunakan bahasa ekspresi default yang dikonfigurasi untuk templat. Defaultnya adalah JSONPath, tetapi Anda dapat menimpanya jika perlu.

Ekspresi didefinisikan sebagai:

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

Dalam contoh berikut, typeMatchExpression didefinisikan sebagai:

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

Templat CalculatedContent 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 Contoh ekspresi JMESPath
typeMatchExpression Ekspresi yang dievaluasi layanan MedTech terhadap payload pesan perangkat. Jika layanan menemukan nilai token yang cocok, layanan menganggap templat cocok. Layanan mengevaluasi semua ekspresi selanjutnya terhadap nilai token yang diekstrak yang cocok di sini. $..[?(@heartRate)] [Body][?contains(keys(@), `heartRate`)] \| @[0]
deviceIdExpression Ekspresi untuk mengekstrak pengidentifikasi perangkat. $.matchedToken.deviceId @.matchedToken.deviceId
timestampExpression Ekspresi untuk mengekstrak nilai tanda waktu untuk nilai pengukuran OccurrenceTimeUtc . $.matchedToken.endDate @.matchedToken.endDate
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. $.matchedToken.patientId @.matchedToken.patientId
encounterIdExpression Opsional: Ekspresi untuk mengekstrak pengidentifikasi pertemuan. $.matchedToken.encounterId @.matchedToken.encounterId
correlationIdExpression Opsional: Ekspresi untuk mengekstrak pengidentifikasi korelasi. Anda dapat menggunakan output ini untuk mengelompokkan nilai ke dalam satu pengamatan dalam pemetaan tujuan FHIR. $.matchedToken.correlationId @.matchedToken.correlationId
values[].valueExpression Ekspresi untuk mengekstrak nilai yang diinginkan. $.matchedToken.heartRate @.matchedToken.heartRate

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 ditampilkan. Untuk informasi selengkapnya tentang mengonfigurasi jenis Resolusi layanan MedTech, lihat Mengonfigurasi tab Tujuan.

Bahasa ekspresi

Saat Anda menentukan bahasa yang akan digunakan untuk ekspresi, nilai berikut ini valid:

Bahasa pemograman ekspresi Nilai
JSONPath JsonPath
JMESPath JmesPath

Karena JSONPath adalah bahasa ekspresi default, tidak diperlukan untuk menyertakan bahasa ekspresi dalam templat CalculatedContent.

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

Anda juga dapat secara eksplisit mengatur bahasa ekspresi default untuk templat CalculatedContent dengan menggunakan defaultExpressionLanguage parameter :

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

Tip

Untuk informasi selengkapnya tentang JSONPath, lihat JSONPath - XPath untuk JSON. Templat CalculatedContent menggunakan implementasi JSON .NET untuk menyelesaikan ekspresi JSONPath.

Untuk informasi selengkapnya tentang JMESPath, lihat Spesifikasi JMESPath. Templat CalculatedContent menggunakan implementasi JMESPath .NET untuk menyelesaikan ekspresi JMESPath.

Fungsi kustom

Satu set fungsi kustom untuk layanan MedTech juga tersedia. Fungsi kustom layanan MedTech berada di luar fungsi yang disediakan sebagai bagian dari spesifikasi JMESPath. Untuk informasi selengkapnya tentang fungsi kustom layanan MedTech, lihat Cara menggunakan fungsi kustom dengan pemetaan perangkat layanan MedTech.

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 deviceIdExpressionnilai , timestampExpression, dan valueExpression digunakan untuk menemukan dan mengekstrak nilai JSON dari pesan perangkat dan membuat pesan yang dinormalisasi. Dalam contoh ini, semua ekspresi ditulis dalam JSONPath, namun, akan valid untuk menulis semua ekspresi di JMESPath. Terserah penulis templat untuk menentukan bahasa ekspresi mana yang paling tepat.

Tip

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 mereka akan terlihat setelah diproses menjadi pesan yang dinormalisasi dan diubah menjadi Pengamatan FHIR.

Dalam contoh ini, kami menggunakan pesan perangkat yang menangkap heartRate data:

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

Pusat aktivitas memperkaya pesan perangkat sebelum layanan MedTech membaca pesan perangkat dari hub peristiwa:

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

Kami menggunakan pemetaan perangkat ini untuk tahap normalisasi:

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

Penting

Layanan MedTech mengevaluasi typeMatchExpression terhadap payload data perangkat yang masuk. Jika layanan menemukan nilai token yang cocok, layanan menganggap templat cocok.

Layanan MedTech mengevaluasi semua ekspresi selanjutnya terhadap nilai token baru. Nilai token baru ini berisi payload data perangkat asli dan nilai token yang diekstrak yang cocok di sini.

Dengan cara ini, payload data perangkat asli dan objek yang cocok tersedia untuk setiap ekspresi nanti. Nilai token yang diekstrak tersedia sebagai properti 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"
    }
}

Pesan yang dinormalisasi yang dihasilkan akan terlihat seperti ini setelah tahap normalisasi:

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

Tip

Untuk bantuan dalam memecahkan masalah kesalahan penyebaran layanan MedTech, lihat Memecahkan masalah kesalahan penyebaran layanan MedTech.

Untuk bantuan dalam memecahkan masalah kesalahan layanan MedTech, lihat Memecahkan masalah kesalahan menggunakan log layanan MedTech.

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara menggunakan templat CalculatedContent dengan pemetaan perangkat layanan MedTech.

Untuk mempelajari cara menggunakan fungsi kustom layanan MedTech, 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.