Spesifikasi Terbuka, Smart Health v0.2

Spesifikasi Terbuka, Smart Health v0.2

Spesifikasi Terbuka (Open Specification) untuk Catatan Medis Digital (Digital Medical Record)

Modifikasi terakhir: 05/10/2007

Pustaka spesifikasi ini kami rilis secara terbuka di bawah lisensi LGPL sehingga Anda juga dapat menggunakan spesifikasi yang telah kami buat tanpa harus membuka aplikasi Anda menjadi GPL.

Ketua:

  • Gladhi Guarddin

Anggota:

  • Dimas Julian
  • Jan Peter Alexander
  • Dominikus Randy
  • Donny
  • Tim Kreatifitas Mahasiswa 2007, Universitas Indonesia
    • Reza Lesmana
    • Deni Lukmanul Hakim
    • Fatimah Az Zahra
    • Yudhistira
    • Yulianto

Keseluruhan anggota adalah tim smartcard UI yang berada pada tim kerja Sistem Administrator, Direktorat Pengembangan dan Pelayanan Sistem Informasi-UI. Kick Off pengembangan Spesifikasi Smart Health ini dimulai tanggal 1 Agustus 2007.

Pendahuluan

Seperti kita ketahui, data kesehatan adalah data yang bersifat sangat pribadi dan menjadi salah satu informasi penting yang wajib menyertai seseorang ke manapun dia pergi. Kepemilikan informasi tersebut merupakan kepentingan dasar seorang pasien dan tidak boleh dirahasiakan oleh sebuah institusi kesehatan manapun, karena informasi tersebut adalah hak milik pasien.

Informasi sederhana yang tersimpan di dalam SmartCard akan sangat membantu seorang pemilik kartu apabila mengalami suatu kecelakaan, dan hanya informasi tersebut sajalah yang bisa memberi tahu status medis terakhir. Interoperability dengan institusi kesehatan lain menjadi suatu keharusan dan harus dapat dilakukan secara offline. Setiap institusi kesehatan dapat memberikan informasi secukupnya di dalam SmartCard yang dapat digunakan oleh institusi lain.

Implementasi konsep Smart Health yang tidak bervisikan pasien/rakyat akan menjadikan aspek bisnis dunia kesehatan menjadi sangat bervariasi dan saling bersaing. Kejelasan standard Smart Health akan menjadi solusi terbaik bagi pasien maupun pelaku bisnisnya.

Spesifikasi ini terbuka untuk umum, dan diharapkan dapat dipergunakan sebaik-baiknya. Segala implementasi komersial yang merupakan turunan dari spesikasi ini diharapkan juga merupakan Open Specification. Jangan lupa untuk mereferensikan spesifikasi ini apabila anda sudah membacanya. Semoga dokumen ini dapat menjadi sebuah kontribusi berarti dalam mewujudkan gerakan Indonesia Sehat 2010.

Spesifikasi Umum

Pada bagian ini akan dirinci segala aspek teknis dan non-teknis yang bersifat umum. Penjelasan yang bersifat lebih mendalam dapat dilihat pada bagian lain dalam dokumen ini.

Data

SMART HEALTH adalah sebuah aplikasi catatan medis pemilik elektronik yang tersimpan di dalam sebuah Smart Card. Seluruh atribut data dapat diimplementasi dengan berbagai macam mekanisme kompresi dan enkripsi data. Namun diharapkan seluruh informasi dapat diambil sesuai dengan spesifikasi pada dokumen ini. Atribut data yang tersimpan antara lain:

  1. Kode Institusi
  2. Kode Dokter/Petugas pada Institusi tersebut
  3. Tanggal Pemeriksaan
  4. Anamnesa (keluhan pasien)
  5. Diagnosa
  6. Therapy (pengobatan yang diberikan)

Teknologi

Smart Health menggunakan teknologi Java Card sebagai sistem dasar pengembangan aplikasi didalam Smart Card. Seluruh informasi catatan medis elektronik ini akan tersimpan di dalam sebuah aplikasi Applet Java dengan sistem keamanan yang baik.

Applet Java Card

Applet Java Card untuk aplikasi Smart Health terdiri dari dua bagian utama. Bagian pertama adalah bagian untuk membaca data medis yang tersimpan di dalam Smart Card, dan bagian kedua adalah untuk menulis data ke dalam Smart Card.

Pembangunan Applet Java Card terdiri dari satu kelas dengan 5 method di dalamnya yang berfungsi untuk mengatur alur lalu lintas komunikasi data dari dan ke kartu melalui APDU (Application Protocol Data Unit). APDU adalah protokol yang digunakan oleh Java Card untuk berkomunikasi antara Smart Card dengan terminal.

