-
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)
[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
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