Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
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
vi
672010078
vii
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)
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
1Mahasiswa Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
2Staff Pengajar Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
1
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.
2
3. Relatif lebih murah dari kecerdasan ilmiah. 4. Konsisten dan teliti. 5. Dapat didokumentasi. 6. 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
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.
4
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 Forward-
Chaining. Pada penelitian ini, metode tersebut paling tepat karena pada saat
http://umardanny.com/wp-content/uploads/2014/03/bestfirstsearch.jpg
5
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 Best-
First 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 masing-masing. 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.
6
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 NAMA PENYAKIT GEJALA TENTANG PENCEGAHAN
P1 BATU GINJAL Nyeri pada perut
Nyeri pada pinggang
Nyeri pada saat kencing
Tabel 1. Tabel akumulasi penyakit ginjal
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 GEJALA P1 P2 P3 P4 P5 P6 P7 P8
T1 Nyeri pada pinggang? * *
T2 Nyeri pada perut? * * Tabel 2. Tabel gejala
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
7
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.
8
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 GEJALA PERTANYAAN YES NO
T1 Anda merasakan nyeri pada pinggang? P1 T2
T2 Anda merasakan Nyeri pada perut? T3 T32 Tabel 3. Rule-Engine dalam bentuk tabel.
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.
9
MenambahDataGejalaMenghapusDataGejala
MengubahDataGejala
MenambahDataPenyakit
MenghapusDataPenyakit
MengubahDataPenyakit
MenghapusDataAdmin MengubahDataAdmin
MenambahDataAdmin
MelihatDataGejala
MelihatDataAdmin
MelihatDataPenyakit
MengubahDataUser
MenghapusDataUser
MelihatDataUser
MelihatHasilDiagnosa
MenambahDataUser
User
MengolahDataGejala
MengolahDataPenyakit
MengolahDataAdmin
InteraksiSistemPakar
MengolahDataUser
Admin
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.
10
Start
Login
Memilih Menu
Mengolah Data
Gejala
Mengolah Data
Penyakit
Mengolah Data
User
Mengolah Data
Admin
Selesai
Memproses
Login
ValidasiLogin Salah
Admin
Memproses
Pilihan Admin
Menampilk
an Data
Periksa
Data Admin
Menjalankan
Query Pilihan
DatabaseSystemAdmin
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.
11
Start
Mulai
Mengisi Data
Diri
Keputusan
Ya
Interaksi Dengan
Sistem Pakar
Tidak
Selesai
Menampilkan
Menu Awal
Tawarkan
Mengisi Data Diri
Menambahka
n Data User
Menampilkan
Pertanyaan
Menjalankan
Aturan Inferensi
Menampilkan
Hasil Diagnosa
Menjalankan
Query
Menjalankan Query
Sistem Pakar
DatabaseSistemUser
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
12
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
13
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 gejala-
gejala 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
14
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
15
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.
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
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) { } } }
16
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.
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.
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(); } }
17
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
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) { } } }
18
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
12 8 Gagal
ginjal
kronis
8 Tepat
Gagal
ginjal
kronis
15 9 Infeksi
ginjal
3 Salah
Gagal
ginjal
kronis
13 9 Gagal
ginjal
kronis
8 Tepat
Gagal
ginjal
kronis
12 8 Gagal
ginjal
kronis
8 Tepat
Infeksi
ginjal
12 5 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.
19
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.
20
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