Cara menggunakan fungsi kustom dengan pemetaan perangkat layanan MedTech
Catatan
Fast Healthcare Interoperability Resources (FHIR®) adalah spesifikasi layanan kesehatan terbuka.
Banyak fungsi tersedia saat menggunakan JMESPath sebagai bahasa ekspresi. Selain fungsi bawaan yang tersedia sebagai bagian dari spesifikasi JMESPath, lebih banyak fungsi kustom juga dapat digunakan. Artikel ini menjelaskan cara menggunakan fungsi kustom khusus layanan MedTech dengan pemetaan perangkat layanan MedTech.
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 tampilannya setelah diproses menjadi pesan yang dinormalisasi dan diubah menjadi Pengamatan FHIR.
Tanda tangan fungsi
Setiap fungsi memiliki tanda tangan yang mengikuti spesifikasi JMESPath. Tanda tangan ini dapat direpresentasikan sebagai:
return_type function_name(type $argname)
Tanda tangan menunjukkan jenis yang valid untuk argumen. Jika jenis yang tidak valid diteruskan untuk argumen, kesalahan terjadi.
Penting
Ketika fungsi terkait matematika selesai, hasil akhirnya harus dapat pas dalam nilai panjang C# . Jika hasil akhir tidak dapat pas dalam nilai panjang C#, maka kesalahan matematika akan terjadi.
Seperti yang dinyatakan sebelumnya, fungsi-fungsi ini hanya dapat digunakan saat menentukan JmesPath sebagai bahasa ekspresi. Secara default, bahasa ekspresinya adalah JsonPath. Bahasa ekspresi dapat diubah saat menentukan ekspresi.
Contohnya:
"templateType": "CalculatedContent",
"template": {
"typeName": "heartrate",
"patientIdExpression": {
"value": "insertString('123', 'patient', `0`) ",
"language": "JmesPath"
},
...
}
Contoh ini menggunakan ekspresi insertString untuk menghasilkan ID patient123
pasien .
Nilai literal
Nilai konstanta dapat diberikan ke fungsi.
- Nilai numerik harus diapit dalam backtick: '
- Contoh: add('10', '10')
- Nilai string harus diapit dalam tanda kutip tunggal: '
- Contoh: insertString('mple', 'sa', '0')
Untuk informasi selengkapnya, lihat spesifikasi JMESPath.
Penanganan pengecualian
Pengecualian dapat terjadi di berbagai titik dalam siklus hidup pemrosesan data perangkat. Berikut adalah berbagai titik di mana pengecualian dapat terjadi:
Tindakan | Kapan | Pengecualian yang mungkin terjadi selama penguraian pemetaan perangkat | Hasil |
---|---|---|---|
Penguraian pemetaan perangkat | Setiap kali batch baru pesan perangkat diterima, pemetaan perangkat dimuat dan diurai. | Kegagalan untuk mengurai pemetaan perangkat. | Sistem mencoba memuat ulang dan mengurai pemetaan perangkat terbaru hingga penguraian berhasil. Tidak ada pesan perangkat baru yang diproses hingga penguraian berhasil. |
Penguraian pemetaan perangkat | Setiap kali batch baru pesan perangkat diterima, pemetaan perangkat dimuat dan diurai. | Gagal mengurai ekspresi apa pun. | Sistem mencoba memuat ulang dan mengurai pemetaan perangkat terbaru hingga penguraian berhasil. Tidak ada pesan perangkat baru yang diproses hingga penguraian berhasil. |
Eksekusi fungsi | Setiap kali fungsi dijalankan terhadap data perangkat dalam pesan perangkat. | Data perangkat input tidak cocok dengan tanda tangan fungsi. | Sistem berhenti memproses pesan perangkat tersebut. Pesan perangkat tidak dicoba ulang. |
Eksekusi fungsi | Setiap kali fungsi dijalankan terhadap data perangkat dalam pesan perangkat. | Pengecualian lain yang tercantum dalam deskripsi fungsi. | Sistem berhenti memproses pesan perangkat tersebut. Pesan perangkat tidak dicoba ulang. |
Fungsi matematika
tambahkan
number add(number $left, number $right)
Mengembalikan hasil penambahan argumen kiri ke argumen kanan.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | add('10', '10') | 20 |
{"left": 40, "right": 50} | add(left, right) | 90 |
{"left": 0, "right": 50} | add(left, right) | 50 |
Membagi
number divide(number $left, number $right)
Mengembalikan hasil pembagian argumen kiri dengan argumen kanan.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | bagi('10', '10') | 1 |
{"left": 40, "right": 50} | bagi(kiri, kanan) | 0.8 |
{"left": 0, "right": 50} | bagi(kiri, kanan) | 0 |
{"left": 50, "right": 0} | bagi(kiri, kanan) | kesalahan matematika: dibagi dengan nol |
Kalikan
number multiply(number $left, number $right)
Mengembalikan hasil mengalikan argumen kiri dengan argumen kanan.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | kalikan('10', '10') | 100 |
{"left": 40, "right": 50} | kalikan(kiri, kanan) | 2000 |
{"left": 0, "right": 50} | kalikan(kiri, kanan) | 0 |
pow
number pow(number $left, number $right)
Mengembalikan hasil menaikkan argumen kiri ke kekuatan argumen kanan.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | pow('10', '10') | 10000000000 |
{"left": 40, "right": 50} | pow(kiri, kanan) | kesalahan matematika: luapan |
{"left": 0, "right": 50} | pow(kiri, kanan) | 0 |
{"left": 100, "right": 0.5} | pow(kiri, kanan) | 10 |
Mengurangi
number subtract(number $left, number $right)
Mengembalikan hasil pengurangan argumen kanan dari argumen kiri.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | kurangi('10', '10') | 0 |
{"left": 40, "right": 50} | kurangi(kiri, kanan) | -10 |
{"left": 0, "right": 50} | kurangi(kiri, kanan) | -50 |
Fungsi untai (karakter)
insertString
string insertString(string $original, string $toInsert, number pos)
Menghasilkan string baru dengan menyisipkan nilai toInsert
ke dalam string original
. String disisipkan pada posisi pos
dalam string original
.
Jika argumen posisi berbasis nol, posisi nol mengacu pada karakter pertama dalam string.
Jika argumen posisi yang disediakan berada di luar rentang panjang original
, maka kesalahan terjadi.
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
n/a | insertString('mple', 'sa', 0 ) |
"sampel" |
{"original": "mple", "toInsert": "sa", "pos": 0} | insertString(original, toInsert, pos) | "sampel" |
{"original": "suess", "toInsert": "cc", "pos": 2} | insertString(original, toInsert, pos) | "sukses" |
{"original": "myString", "toInsert": "!!", "pos": 8} | insertString(original, toInsert, pos) | "myString!!" |
Fungsi tanggal
fromUnixTimestamp
string fromUnixTimestamp(number $unixTimestampInSeconds)
Menghasilkan stempel waktu yang sesuai dengan ISO 8061 dari tanda waktu Unix yang diberikan. Tanda waktu dinyatakan sebagai jumlah detik sejak Epoch (1 Januari 1970).
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
{"unix": 1625677200} | fromUnixTimestamp(unix) | "2021-07-07T17:00:00+0" |
{"unix": 0} | fromUnixTimestamp(unix) | "1970-01-01T00:00:00+0" |
fromUnixTimestampMs
string fromUnixTimestampMs(number $unixTimestampInMs)
Menghasilkan stempel waktu yang sesuai dengan ISO 8061 dari tanda waktu Unix yang diberikan. Tanda waktu dinyatakan sebagai jumlah milidetik sejak Epoch (1 Januari 1970).
Contoh:
Diberikan | Ekspresi | Hasil |
---|---|---|
{"unix": 1626799080000} | fromUnixTimestampMs(unix) | "2021-07-20T16:38:00+0" |
{"unix": 0} | fromUnixTimestampMs(unix) | "1970-01-01T00:00:00+0" |
Tip
Lihat artikel Layanan MedTech Memecahkan masalah kesalahan menggunakan log layanan MedTech untuk bantuan memperbaiki kesalahan menggunakan log layanan MedTech.
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara menggunakan fungsi kustom layanan MedTech dalam pemetaan perangkat.
Untuk gambaran umum pemetaan perangkat 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 mereka.