Sistem Pakar Penyakit Aids Dengan Menggunakan Certainty Factor
LAMPIRAN A: LISTING PROGRAM Index.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
<h2>Universitas Sumatera Utara</h2> </div> <nav> </nav> </div> <div class="site_content"> <div class="content"> <h1>Selamat Datang</h1>
<p> Sistem pakar adalah suatu program komputer yang mengandung pengetahuan dari satu atau lebih pakar manusia mengenai suatu bidang spesifik. Jenis program ini pertama kali dikembangkan oleh periset kecerdasan buatan pada dasawarsa 1960-an dan 1970-an dan diterapkan secara komersial selama 1980-an. Bentuk umum sistem pakar adalah suatu program yang dibuat berdasarkan suatu set aturan yang menganalisis informasi (biasanya diberikan oleh pengguna suatu sistem) mengenai suatu kelas masalah spesifik serta analisis matematis dari masalah tersebut. Tergantung dari desainnya, sistem pakar juga mamupu merekomendasikan suatu rangkaian tindakan pengguna
(2)
untuk dapat menerapkan koreksi. Sistem ini memanfaatkan kapabilitas penalaran untuk mencapai suatu kesimpulan. </p>
<br /><br /> </div>
<?php include "config/footer.php"; ?>
</div> </div> </body> </html>
Daftar.php
<?php require_once "config/settings.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
<h2>Universitas Sumatera Utara</h2> </div> <nav> </nav> </div> <div class="site_content">
(3)
<div class="content">
<h1>Pendaftaran Pasien</h1>
<br />
<form method="post" action="config/act_daftar.php?act=add"> <table>
<tr><td align="right"><dt> Email </dt></td><td><input type="text" size="50" name="email" /></td></tr>
<tr><td align="right"><dt> Password </dt></td><td><input type="password" size="50" name="pass1" /></td></tr>
<tr><td align="right"><dt><i> Ulang Password
</i></dt></td><td><input type="password" size="50" name="pass2" /></td></tr>
<tr><td align="right"><dt> Nama Lengkap </dt></td><td><input type="text" size="50" name="nama" /></td></tr>
<tr><td align="right"><dt> Alamat </dt></td><td><textarea name="alamat"></textarea></td></tr>
<tr><td align="right"><dt> Kelamin </dt></td><td><select style="width:410px;" name="kelamin"><option value="Laki-laki">Laki-laki</option>
<option value="Perempuan">Perempuan</option></select> </td></tr>
<tr><td align="right"><dt> Tinggi </dt></td><td><input type="text" size="50" name="tinggi" />
<small><i>Cm</i></small></td></tr>
<tr><td align="right"><dt> Berat </dt></td><td><input type="text" size="50" name="berat" />
<small><i>Kg</i></small></td></tr>
<tr><td align="right" colspan="2"><button type="submit"> Simpan </button> <button type="button"
onclick="window.back()"> Batal </button></td></tr> </table>
</form> </div> </div>
<?php include "config/footer.php"; ?>
</div> </div> </body> </html> Login.php <?php require_once "config/settings.php";
$query = "select * from user_sistem where email = '$_POST[email]' and password = '".md5($_POST[pass])."'";
$q = mysql_query($query); $row = mysql_num_rows($q);
(4)
$r = mysql_fetch_array($q); if($row >0): setcookie('username',$r[email], TIME+COOKIE_EXPIRE,COOKIE_PATH); setcookie('hak',$r[level],TIME+COOKIE_EXPIRE,COOKIE_PATH); setcookie('Noip','0', TIME+COOKIE_EXPIRE,COOKIE_PATH); header('location:konsultasi.php'); else:
echo "<script> alert('Username & Password tidak valid !'); window.back(); </script>";
endif; ?> Konsultasi.php <?php require_once "config/settings.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" /> </head>
<body>
<div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo">
<h1>Sistem Pakar AIDS</h1>
<h2>Universitas Sumatera Utara</h2> </div>
<nav>
(5)
</nav> </div> <div class="site_content"> <div class="content"> <?php if(empty($_COOKIE[username])): ?> <h1>Login</h1>
<form action="login.php" method="post"> <table>
<tr><td align="right"><dt> Email </dt></td><td><input type="text" size="50" name="email" /></td></tr>
<tr><td align="right"><dt> Password </dt></td><td><input type="password" size="50" name="pass" /></td></tr>
<tr><td></td><td><button type="submit">Login</button> <button type="button"
onclick="window.location='daftar.php'">Daftar</button></td></tr> </table>
<?php else: ?>
<blockquote class="example-obtuse"> <p>Selamat datang <strong><?php echo
getIdentitas($_COOKIE[username],"nama"); ?></strong>, untuk memulai konsultasi silahkan klik <a
href="config/set_konsultasi.php"><b>Next</b></a>. </p> </blockquote>
<p><img src="image/dokter.jpg" width="75" height="75" /></p> <!-- <table>
<tr><td></td><td><button type="submit">Tidak</button> <button type="submit">Sedikit Yakin</button> <button type="submit">Cukup Yakin</button> <button type="submit">Yakin</button> <button type="submit"> Sangat Yakin </button>
</table> --> <?php endif; ?>
</div>
<br /><br /> </div>
<?php include "config/footer.php"; ?>
</div> </div> </body> </html> Diagnosa.php <?php if(empty($_COOKIE[username])):
(6)
echo "<script type='text/javascript'> alert('Anda harus login terlebih dahulu.'); window.location = 'index.php'; </script>";
endif;
require_once "config/settings.php"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Sistem Pakar AIDS</title>
<link type="text/css" href="css/style.css" rel="stylesheet" /> <link type="text/css" href="css/bubble.css" rel="stylesheet" />
<script type="text/javascript" src="js/jquery-1.5.2.min.js"></script> <script type="text/javascript" src="js/function.js"></script>
<script type="text/javascript"> function GenPertanyaan(a){
var url = "config/act_tanya.php?act=view_gejala&a="+a; url=url+"&sid="+Math.random();
xmlhttp = GetXmlHttpObject();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){ var hasil = xmlhttp.responseText;
var h = hasil.split("||"); document.frm.tipe.value = h[0]; document.frm.indeks.value = h[1]; $m('tanya').innerHTML = h[2]; if(h[3] == 'end'){
$m('navi').style.display = 'none'; }else{
$m('navi').style.display = 'block'; }
} }
xmlhttp.open("GET", url, true); xmlhttp.send();
}
function GenKeputusan(c){
var a = document.frm.tipe.value; var b = document.frm.indeks.value; var c = c;
var url = "config/generate.php?a="+a+"&b="+b+"&c="+c; url=url+"&sid="+Math.random();
xmlhttp = GetXmlHttpObject();
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){ var hasil = xmlhttp.responseText;
var h = hasil.split("||"); document.frm.tipe.value = h[0]; document.frm.indeks.value = h[1];
(7)
$m('tanya').innerHTML = h[2]; if(h[3] == 'end'){
$m('navi').style.display = 'none'; }else{
$m('navi').style.display = 'block'; }
}else{
$m('tanya').innerHTML = '<p><strong> ? ? ? ? ? ? ? ? ? ? ? ? ? ? </strong> </p>';
$m('navi').style.display = 'none'; }
}
xmlhttp.open("GET", url, true); xmlhttp.send(); } </script> </head> <body> <div class="wrapper"> <div class="logo_l"> <a href="">
<img src="image/logo.jpg" width="100%" height="100%" /> </a>
</div>
<!-- <div class="logo_r"> <a href="">
<img src="image/aids2.jpg" width="100%" height="100%" /> </a>
</div> -->
<?php include "config/menu.php"; ?> <div class="main">
<div class="header"> <div class="logo"> <h1>Diagnosa AIDS</h1>
<h2><?php echo getIdentitas($_COOKIE[username],"nama"); ?></h2> </div> <nav> </nav> </div> <div class="site_content"> <div class="content">
<blockquote class="example-obtuse" id="tanya">
<p><strong> ? ? ? ? ? ? ? ? ? ? ? ? ? ? </strong> </p> </blockquote>
<p><img src="image/dokter.jpg" width="75" height="75" /></p> <form name="frm">
(8)
<input type="hidden" name="tipe" value="Mayor" /> <input type="hidden" name="indeks" value="0" /> <table id="navi">
<tr><td></td><td><button type="button"
onclick="GenKeputusan(0)">Tidak</button> <button type="button" onclick="GenKeputusan(1)">Sedikit Yakin</button> <button
type="button" onclick="GenKeputusan(2)">Cukup Yakin</button> <button type="button" onclick="GenKeputusan(3)">Yakin</button> <button
type="button" onclick="GenKeputusan(4)">Sangat Yakin</button></td></tr> </table> </form> </div>
<br /><br /> </div>
<script type="text/javascript"> GenPertanyaan('0'); </script> <?php include "config/footer.php"; ?>
</div> </div> </body> </html> Generate.php <?php require_once "settings.php"; session_start();
$Noip = $_COOKIE[Noip]; $email = $_COOKIE[username]; $type = $_GET[a];
$index = $_GET[b]; $indexCF = $_GET[c];
$query = "select * from gejala where tipe != 'Spesifik' order by ID asc";
$q = mysql_query($query); $i = 0;
while($r = mysql_fetch_array($q)): $idgejala[$i] = $r[ID]; $i += 1;
endwhile;
if($indexCF > 0):
if($type != $tipe[2]):
$idTMP = $idgejala[$index]; else:
$idTMP = $index; endif;
(9)
$cfTMP = $cf[$indexCF];
$query = "insert into tmp_gejala values(0,$Noip,$idTMP,'$type',$cfTMP)";
mysql_query($query); endif;
if($type != $tipe[2]): $index += 1; if($index < $i):
$query = "select * from gejala where ID = $idgejala[$index]";
$q = mysql_query($query); $r = mysql_fetch_array($q);
echo "$r[tipe]||$index||<p>Mengalami $r[nama] ?</p>||";
elseif($index == $i):
$query = "select * from tmp_gejala where tipe = '$tipe[0]' and Noip = $Noip";
$q = mysql_query($query); $rmay = mysql_num_rows($q);
$query = "select * from tmp_gejala where tipe = '$tipe[1]' and Noip = $Noip";
$q = mysql_query($query); $rmin = mysql_num_rows($q); $nilai_cf = hitungCF1($Noip); if($rmay>=2 and $rmin>=1):
echo
"$type||$index||<p><strong>".getIdentitas($_COOKIE[username],"nama"). "</strong>, kemungkinan anda terkena infeksi AIDS berdasarkan gejala fisiologi yang anda rasakan sebesar ".$nilai_cf." %.</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img
src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>Disarankan untuk melakukan pemeriksaan darah demi mendapatkan hasil yang lebih akurat. Agar dapat diketahui jumlah CD4 dalam darah anda.</p>
<br> - - - Terima Kasih - - - -
<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
href='index.php'>Selesai </a> ?</p> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
(10)
$sql = "insert into hasil
values($Noip,'Kemungkinan terinfeksi HIV/AIDS',$nilai_cf)"; mysql_query($sql);
elseif($rmin>=3): echo
"$type||$index||<p><strong>".getIdentitas($_COOKIE[username],"nama"). "</strong>, kemungkinan anda terkena infeksi AIDS berdasarkan gejala fisiologi yang anda rasakan sebesar ".$nilai_cf." %.</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img
src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>Disarankan untuk melakukan pemeriksaan darah demi mendapatkan hasil yang lebih akurat. Agar dapat diketahui jumlah CD4 dalam darah anda.</p>
<br> - - - Terima Kasih - - - -
<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
href='index.php'>Selesai </a> ?</p> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
$sql = "insert into hasil
values($Noip,'Kemungkinan terinfeksi HIV/AIDS',$nilai_cf)"; mysql_query($sql);
else:
$sql = "insert into hasil
values($Noip,'Kemungkinan tidak terinfeksi HIV/AIDS',100)"; mysql_query($sql);
echo "$type||$index||<p>Anda tidak terkena infeksi HIV/AIDS.</p>
<p><a href='config/set_konsultasi.php'>Ulang </a> atau <a href='index.php'>Selesai </a> ?</p> ||end";
endif; else:
$query = "select * from pohon order by ID asc limit 1";
$q = mysql_query($query); $r = mysql_fetch_array($q);
$sql = "select * from gejala where ID = $r[gjl_tanya]";
$q2 = mysql_query($sql); $r2 = mysql_fetch_array($q2);
(11)
echo "$r2[tipe]||$r[gjl_tanya]||<p>Mengalami $r2[nama] ?</p>||";
endif; else:
$query = "select * from pohon where gjl_tanya = $index"; $q = mysql_query($query);
$r = mysql_fetch_array($q); if($indexCF > 0):
$hasil = $r[id_true]; else:
$hasil = $r[id_false]; endif;
if(substr($hasil,0,1) == "G"): $id = substr($hasil,1);
$query = "select * from gejala where ID = $id"; $q = mysql_query($query);
$row = mysql_num_rows($q); $r = mysql_fetch_array($q); if($row > 0):
echo "$r[tipe]||$r[ID]||<p>Mengalami $r[nama] ?</p>||"; endif; endif; endif; ?> Setting.php <?php define("TIME", time()); define("URL","http://localhost/sistempakar/"); define("COOKIE_EXPIRE", 60*60*24*1); define("COOKIE_PATH", "/");
mysql_connect("localhost","root","") or die("Koneksi tidak berhasil");
mysql_select_db("dbaids") or die("Database tidak dapat terkoneksi");
$userlevel = array("Admin","User"); $userlevel2 = array("admin","user");
$jeniskelamin = array("Laki-laki","Perempuan"); $day =
array("sn"=>"Senin","sl"=>"Selasa","rb"=>"Rabu","km"=>"Kamis","jm"=>" Jumat","sb"=>"Sabtu","mg"=>"Minggu","jmt"=>"Jumat");
(12)
$numday =
array("Minggu"=>0,"Senin"=>1,"Selasa"=>2,"Rabu"=>3,"Kamis"=>4,"Jumat" =>5,"Sabtu"=>6);
$tipe = array("Mayor","Minor","Spesifik"); $cf = array(0,0.4,0.6,0.8,1);
$ykn = array(0 => "tidak", 4 => "sedikit yakin", 6 => "cukup yakin", 8 => "yakin", 10 => "sangat yakin");
function getBln($i){ switch($i){
case 1: $bln = "Januari"; break; case 2: $bln = "Februari"; break; case 3: $bln = "Maret"; break; case 4: $bln = "April"; break; case 5: $bln = "Mei"; break; case 6: $bln = "Juni"; break; case 7: $bln = "Juli"; break; case 8: $bln = "Agustus"; break; case 9: $bln = "September"; break; case 10: $bln = "Oktober"; break; case 11: $bln = "November"; break; case 12: $bln = "Desember"; break; }
return $bln; }
function getIdentitas($id,$colom){
$query = "select * from identitas where email = '$id'"; $q = mysql_query($query);
$r = mysql_fetch_array($q); return $r[$colom];
}
function getGejala($id){
$query = "select * from gejala where ID = $id"; $q = mysql_query($query);
$r = mysql_fetch_array($q); return $r[nama];
}
function hitungCF1($Noip){
$query = "select * from tmp_gejala where Noip = $Noip and tipe != 'Spesifik'";
$q = mysql_query($query); $cfold = 0;
while($r = mysql_fetch_array($q)):
$sql = "select * from gejala where ID = $r[id_gjl]";
$q2 = mysql_query($sql); $r2 = mysql_fetch_array($q2); $cfnow = $r[CF] * $r2[CF];
(13)
$cfold = $cfold2; endwhile;
return round($cfold * 100,2); }
function hitungCF2($Noip){
$query = "select * from tmp_gejala where Noip = $Noip"; $q = mysql_query($query);
$cfold = 0;
while($r = mysql_fetch_array($q)):
$sql = "select * from gejala where ID = $r[id_gjl]";
$q2 = mysql_query($sql); $r2 = mysql_fetch_array($q2); $cfnow = $r[CF]*$r2[CF];
$cfold2 = $cfold + $cfnow * (1 - $cfold); $cfold = $cfold2;
endwhile;
return round($cfold * 100,2); } function HeaderingExcel($filename){ header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=$filename"); header("Expires:0"); header("Cache-Control:must-revalidate,post-check=0,pre-check=0"); header("Pragma: public"); } ?> Act_tanya.php <?php require_once "settings.php"; session_start();
$Noip = $_COOKIE[Noip]; $email = $_COOKIE[username];
$query = "select * from tmp_gejala where Noip = $Noip order by ID desc limit 1";
$q = mysql_query($query); $row = mysql_num_rows($q); $r = mysql_fetch_array($q);
$query = "select * from hasil where Noip = $Noip"; $qh = mysql_query($query);
$rowh = mysql_num_rows($qh); if($row <= 0):
$query = "select * from gejala where tipe = 'Mayor' order by ID asc limit 1";
$q = mysql_query($query); $r = mysql_fetch_array($q);
(14)
elseif($rowh > 0):
$query = "select * from hasil where Noip = $Noip"; $q = mysql_query($query);
$rf = mysql_fetch_array($q); $nilai_cf2 = $rf[cf_aids]; $id = $rf[id_peny];
if($rf[cf_aids] == 0 and $r[cf_faktor]==0): $string = "<p>Anda tidak terkena infeksi HIV/AIDS.</p>";
$nilai_cf2 = 100; //<p><a
href='config/set_konsultasi.php'>Ulang </a> atau <a
href='index.php'>Selesai </a> ?</p> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
elseif($id == 0):
$string = "anda positif terinfeksi HIV/AIDS tetapi stadium klinis AIDS anda tidak diketahui.";
else:
$query = "select * from penyakit where ID = $id"; $q = mysql_query($query);
$r = mysql_fetch_array($q);
$string = "anda terinfeksi $r[nama]."; endif;
echo
"0||0||<p><strong>".getIdentitas($_COOKIE[username],"nama")."</strong >, $string</p>";
$query2 = "select * from tmp_gejala where Noip = $Noip order by ID asc";
$q2 = mysql_query($query2);
echo "<ul>";
while($r2 = mysql_fetch_array($q2)):
echo "<li><img src='image/checklist_check.jpg' /> anda ".$ykn[$r2[CF]*10]." mengalami ".getGejala($r2[id_gjl])."</li>";
endwhile; echo "</ul>
<p>$r[solusi]</p>";
echo "<p>Persentasi keyakinan sistem <b>".$nilai_cf2." %</b></p><p><a href='config/set_konsultasi.php'>Ulang </a> atau <a href='index.php'>Selesai </a> ?</p><p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
else:
$query = "select * from gejala where ID = $r[id_gjl]"; $q = mysql_query($query);
$r2 = mysql_fetch_array($q); if($r2[tipe] != $tipe[2]):
(15)
$query = "select * from gejala where tipe != 'Spesifik' order by ID asc";
$q2 = mysql_query($query); $i = 0;
while($r3 = mysql_fetch_array($q2)): if($r3[ID] == $r[id_gjl]):
$index = $i; endif;
$idgejala[$i] = $r3[ID]; $i += 1;
endwhile;
$index += 1; if($index < $i):
$query = "select * from gejala where ID = $idgejala[$index]";
$q = mysql_query($query); $r = mysql_fetch_array($q);
echo "$r[tipe]||$index||<p>Mengalami $r[nama] ?</p>||";
elseif($index == $i):
$query = "select * from tmp_gejala where tipe = 'Mayor' and Noip = $Noip";
$q = mysql_query($query); $rmay = mysql_num_rows($q);
$query = "select * from tmp_gejala where tipe = 'Minor' and Noip = $Noip";
$q = mysql_query($query); $rmin = mysql_num_rows($q); if($rmay>=2 and $rmin>=1):
echo "$type||$index||<p>Anda positif terkena infeksi HIV/AIDS dengan persentasi keyakinan
".hitungCF1($Noip)." %.</p>
<p><a href='#' onclick='GenKeputusan(0)'>Lanjut >></a>||end";
elseif($rmin>=3):
echo "$type||$index||<p>Anda positif terkena infeksi HIV/AIDS dengan persentasi keyakinan
".hitungCF1($Noip)." %.</p>
<p><a href='#' onclick='GenKeputusan(0)'>Lanjut >></a>||end";
else:
echo "$type||$index||<p>Anda tidak terkena infeksi HIV/AIDS.</p>
<p><a href='index.php'>Selesai >></a> <p><a href='print_detail.php' target='_blank'>Cetak</a></p>||end";
endif;
endif; else:
(16)
$query = "select * from pohon where gjl_tanya = $r[id_gjl]";
$q = mysql_query($query); $r = mysql_fetch_array($q);
$hasil = $r[id_true];
if(substr($hasil,0,1) == "G"): $id = substr($hasil,1);
$query = "select * from gejala where ID = $id";
$q = mysql_query($query); $row = mysql_num_rows($q); $r = mysql_fetch_array($q); if($row > 0):
echo "$r[tipe]||$r[ID]||<p>Apakah anda mengalami $r[nama] ?</p>||";
else:
$nilai_cf1 = hitungCF1($Noip); $nilai_cf2 = hitungCF2($Noip); $sql = "insert into hasil values($Noip,0,$nilai_cf2,$nilai_cf1)";
mysql_query($sql);
echo "finish||0||<p>Stadium klinis HIV anda tidak diketahui.</p> <p><a href='#'
onclick='GenKeputusan(0)'>Lihat detail >></a> </p>||end"; endif;
else:
$id = substr($hasil,1);
$query = "select * from penyakit where ID = $id";
$q = mysql_query($query); $r = mysql_fetch_array($q); $nilai_cf1 = hitungCF1($Noip); $nilai_cf2 = hitungCF2($Noip); $sql = "insert into hasil values($Noip,$r[ID],$nilai_cf2,$nilai_cf1)";
mysql_query($sql);
echo "finish||0||<p>Anda terinfeksi $r[nama].</p>
<p>$r[solusi]</p>";
echo "<p>Persentasi keyakinan sistem <b>".$nilai_cf2." %</b></p><p><a href='#'
onclick='GenKeputusan(0)'>Lihat detail >></a> ||end"; endif;
endif; endif;
(17)
(18)
DAFTAR PUSTAKA
Daniel dan Virginia, G. 2010. Implementasi Sistem Pakar untuk Mendiagnosis Penyakit dengan Gejala Demam menggunakan Metode Certainty Factor.
Jurnal Teknologi, vol 6 No.1 : Universitas Kristen Duta Wacana
Efraim, Turban. 1995. Decision Support System and Expert System. USA: Prentice-Hall.
Efraim, Turban, Aronson, dan Jay E. 2002. Decision Support Systems and Intelligent
Systems, 6th edition. New Jersey: Prentice-Hall.
Giarratano, Joseph dan Riley, Gary. 2005. Expert Systems: Principle and
Programming, 4th Edition. Boston: Thomson Course Technology.
Heckerman, D. 1986. Probabilistic Interpretations for Mycin’s Certainty Factors, North-Holland: Elsevier science Publishers B.V.
Kusrini. 2006. Sistem Pakar: Teori dan Aplikasi. Yogyakarta: Andi.
Kusumadewi, S. 2003. Artificial Intelligence (Teknik dan Aplikasinya). Yogyakarta: Graha Ilmu.
Martin, James., Oxman, Steven. 1988. Building Expert Systems: A Tutorial. New Jersey: Prentice-Hall.
Satyareni, Hernyka Diema. 2011. Sistem Pakar Diagnosis Infeksi penyakit tropis dengan menggunakan forward dan backward chaining. Jurnal Teknologi, vol
1 No. 2. Jatim : Universitas Pesantren Tinggi Darul ‘Ulum (Unipdu).
Situmeang, Ellys R.. 2011. Sistem Pakar Diagnosa Infeksi Penyakit Tropis Dengan
Menggunakan Metode Forward Chaining. Medan : Universitas Sumatera
(19)
Syahputra, Dedy. 2011. Perancangan Aplikasi Perangkat Lunak Sistem Pakar
Dengan Menggunakan Metode Forward Chaining Dan Certainty Factor Untuk Mendiagnosis Kerusakan Komputer Pada Warung Internet (Warnet).
Medan : Universitas Sumatera Utara.
Voni, Elpa Armi. 2010. Penggunaan Certainty Factor (CF) Dalam Perancangan
Sistem Pakar Untuk Mendiagnosis Penyakit Atherosklerosis. Medan :
Universitas Sumatera Utara.
Waterman, D.1986. A Guide to Expert Systems. Kanada: Addison-Wesley Publishing Company.
(20)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Certainty Factor dalam Penentuan terinfeksi AIDS atau tidak
Gejala-gejala yang ditimbulkan oleh penyakit AIDS pada umumnya menyerupai gejala-gejala yang ditimbulkan oleh beberapa penyakit ringan lainnya, seperti diare, demam, batuk, dan infeksi jamur pada kulit. Untuk membantu masyarakat awam pada umumnya, maka dirancanglah sebuah sistem yang cukup akurat mengenai gejala-gejala penyakit AIDS secara lebih spesifik yang kemudian dapat membedakannya dari penyakit lainnya. Perancangan aplikasi ini dibuat sesederhana mungkin, dan dengan tampilan yang menarik untuk memudahkan pemakainya dan memberikan manfaat yang dibutuhkan oleh pemakainya.
Proses penentuan gejala dilakukan oleh user, kemudian selanjutnya akan dilakukan perhitungan besar certainty factor untuk memperoleh besarnya nilai keyakinan penyakit berdasarkan gejala-gejala yang dialami oleh user. Proses perhitungan nilai certainty factor ini didasarkan pada frekuensi gejala yang dialami oleh user. Certainty factor akan dihitung jika gejala-gejala yang dialami penderita belum memenuhi syarat dari klasifikasi klinis WHO dan CDC untuk infeksi AIDS. Syarat yang harus dipenuhi yaitu sekurang-kurangnya terdapat dua gejala mayor dan satu gejala minor. Jika syarat terpenuhi, maka sistem akan langsung mengeluarkan persentase kemungkinan terinfeksi AIDS, dan jika gejala-gejala yang ditemukan pada penderita belum memenuhi syarat klinis WHO dan CDC, maka dapat dilakukan perhitungan certainty factor, yaitu :
1. Tentukan besar frekuensi gejala yang dialami oleh penderita (dalam kasus ini terdapat lima kriteria frekuensi, yaitu Tidak (0), Sedikit Yakin (0.4), Cukup
(21)
Yakin (0.6), Yakin (0.8), dan Sangat Yakin (1)). Dalam hal ini penentuan bobot jawaban diambil dari Daniel dan Virginia (2010).
2. Perhitungan besar certainty factor (Turban dan Aronson, 2001) dengan rumus: CF = CFpakar x CFuser
CFold = CFold + CF1 x (1-CFold)
Presentase keyakinan : CFold x 100%
Dimana :
CFold = Nilai certainty factor.
CF = Hasil pengalian dari CFpakar dan CFuser.
CFpakar = Nilai CF yang telah ditentukan oleh pakar untuk setiap gejala
CFuser = Besar frekuensi gejala yang dialamin oleh user.
3.2 Gejala untuk Penentuan AIDS
Adapun gejala yang dapat ditimbulkan oleh penyakit AIDS terbagi dalam 2 bagian, yaitu :
A. Gejala Mayor
Karakteristik pada gejala Mayor yang sering terjadi pada penderita AIDS adalah sebagai berikut:
1. Berat badan menurun lebih dari 10% dalam satu bulan. 2. Diare kronis yang berlangsung lebih dari satu bulan. 3. Demam berkepanjangan lebih dari satu bulan. 4. Penurunan kesadaran dan gangguan neurologis. 5. Ensefalopati HIV.
B. Gejala Minor
Karakteristik pada gejala Minor yang sering terjadi pada penderita AIDS adalah sebagai berikut :
1. Batuk menetap lebih dari satu bulan. 2. Dermatitis generalisata.
3. Herpes zoster multisegmental berulang.
(22)
5. Herpes simpleks kroniks progresif.
6. Limfadenopati generalisata.
7. Infeksi jamur berulang pada alat kelamin wanita. 8. Retinitis oleh virus situmegalo.
Perhitungan untuk kasus infeksi AIDS fiktif dapat dilihat pada contoh kasus berikut. Seorang pasien mempunyai gejala yang menunjukkan gejala terinfeksi AIDS berikut ini :
1. Mengalami penurunan berat badan lebih dari 10% dalam sebulan. 2. Mengalami diare kronis yang berlangsung lebih dari sebulan. 3. Mengalami demam berkepanjangan lebih dari sebulan. 4. Mengalami batuk menetap lebih dari sebulan.
5. Mengalami dermatitis generalisata (penyakit kulit berupa perasaan gatal).
6. Mengalami demam dengan sebab yang tidak jelas (intermittent atau menetap) lebih dari sebulan.
Gejala-gejala yang diderita pasien tersebut dapat dijabarkan pada tabel 3.2: Tabel 3.2 Tabel Gejala
Gejala Jawaban
User
CF Pakar
CF User
1 Berat badan menurun lebih dari 10% dalam sebulan
Sedikit Yakin 0.3 0.4 2 Diare kronis yang berlangsung lebih dari
sebulan.
Sedikit Yakin 0.4 0.4 3 Demam berkepanjangan lebih dari
sebulan.
Cukup Yakin 0.4 0.6 4 Gangguan neurologis seperti
kebingungan dan pelupa, mati rasa pada lengan dan kaki.
Sedikit Yakin 0.3 0.4
5 Batuk menetap lebih dari sebulan. Sedikit Yakin 0.4 0.4 6 Dermatitis generalisata (penyakit kulit
berupa perasaan gatal).
Sedikit Yakin 0.4 0.4 7 Herpes simpleks kronis progresif,
merupakan demam yang terjadi berulang-ulang.
(23)
Maka, dari gejala-gejala di atas dapat dihitung besar persentase user terkena HIV AIDS dengan cara sebagai berikut:
a. Berat badan menurun lebih dari 10% dalam sebulan: Sedikit Yakin.
CFpakar =0.3
CFuser =0.4
CF1 =CFpakar x CFuser
= 0.3 x 0.4 = 0.12
b. Diare kronis yang berlangsung lebih dari sebulan: Sedikit Yakin CFpakar =0.4
CFuser =0.4
CF2 =CFpakar x CFuser
= 0.4 x 0.4 = 0.16
c. Demam berkepanjangan lebih dari sebulan: Cukup Yakin CFpakar =0.4
CFuser =0.6
CF3 =CFpakar x CFuser
= 0.4 x 0.6 = 0.24
d. Gangguan neurologis, seperti kebingungan dan pelupa, mati rasa pada lengan dan kaki : Sedikit Yakin
CFpakar = 0.4
CFuser = 0.4
CF5 = CFpakar x CFuser
= 0.4 x 0.4 = 0.16
e. Batuk menetap lebih dari sebulan: Sedikit Yakin CFpakar =0.5
(24)
CF4 =CFpakar x CFuser
= 0.5 x 0.4 = 0.2
f. Dermatitis generalisata (penyakit kulit berupa perasaan gatal): Sedikit Yakin
CFpakar =0.3
CFuser =0.4
CF5 =CFpakar x CFuser
= 0.3 x 0.4 = 0.12
g. Herpes simpleks kronis progresif (berupa demam yang terjadi berulang-ulang, dan
disebabkan oleh virus herpes): Sedikit Yakin CFpakar = 0.5
CFuser = 0.4
CF8 = CFpakar x CFuser
= 0.5 x 0.4 = 0.2
Untuk nilai awal CFold adalah : 0
1. CFold = CFold + CF1 x (1-CFold)
= 0 + 0.12 x (1-0) = 0.12 x 1
= 0.12
2. CFold = CFold + CF2 x (1-CFold)
= 0.12 + 0.16 x (1-0.12) = 0.12 + 0.1408
= 0.2608
3. CFold = CFold + CF3 x (1-CFold)
= 0.2608 + 0.24 x (1-0. 0.2608) = 0.2608 + 0.177408
= 0.438208
4. CFold = CFold + CF4 x (1-CFold)
= 0.438208 + 0.16 x (1-0.438208) = 0.438208 + 0.089886
(25)
= 0.528094
5. CFold = CFold + CF5 x (1-CFold)
= 0.528094 + 0.2 x (1-0.528094) = 0.528094 + 0.0943812
= 0.6224752
6. CFold = CFold + CF6 x (1-CFold)
= 0.6224752+ 0.12 x (1-0.6224752) = 0.6224752 + 0.0453029
= 0.6677781
7. CFold = CFold + CF7 x (1-CFold)
= 0.6677781+ 0.2 x (1-0.6677781) = 0.6677781 + 0.06644438
= 0.73422248
Maka, Persentase Keyakinan = CFold x 100%
= 0.73422248 x 100% = 73,42%
3.3 Metode Inferensi
Proses diagnosis pada sistem menggunakan metode inferensi runut maju atau forward
chaining, yaitu suatu proses untuk mengidentifikasi penyakit berdasarkan
gejala-gejala yang dialami oleh user dan besarnya nilai kepercayaan yang dimasukkan oleh
user.
Di bawah ini merupakan gambar yang menjelaskan metode inferensi pada sistem pakar penyakit AIDS dalam proses identifikasi penyakit:
Gambar 3.1 Metode Inferensi Forward Chaining
Tidak Ada Gejala yang diderita
Observasi 1
2 Gejala Mayor dan 1 Gejala Minor
Gejala yang diderita
2 Gejala Mayor dan 1 Gejala Minor
Terinfeksi
Tidak Terinfeksi
(26)
Pada metode inferensi ini data yang digunakan adalah jawaban dari pertanyaan gejala-gejala yang dialami oleh user. Sistem tidak akan memunculkan pertanyaan yang sama. Setelah user menjawab seluruh pertanyaan gejala, maka jawaban user akan disimpan. Sehingga, jika suatu waktu dibutuhkan kembali user tidak perlu melakukan proses ulang.
Dalam proses mengidentifikasi penyakit yang diderita oleh user, ada beberapa langkah dalam sistem yaitu:
1. Memasukkan semua daftar gejala yang dialami oleh user. Dalam hal ini gejala yang dimaksud yaitu, gejala mayor dan minor.
2. Setelah didapat gejala-gejala yang dialami oleh user, maka sistem akan memunculkan hasil dari proses berupa persentase kemungkinan user terinfeksi AIDS.
3.4 Perancangan Sistem
Pada bagian ini akan diuraikan tentang perancangan sistem yang terdiri dari perancangan mesin inferensi, perancangan basis data, bentuk tabel sistem informasi dan perancangan antarmuka.
3.4.1 Perancangan Mesin Inferensi
Untuk lebih jelasnya, perancangan sistem ini dapat dilihat pada bagan flowchart berikut ini :
(27)
Start
Menghitung Gejala Mayor dan Minor
(gejala mayor >=2 and gejala minor >=1) OR (gejala minor>gejala mayor or gejala minor >=3)
Simpan jawaban Ya
Hasil
End
Ya Tidak
Gambar 3.2 Flowchart Sistem
Penjelasan flowchart : 1. Input gejala user.
Pada tahap ini sistem akan mengajukan beberapa gejala yang berkaitan dengan diagnosis penyakit AIDS, lalu user akan memilih gejala-gejala apa saja yang dialami oleh penderita, yaitu berupa gejala mayor dan minor. Gejala-gejala tersebut berdasar pada klasifikasi klinis WHO dan CDC.
2. Hitung jumlah gejala.
Pada tahap ini sistem akan menghitung jumlah gejala yang dialami oleh penderita. Dengan aturan, sekurang-kurangnya terdapat 2 atau lebih gejala mayor dan 1 gejala minor, atau lebih. Jika bernilai Ya, maka akan langsung
(28)
tersimpan pada sistem user sebagai history. Namun, jika bernilai Tidak, maka tidak akan disimpan oleh sistem. Dan sistem akan segera mencetak hasil diagnosisnya.
3. Untuk data yang bernilai Ya, data kemudian akan tersimpan pada sistem. 4. Cetak hasil, pada tahap ini sistem akan mencetak hasil dari diagnosis yang
dilakukan oleh user.
3.4.2 Perancangan DFD
Diagram Aliran Data/Data Flow Diagram (DFD) adalah alat yang biasa dipakai untuk mendokumentasi proses dalam sistem atau sebuah teknis grafis yang menggambarkan aliran informasi dan transformasi yang diaplikasikan pada saat data bergerak dari
input menjadi output.
a. Data flow diagram level 0 pada sistem dapat dilihat pada gambar 3.2.
User Sistem Pakar Admin
- data gejala - data user
- data gejala - lap. Hasil analisa
- data admin - entry gejala - entry aturan
- data gejala - data aturan
Gambar 3.3 Data Flow Diagram Level 0
Keterangan Gambar 3.3 :
1. User melakukan input data, berupa data gejala dan data user itu sendiri ke
dalam sistem. Dan akan menerima output berupa data gejala dan laporan hasil diagnosis.
2. Admin melakukan input data, berupa data admin, data gejala, dan data aturan.
Selanjutnya admin akan menerima output dari sistem berupa entry gejala dan
(29)
b. Data flow diagram level 1pada sistem dapat dilihat pada gambar 3.3. User 1. Menu User tmp_gejala user_sistem identitas 2. Menu Admin Admin
Entry data gejala
Data gejala Entry identitas
Data identitas
Entry identitas - data gejala - data user
- data gejala - lap. hasil analisa
Data user
Data user
- entry gejala - entry aturan
- data gejala - data aturan - data admin
Data identitas Entry Data gejala
Data gejala
Gambar 3.4 Data Flow Diagram Level 1
Keterangan Gambar 3.4 1. Proses 1.0
Nama Proses : Proses Menu User
Masukan : Data user berupa identitas, dan gejala.
Keluaran : Hasil pemeriksaan berupa hasil diagnosis dan nilai certainty
factornya.
Simpan data user ke dalam basis data. Keterangan : Proses untuk mengolah data user. 2. Proses 2.0
Nama Proses : Proses Menu Admin
(30)
Keluaran : Data gejala, dan data aturan.
Simpan data admin ke dalam basis data. Keterangan : Proses untuk mengolah data admin.
c. Data flow diagram level 2 proses 1 pada sistem dapat dilihat pada gambar 3.4.
User 1.1
Data User
User_sistem
identitas
1.2 Konsultasi
tmp_gejala
Entry data user
Data user Entry identitas
Data identitas
Data gejala
Data gejala - entry data user
- entry identitas
- data user - data identitas
- data gejala
- data gejala - lap. Hasil analisa
Gambar 3.5 Data Flow Diagram Level 2 Proses 1
Keterangan Gambar 3.5 1. Proses 1.1
Nama Proses : Proses Datar User.
Masukan : entry data user dan entry identitas. Keluaran : Data user dan data identitas. 2. Proses 1.2
Nama Proses : Proses Konsultasi Masukan : Data gejala.
(31)
d. Data flow diagram level 2 proses 2 pada sistem dapat dilihat pada gambar 3.5.
Admin 2.1
Login Admin
2.2 Data Admin
2.3 Data gejala
User_sistem
identitas
tmp_gejala
Entry Data admin Entry Data admin
Data identitas admin Data identitas admin
Data gejala Data gejala Entry identitas admin
Data identitas admin
Entry gejala
Data gejala
Data admin Data admin
Gambar 3.6 Data Flow Diagram Level 2 Proses 2
Keterangan Gambar 3.6 1. Proses 2.1
Nama Proses : Login Admin. Masukan : Entry admin. Keluaran : Data admin. 2. Proses 2.2
Nama Proses : Data Admin.
Masukan : Entry admin, dan Entry identitas admin. Keluaran : Data admin, dan Data identitas admin. 3. Proses 2.3
Nama Proses : Data Gejala. Masukan : Entry gejala. Keluaran : Data gejala.
(32)
3.5 Perancangan Antarmuka
Perancangan antarmuka dibuat untuk mempermudah gambaran-gambaran tampilan sistem ketika sistem dijalankan. Antarmuka merupakan tampilan program aplikasi yang akan digunakan oleh pengguna untuk dapat berkomunikasi dengan komputer. Berikut struktur yang akan dirancang pada sistem pakar ini.
3.5.1 Halaman Utama
Halaman ini merupakan halaman yang pertama kali ditampilan ketika user hendak menggunakan sistem. Pada halaman ini dijelaskan dengan singkat tentang sistem yang dibangun, yaitu sistem pakar. Halaman ini terdiri dari lima menu, yaitu home, AIDS, konsultasi dan bantuan.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
PENJELASAN SINGKAT SISTEM
Gambar 3.7 Rancangan Halaman Utama
3.5.2 Halaman AIDS
Halaman ini menampilkan penjelasan singkat tentang penyakit AIDS, sebagai informasi tambahan bagi user.
(33)
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Penjelasan Singkat AIDS
Gambar 3.8 Rancangan Halaman AIDS
3.5.3 Halaman Konsultasi
Pada halaman ini user dapat memulai konsultasi pada sistem. User terlebih dahulu diminta untuk login dengan menggunakan data diri yang sudah terdaftar pada sistem. Namun, bagi user yang belum terdaftar, dapat melakukan pendaftaran terlebih dahulu, seperti pada tampilan berikut:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
LOGIN Email
Password
Login Daftar
(34)
3.5.4 Halaman Pendaftaran Pasien
Pada halaman pendaftaran pasien, user diminta untuk mengisi form yang telah tersedia. Data-data yang diminta berupa email, password, ulangi password, nama lengkap, jenis kelamin, tinggi badan, dan berat badan. Setelah user mengisi seluruh
form, maka data-data user akan tersimpan, maka selanjutnya user dapat memulai
proses konsultasi.
Gambar 3.10 Rancangan Halaman Daftar Pasien
Setelah pasien berhasil melakukan pendaftaran, selanjutnya pasien dapat memulai konsultasi, seperti pada tampilan berikut:
(35)
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Gambar 3.11 Rancangan Halaman Awal Konsultasi
Pertanyaan yang kemudian diajukan oleh sistem merupakan gejala mayor dan minor, yang terdiri dari tiga belas pertanyaan.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Tidak Sedikit Yakin Cukup Yakin Yakin Sangat Yakin
Gambar 3.12 Rancangan Halaman Pertanyaan Gejala Mayor dan Minor
Setelah user menjawab tiga belas pertanyaan sebelumnya, maka sistem akan mengeluarkan hasil diagnosis yaitu apakah user positif atau negatif terkena AIDS. Maka seperti inilah rancangan tampilan hasil diagnosis positif yang akan dikeluarkan oleh sistem.
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Kemungkinan Anda terinfeksi AIDS sebesar 56,39 %
(36)
Apabila user ingin melihat detail hasil diagnosis oleh sistem, maka user tinggal meng-klik opsi lihat detail. Maka, akan muncul tampilan:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Gejala-gejala penyakit AIDS yang diderita oleh pasien
Persentase Keyakinan Sistem
Ulang atau Selesai Cetak
Gambar 3.14 Rancangan Halaman Detail Hasil Diagnosis
Sedangkan untuk tampilan hasil diagnosis negatif dapat dilihat pada gambar di bawah ini:
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Anda Tidak Terkena infeksi AIDS
Ulang atau selesai Cetak
Gambar 3.15 Rancangan Halaman Hasil Diagnosis Negatif
3.5.5 Halaman Bantuan
Halaman ini berisi petunjuk untuk menggunakan sistem. Hal ini membantu user yang masih asing dengan penggunaan sistem seperti ini. Tampilan rancangan dapat dilihat pada gambar di bawah ini:
(37)
SISTEM PAKAR PENDETEKSI AIDS HOME AIDS KONSULTASI BANTUAN
Petunjuk Penggunaan Sistem
(38)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi
Implementasi merupakan tahap dimana sistem yang telah dirancang, kemudian akan diimplementasikan dengan menggunakan bahasa pemrograman tertentu. Pada sistem yang telah dirancang dibagi menjadi dua bagian, yaitu: menu user dan menu admin. Berikut ini akan dijelaskan hasil implementasi dari rancangan sistem yang telah dibuat.
4.2 Pengujian Sistem
Pada tahap ini akan dijelaskan proses pengujian dari aplikasi sistem certainty factor pada saat dijalankan. Sistem akan menghasilkan output berupa persentase kemungkinan user terinfeksi AIDS berdasarkan gejala mayor dan minor yang dialami oleh user.
4.2.1 Tampilan Menu User
Form ini merupakan tampilan awal yang akan dilihat user ketika mulai menggunakan
aplikasi sistem ini. Dalam form ini terdapat empat menu yang dapat dipilih oleh user, yaitu menu home, HIV AIDS, konsultasi, dan bantuan.
(39)
Pada menu home dijelaskan secara singkat pengertian dari sistem pakar, untuk memperkenalkan kepada user yang belum pernah mengetahui tentang sistem pakar sebelumnya. Berikut adalah tampilannya:
Gambar 4.1 Tampilan Menu Home
4.2.2 Tampilan Menu AIDS
Pada menu AIDS akan ditampilkan informasi singkat tentang AIDS. Sehingga user dapat lebih memahami mengenai penyakit AIDS, dan sebagai informasi tambahan bagi user itu sendiri. Dengan tampilan sebagai berikut:
(40)
4.2.3 Tampilan Menu Konsultasi
Pada menu konsultasi sistem akan meminta user melakukan login terlebih dahulu dengan data yang telah terdaftar dalam sistem yang berupa, email dan password. Tampilan tersebut ditunjukkan pada Gambar 4.3 berikut ini:
Gambar 4.3 Tampilan Login User
Gambar 4.4 Tampilan Pendaftaran Pasien/User
Halaman ini berisi delapan form data, yaitu email, password, ulang password, nama lengkap, alamat, jenis kelamin, tinggi dan berat badan. Setelah user berhasil melakukan registrasi, maka user dapat langsung melakukan konsultasi dengan memilih opsi login, kemudian akan muncul tampilan seperti berikut:
(41)
Gambar 4.5 Tampilan Menu Konsultasi
Untuk memulai konsultasi, user hanya perlu memilih opsi “Next” yang telah
tersedia. Selanjutnya, user akan dibimbing dengan pertanyaan gejala-gejala AIDS berdasarkan Klasifikasi Klinis WHO (2002) dan CDC (1993). Gejala-gejala tersebut terdiri dari tiga belas pertanyaan, dan dibagi ke dalam 2 bagian, yaitu: gejala mayor, dan gejala minor. Berikut adalah tampilan pertanyaan-pertanyaan yang akan diajukan oleh sistem kepada user:
(42)
(43)
(44)
(45)
(46)
Setelah user menjawab pertanyaan yang sesuai dengan gejala yang dideritanya, maka akan muncul tampilan yang berisi keseluruhan dari hasil diagnosis berupa persentase kemungkinan user terinfeksi AIDS dan gejala-gejala yang dialami oleh user. Tampilan tersebut dapat dilihat seperti gambar berikut:
Gambar 4.8 Tampilan Hasil Diagnosis
Sementara bagi user yang kemungkinan tidak terinfeksi AIDS. Maka akan muncul tampilan seperti berikut:
(47)
Gambar 4.9 Tampilan Hasil Diagnosis Negatif AIDS
4.2.4 Tampilan Form Cetak dari Database
Untuk mencetak hasil diagnosis, maka user harus memilih opsi cetak dan kemudian akan muncul tampilan berikut ini:
(48)
Maka seperti inilah cetakan hasil diagnosis:
Gambar 4.11 Tampilan Cetakan Hasil Diagnosis
4.2.5 Tampilan Menu Bantuan
Menu ini berisi tentang petunjuk penggunaan sistem. Hal ini bertujuan untuk memudahkan user yang sama sekali tidak pernah menggunakan sistem seperti ini sebelumnya. Menu ini memiliki tampilan seperti berikut:
(49)
Gambar 4.12 Tampilan Menu Bantuan
4.3 Tampilan Menu Admin
Form ini adalah dikhususkan untuk admin, artinya form ini hanya dapat diakses oleh admin. Tampilan utama pada menu admin terdiri dari lima menu, yaitu: gejala,
penyakit, relasi, pohon, dan user. Tampilan utama pada menu user ini sama dengan tampilan home yang ada pada menu user, yaitu berisi tentang penjelasan singkat pengertian sistem pakar. Tampilannya adalah sebagai berikut:
.
(50)
4.3.1 Tampilan Menu Gejala
Menu ini memaparkan tentang jenis-jenis gejala pada AIDS, yaitu gejala mayor, dan gejala minor. Pada menu ini juga terdapat nilai certainty factor yang sebelumnya telah ditentukan oleh admin. Apabila terjadi kesalahan pengetikan atau penentuan nilai
certainty factor, maka pada menu ini tersedia opsi edit, hapus dan juga opsi tambah
yang disimbolkan dengan tanda tambah di sisi kanan menu. Sehingga jika suatu saat ada data yang harus diubah, maka admin dapat melakukannya dengan mudah. Maka tampilan tersebut dapat dilihat pada gambar di bawah ini:
(51)
Ketika admin melakukan pengeditan data, maka akan muncul tampilan seperti berikut:
Gambar 4.15 Tampilan Menu Edit Gejala AIDS
Sedangkan jika admin ingin menambahkan gejala baru pada menu gejala, dengan memilih opsi tambah di sisi kanan menu. Kemudian akan muncul tampilan seperti di bawah ini:
(52)
4.3.2 Tampilan Menu Relasi
Menu ini menampilkan hubungan antara jenis penyakit dan gejala. Pada menu ini tidak terdapat opsi lain seperti pada dua menu sebelumnya. Menu ini memiliki tampilan seperti di bawah:
Gambar 4.17 Tampilan Menu Relasi
4.3.3 Tampilan Menu Pohon Keputusan
Pada menu ini dijelaskan keterkaitan antara gejala yang satu dengan gejala yang lainnya. Pada menu ini ditampilkan dengan jelas aturan yang berlaku pada metode
forward chaining yang digunakan dalam membangun sistem tersebut. Tampilan menu
pohon keputusan dapat dilihat pada Gambar 4.18 di bawah ini:
(53)
4.3.4 Tampilan Menu User
Menu ini berisi tentang daftar user admin yang telah tersimpan pada sistem, dengan tampilan seperti berikut ini:
Gambar 4.19 Tampilan Menu User Admin
(54)
Gambar 4.20 Tampilan Menu Edit User Admin
Sementara jika admin memilih opsi tambah untuk menambah user admin, maka akan muncul tampilan sebagai berikut:
(55)
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pembahasan yang telah dilakukan pada bab-bab sebelumnya, maka dapat ditarik kesimpulan sebagai berikut :
1. Aplikasi sistem ini dibuat sebagai alat bantu untuk mendiagnosis penyakit AIDS menggunakan Certainty Factor dan metode kuantifikasi pertanyaan yang diajukan berdasarkan Klasifikasi Klinis WHO dan atau CDC.
2. Aplikasi ini dirancang untuk membantu masyarakat awam sebagai diagnosis awal terinfeksi AIDS.
3. Sistem menggunakan syarat gejala-gejala yang dialami oleh penderita AIDS, dan perubahan fisik yang terjadi dapat dipantau secara jelas.
4. Sistem pakar dengan metode kuantifikasi pertanyaan dapat digunakan untuk mendiagnosis gejala-gejala awal AIDS dengan mengeliminasi aturan lama-gejala.
5. Sistem dapat mengenali gejala-gejala AIDS yang diderita dan dapat menghasilkan diagnosis yang cukup akurat.
(56)
5.2Saran
Untuk pengembangan lebih lanjut terhadap sistem yang telah dibuat, penulis menyarankan beberapa pengembangan berikut ini :
1. Sistem ini dapat dikembangan dengan menggunakan server mobile, untuk semakin mempermudah pemantauan dan pengembangannya.
2. Pembaca dapat mengembangkan sistem ini dengan menggunakan metode perhitungan yang lain.
(57)
BAB 2
LANDASAN TEORI
2.1. Defenisi Sistem Pakar
Sistem pakar adalah suatu sistem komputer yang bisa menyamai atau meniru kemampuan seorang ahli (Giarratano dan Riley, 2005). Sistem pakar dapat diartikan sebagai suatu sistem yang mengambil sebagian pengetahuan manusia ke komputer, sehingga komputer dapat memecahkan permasalahan yang umumnya dilakukan oleh ahlinya. Dalam hal ini, manusia yang dimaksud adalah seorang pakar dari bidang pengetahuan tertentu. Misalnya, dokter adalah seorang pakar yang mampu mendiagnosis penyakit yang diderita pasien serta dapat memberikan penatalaksanaan suatu penyakit. Atau seorang ahli mesin yang mengusai segala pengetahuan tentang mesin.
Menurut Kusrini (2006), masalah-masalah yang dapat diselesaikan sistem pakar, di antaranya:
1. Interpretasi
Membuat sebuah kesimpulan atau deskripsi dari sekumpulan data mentah. 2. Prediksi
Memproyeksikan akibat-akibat yang dimungkinkan dari situasi-situasi tertentu.
3. Diagnosis
Menentukan sebab malfungsi dalam situasi kompleks yang didasarkan pada gejala-gejala yang teramati.
4. Desain
Menentukan konfigurasi komponen-komponen sistem yang cocok dengan tujuan tujuan kinerja tertentu yang memenuhi kendala-kendala tertentu.
(58)
5. Perencanaan
Merencanakan serangkaian tindakan yang akan dapat mencapai sejumlah tujuan dengan kondisi awal tertentu.
6. Debugging dan Repair
Menentukan dan menginterpretasikan cara-cara untuk mengatasi malfungsi. 7. Pengendalian
Mengatur tingkah laku suatu environment yang kompleks. 8. Instruksi
Mendeteksi dan mengoreksi defisiensi dalam pemahaman domain subyek. 9. Selection
Mengidentifikasi pilihan terbaik dari sekumpulan (list) kemungkinan. 10. Simulation
Pemodelan interaksi antara komponen-komponen sistem 11. Monitoring
Membandingkan hasil pengamatan dengan kondisi yang diharapkan.
2.1.1 Sejarah Sistem Pakar
Selama abad ke-20, beberapa definisi dari kecerdasan buatan sudah banyak diajukan. Definisi yang paling populer adalah "membuat komputer yang mampu berpikir layaknya manusia". Hal ini terbukti dari banyaknya film fiksi ilmiah yang mempromosikan pandangan tersebut. Sebenarnya definisi ini berakar pada ahli matematika Inggris terkenal dan uji pelopor komputer Alan Turing, tes Turing yaitu dimana manusia akan mencoba menentukan apakah mereka (orang) dapat berbicara melalui keyboard jarak jauh yang merupakan program manusia atau komputer. Kondisi AI (Artificial Intelligence) yang kuat biasanya dipromosikan oleh orang-orang yang percaya bahwa AI harus didasarkan pada landasan logis yang kuat daripada apa yang mereka sebut yaitu AI lemah berbasis jaringan syaraf tiruan, algoritma genetik, dan metode evolusi. Hal ini terbukti bahwa ada salah satu teknik AI yang berhasil dalam menangani semua masalah dan mendapatkan kombinasi metode yang terbaik.
(59)
Pada pertengahan tahun 1970-an, beberapa sistem pakar mulai muncul. Tujuan dari sistem pakar adalah untuk mengembangkan program komputer yang dapat berpikir berdasarkan akal manusia, yaitu memecahkan masalah dengan cara yang dianggap cerdas jika dilakukan oleh manusia.
Selama tahun 1970-an, peneliti lebih fokus mengembangkan teknik-teknik
seperti representasi “bagaimana untuk memformulasikan masalah sehingga menjadi
lebih mudah untuk dipecahkan” dan pencarian “bagaimana untuk mengontrol
pencarian untuk menemukan solusi secara cerdas”, sehingga proses pencarian yang dilakukan tidak akan menggunakan memori komputer yang berlebihan. Strategi ini menciptakan beberapa kemajuan, namun tidak mendapatkan terobosan baru. Hal ini berlangsung sampai akhir dekade 70-an, dimana ilmuwan sistem pakar mulai menyadari suatu hal yang sangat penting, yaitu kemampuan penyelesaian masalah dalam suatu program berasal dari pengetahuan yang dimilikinya, bukan dari formalitas atau skema inferensi yang digunakan. Terobosan konseptual dibuat dan dapat dinyatakan dengan sederhana. Untuk membuat program yang cerdas, program tersebut disediakan dengan pengetahuan spesifik yang berkualitas tentang bidang-bidang masalah tertentu. Program ini kemudian disebut sebagai sistem pakar, dan memulai bidang baru dalam lingkup ilmu komputer. Proses pembangunan sistem pakar biasanya disebut dengan rekayasa pengetahuan. Biasanya melibatkan interaksi yang spesial antara orang yang membangun sistem pakar yang disebut teknisi pengetahuan. Biasanya terdapat satu atau lebih pakar dalam lingkup masalah tertentu. Teknisi pengetahuan mengambil informasi dari pakar berupa prosedur, strategi, dan aturan-aturan untuk menyelesaikan masalah, lalu membangun pengetahuan itu menjadi sebuah sistem pakar, seperti yang ditunjukkan pada skema di bawah ini.
Gambar 2.1 Fungsi Dasar Sistem Pakar (Giarratano dan Riley, 2005) Knowledge-Base
Inference Engine USER
(60)
Hasilnya adalah sebuah program komputer yang dapat memecahkan masalah dengan cara yang hampir sama seperti para ahli. Paul E. Johnson, seorang ilmuwan yang telah menghabiskan bertahun-tahun waktunya untuk mempelajari perilaku ahli manusia, cukup baik menggambarkan apa yang dimaksud dengan ahli.
“Seorang ahli yaitu orang yang memiliki pengetahuan dan kemampuan untuk melakukan hal-hal yang kebanyakan orang tidak bisa. Seorang ahli bukan hanya sekedar mahir, tetapi juga lancar mengambil tindakan untuk menyelesaikan masalah. Seorang ahli mengetahui banyak hal dalam menerapkan apa yang mereka ketahui dalam menyelesaikan suatu masalah. Mereka juga pandai memilih informasi yang tidak relevan dalam rangka untuk mendapatkan masalah dasar, dan mereka mengenal dengan baik permasalahan yang mereka hadapi. Rekayasa pengetahuan sangat bergantung pada penelitian pakar untuk meningkatkan kecerdasan dan kemampuan program”. Hal ini serupa dengan yang diutarakan oleh Hayes-Roth dalam bukunya
yang berjudul “Building Expert Sistem”:
Saat ini sudah banyak sistem pakar yang dikembangkan di berbagai bidang, seperti : kedokteran, pertanian, ekonomi, elektronika, industri, dan masih banyak lagi. Sistem pakar untuk melakukan diagnosis penyakit telah dikembangkan pada pertengahan tahun 1970. Sistem pakar untuk diagnosis pertama kali dibuat oleh Bruce Buchanan dan Edward Shortliffe di Stanford University. Yang kemudian diberi nama MYCIN (Heckerman, 1986). MYCIN adalah sistem pakar yang dibangun untuk mendiagnosis infeksi bakteri pada darah, contohnya meningitis dan infeksi bacremia, dan memberikan rekomendasi terapi antimikrobia. MYCIN mampu memberikan penjelasan atas penalarannya secara detail. Dalam uji cobanya, MYCIN menunjukkan kemampuan seperti seorang spesialis. Dengan bertanya dan melakukan
backward-chaining pada basis aturan yang terdiri dari sekitar 500 aturan, MYCIN dapat
mengenali sekitar 100 penyebab infeksi bakteri. Dengan demikian MYCIN dapat merekomendasi resep obat yang efektif. MYCIN ini dikembangkan di bidang kedokteran oleh dr. Edward H. Shortliffe di Standford Medical School.
(61)
2.1.2 Konsep Dasar Sistem Pakar
Menurut Efraim Turban (1995), konsep dasar sistem pakar memiliki arti sebagai keahlian, ahli, pengalihan keahlian, inferensi, aturan dan kemampuan menjelaskan. Keahlian adalah suatu kelebihan penguasaan di bidang tertentu yang diperoleh dari pelatihan, membaca atau pengalaman. Seorang ahli adalah seseorang yang mampu menjelaskan suatu tanggapan dan dapat mempelajari hal-hal baru seputar topik permasalahan (domain), menyusun kembali pengetahuan jika diperlukan, memecah aturan-aturan jika dibutuhkan, dan menentukan relevan tidaknya keahlian mereka.
Pengalihan keahlian dari para ahli ke komputer dan kemudian dialihkan lagi ke orang lain yang bukan ahli, merupakan tujuan utama dari sistem pakar. Proses ini membutuhkan empat aktivitas, yaitu : tambahan pengetahuan (dari para ahli atau sumber-sumber lainnya), representasi pengetahuan (ke komputer), inferensi pengetahuan, dan pengalihan pengetahuan ke user. Pengetahuan yang disimpan di komputer disebut dengan nama basis pengetahuan. Ada dua tipe pengetahuan, yaitu : fakta dan prosedur (biasanya berupa aturan).
Salah satu fitur yang harus dimiliki sistem pakar yaitu kemampuan daya nalar. Jika keahlian-keahlian sudah tersimpan sebagai basis pengetahuan dan sudah tersedia diprogram yang mampu mengakses basis data, maka komputer harus dapat diprogram untuk membuat inferensi. Proses inferensi ini dikemas dalam bentuk motor inferensi (inference engine).
Sebagian besar sistem pakar komersial dibuat dalam bentuk rule-based
systems, yang mana pengetahuan dapat disimpan dalam bentuk aturan-aturan. Aturan
(62)
2.1.3 Struktur Sistem Pakar
Sistem pakar memiliki beberapa komponen utama, yaitu antarmuka pengguna (user
interface), basis data sistem pakar (expert system database), fasilitas akuisisi
pengetahuan (knowledge acquisition facility), dan mekanisme inferensi (inference
mechanism). Selain itu ada satu komponen yang hanya ada pada beberapa sistem
pakar, yaitu fasilitas penjelasan (explanation facility) (Martin dan Oxman,1988). Struktur dari Sistem Pakar dapat dilihat pada Gambar 2.2.
Gambar 2.2 Struktur Sistem Pakar (Giarratano dan Riley, 2005)
Komponen-komponen yang terdapat dalam arsitektur/struktur sistem pakar yaitu: 1. Antarmuka Pengguna (User Interface)
Antarmuka merupakan mekanisme yang digunakan oleh pengguna dan sistem pakar untuk berkomunikasi. Antarmuka menerima informasi dari pemakai dan mengubahnya ke dalam bentuk yang dapat diterima oleh sistem. Selain itu antarmuka akan menerima dari sistem dan menyajikannya ke dalam bentuk yang dapat dimengerti oleh pemakai.
KNOWLEDGE BASE (RULES)
INFERENCE ENGINE
WORKING MEMORY
(FACTS)
KNOWLEDGE AQUISITION FACILITY
INTERFACE EXPLANATION
FACILITY
(63)
2. Basis Pengetahuan (Knowledge Base)
Basis pengetahuan mengandung pengetahuan untuk pemahaman, formulasi, dan penyelesaian masalah. Ada dua bentuk pendekatan basis pengetahuan yang sangat umum digunakan, yaitu:
a. Penalaran Berbasis Aturan (Rule-Based Reasoning)
Pada penalaran berbasis aturan, pengetahuan dipresentasikan dengan menggunakan aturan berbentuk IF-THEN. Bentuk ini digunakan apabila kita memiliki sejumlah pengetahuan pakar pada suatu permasalahan tertentu, dan si pakar dapat menyelesaikan masalah tersebut secara berurutan. Disamping itu, bentuk ini juga digunakan apabila dibutuhkan penjelasan tentang langkah-langkah pencapaian solusi.
b. Penalaran Berbasis Kasus (Case-Based Reasoning)
Basis pengetahuan akan berisi solusi-solusi yang telah dicapai sebelumnya, kemudian akan diturunkan suatu solusi untuk keadaan yang terjadi sekarang (fakta yang ada). Bentuk ini digunakan apabila user menginginkan untuk tahu lebih banyak lagi pada kasus-kasus yang hampir sama. Selain itu, bentuk ini juga digunakan apabila kita telah memiliki sejumlah kasus tertentu dalam basis pengetahuan.
3. Akuisisi Pengetahuan (Knowledge Acquisition)
Akuisisi pengetahuan adalah akumulasi, transfer, dan transformasi keahlian dalam menyelesaikan masalah dari sumber pengetahuan ke dalam program komputer. Dalam tahap ini knowledge engineer berusaha menyerap pengetahuan untuk selanjutnya ditransfer ke dalam basis pengetahuan. Pengetahuan diperoleh dari pakar, dilengkapi dengan buku, basis data, laporan penelitian, dan pengalaman pemakai.
4. Mesin/Motor Inferensi (Inference Engine)
Komponen ini mengandung mekanisme pola pikir dan penalaran yang digunakan oleh pakar dalam menyelesaikan suatu masalah. Mesin inferensi adalah program komputer yang memberikan metodologi untuk penalaran tentang informasi yang ada dalam basis pengetahuan dan dalam workplace, dan untuk memformulasikan kesimpulan.
(64)
5. Workplace/Blackboard
Workplace merupakan area dari sekumpulan memori kerja (working memory),
digunakan untuk merekam kejadian yang sedang berlangsung termasuk keputusan sementara.
6. Fasilitas Penjelasan (Explanation Facility)
Fasilitas penjelasan adalah komponen tambahan yang akan meningkatkan kemampuan sistem pakar, digunakan untuk melacak respon dan memberikan penjelasan tentang kelakuan sistem pakar secara interaktif melalui pertanyaan. 7. Perbaikan Pengetahuan
Pakar memiliki kemampuan untuk menganalisis dan meningkatkan kinerjanya serta kemampuan untuk belajar dari kinerjanya. Kemampuan tersebut adalah penting dalam pembelajaran terkomputerisasi, sehingga program akan mampu menganalisis penyebab kesuksesan dan kegagalan yang dialaminya dan juga mengevaluasi apakah pengetahuan-pengetahuan yang ada masih cocok untuk digunakan di masa mendatang.
2.1.4 Representasi Pengetahuan
Pengetahuan merupakan kemampuan untuk membentuk model mental yang menggambarkan objek dengan tepat dan mampu mempresentasikannya dalam aksi yang dilakukan terhadap suatu objek (Martin dan Oxman,1988). Representasi pengetahuan merupakan metode yang digunakan untuk mengkodekan pengetahuan dalam sebuah sistem pakar yang berbasis pengetahuan.
Beberapa model representasi pengetahuan yang penting adalah (Kusrini, 2006) : 1. Logika (logic)
2. Jaringan semantic (semantic nets) 3. Object-Atribute-Value (OAV)
4. Bingkai (frame)
(65)
2.1.5 Keuntungan Sistem Pakar
Sistem pakar adalah sistem yang menggunakan pengetahuan manusia yang dimasukkan ke dalam komputer untuk memecahkan masalah-masalah yang biasanya diselesaikan oleh pakar (Turban dan Aronson, 2002). Sistem pakar merupakan subset dari Artificial Intelligence.
Adapun beberapa keuntungan dari sistem pakar adalah sebagai berikut : 1. Menjadikan pengetahuan dan nasehat jadi lebih mudah didapat. 2. Meningkatkan output dan produktifitas.
3. Menyimpan kemampuan dan keahlian pakar.
4. Meningkatkan penyelesaian masalah-menerusi panduan pakar, penerangan, sistem pakar khas.
5. Meningkatkan reabilitas.
6. Memberikan respons (jawaban) yang cepat. 7. Merupakan panduan yang cerdas.
8. Dapat bekerja dengan informasi yang tidak lengkap dan mengandung ketidakpastian.
9. Intelligence database (basis data cerdas), bahwa sistem pakar dapat
digunakan untuk mengakses basis data dengan cara cerdas.
2.2 Forward Chaining
Chain adalah suatu perkalian inferesi yang menghubungkan suatu permasalahan
dengan solusinya. Forward chaining adalah strategi penarikan kesimpulan yang dimulai dari sejumlah fakta-fakta yang telah diketahui, untuk mendapatkan suatu fakta baru dengan memakai rule-rule yang memiliki ide dasar yang cocok dengan fakta dan terus dilanjutkan sampai mendapatkan tujuan atau sampai tidak ada rule yang punya ide dasar yang cocok atau sampai mendapatkan fakta.
Forward chaining disebut bottom-up penalaran karena alasan dari bukti-bukti
tingkat rendah, fakta, ke tingkat atas kesimpulan yang didasarkan pada fakta. Forward
chaining menggunakan pendekatan data driven (berorientasi data). Dalam pendekatan
(66)
menggambarkan kesimpulan. Komputer akan menganalisa permasalahan dengan mencari fakta yang cocok dengan bagian IF dari aturan IF-THEN.
Cara lain untuk menggambarkan forward chaining adalah suatu teknik untuk mencari informasi baru, kemudian melihat proses di dalam petunjuk yan ada dari tanda-tanda yang memisahkan bagian kiri dan kanan dari aturan-aturan tersebut (Waterman, 1986). Fakta merupakan satuan dasar dari paradigma berbasis pengetahuan karena mereka tidak bisa diurai ke dalam setiap unit yang lebih kecil yang memiliki arti.
Kaidah ini digunakan dalam rantai sebab-akibat dari inferensi forward yang menarik kesimpulan bahwa clyde adalah binatang yang memperlihatkan bahwa clyde adalah seekor gajah. Rantai inferensi tersebut dapat ditunjukkan pada Gambar 2.3 berikut ini:
Gajah (Clyde)
Gajah (x) Mamalia (x)
Mamalia (x) Binatang (x)
Binatang (Clyde) Gambar 2.3 Forward Chaining (Giarratano dan Riley, 2005)
Forward chaining :
1. Identifikasi kondisi.
2. Variabel kondisi ditempatkan pada Conclusion Var.Queue dan nilainya dicatat pada Variable List.
3. Pencarian diarahkan untuk menemukan variabel di Base Variable List dengan nama yang sama dengan nama variabel dalam daftar pertama antrian.
4. Jika ketemu, rule dan clause number dari variabel disimpan ke clause Variable
(67)
5. Selanjutnya, pencarian diarahkan untuk mengecek jika fakta yang dimasukkan oleh user sama dengan clause dari rule. Jika sama maka tambahkan pada daftar Conclusion Variabel Queue dan Result Queue dengan nilai dari THEN
clause dari rule, jika tidak sama maka ke langkah 6.
6. Jika tidak ada lagi statement IF yang memiliki variable yang sama dengan yang ada diurutan pertama Conclusion Variable Queue, maka urutan pertama tadi dihapus. Jika ada lagi yang lain, maka kembali ke langkah 3.
7. Jika sudah tidak ada lagi apa-apa di Conclusion Variable Queue, maka pencarian berhenti. Sedangkan jika masih ada, maka kembali ke langkah 3.
Forward chaining secara bertahap membentuk gambaran akan dunia
bersamaan dengan permintaan data, forward chaining tidak diarahkan untuk menyelesaikan suatu permasalahan tertentu, karenanya metode ini disebut data driven atau data directed procedure.
Beberapa karakteristik forward chaining (Giarratano dan Riley, 2005) adalah sebagai berikut :
1. Perencanaan, pemantauan, dan pengendalian.
2. Disajikan untuk masa depan.
3. Antecedent ke konsekuen.
4. Data memandu, penalaran dari bawah ke atas.
5. Bekerja ke depan untuk mendapatkan solusi apa yang mengikuti fakta.
6. Breadth first search dimudahkan.
7. Antecedent menentukan pencarian.
8. Pencarian tidak difasilitasi.
2.3 Faktor Kepastian (Certainty Factor)
Tujuan utama penggunaan faktor kepastian adalah untuk mengolah ketidakpastian dari fakta dan gejala dengan menghindarkan keperluan data dan perhitungan yang besar. Faktor kepastian diperoleh dari pengurangan nilai kepercayaan (measure of belief) oleh nilai ketidakpercayaan. Faktor kepastian membuat beberapa asumsi yang memudahkan tingkat kepercayaan dan beberapa persamaan aturan yang mudah untuk
(68)
mengkombinasikan tingkat kepercayaan sebagai program dalam mencapai kesimpulan akhir.
Hal ini sangat mudah dilihat pada sistem diagnosis penyakit, dimana pakar tidak dapat mendefinisikan hubungan antara gejala dengan penyebabnya secara pasti, dan pasien tidak dapat merasakan suatu gejala dengan pasti pula. Pada akhirnya ditemukan banyak kemungkinan penyakit.
Ada tiga penyebab ketidakpastian aturan yaitu aturan tunggal, penyelesaian konflik dan ketidakcocokan (incompatibility) antar konsekuen dalam aturan. Aturan tunggal yang dapat menyebabkan ketidakpastian dipengaruhi oleh tiga hal, yaitu kesalahan, probabilitas dan kombinasi gejala (evidence).
Kesalahan dapat terjadi karena (Kusrini, 2006) adalah sebagai berikut : 1. Ambiguitas, sesuatu didefinisikan dengan lebih dari satu cara. 2. Ketidaklengkapan data.
3. Kesalahan informasi.
4. Ketidakpercayaan terhadap suatu alat. 5. Adanya bias.
Probabilitas disebabkan ketidakmampuan seorang pakar merumuskan suatu aturan secara pasti. Certainty factor (CF) menunjukkan ukuran kepastian terhadap suatu fakta atau aturan.
Dalam menghadapi masalah sering ditemukan jawaban yang tidak memiliki kepastian penuh. Ketidakpastian ini biasanya berupa probabilitas. Hasil yang tidak pasti disebabkan oleh aturan yang tidak pasti dan jawaban pengguna yang tidak pasti yang diajukan oleh sistem. Faktor kepastian (Certainty Factor) diperkenalkan oleh Edward Hance Shortliffe dan Buchanan dalam pembuatan MYCIN (Wesley, 1984).
Certainty factor (CF) merupakan nilai parameter klinis yang diberikan MYCIN untuk
(69)
Faktor kepercayaan menyatakan kepercayaan dalam sebuah kejadian berdasarkan bukti atau penilaian pakar (Turban dan Aronson, 2002). Certainty factor menggunakan suatu nilai untuk mengasumsikan derajat keyakinan seorang pakar terhadap suatu data.
Certainty Factor didefinisikan sebagai berikut (Giarattano dan Riley, 2005)
CF(H,E) = MB(H,E) – (MD(H,E)
Dimana :
CF(H, E) : certainty factor dari hipotesis H yang dipengaruhi oleh gejala E. besarnya CF berkisar antara -1 sampai dengan 1. Nilai -1 menunjukkan ketidakpercayaan mutlak, sedangkan nilai 1 menunjukkan kepercayaan mutlak.
MB(H, E) : ukuran kenaikan kepercayaan terhadap hipotesis H yang dipengaruhi oleh gejala E.
MD(H, E) : ukuran kenaikan ketidakpercayaan terhadap hipotesis H yang dipengaruhi oleh gejala E.
Berikut ini adalah deskripsi beberapa kombinasi certainty factor dalam beberapa kondisi :
Certainty factor untuk kaidah dengan premis tunggal (single premis rule):
CF (H,E) = CF (E)*CF (rule) = CF (user)*CF (pakar)
Certainty factor untuk kaidah dengan premis majemuk (multiple premis rule):
CF (A AND B) = Minimum (CF (a), CF (b)) * CF (rule) CF (A OR B) = Maximum (CF (a), CF (b)) * CF (rule)
Certainty factor untuk kaidah dengan kesimpulan yang serupa (similarly concluded rules):
(1)
AIDS DISEASE EXPERT SYSTEM USING CERTAINTY FACTOR
ABSTRACT
The current using of computer technology is growing. Computers can be used in the medical field, namely by using technology softcomputing. One technique is softcomputing in expert systems. An expert system that seeks to adopt human knowledge in to computer so that the computer can solve the problem such as the usual experts. On this occuasion the author will try to make an expert system the AIDS disease because current patient that handling AIDS is increasing but is never resolved. This AIDS an expert system using certainty factor calculation. Certainty factor is a calculation based on sympthomps experienced patient. Of this research be generated using an expert system AIDS disease certainty factor that could help the general public in identifying the disease AIDS, so it can be further handling.
(2)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
BAB 1 Pendahuluan
1.1Latar Belakang 1
1.2Rumusan Masalah 2
1.3Tujuan Penelitian 3
1.4Batasan Masalah 3
1.5Manfaat Penelitian 3
1.6Metode Penelitian 4
1.7Sistematika Penulisan 5
BAB 2 Landasan Teori
2.1 Defenisi Sistem Pakar 6
2.1.1 Sejarah Sistem Pakar 7
2.1.2 Konsep Dasar Sistem Pakar 10
2.1.3 Struktur Sistem Pakar 10
2.1.4 Representasi Pengetahuan 13
2.1.5 Keuntungan Sistem Pakar 13
2.2 Forward Chaining 14
2.3 Faktor Kepastian (Certainty Factor) 16
2.4 Penyakit AIDS 18
2.4.1 Perkembangan AIDS di Indonesia 19
2.4.2 Transmisi Infeksi AIDS 20
2.4.2.1 Transmisi melalui Kontak Seksual 21
2.4.2.2 Transmisi melalui Darah 21
2.4.2.3 Transmisi secara Vertikal 22
2.4.2.4 Transmisi melalui Cairan Tubuh Lain 22
2.4.3 Reseptor CD4 (Cluster of Differentiation 4) 23
2.4.4 Perjalanan Infeksi HIV 25
(3)
2.4.6 Gejala Mayor dan Minor pada pasien AIDS 28
2.5 PHP Script 30
2.6 Penelitian Terdahulu 31
BAB 3 Analisis dan Perancangan Sistem
3.1 Certainty Factor dalam penentuan terinfeksi AIDS atau tidak 33
3.2 Gejala untuk Penentuan AIDS 34
3.3 Metode Inferensi 38
3.4 Perancangan Sistem 39
3.4.1 Perancangan Mesin Inferensi 39
3.4.2 Perancangan DFD 41
3.5 Perancangan Antarmuka 44
3.3.1 Halaman Utama 45
3.3.2 Halaman AIDS 45
3.3.3 Halaman Konsultasi 46
3.3.4 Halaman Pendaftaran Pasien 47
3.3.5 Halaman Bantuan 49
BAB 4 Implementasi dan Pengujian Sistem
4.1 Implementasi 50
4.2 Tampilan Menu User 50
4.2.1 Tampilan Menu AIDS 51
4.2.2 Tampilan Menu Konsultasi 52
4.2.3 Tampilan Form Cetak dari Database 59
4.2.4 Tampilan Menu Bantuan 60
4.3 Tampilan Menu Admin 61
4.3.1 Tampilan Menu Gejala 62
4.3.2 Tampilan Menu Penyakit 64
4.3.3 Tampilan Menu Relasi 65
4.3.4 Tampilan Menu Pohon Keputusan 65
4.3.5 Tampilan Menu Menu User 66
BAB 5 Kesimpulan dan Saran
5.1 Kesimpulan 67
5.2 Saran 68
Daftar Pustaka 69
(4)
DAFTAR TABEL
Halaman
Tabel 2.1 31
(5)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Fungsi Dasar Sistem Pakar 8
Gambar 2.2 Struktur Sistem Pakar 11
Gambar 2.3 Forward Chaining 15
Gambar 2.4 Diagram Kasus HIV/AIDS di Indonesia tahun 2005-2011 20
Gambar 3.1 Metode Inferensi Forward Chaining 38
Gambar 3.2 Flowchart Sistem 40
Gambar 3.3 Data Flow Diagram Level 0 41
Gambar 3.4 Data Flow Diagram Level 1 42
Gambar 3.5 Data Flow Diagram Level 2 Proses 1 43
Gambar 3.6 Data Flow Diagram Level 2 Proses 2 44
Gambar 3.7 Rancangan Halaman Utama 45
Gambar 3.8 Rancangan Halaman AIDS 46
Gambar 3.9 Rancangan Halaman Login Konsultasi 46
Gambar 3.10 Rancangan Halaman Daftar Pasien 47
Gambar 3.11 Rancangan Halaman Awal Konsultasi 47
Gambar 3.12 Rancangan Halaman Pertanyaan Gejala Mayor dan Minor 48 Gambar 3.13 Rancangan Halaman Hasil Diagnosis Terinfeksi 48 Gambar 3.14 Rancangan Halaman Detail Hasil Diagnosis 49 Gambar 3.15 Rancangan Halaman Hasil Diagnosis Negatif 49
Gambar 3.16 Rancangan Menu Bantuan 49
Gambar 4.1 Tampilan Menu Home 51
Gambar 4.2 Tampilan Menu AIDS 51
Gambar 4.3 Tampilan Login User 52
Gambar 4.4 Tampilan Pendaftaran Pasien/User 52
Gambar 4.5 Tampilan Menu Konsultasi 53
Gambar 4.6 Tampilan Gejala Mayor 53
Gambar 4.7 Tampilan Gejala Minor 55
Gambar 4.8 Tampilan Hasil Diagnosis 58
Gambar 4.9 Tampilan Hasil Diagnosis Negatif AIDS 59 Gambar 4.10 Tampilan untuk Mencetak Hasil Diagnosis 59
Gambar 4.11 Tampilan Cetakan Hasil Diagnosis 60
Gambar 4.12 Tampilan Menu Bantuan 61
Gambar 4.13 Tampilan Menu Utama Admin 61
Gambar 4.14 Tampilan Menu Gejala AIDS 62
Gambar 4.15 Tampilan Menu Edit Gejala AIDS 63
Gambar 4.16 Tampilan Menu Tambah Gejala 63
Gambar 4.17 Tampilan Menu Relasi 64
(6)
Gambar 4.19 Tampilan Menu User Admin 64
Gambar 4.20 Tampilan Menu Edit User Admin 65