Lima method yang digunakan dalam membuat applet Smart Health adalah initializePIN(), process(), sendData(), setData(), dan resetData(). Method initializePIN() digunakan untuk autentifikasi PIN pemilik Smart Card sehingga menjamin informasi di dalam Smart Card. Method process() adalah method yang digunakan untuk menspesifikasi APDU yang akan digunakan dalam applet dan mengatur proses lalu lintas data pada Java Card. Setiap parameter dari APDU diinisialisasi dan instruksi-instruksi yang akan dijalankan pada applet diatur pada method ini. Method sendData() adalah method yang digunakan untuk membaca data medis yang tersimpan di dalam memori Smart Card sedangkan method setData() adalah method untuk menyimpan data medis ke dalam Smart Card.

Untuk organisasi penulisan data ke dalam Smart Card, setiap data medis dibagi menjadi 6 kategori seperti telah disebutkan pada bagian Data di atas. Dengan demikian, penulisan data ke dalam Smart Card dilakukan per bagian, dari kategori pertama hingga kategori keenam. Proses ini diatur dengan menggunakan parameter-parameter di dalam APDU. Command APDU untuk menyimpan data adalah seperti di bawah ini.

CLA INS P1 P2 LC Data
90 31 00 00 0X 00 0Y data institusi
90 31 00 00 0X 01 0Y data ID Dokter
90 31 00 00 0X 02 0Y data tanggal
90 31 00 00 0X 03 0Y data anamnesa
90 31 00 00 0X 04 0Y data diagnosa
90 31 00 80 0X 05 0Y data therapy

Dengan CLA adalah byte yang menunjukkan aplikasi Smart Health, INS menunjukkan byte instruksi penulisan data, P2 adalah byte parameter dimana jika bernilai 0x80 maka penulisan satu data medis telah selesai. LC berisi panjang byte yang terdapat pada bagian APDU Data. Byte APDU Data yang pertama menunjukkan sequence penyimpanan data, byte kedua berisi panjang data yang akan disimpan pada Smart Card.

Response APDU (SW1 dan SW2) yang dikirim oleh Smart Card akan bernilai 90 00 jika proses penulisan data berhasil. Jika ada kondisi Command APDU yang tidak sesuai dengan format diatas maka Response APDU akan bernilai 54 00 dan 55 00 (Error State Corrupted dan Error Set Data Failed).

Untuk organisasi pembacaan data dari Smart Card, pembacaan data dilakukan dengan membaca satu persatu data medis yang telah tersimpan di dalam Smart Card atau dengan memilih data medis ke berapa yang ingin dibaca. Format Command APDU untuk proses pembacaan data medis adalah :

CLA INS P1 P2 LC Data
90 30 00 XY 02 00 0Y
90 30 00 XY 02 01 0Y
90 30 00 XY 02 02 0Y
90 30 00 XY 02 03 0Y
90 30 00 XY 02 04 0Y
90 30 00 XY 02 05 0Y
dst..

Dengan CLA adalah byte yang menunjukkan aplikasi Smart Health, INS menunjukkan byte instruksi pembacaan data, P2 berisi urutan data medis yang ingin dibaca, LC berisi panjang byte yang terdapat pada bagian APDU Data. Byte APDU Data yang pertama menunjukkan sequence atau kategori dari urutan data medis yang akan dibaca, byte kedua berisi panjang data yang akan dibaca dari JavaCard.

Data medis yang dibaca dari Smart Card terdapat pada Response APDU yang dikirim dari Smart Card. Berikut adalah format Response APDU yang dikirim oleh Smart Card.

SW1 SW2 Data
90 00 XY XX 00 YY data institusi
90 00 XY XX 01 YY data ID Dokter
90 00 XY XX 02 YY data tanggal
90 00 XY XX 03 YY data anamnesa
90 00 XY XX 04 YY data diagnosa
90 00 XY XX 05 YY data terapi

Byte SW1 dan SW2 yang bernilai 90 00 menunjukkan bahwa pembacaan data berhasil. Byte pertama pada bagian Data akan bernilai 0x00 jika data medis yang dibaca bukan merupakan data medis yang terakhir dan akan bernilai 0x80 jika data medis yang dibaca merupakan data medis yang terakhir. Byte kedua menunjukkan urutan data medis yang dibaca. Byte ketiga menunjukkan sequence atau urutan kategori dari data medis yang dibaca. Byte keempat menunjukkan panjang data medis yang dibaca dari dalam JavaCard. Byte-byte seterusnya merupakan data medis yang dibaca dari memori JavaCard.