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 deviceIdExpression
nilai , 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.