Sistem Pakar Pendiagnosa Penyakit Ginjal menggunakan Metode Penalaran Forward Chaining dan teknik penelusuran Best-First Search Artikel Ilmiah Diajukan kepada Fakultas Teknologi Informasi Untuk memperoleh Gelar Sarjana Komputer
Peneliti : Elisa Ryko Aditya (672010078) Hindriyanto Dwi Purnomo, ST., MIT, Ph.D
Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga Januari 2016
ii
iii
iv
v
672010078
vi
Sistem Pakar Pendiagnosa Penyakit Ginjal menggunakan Metode Penalaran Forward Chaining dan teknik penelusuran Best-First Search 1)
Elisa Ryko Aditya, 2)Hindriyanto Dwi Purnomo
Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Jl. Diponegoro 52-60, Salatiga 50711, Indonesia Email : 1)
[email protected], 2)
[email protected]
Abtract Expert system is computer based system that used fact, knowledge and, specific reasoning technique from an expert to solving problems. This expert system application, giving the possibility of kidney disease of the user based on symptoms experienced. This expert system using Best-First Search algorithm at this inference. Make this expert system smarter that doesn’t to test all information. And Forward Chaining reasoning used as the foundation of this expert system design. Key Words :Expert System, Forward Chaining, Best-First Search
Abstrak Sistem pakar adalah sistem berbasis komputer yang menggunakan fakta, pengetahuan, dan teknik penalaran yang di dapatkan dari seorang pakar dalam memecahkan masalah. Aplikasi sistem pakar ini memberi kemungkinan diagnosa penyakit ginjal yang dialami pengguna berdasarkan gejala yang dialaminya. Dalam implementasinya, sistem pakar ini menggunakan algoritma Best-First Search dalam melakukan inferensinya. Keuntungannya adalah tercipta sistem pakar yang pintar tanpa harus menguji semua informasi. Dan metode pencarian Forward Chaining sebagai dasar yang digunakan dalam perancangan sistem pakar ini. Kata Kunci: Sistem Pakar, Forward Chaining, Best-First Search
1
Mahasiswa Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Staff Pengajar Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
2
vii
PENDAHULUAN Saat ini penyakit ginjal adalah penyakit pembunuh nomor 2 di dunia. Diperkirakan ada lebih dari 25 Juta penduduk Indonesia yang mengalami gangguan fungsi ginjal. Dan pertumbuhan kasus ginjal kronik stadium akhir di Indonesia mencapai 2000 kasus baru/tahun. [1] Ditambah lagi di Indonesia hanya ada sekitar 100 dokter ginjal untuk menangani jutaan penderita penyakit ginjal di Indonesia. Dalam UU Praktek Kedokteran, satu dokter hanya diperbolehkan praktek di tiga tempat. Sehingga kehadiran dokter ginjal di rasa sangat minim untuk negara Indonesia. Terlebih di kota-kota kecil dan di luar pulau Jawa. Besarnya jumlah penderita penyakit ginjal ini disebabkan minimnya kesadaran masyarakat tentang gejala awal penyakit ginjal. Kebanyakan rakyat Indonesia tidak memiliki kesadaran untuk melakukan deteksi sedini mungkin terhadap penyakit ginjal dan menghindari pemeriksaan menyeluruh dikarenakan biaya yang terlalu besar. Hasilnya adalah pasien baru melakukan pengobatan setelah kondisi ginjalnya sudah mengalami kerusakan sangat parah dan nyaris tidak berfungsi lagi. Karena itu perlu dibuat sistem yang dapat membantu mendiagnosa penyakit ginjal berdasarkan gejala-gejala yang sudah dialami. Sistem tersebut adalah sistem pakar. Sistem pakar adalah salah satu bagian dari kecerdasan buatan yang mengandung pengetahuan dan pengalaman yang di dapat dari satu atau banyak pakar menjadi suatu desain pengetahuan tertentu, sehingga setiap orang dapat menggunakanannya untuk menentukan solusi dari gangguan penyakit ginjal tersebut. Sistem pakar pendiagnosa penyakit ginjal adalah salah satu solusi untuk mengatasi permasalahan tersebut. Pengetahuan dari pakar penyakit ginjal di dalam sistem ini digunakan sebagai dasar oleh Sistem Pakar untuk menjawab pertanyaan (konsultasi) dengan penggunanya nanti. Dengan membangun sistem pakar ini, diharapkan keterbatasan informasi mengenai penyakit ginjal tersebut dapat dikurangi, sekaligus dengan penyajian tertentu dapat membuka mata masyarakat untuk lebih “mengenal” tentang penyakit ginjal supaya risiko penyakit ginjal tidak terlalu parah dan dapat cepat terdeteksi dan diatasi. 1. TINJAUAN PUSTAKA 1.1 Kecerdasan Buatan Kecerdasan buatan adalah satu ilmu yang mempelajari cara membuat komputer melakukan sesuatu seperti yang dilakukan oleh manusia. Ada tiga tujuan kecerdasan buatan, yaitu: membuat komputer lebih cerdas, mengerti tentang kecerdasan, dan membuat mesin lebih berguna. Salah satu bentuk kecerdasan buatan adalah sistem pakar. Kecerdasan buatan memiliki beberapa domain penelitian, diantaranya : Formal Tasks, Mundane Task, dan Expert Tasks. Dibandingkan dengan kecerdasan ilmiah, kecerdasan buatan memiliki beberapa keuntungan, seperti :[2] 1. Lebih permanen. 2. Memberikan kemudahan dalam duplikasi dan penyebaran. 1
Relatif lebih murah dari kecerdasan ilmiah. Konsisten dan teliti. Dapat didokumentasi. Dapat mengerjakan beberapa task dengan lebih cepat dan lebih baik dibanding manusia. 1.2 Sistem Pakar Sistem pakar adalah sistem berbasis komputer yang menggunakan pengetahuan, fakta, dan teknik penalaran dalam memecahkan masalah yang biasanya hanya dapat dipecahkan oleh pakar dalam bidang tersebut. [3] Sistem pakar untuk melakukan diagnosis kesehatan telah dikembangkan sejak pertengahan tahun 1970 oleh Bruce Buchanan dan Edward Shortliffe di Standford University. Sistem ini diberi nama MYCIN.[4] MYCIN merupakan program interaktif yang melakukan diagnosis meningitis dan infeksi bacremia serta memberi rekomendasi antimikrobia. MYCIN, dalam uji cobanya mampu menunjukkan kemampuan seperti seorang spesialis. Meskipun tidak pernah digunakan secara rutin,oleh dokter, MYCIN merupakan referensi yang bagus dalam penelitian kecerdasan yang lain.[5] Sistem pakar dapat digunakan oleh: 1. Orang awam yang bukan pakar untuk meningkatkan kemampuan mereka dalam memecahkan masalah. 2. Pakar sebagai asisten yang berpengetahuan. 3. Memperbanyak atau menyebarkan sumber pengetahuan yang semakin langka. Sistem pakar dapat ditampilkan dalam dua lingkungan, yaitu: pengembangan dan konsultasi. Lingkungan pengembangan digunakan oleh pembangun sistem pakar untuk membangun komponen dan memasukkan pengetahuan ke dalam basis pengetahuan. Lingkungan konsultasi digunakan oleh orang yang bukan ahli untuk memperoleh pengetahuan dan berkonsultasi. Struktur pada sistem pakar dapat dilihat pada gambar 1, yaitu:[6] 1. Basis pengetahuan (Knowledge base). Berisi pengetahuan-pengetahuan yang dibutuhkan untuk memahami, memformulasikan dan memecahkan persoalan. 2. Motor inferensi (inference engine). 3. Blackboard. Merupakan area kerja memori yang disimpan sebagai database untuk deskripsi persoalan terbaru yang ditetapkan oleh data input dan digunakan juga untuk perekaman hipotesis dan keputusan sementara. 4. Subsistem akuisisi pengetahuan. Akuisisi pengetahuan adalah akumulasi, transfer dan transformasi keahlian pemecahan masalah dari pakar atau sumber pengetahuan terdokumentasi ke program komputer untuk membangun atau memperluas basis pengetahuan. 5. Antarmuka pengguna. Digunakan untuk media komunikasi antara user dan program. 6. Subsistem penjelasan. Digunakan untuk melacak respon dan memberikan penjelasan tentang kelakuan sistem pakar secara interaktif melalui pertanyaan. 7. Sistem penyaring pengetahuan. 3. 4. 5. 6.
2
Gambar 1. Struktur Sistem Pakar
Sistem pakar, sebelumnya sudah banyak digunakan, misalnya dalam „Aplikasi Sistem Pakar Diagnosa Penyakit Ginjal Dengan Metode Dempster-Shafer‟ oleh Aprilia Sulistyohati[7]. Dalam penelitiannya, Aprilia memanfaatkan metode Dempster-Shafer untuk menciptakan presentasi kepercayaan dari hasil yang ditampilkan sistem pakarnya. Menurutnya hal ini penting untuk menilai seberapa akurat hasil analisa sistemnya. Berikutnya adalah „Penerapan Forward Chaining Pada Program Diagnosa Anak Penderita Autisme‟ oleh Gusti Ayu Kadek Tutik A.[8]. Gusti Ayu memanfaatkan metode Forward-Chaining sebagai metode penarik kesimpulan dari aplikasinya. Forward-Chaining adalah metode penarikan kesimpulan yang berdasar pada data atau fakta yang ada menuju ke kesimpulan. Hal ini dilakukan karena data yang digunakan untuk menarik kesimpulan adalah gejala-gejala anak penderita autis. Kedua penelitian sistem pakar tersebut menggunakan Forward-Chaining untuk menentukan diagnosa akhir dari aplikasinya. Kedua sistem tersebut memanfaatkan check-box sebagai alat untuk berkomunikasi dengan usernya. User akan diberikan daftar gejala, dan diminta untuk check-list gejala-gejala yang dialaminya. Cara ini efektif untuk meyakinkan user tentang keakuratan aplikasi tersebut. Tetapi, check-box akan menjadi masalah saat daftar gejala yang diberikan kepada user sangat banyak. Apabila tidak disertai dengan user-interface yang menarik, kemungkinan besar user akan malas membaca daftar gejala yang disajikan. 1.3 Penyakit Ginjal Ginjal adalah organ yang harus dijaga kesehatannya. Karena fungsinya sangat penting bagi kesehatan tubuh. jika ginjal mengalami gangguan maka akan berpotensi besar untuk terserang penyakit.
3
Dan sangat penting sekali bagi kita memahami apa saja penyakit ginjal dan penyebabnya. Dan selain itu juga kita harus memahami bagaimana cara mengatasinya. Karena penyakit ginjal dan penyebabnya bisa menyerang siapa saja. Bahkan dari sejak usia dini. Penyakit ginjal bisa terjadi karena adanya gangguan di sistem penyaringan pada organ ginjal. Di mana ginjal tidak bisa berfungsi dengan baik sebagai organ filter racun. Penumpukan yang terjadi ini bisa menyebabkan kerusakan di organ ginjal. Ginjal yang bisa terjadi oleh siapa saja baik dari usia anak-anak sampai usia dewasa. 1.4 Teknik Best-First Search Dalam pengembangan sistem ini digunakan teknik penelusuran Best-First Search. Teknik Best-First Search adalah teknik penelusuran yang menggunakan pengetahuan akan suatu masalah untuk melakukan panduan pencarian ke arah node tempat di mana solusi berada. Pencarian jenis ini dikenal juga sebagai heuristic. Pendekatan yang dilakukan adalah mencari solusi yang terbaik berdasarkan pengetahuan yang dimiliki sehingga penelusuran dapat ditentukan harus di mulai dari mana dan bagaimana menggunakan proses terbaik untuk mencari solusi. Keuntungan jenis pencarian ini adalah mengurangi beban komputasi karena hanya node yang memberikan harapan saja yang diuji dan akan berhenti apabila solusi sudah mendekati yang terbaik. Ini merupakan model yang menyerupai cara manusia mengambil solusi yang dihasilkan merupakan solusi yang mutlak benar.
Gambar 2. Best-First Search
2. PERANCANGAN SISTEM 2.1 Perancangan inferensi 3.1.1 Forward Chaining Tujuan dari penelitian ini adalah membangun sistem pakar yang dapat memberi diagnosa penyakit ginjal yang dialami oleh pengguna sistem berdasarkan gejala yang dialaminya. Metode yang paling tepat adalah metode ForwardChaining. Pada penelitian ini, metode tersebut paling tepat karena pada saat
4
menyelesaikan masalah, inferensi pada Forward-Chaining dimulai dengan informasi yang tersedia dan bila semua informasi sesuai dengan syarat dari konklusi, barulah diperoleh konklusi dari masalah tersebut. Berikutnya adalah menggunakan algoritma Best-First Search sebagai teknik dalam mesin inferensi. Sesuai dengan pembahasan pada bagian 2.4 Teknik BestFirst Search, penelitian ini akan memanfaatkan sifat dari teknik Best-First Search yaitu hanya menguji informasi yang memberikan harapan saja. Dengan begitu diharapkan dapat terbentuk sistem pakar yang terlihat lebih cerdas daripada harus menguji semua informasi yang ada untuk memberikan solusi. Penerapan teknik Best-First Search pada penelitian ini adalah sebagai berikut : a. Menerjemahkan informasi yang ada(dalam penelitian ini „gejala‟) menjadi node. Berikutnya buat lintasan antar node.
Gambar 3. Lintasan node
Dengan asumsi bahwa P1 adalah penyakit. Dengan demikian jika user melintasi(memiliki) gejala T26 T30 T25 T28 T29 dan T1, maka user akan di antarkan ke penyakit P1. b. Pada teknik Best-First Search, fungsi heuristic akan bergerak mencari node dengan nilai terbaik. Pada penelitian ini arah pergerakan heuristik tergantung dari current node, apakah user memilih TRUE atau FALSE.
Gambar 4. Relasi antar node
c. Seperti dengan Gambar 4, tiap node memiliki parameternya masingmasing. T26 memiliki parameter, IF TRUE THEN T30, IF FALSE THEN T27. Jika user memiliki penyakit T26 maka sistem akan memberi nilai TRUE pada T26. Maka heuristik akan bergerak kearah T30. Jika tidak, maka sebaliknya. Dalam teori, heuristic akan mencari biaya terendah. Tetapi dalam penelitian ini, heuristic akan mencari nilai TRUE atau FALSE. Dengan begitu maka fungsi heuristic akan menuju ke node selanjutnya dan seterusnya.
5
d. Inferensi akan mengulang tahap c hingga akhirnya sistem akan mengantarkan user ke salah satu penyakit.
3.2 Perancangan aturan Dalam perancangan sistem pakar ini dibagi menjadi tiga langkah, yaitu: langkah pertama menentukan kebutuhan dari sistem itu sendiri dan mengumpulkan data-data referensi yang berkaitan seperti bentuk dari gangguan ginjal itu sendiri serta cara kerja sistem pakar. Sehingga didapatkan kaidah dengan menggunakan premis dan konklusi untuk membangun sistem pakar ini. Kaidah yang terbentuk adalah menggunakan gejala sebagai premis dan Penyakit sebagai konklusi. Langkah kedua adalah mengumpulkan fakta dan pengetahuan yang berhubungan dengan gejala-gejala dan penyakit gangguan ginjal yang nantinya akan digunakan untuk mengambil satu kesimpulan. Fakta dan pengetahuan tersebut didapatkan dari hasil wawancara dengan dua dokter spesialis ginjal Dr.,dr.,Shofa Chasani, Sp.PD,KGH dan dr.Lestariningsih, Sp.PD,KGH dari rumah sakit Dr. Karyadi Semarang dan beberapa buku tentang penyakit ginjal. Kemudian diakumulasikan menjadi seperti pada tabel 1. Pada tabel 1 didapatkan informasi tentang nama gangguan ginjal yang dimaksud, gejala yang mengikutinya, serta informasi lain tentang gangguan ginjal tersebut dan cara pencegahan dan pengobatannya. KODE P1
NAMA PENYAKIT
GEJALA TENTANG Nyeri pada perut BATU GINJAL Nyeri pada pinggang Nyeri pada saat kencing Tabel 1. Tabel akumulasi penyakit ginjal
PENCEGAHAN
Langkah ketiga, fakta dan pengetahuan yang telah didapatkan tersebut diterjemahkan menjadi basis pengetahuan yang akan disimpan dalam sistem pakar yang dibuat. Ini bertujuan agar rule-engine dapat dibuat dengan baik. Untuk itu dibuatlah tabel 2 yang berisi knowledge base yang dapat digunakan untuk memformulasikan sistem dengan baik. Setelah tabel ini dibuat, maka akan terlihat gejala mana yang sering ditemui dan gejala mana yang unik yang hanya dijumpai pada penyakit tertentu. ID_PERT T1 T2
GEJALA Nyeri pada pinggang? Nyeri pada perut?
P1 P2 * * Tabel 2. Tabel gejala
P3
P4
P5
P6
P7
P8 *
*
Berdasarkan data-data tersebut, akan ditentukan relasi antar penyakit dan gejala untuk dijadikan Rule-Engine dari sistem pakar ini. Dalam perancangan ini, ditulis dalam bentuk pernyataan IF [premis], THEN [konklusi], dan ELSE [konklusi lain]. Pada sistem pakar ini, ada konklusi yang berisi konklusi final dan
6
ada yang berisi premis selanjutnya yang harus dipenuhi untuk memenuhi kriteria kaidah tertentu. Bentuk pernyataannya adalah sebagai berikut : IF [gejala 1] THEN [gejala 2] ELSE [penyakit 1] Dari bentuk kaidah di atas, dapat diterapkan contoh kaidah seperti berikut : IF [Nyeri pinggang] THEN [Nyeri perut] ELSE [Otot perut berkontraksi] IF [Nyeri perut] THEN [Nyeri pada selangkangan] ELSE [Nyeri saat pinggang diketok] IF [Nyeri pada selangkangan] THEN [Batu Ginjal] ELSE [Infeksi Ginjal] Dengan bentuk kaidah tersebut, akan dibangun aturan atau tree dengan langkah-langkah sebagai berikut : a. Memprioritaskan gejala paling sering dijumpai(common) untuk muncul terlebih dahulu. Hal ini dimaksudkan agar seluruh penyakit tercover dan memiliki peluang yang sama untuk muncul. Setelah semua gejala tersebut muncul, barulah gejala yang lebih unik di munculkan. b. Pada penelitian ini penyakit Radang/Nefritis(P5) adalah penyakit yang memiliki gejala paling banyak namun hanya memiliki satu gejala unik. Maka pembentukan tree dapat dimulai dari gejala-gejala penyakit itu. Asumsikan penyakit Radang/Nefritis memiliki gejala dengan kode T26, T30, T25, T28, T31, T34, T40, T32, T33, T35, T36, dan T23. Maka bentuk awal tree akan seperti gambar 5. Gambar 5. Bentuk awal tree
Penempatannyapun harus diperhatikan. Diurutkan mulai dari gejala paling sering dijumpai(T26) hingga gejala paling unik(T23) c. Penyakit yang memiliki banyak gejala common dan sedikit gejala unik berikutnya adalah Diabeter Insipidus(P7). Berikutnya adalah menambahkan gejala penyakit ini dalam tree.
Gambar 6. Bentuk tree selanjutnya
d. Setelah semua gejala dari setiap penyakit di masukkan kedalam tree dan digambar menggunakan aplikasi power point, maka akan terlihat bentuk akhir tree seperti pada gambar 7.
7
Gambar 7. Relasi antar gejala penyakit
Setelah diagram pada gambar 7 dibuat, barulah dibuat tabel yang bisa digunakan oleh mesin untuk menjalankan proses inferensinya. Perancangan tabel inferensi didasarkan pada diagram yang dibuat. Tujuan dari perancangan tersebut agar mudah dalam penjelasan inferensi sistem kepada user. ID_PERT T1 T2
GEJALA PERTANYAAN Anda merasakan nyeri pada pinggang? Anda merasakan Nyeri pada perut? Tabel 3. Rule-Engine dalam bentuk tabel.
YES P1 T3
NO T2 T32
Tabel 3 adalah bentuk implementasi dari inferensi dari diagram yang telah dibuat sebelumnya. Pada tahap ini, klausa THEN berubah menjadi YES dan ELSE menjadi NO. Ini bertujuan agar inferensi ini nantinya dapat mudah di mengerti oleh user. Setelah semua data yang dibutuhkan selesai, dilakukan disain sistem dengan menggunakan ERD(Entity Relationship Diagram). Pada penelitian ini, digunakan tiga jenis diagram untuk menggambarkan rancangan sistem. Yang pertama adalah use case diagram untuk menggambarkan fungsionalitas sistem, kemudi activity diagram admin dan user untuk menggambarkan alur kerja sistem, dan entity relationship diagram database untuk menunjukkan relasi tabel dalam database.
8
MengubahDataPenyakit MenghapusDataPenyakit
<<extend>>
<<extend>>
<<extend>> MelihatDataPenyakit <<extend>>
MenambahDataPenyakit
MengolahDataPenyakit <<extend>>
MelihatHasilDiagnosa <<extend>> MelihatDataAdmin
MengolahDataAdmin
<<extend>>
<<extend>> InteraksiSistemPakar MenambahDataAdmin
MenghapusDataAdmin
User
Admin
MengubahDataAdmin
<<extend>> MenambahDataUser
MelihatDataGejala
MengolahDataGejala <<extend>> <<extend>>
<<extend>> <<extend>>
MengubahDataGejala
MengolahDataUser <<extend>> <<extend>>
MenghapusDataUser
<<extend>> MenambahDataGejala
MenghapusDataGejala MelihatDataUser
MengubahDataUser
Gambar 8. Use Case Diagram
Dari gambar 8 menunjukkan bahwa Admin memiliki kemampuan untuk mengolah data penyakit, mengolah data Admin, mengolah data User, dan berinteraksi dengan sistem pakar itu sendiri. Sedangkan User hanya memiliki wewenang untuk menambah data user, berinteraksi dengan sistem pakar, dan melihat hasil diagnosa.
9
Admin
System
Database
Start Memproses Login
Login
Login Salah
Validasi
Periksa Data Admin
Admin Memilih Menu
Mengolah Data Gejala Mengolah Data Penyakit Mengolah Data User Mengolah Data Admin
Memproses Pilihan Admin
Selesai
Menjalankan Query Pilihan
Menampilk an Data
Gambar 9. Activity Diagram Admin
Pada Activity Diagram Admin pada gambar 9 menunjukkan bahwa admin diwajibkan untuk login terlebih dahulu untuk dapat masuk ke form Admin. Jika username dan password valid, maka admin dapat melanjutkan aktivitas selanjutnya.
10
User
Sistem
Database
Start Menampilkan Menu Awal
Mulai
Keputusan
Tawarkan Mengisi Data Diri
Ya Tidak Mengisi Data Diri
Interaksi Dengan Sistem Pakar
Menambahka n Data User
Menampilkan Pertanyaan
Menjalankan Aturan Inferensi
Selesai
Menjalankan Query
Menjalankan Query Sistem Pakar
Menampilkan Hasil Diagnosa
Gambar 10. Activity Diagram User
Pada gambar Activity Diagram User di gambar 10 menunjukkan bahwa User dapat melakukan interaksi dengan sistem pakar dengan atau tanpa pendaftaran sesuai dengan keinginan user. Pada penelitian ini tipe database yang digunakan adalah WAMPSERVER.
Gambar 11. Relasi antar tabel
11
Dari gambar 11 dapat dilihat bahwa aplikasi sistem pakar pendiagnosa penyakit ginjal ini memiliki empat tabel yaitu tabel administrator, tabel penyakit, tabel pertanyaan, dan tabel user. Pada gambar 11 diketahui bahwa tabel penyakit dan tabel pertanyaan memiliki relasi many to many yang menandakan satu penyakit bisa memiliki banyak pertanyaan dan sebaliknya. Maka dari itu dibutuhkan tabel tambahan yaitu tabel penyakit_pertanyaan yang menyimpan setiap relasi yang ada. Tabel user dan pertanyaan juga memiliki hubungan many to many. Jadi dibutuhkan satu tabel tambahan, yaitu tabel user_pertanyaan untuk mendaftarkan tiap relasi yang ada. 3. Implementasi 3.1 Implementasi sistem Setelah selasai mendesain sistem, langkah berikutnya adalah melakukan perancangan user-interface dan membangun aplikasi. Hasil perancangan dan desainnya adalah seperti berikut:
Gambar 12. Form login dan Start
Gambar 12 merupakan tampilan awal saat pengguna sistem membuka aplikasi tersebut. Dengan desain minimalis, admin harus melakukan login terlebih dahulu untuk dapat masuk ke menu admin. Sedangkan user dapat langsung klik Start atau checklist pada pilihan di bagian bawah terlebih dahulu untuk melakukan pendaftaran.
Gambar 13. Tampilan interaksi sistem pakar 12
Setelah klik tombol Start, user akan dihadapkan dengan form pertanyaan. Pada form tersebut user akan diajukan beberapa pertanyaan. Setelah menjawab beberapa pertanyaan dan mencapai suatu kondisi tertentu, sistem akan menampilkan menu diagnosa seperti pada gambar 14.
Gambar 14. Tampilan diagnosa sistem pakar
Pada menu diagnosa, user akan mendapatkan hasil diagnosa dan sedikit penjelasan dari diagnosa tersebut. Pada form ini juga ditampilkan histori gejalagejala yang telah dipilih oleh user. Setelah selesai dengan hasil diagnosa, user dapat mencoba lagi dengan klik tombol COBA LAGI.
Gambar 15. Menu manipulasi penyakit oleh admin 13
Gambar 15 adalah menu yang dimunculkan oleh sistem saat admin berhasil login ke dalam sistem. Dalam menu ini admin dapat melihat data penyakit dan gejalanya dengan memilih daftar penyakit dari combo-box yang tersedia. Di halaman ini pula admin dapat mengolah data penyakit dengan tombol yang ada. Saat admin klik tombol Ubah Penyakit, sistem akan memberi wewenang pada admin untuk mengubah tiap detail dari penyakit yang di ubah. Field berubah menjadi editable sehingga admin dapat dengan mudah mengubah data penyakit tersebut.
Gambar 16. Menu menambah data penyakit
Saat admin klik tombol tambah penyakit, sistem akan menampilkan FORM TAMBAH DATA PENYAKIT. Di sini admin dapat menambahkan penyakit baru, lengkap dengan data penyakit dan gejala yang mengikuti penyakit tersebut. Gejala dapat dipilih dengan memilih gejala pada combo-box Nama Gejala lalu klik tombol tambah yang ada didekat combo-box tersebut. Setelah selesai, user dapat klik tombol Tambah yang ada dibawah dan data penyakit yang baru berhasil ditambahkan.
Gambar 17. Menu menambahkan user 14
Menu menambahkan user pada gambar 17 dapat diakses oleh user ataupun admin. Pada Form ini user ataupun admin diminta untuk mengisikan data user, yang nantinya data tersebut dapat digunakan sebagai referensi untuk pengembangan sistem di masa depan. Data tersebut berupa nama user, tanggal lahir atau umur, diagnosa aktual dari dokter, dan gejala-gejala yang user rasakan dapat di inputkan secara lengkap dan disimpan ke dalam database. Dalam melakukan inferensi, sistem ini menggunakan beberapa kode. Kode program 1, kode program 2 dan kode program 3 digunakan oleh sistem saat melakukan menjalankan proses „konsultasi‟ dengan user. public void btYa(){ Connection conn = connectionClass.GetConnections(); Statement st; ResultSet rs; String task = yes; try { st = conn.createStatement(); rs = st.executeQuery("select * FROM pertanyaan where ID_PERT = '"+task+"'"); while (rs.next()) { String PERTANYAAN = rs.getString("PERTANYAAN"); String IF_YES = rs.getString("IF_YES"); String IF_NO = rs.getString("IF_NO"); String ID_PERT = rs.getString("ID_PERT"); String GEJALA = rs.getString("GEJALA"); lbPertanyaan.setText(PERTANYAAN); fldValue.setText(GEJALA); yes = IF_YES; no = IF_NO; current = ID_PERT; } } catch (Exception e) { } finally{ try { st = conn.createStatement(); rs = st.executeQuery("select * FROM penyakit where ID_PENY = '"+task+"'"); while (rs.next()) { String PENYAKIT = rs.getString("PENYAKIT"); String TENTANG = rs.getString("TENTANG"); String AKSI = rs.getString("AKSI"); setVisible(false); HasilForm hf = new HasilForm(); hf.setVisible(true); ya(); then(); hf.lbDiagnosa.setText("'"+PENYAKIT+"'"); hf.fldAksi.setText(AKSI); hf.fldTtgPenyakit.setText(TENTANG); } } catch (Exception e) { } } }
Kode Program 1. Kode untuk tombol YA
Kode Program 1 merupakan format kode Java untuk action pada tombol YA. Pada kode ini dijelaskan metode akan menjalankan query SQL SELECT * FROM pertanyaan WHERE di_pert = yes. Query tersebut dimaksudkan untuk mengambil data pada tabel pertanyaan dimana data tersebut memiliki ID_PERT yang sama
15
dengan nilai pada variabel yes. Variabel yes sudah di deklarasikan sebelumnya dengan default tertentu sesuai dengan rule-engine. Setelah mengambil data pada tabel pertanyaan, Kode Program 1 akan mengubah nilai variabel lain sesuai dengan data yang didapatkan dari tabel sebelumnya. Jika saat menjalankan query SQL SELECT * FROM pertanyaan WHERE di_pert = yes tidak didapatkan nilai yang sesuai dengan ID_PERT, maka metode akan menjalankan query dari finally yang akan menampilkan menu hasil diagnosa lengkap dengan data yang tersimpan. private void ya(){ String s =""; boolean exists = false; for (int i = 0; i < tbPilihan.getRowCount(); i++) { s = tbPilihan.getValueAt(i, 0).toString().trim(); if (fldValue.getText().equals(s)) { exists = true; break; } } Connection conn = connectionClass.GetConnections(); Statement st; ResultSet rs; String task = current; if (!exists){ try { st = conn.createStatement(); rs = st.executeQuery("select * FROM pertanyaan where ID_PERT = '"+task+"'"); while (rs.next()) { String GEJALA = rs.getString("GEJALA"); String gejalas = GEJALA; String add[]={gejalas}; table.addRow(add); } } catch (Exception e) { btTidak(); } }else { btTidak(); } }
Kode Program 2. Kode untuk mencegah looping
Kode Program 2 merupakan format kode Java untuk mencegah user terjebak dalam looping. Dalam rule-engine ini, looping dapat terjadi jika pertanyaan yang terpilih melemparkan konklusi ke pertanyaan selanjutnya yang sebenarnya juga merupakan konklusi dari premis itu. Looping hanya muncul saat pertanyaan dari gejala yang sering dijumpai muncul. Saat menangani looping, kode ini akan membawa user ke premis selanjutnya.
16
public void btTidak(){ Connection conn = connectionClass.GetConnections(); Statement st; ResultSet rs; String task = no; try { st = conn.createStatement(); rs = st.executeQuery("select * FROM pertanyaan where ID_PERT = '"+task+"'"); while (rs.next()) { String PERTANYAAN = rs.getString("PERTANYAAN"); String IF_YES = rs.getString("IF_YES"); String IF_NO = rs.getString("IF_NO"); String ID_PERT = rs.getString("ID_PERT"); String GEJALA = rs.getString("GEJALA"); lbPertanyaan.setText(PERTANYAAN); fldValue.setText(GEJALA); yes = IF_YES; no = IF_NO; current = ID_PERT; tmp++; if (tmp == 11){ yes = "P9"; no = "P9"; } } } catch (Exception e) { } finally{ try { st = conn.createStatement(); rs = st.executeQuery("select * FROM penyakit where ID_PENY = '"+task+"'"); while (rs.next()) { String PENYAKIT = rs.getString("PENYAKIT"); String TENTANG = rs.getString("TENTANG"); String AKSI = rs.getString("AKSI"); setVisible(false); HasilForm hf = new HasilForm(); hf.setVisible(true); then(); hf.lbDiagnosa.setText("'"+PENYAKIT+"'"); hf.fldAksi.setText(AKSI); hf.fldTtgPenyakit.setText(TENTANG); setVisible(false); } } catch (Exception e) { } } }
Kode Program 3. Kode untuk tombol YA
Fungsi Kode Program 3 hampir sama seperti Kode Program 1, bedanya metode ini mengambil nilai dari variabel no. Ditambah jika user tidak memilih gejala selama 12 kali, maka metode ini akan menghentikan inferensi dengan memunculkan diagnosa tidak memiliki gangguan ginjal apapun. 3.2 Pengujian Sistem Pengujian sistem adalah elemen dari jaminan kualitas perangkat lunak dan mempresentasikan kajian pokok dari spesifikasi, desain dan pengkodean [8]. Metode pengujian yang dipergunakan pada aplikasi sistem pakar pendiagnosa
17
penyakit ginjal ini adalah dengan bantuan user yang dapat dipandu pada saat penggunaan sistem. Jenis user pertama yang ditunjuk adalah orang-orang yang tidak memiliki gangguan ginjal apapun. Tujuannya adalah melihat apakah sistem dari segi aplikasi dapat berjalan dengan baik dan data yang ada dalam database dapat terproses dengan baik oleh sistem. Setelah diuji oleh enam orang yang berbeda dan dicatat, didapat hasil seperti terdapat pada tabel 4. Setelah sistem diuji coba ternyata ada kesalahan sistem saat melakukan inferensi yaitu terjadi looping, muncul pertanyaan yang sama berulang kali terutama saat user tidak memilih gejala apapun sehingga aplikasi tidak dapat menampilkan hasil. Lalu sistem diperbaiki sesuai dengan evaluasi yang ada. Berikutnya adalah melakukan pengujian sistem dimana pengujian dilakukan dengan bantuan penderita gangguan ginjal yang telah mendapat diagnosa dokter terlebih dahulu. Langkah ini sangat penting untuk mengukur keandalan dari sistem pakar yang dibuat. DIAGNOSA DOKTER
JUMLAH PERTANYAAN YANG MUNCUL
JUMLAH YANG DIPILIH
HASIL DIAGNOSA
JUMLAH YANG SESUAI DENGAN DATA
STATUS
Gagal ginjal kronis Gagal ginjal kronis Gagal ginjal kronis Gagal ginjal kronis Infeksi ginjal
12
8
8
Tepat
15
9
Gagal ginjal kronis Infeksi ginjal
3
Salah
13
9
8
Tepat
12
8
8
Tepat
12
5
Gagal ginjal kronis Gagal ginjal kronis Infeksi ginjal
3
Tepat
Tabel 5. Hasil uji coba pada user penderita ginjal.
Setelah diuji coba oleh lima orang yang berbeda, hasilnya adalah empat dari lima diagnosa adalah tepat. Angka keberhasilan ini membuktikan bahwa sistem telah bekerja dengan cukup baik. Angka ini sudah cukup baik, namun karena keterbatasan sampel, pengujian hanya dapat dilakukan pada data penyakit gagal ginjal kronis dan infeksi ginjal saja.
18
4. Simpulan Dalam penelitian ini dikembangkan sebuah aplikasi sistem pakar berbasis aplikasi untuk mendiagnosa jenis penyakit ginjal pada manusia. Sistem pakar ini mampu memberi diagnosa awal terkait jenis penyakit ginjal yang di derita. Sistem pakar ini bekerja dengan cara memberikan beberapa pertanyaan kepada user, kemudian metode inferensi didalamnya akan menyimpulkan penyakit yang di derita oleh pengguna aplikasi ini. Sistem pakar ini menggunakan Metode Penalaran Forward Chaining, dimana dalam penerapannya sistem ini membutuhkan informasi berupa gejala-gejala untuk menentukan penyakit yang mungkin diderita oleh user. Penggunaan teknik Best-First Search bertujuan agar jumlah informasi yang dibutuhkan tidak terlalu banyak, sehingga user lebih dipermudah dalam penggunaan sistem pakar ini. Kemudian, sistem pakar ini memiliki tingkat akurasi dan kinerja yang baik, terbukti dengan uji coba yang dilakukan pada lima orang penderita penyakit ginjal yang berbeda dan empat diantaranya sesuai dengan diagnosa yang sudah di berikan dokter. Kedepannya, penelitian ini bisa dikembangkan dengan menggunakan metode inferensi yang lebih baik, menyempurnakan knoweledge base, dan penggunaan aplikasi berbasis web agar aplikasi yang dihasilkan dapat bekerja lebih baik lagi. 5. Saran Untuk penelitian ke depan disarankan untuk menyempurnakan knowledge base sistem pakar ini dengan menambah lebih banyak sumber data karena dalam penelitian ini hanya menggunakan data dari dua dokter ginjal di rumah sakit dokter Karyadi. Ataupun penambahan fitur seperti perancangan sistem dalam bentuk website sehingga sistem pakar ini dapat diakses secara online kapan saja dan di mana saja. Dan untuk memberikan hasil diagnosa yang lebih baik, sistem pakar ini dapat digabungkan dengan data sampel hasil dari laboratorium dan dengan menggunakan metode Case-Based Reasoning yang membuat sistem dapat belajar dari inferensi yang pernah di lakukan untuk meningkatkan tingkat akurasi diagnosa selanjutnya. Karena dalam sistem ini memiliki kelemahan untuk memperbarui knowledge base, maka dalam penelitian selanjutnya dapat diuji coba dengan menggunakan metode inferensi lain yang dapat mengurangi kelemahan sistem ini namun dengan keandalan inferensi yang baik.
19
6. Daftar Pustaka [1] Kementerian Kesehatan RI, 2015, Tingkatkan komitmen penanganan kasus ginjal, http://www.buk.kemkes.go.id, diakses 27 November 2015 [2] Minsky, Marvin Lee, 1988, The Society of Mind; New York: Simon and Schuster. [3] Martin dan Oxman, 1988, Building Expert System; Prentice-Hall. [4] Heckerman, Harold H,. 1968, Distribution of Pharmacy Manpower in West Virginia. [5] Kursini, 2006., Sistem Pakar, Teori dan Aplikasi; Ed. I. – Yogyakarta: ANDI. [6] Turban, Efraim, 1995, Decision Support and Expert System: Management Support Systems; Prentice-Hall International [7] Sulistyohati, A., 2008., Aplikasi Sistem Pakar Diagnosa Penyakit Ginjal dengan Metode Dempster-Shafer. Yogyakarta: Seminar Nasional Aplikasi Teknologi Infoemasi. [8] Tutik A., Gusti Ayu, 2009., Penerapan Forward Chaining Pada Program Diagnosa Anak Penderita Autisme. Yogyakarta: Universitas Kristen Duta Wacana
20