Diagram Unified Modelling Process (UML) Sistem Perbandingan Dua Metode Inferensi Root Sum Square dan Mamdani Min-Max dalam Fuzzy Logic untuk Prediksi Resiko Hipertensi Diambil dari Tugas Akhir Alumni IF Universitas Sriwijaya
Oleh:
Ahmad Aidil Fitri MT 09121402023
Jurusan Teknik Informatika Bilingual Fakultas Ilmu Komputer Universitas Sriwijaya 2015
Diagram Use Case Sistem prediksi resiko Hipertensi ini memiliki 4 buah use case dan 2 aktor. Use case tersebut antara lain Daftar Pasien, Hitung Resiko Hipertensi, Perbaikan Aturan dan Record Data Pasien. Diagram use case perangkat lunak ini ditunjukkan pada Gambar 1.
Pebandingan Dua Metode Inferensi Root Sum Square dan Mamdani Min-Max dalam Fuzzy Logic untuk Prediksi Resiko Hipertensi
Daftar Pasien
Admin Hitung Resiko Hipertensi
Perbaikan Aturan
Pakar Record Data Pasien
Gambar 1. Diagram Use Case Sistem Perbandingan Dua Metode Inferensi Root Sum Square dan Mamdani Min-Max dalam Fuzzy Logic untuk Prediksi Resiko Hipertensi
Deskripsi Aktor:
Aktor
Deskripsi
Admin
Aktor dengan status ini merupakan pengguna yang dapat melakukan proses untuk memasukkan data pasien yang belum terdaftar dalam basis data yang akan digunakan sebagai data
record pasien saat pakar melakukan proses prediksi resiko Hipertensi. Aktor dengan status ini merupakan pakar, yaitu dokter atau
Pakar
paramedis yang memiliki pengalaman dan pengetahuan dibidang spesialisasi penyakit dalam. Pakar mempunyai wewenang
untuk
melakukan
proses
prediksi
resiko
Hipertensi, melihat Record Data Pasien dan melakukan Perbaikan Aturan.
Deskripsi Use Case:
No. 1.
Use Case Daftar Pasien
Deskripsi Use case yang ditujukan untuk aktor yang berstatus Admin ini berfungsi untuk memasukkan data pasien baru atau memperbarui data pasien kedalam basis data.
2.
Hitung
Resiko Use case ini berfungsi untuk melakukan proses
Hipertensi
perhitungan prediksi berdasarkan data masukan dari user dan menyimpan hasil perhitungan ke dalam basis data.
3.
Perbaikan Aturan
Use case ini ditujukan untuk user yang memiliki status sebagai pakar untuk memperbaiki aturan di dalam basis aturan.
4.
Record
Data Use case ini berfungsi untuk menampilkan data-
Pasien
data pasien yang telah melakukan proses Hitung Resiko Hipertensi
Diagram Kelas Analisis 1. Diagram Kelas Analisis Daftar Pasien Aktor telah berhasil melakukan proses Login sebagai admin dan form UI_DaftarPasien ditampilkan, setelah mendapat perintah dari pengguna untuk menyimpan data pasien baru dengan menekan tombol “Simpan” atau “Update”, UI_DaftarPasien akan mengakses kelas CDaftarPasien. Selanjutnya kelas CDaftarPasien akan mengakses kelas Entitas EKoneksi untuk menyimpan atau memperbarui data pasien dalam basis data.
Admin
UI_DaftarPasien
CDaftarPasien
EKoneksi
Gambar 2. Diagram Kelas Analisis Daftar Pasien
2. Diagram Kelas Analisis Hitung Resiko Hipertensi Aktor mula-mula berada pada form UI_HitungResiko, setelah mendapat perintah dari pengguna untuk melakukan perhitungan dengan menekan tombol “Hitung”, UI_HitungResiko akan mengakses kelas CFuzzy. Selanjutnya kelas kontroler CFuzzy akan mengakses kelas entitas EFuzzifikasi, EInferensiRSS, EInferensiMinMax, EDefuzzifikasiRSS and EDefuzzifikasiMM. Pada saat mengakses kelas entitas EInferensiMinMax dan EInferensiRSS, kelas-kelas tersebut akan mengakses Entitas EKoneksi untuk mengambil aturan-aturan yang diperlukan untuk proses inferensi. Gambar 3.6 menunjukkan kelas analisi Hitung Resiko Hipertensi.
EFuzzifikasi
EInferensiRSS
Pakar
UI_HitungResiko
CFuzzy
EInferensiMinMax
EKoneksi
EDefuzzifikasiRSS
EDefuzzifikasiMM
Gambar 3. Diagram Kelas Analisis Hitung Resiko Hipertensi
3. Diagram Kelas Analisis Perbaikan Aturan Setelah berhasil melakukan proses Login sebagai Pakar dan memilih menu Perbaikan Aturan, sistem akan menampilkan form UI_PerbaikanAturan. Selanjutnya kelas UI_BasisPengetahuan akan mengakses kelas kontroler CPerbaikanAturan. Setelah itu, CPerbaikanAturan akan mengakses kelas Entitas EKoneksi untuk memperbarui aturan dalam basis data.
Pakar
UI_PerbaikanAturan
CPerbaikanAturan
EKoneksi
Gambar 4. Diagram Kelas Analisis Perbaikan Aturan
4. Diagram Kelas Analisis Record Data Pasien Setelah berhasil melakukan proses Login sebagai Pakar dan memilih menu Record Data Pasien, sistem akan menampilkan form UI_RecordPasien. Selanjutnya kelas UI_RecordPasien
akan mengakses kelas kontroler CRecordPasien. Setelah itu, CRecordPasien akan mengakses kelas Entitas EKoneksi untuk menampilkan data pasien dalam basis data.
Pakar
UI_RecordPasien
cRecordPasien
EKoneksi
Gambar 5. Diagram Kelas Analisis Record Data Pasien
Diagram Sekuens 1. Diagram Sekuens Daftar Pasien Aktor akan berada pada form UI_DaftarPasien setelah proses login sebagai Admin. Pada saat masuk kedalam form UI_DaftarPasien, sistem hanya akan menampilkan ID terakhir yang belum digunakan. Aktor dapat menyimpan data pasien baru atau memperbarui data pasien yang ada. Saat aktor ingin menyimpan data pasien baru, ID pasien yang digunakan adalah ID pasien yang muncul saat form pertama kali terbuka. Setelah memasukkan semua data dan menekan tombol Simpan, UI_DaftarPasien akan mengakses prosedur simpandata dalam kelas CDaftarPasien. Saat akan memperbarui data pasien, pengguna harus memasukkan ID pasien. Setelah ID pasien dimasukkan, UI_DaftarPasien akan memanggil prosedur cekdata untuk mencocokkan ID pasien yang dimasukkan dengan ID pasien yang ada di dalam basis data. Jika terdapat ID pasien yang sesuai, sistem akan menampilkan data pasien dan pengguna dapat merubah data lalu menekan tombol Update maka UI_DaftarPasien akan memanggil prosedur updatedata dalam kelas CDaftarPasien dan memperbarui data pasien ke dalam basis data. Diagram Sekuens Daftar Pasien ditunjukkan dalam Gambar 6.
Objrecord :CDaftarPasien
:UI_DaftarPasien
EKoneksi
Admin formWindowActivated (java.awt.event.WindowEvent evt) b = IDpasien() getConnection() id_pasien+1
id_pasien
bsimpanActionPerformed (java.awt.event.ActionEvent evt) Id = getID(textID) id Alt
getConnection() id_pasien
if(id!=null) updatedata(textID,textnama, comboJK,textalamat,texttelpon)
getConnection()
else simpandata(textID,textnama, comboJK,textalamat,texttelpon) getConnection()
Gambar 6. Diagram Sekuens Daftar Pasien
2. Diagram Sekuens Hitung Resiko Hipertensi Aktor mula-mula berada pada form UI_HitungResiko. Setelah aktor memasukkan data masukan berupa ID Pasien, Nama Pasien, Tanggal, Tekanan Darah, Denyut Jantung, Umur, Tinggi dan Berat badan, kemudian aktor menekan tombol “Hitung”. Selanjutnya form UI_HitungResiko akan menciptakan objek dari kelas CFuzzy dan memanggil prosedur setnilai dan HitungResiko yang ada pada CFuzzy. Melalui prosedur HitungResiko, CFuzzy akan memanggil prosedurprosedur pada kelas CFuzzifikasi, CInferensiRSS, CInferensiMinMax, CDefuzzifikasiRSS dan CDefuzzifikasiMM. Setelah dilakukan perhitungan, form UI_HitungResiko akan memanggil prosedur inputData untuk menyimpan data hasil prediksi kedalam basis data. Diagram sekuens untuk Hitung Resiko Hipertensi ditunjukkan pada Gambar 7.
CFuzzy
UI_HitungResiko Pakar bHitungActionPerformed (java.awt.event.ActionEvent evt)
konversTanggal() setnilai(BP, HR, Age, BMI) HitungRisk()
ObjFuzzifikasi :EFuzzifikasi
<
>
SetBP(nilaiBP) Getjmlh_BP(nilaiBP) tempjmlh_BP Loop
i<=tempjmlh_BP GetBP(i) temp_miua[i] Get_NilaiLinguistikBP(i) temp_BP[i]
Loop
j<=tempjmlh_HR GetHR(j) temp_miub[j] Get_NilaiLinguistikHR(j) temp_HR[j]
Loop
k<=tempjmlh_Age GetAge(k) temp_miuc[k] Get_NilaiLinguistikAge(k) temp_Age[k]
Loop
l<=tempjmlh_BMI GetBMI(l) temp_miud[l] Get_NilaiLinguistikBMI(l) temp_BMI[l]
ObjInferensiRSS :EInferensiRSS
<>
Loop
EKoneksi
x<=81 Arrange(x, temp_BP, temp_HR, temp_Age, temp_BMI) getConnection() Risk
Loop
x<=81
setBP(x, temp_miua, temp_BP) setHR(x, temp_miub, temp_HR) setAge(x, temp_miuc, temp_Age) setBMI(x, temp_miud, temp_BMI)
Loop
x<=81
minimumNonzero(x) getRisk(x) Risk[x] grouping(Risk) getmiueL() miueL getmiueM() miueM getmiueH() miueH
ObjInferensiMinMax :EInferensiMinMax
<>
Loop Loop Loop Loop
i<= tempjmlh_BP j<= tempjmlh_HR k<= tempjmlh_Age l<= tempjmlh_BMI Min_Risk(I,j,k,l,temp_miua,temp_miub,temp_miuc,temp_miud) SetRules(I,j,k,l,temp_BP,temp_HR,temp_Age,temp_BMI)
Loop Loop Loop Loop
Loop
getConnection() Risk
i<= tempjmlh_BP j<= tempjmlh_HR k<= tempjmlh_Age l<= tempjmlh_BMI
i<=3
Max_Risk(I,j,k,l)
Getmiue_max(i) GetRisk_max(i) Getjmlh_miue() <>
ObjEDefuzzifikasiRSS :EDefuzzifikasiRSS
centroid(miueL, miueM, miueH) temp_ResikoHipertensi <>
Loop Alt
i<=5 If(temp_miue[i]>=0)
Metode_Centroid(temp_miue,tempjmlh_miue,temp_risk) GetResiko()
getResikoHipertensiRSS() ResikoHipertensiRSS getResikoHipertensiMinMax() Tampil ResikoHipertensi
ResikoHipertensiMinMax Inputdata(vkode,vnama,BP,HR,Age ,Tinggi,Berat,ResikoHipertensiRSS, ResikoHipertensiMM) clearData()
Gambar 7. Diagram Sekuens Hitung Resiko Hipertensi
ObjEDefuzzifikasiMM :EDefuzzifikasiMM
3. Sekuens Hitung Resiko Hipertensi Aktor akan berada pada form UI_PerbaikanAturan setelah menekan tombol “Perbaikan Aturan”. Pada saat masuk ke dalam form UI_PerbaikanAturan, sistem akan menampilkan aturanaturan yang berada dalam basis data. Selanjutnya aktor diminta untuk memilih nilai linguistik untuk setiap variabel pada combo box yang tersedia dalam antarmuka. Setelah aktor menekan tombol “Simpan”, UI_PerbaikanAturan akan menciptakan objek dari kelas CPerbaikanAturan dan memanggil prosedur updateRules yang akan memperbarui aturan dalam basis data berdasarkan data masukan dari aktor dan sistem kembali menampilkan isi aturan yang telah diperbarui. Diagram Sekuens Perbaikan Aturan ditunjukkan dalam Gambar 8. Base :CPerbaikanAturan
UI_PerbaikanAturan
Pakar
EKoneksi Input (comboBP, comboHR, comboAge, comboBMI, comboRisk)
showDB2() Tampil tabelrecord
getConnection() rules
setValues(comboBP,comboHR,comboAge, comboBMI,comboRisk)
a = getValueBP() Alt
if (BP==”Low”) “L” else if (BP==”Normal”) “N” else if (BP==”High”) “H” b = getValueHR()
Alt
if (HR==”Low”) “L” else if (HR==”Medium”) “M” else if (HR==”High”) “H” c = getValueAge()
Alt
if (Age==”Young”) “Y” else if (Age==”Middle Age”) “MA” else if (Age==”Old”) “O” d = getValueBMI()
Alt
if (BMI==”Low”) “L” else if (BMI==”Medium”) “M” else if (BMI==”High”) “H” ee = getValueRisk()
Alt
if (Risk==”Low”) “L” else if (Risk==”Medium”) “M” else if (Risk==”High”) “H”
updateRules(a,b,c,d,ee) getConnection() Update rules
showMessageDialog(“Rule berhasil diupdate!”) showDB2() getConnection()
Tampil tabelrecord
rules
Gambar 8. Diagram Sekuens Hitung Resiko Hipertensi
4. Diagram Sekuens Record Data Pasien Aktor akan berada pada form UI_RecordPasien setelah menekan tombol Record Data Pasien. Pada saat masuk kedalam form UI_RecordPasien, sistem akan menampilkan semua data pasien yang telah melakukan proses prediksi dalam basis data. Aktor dapat menampilkan data pasien berdasarkan ID pasien dengan memasukkan ID pasien kedalam textfield. Saat aktor memasukkan kode pasien, UI_RecordPasien akan menciptakan objek dari kelas CRecordPasien dan memanggil prosedur showRecordbyCode yang akan mencocokkan ID pasien dalam basis data dan menampilkan data pasien berdasarkan ID tersebut. Diagram Sekuens Record Data Pasien ditunjukkan dalam Gambar 9. Objrecord :CRecordPasien
:UI_RecordPasien
EKoneksi
Pakar bsemuaActionPerformed (java.awt.event.ActionEvent evt) showAllRecord() getConnection() tabelrecord
kode, tanggal, nama, BP, HR, Age, Tinggi, Berat, RSSrisk, MMrisk
lebarKolomSemua(jTable1)
vkodeKeyReleased (java.awt.event.KeyEvent evt) getNama(vkode) getConnection() nama nama showRecordbyCode(vkode) getConnection() tabelrecord
tanggal, BP, HR, Age, Tinggi, Berat, RSSrisk, MMrisk
lebarKolom(jTable1)
Gambar 9. Diagram Sekuens Record Data Pasien
Diagram Kelas 1. Diagram Kelas Daftar Pasien Kelas UI_DaftarPasien merupakan interface untuk use case Daftar Pasien sehingga hubungan antara UI_DaftarPasien dan kelas CDaftarPasien adalah Realisasi. Sedangkan hubungan antara kelas CDaftarPasien dengan kelas EKoneksi adalah dependency karena kelas CDaftarPasien mengacu kelas EKoneksi untuk mengakses basis data. Namun kelas EKoneksi
tetap dapat melakukan koneksi ke basis data walaupun tidak dihubungkan dengan kelas CDaftarPasien. Gambar 10 menunjukkan diagram kelas Daftar Pasien. «interface» UI_DaftarPasien +bsimpanActionPerformed() +textIDKeyReleased() +formWindowActivated()
CDaftarPasien +cekdata(id,textnama,comboJK,textalamat,texttelpon)() +updatedata(id,textnama,comboJK,textalamat,texttelpon)() +simpandata(id,textnama,comboJK,textalamat,texttelpon)() +getID(id_pasien)() : string +IDpasien() : int
EKoneksi -koneksi : Connection +getConnection()
Gambar 10. Diagram Kelas Daftar Pasien
2. Diagram Kelas Hitung Resiko Hipertensi Kelas UI_HitungResiko merupakan interface untuk use case Hitung Resiko Hipertensi sehingga hubungan antara UI_HitungResiko dan kelas CFuzzy adalah Realisasi. Pada kelas EFuzzifikasi, EInferensiRSS, EInferensiMinMax, EDefuzzifikasiRSS dan EDefuzzifikasiMM memiliki hubungan komposit dengan kelas CFuzzy karena kelas-kelas tersebut merupakan anggota wajib untuk kelas CFuzzy. Jika kelima kelas tersebut dipisahkan, maka kelas-kelas tersebut tidak memiliki arti dan kelas CFuzzy juga tidak dapat dijalankan. Sedangkan hubungan antara kelas EInferensiRSS dan EInferensiMinMax dengan kelas EKoneksi adalah dependency karena kedua kelas tersebut mengacu kelas EKoneksi untuk mengakses basis data. Namun kelas EKoneksi tetap dapat melakukan koneksi ke basis data walaupun tidak dihubungkan dengan kelas EInferensiRSS dan EInferensiMinMax. Gambar 11 menunjukkan diagram kelas Hitung Resiko Hipertensi.
1 EFuzzifikasi -miua[4] : float -miub[4] : float -miuc[4] : float -miud[4] : float -jmlh_BP : int -jmlh_HR : int -jmlh_Age : int -jmlh_BMI : int -NilaiLinguistik_BP[3] : string -NilaiLinguistik_HR[3] : string -NilaiLinguistik_Age[3] : string -NilaiLinguistik_BMI[3] : string -BP[5] : string -HR[5] : string -Age[5] : string -BMI[5] : string +SetBP(nilai_BP)() +SetHR(nilai_HR)() +SetAge(nilai_Age)() +SetBMI(nilai_BMI)() +Getjmlh_BP() : int +Getjmlh_HR() : int +Getjmlh_Age() : int +Getjmlh_BMI() : int +Get_BP(i)() : float +Get_HR(j)() : float +Get_Age(k)() : float +Get_BMI(l)() : float +Get_NilaiLinguistikBP(i)() : string +Get_NilaiLinguistikHR(j)() : string +Get_NilaiLinguistikAge(k)() : string +Get_NilaiLinguistikBMI(l)() : string
«interface» UI_HitungResiko +bHitungActionPerformed() +setResiko() : float
EInferensiRSS -Risk[6][82] : string -miue[82] : float -nilaimiue[6][82] : float -miueLow[82] : float -miueMedium[82] : float -miueHigh[82] : float -miueL : float -miueM : float -miueH : float +Arrange(x, BP, HR, Age, BMI)() +setBP(x,miua,BP)() +setHR(x,miub,HR)() +setAge(x,miuc,Age)() +setBMI(x,miud,BMI)() +minimumNonzero(x)() +grouping(Risk)() +getRisk(x)() : string +setmiue(x)() +getmiueLow(x)() +getmiueMedium(x)() +getmiueHigh(x)() +getmiueL() +getmiueM() +getmiueH()
1 1
CFuzzy
1
1
-nilai_BP : float -nilai_HR : float -nilai_Age : float -nilai_BMI : float -temp_miua[4] : float -temp_miub[4] : float -temp_miuc[4] : float -temp_miud[4] : float -temp_BP[5] : string -temp_HR[5] : string -temp_Age[5] : string -temp_BMI[5] : string +setnilai(BP, HR, Age, BMI)() +HitungRisk() +getResikoHipertensiRSS() : float +getResikoHipertensiMM() : float +inputData(kode,nama,tanggal,BP,HR,Age,Tinggi,Berat,RSSrisk,MMrisk)() +clearData()
1
1
1 1 EDefuzzifikasiRSS -centerLow : float -centerMedium : float -centerHigh : float -HypertensionRisk : float +centroid(miueL, miueM, miueH)()
EKoneksi -koneksi : Connection +getConnection()
Gambar 11. Diagram Kelas Hitung Resiko Hipertensi
EDefuzzifikasiMM -miue_akhir[13] : float -pembilang[4] : float -penyebut[4] : float -ResikoHipertensi : float +Metode_Centroid(miue_max, jmlhn_miue, Risk_max)() +GetResiko() : float
1
EInferensiMinMax -jmlh_miue : float -NilaiLinguistik_Risk[3] : string(idl) -Risk[10][10][10][10] : float -miue[10][10][10][10] : float -miue_max[4] : float -Risk_max[4] : float +SetRules(i,j,k,l,BP,HR,Age,BMI)() +Min_Risk(i,j,k,l,miua,miub,miuc,miud)() +Max_Risk(i,j,k,l)() +GetRisk_max() : string(idl) +Getmiue_max() : float +Getjmlh_miue() : int
3. Diagram Kelas Perbaikan Aturan Kelas UI_PerbaikanAturan merupakan interface untuk use case Perbaikan Aturan sehingga hubungan antara UI_PerbaikanAturan dan kelas CPerbaikanAturan adalah Realisasi. Sedangkan hubungan antara kelas CPerbaikanAturan dengan kelas EKoneksi adalah dependency karena kelas CPerbaikanAturan mengacu kelas EKoneksi untuk mengakses basis data. Namun kelas EKoneksi tetap dapat melakukan koneksi ke basis data walaupun dihubungkan dengan kelas CPerbaikanAturan. Gambar 12 menunjukkan diagram kelas Perbaikan Aturan. «interface» UI_PerbaikanAturan +bsimpanActionPerformed() +bkembaliActionPerformed()
CPerbaikanAturan -BP : string -HR : string -Age : string -BMI : string -Risk : string +setValues(comboBP,comboHR,comboAge,comboBMI,comboRisk)() +getValueBP() : string +getValueHR() : string +getValueAge() : string +getValueBMI() : string +updateRules() +showDB2()
EKoneksi -koneksi : Connection +getConnection()
Gambar 12. Diagram Kelas Perbaikan Aturan
4. Diagram Kelas Patient Data Record Kelas UI_RecordPasien merupakan interface untuk use case Record Data Pasien sehingga hubungan antara UI_RecordPasien dan kelas CRecordPasien adalah Realisasi. Sedangkan hubungan antara kelas CRecordPasien dengan kelas EKoneksi adalah dependency karena kelas CRecordPasien mengacu kelas EKoneksi untuk mengakses basis data. Namun kelas EKoneksi tetap dapat melakukan koneksi ke basis data walaupun dihubungkan dengan kelas CRecordPasien. Diagram kelas Record Data Pasien ditunjukkan pada Gambar 13. «interface» UI_RecordPasien +bsemuaActionPerformed() +vkodeKeyReleased()
CRecordPasien +showAllRecord() +lebarKolomSemua(jTable1)() +getNama(vkode)() +showRecordbyCode(vkode)() +lebarKolom(jTable1)()
EKoneksi -koneksi : Connection +getConnection()
Gambar 13. Diagram Kelas Patient Data Record