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 patient123pasien .

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.