Similarity controller_avtivity.java

81 5 Kembalikan nilai dari listDokterTemp 6 Selesai

4. Similarity controller_avtivity.java

a. onCreateBundle savedInstanceState 1 method ini berkerja sebagai kontroler pengatur proses apa saja yang harus dilakukan 2 method ini akan memanggil method getResource untuk mendapatkan data dokter dan data sales 3 memanggil method normalitationQuery untuk melakukan normalisasi bobot untuk query 4 memanggil method settingQuery untuk melakukan pengecekan bobot generic bdalam profile dengan deneric yang dimiliki system untuk generic yang tidak dipilih oleh sales maka akan bernilai 0. 5 Memanggil method getSimilarity untuk mendapatkan hasil dari proses pencarian jarak terdekat antara query dengan cluster clusterResult=getSimilarity; 6 Mendapatkan data dpokter dari cluster yang terpilih getDokterListResult; 7 melakukan pengurutan data dokter dari cluster yang terpilih berdasarkan similarity dengan query dengan memanggil method bubleShort; 8 menampilkan data 9 myListView = ListViewfindViewByIdR.id.listDokterResult; b. getResource 82 1 buatlah variable bertipe public diluar method seperti berikut : String FILE_TemDokter = tempDokter5.tmp; String FILE_NAME = tempfile5.tmp; String FILE_profile=tempProfile5.tmp; double [] resDistace; Boolean STATUSdETAIL=false; ListProfilSales_Model profilSales; TempResModel resourceTemp; Dokter_Model [] listDokter; 2 Dalam method getResource panggilah file yang akan diambmbil datanya tempDOkter5.tmp , tempProfile5.tmp , tempfile5.tmp . perhartikan listing program berikut ; FileInputStream fis2 = openFileInputFILE_NAME; ObjectInputStream inObjectStream2 = new ObjectInputStreamfis2; FileInputStream fis2Sales = openFileInputFILE_profile ObjectInputStream inObjectStream2Sales = new ObjectInputStreamfis2Sales; FileInputStream fisDokter = openFileInputFILE_TemDokter; ObjectInputStream inObjectStreamDokter = new ObjectInputStreamfisDokter ; 83 3 Jika sudah menyimpan dalam variable bertipe objectInputStream langkah berikutnya adalah memberikan nilai variable ListProfilSales_Model profilSales; TempResModel resourceTemp; Dokter_Model [] listDokter agar berisikan data yang terdapat di objectInputStream. Inplementasi perhatikan listing program berikut : listDokter = Dokter_Model [] inObjectStreamDokter.readObject; resourceTemp = TempResModel inObjectStream2.readObject; profilSales = ListProfilSales_Model inObjectStream2Sales.readObject; 4 Setelah dilakukan pengesetan terhadiap variable listDokterm resourceTemp dan profilSales maka variable tersebut telah berisi data yang ada dalam file sehingga siap untuk diproses. 5 Selesai c. normalitationQuery 1 akses variable profil sales 2 cari nilai maksimal dari seluruh item profile 3 bagi seluruh bobot dari item profil dengan nilai max 4 selesai d. settingQuery 1 buat variable bantu double profileQuery[] = new double [jumlah generic] 2 seting seluruh nilai indek = 0.0 perhatikan listing berikut: for int i = 0; i profileQuery.length; i++ { profileQuery[i]=0.0; 84 } 3 akses variable profilSales 4 buat variable tempResource 5 isi variable genericRes[] dengan data generic dari kelas variable tempResource.getGeneric 6 lakukan pencocokan indek 7 i=0 8 selama i tempResource.generic.length , jika tidak lanjut langkah 14 9 j =0 10 selama j profilSales.size jika tidak lanjut langkah 13 11 cek apakah untuk index profilSales.getj == tempResource.generic[i] a. jika sama cek seting profileQuery[i]= profilSales.getj.getBobot 12 j++ , ulangi langkah 10 13 i++ , ulangi langkah 8 untuk lebih jelas perhatikan listing program berikut : public void settingQuery { for int i = 0; i profileQuery.length; i++ { profileQuery[i]=0.0; } for int i = 0; i resourceTemp.getGeneric.length; i++ { for int j = 0; j profilSales.size; j++ { 85 ifresourceTemp.getGeneric[i].equalsprofilSales.getj.Generic{ profileQuery[i]=profilSales.getj.getBobot; }}}} e. getSimilarity 1 buat variable untuk menampung jarak ke empat centroid dengan query 2 lakukan perhitungan jarak Euclidean terhadap profilQuery dengan resourceTemp.getCentroid[0...3] a buat variable temporary double resultC1 = 0; double resultC2 = 0; double resultC3 = 0; double resultC4 = 0; b hitung nilai index X1 – index Y2 + index X2- index X22 …. Untuk hasil perhitungan setiap centroid cluster dengan profilQuery simpan dalam variable temporary . for int i = 0; i 61; i++ { resultC1=resultC1 + Math.powresourceTemp.getCentroid[0][i]-profileQuery[i],2; resultC2=resultC2 + Math.powresourceTemp.getCentroid[1][i]-profileQuery[i],2; resultC3=resultC3 + Math.powresourceTemp.getCentroid[2][i]-profileQuery[i],2; resultC4=resultC4 + Math.powresourceTemp.getCentroid[3][i]-profileQuery[i],2; } 86 c hitung akar dari masing-masing variable temporary simpan dalam variable Total_ResultC1 , Total_ResultC2 , Total_ResultC3 , Total_ResultC4 double Total_resultC1 = Math.sqrtresultC1; double Total_resultC2 = Math.sqrtresultC2; double Total_resultC3 = Math.sqrtresultC3; double Total_resultC4 = Math.sqrtresultC4; 3 ambil centroid cluster dengan jarak terkecil dengan membandingkan nilai dari Total_ResultC1 , Total_ResultC2 , Total_ResultC3 , Total_ResultC4 , perhatikan contoh pengecekan berikut : int Cluster = 0; if Total_resultC1 Total_resultC2 Total_resultC1 Total_resultC3 Total_resultC1 Total_resultC4 { Cluster = 1; } else if Total_resultC2 Total_resultC1 Total_resultC2 Total_resultC3 Total_resultC2 Total_resultC4 { Cluster = 2; } 4 kemudian retrun cluster f. getDokterListResult 1 hitung anggota cluster dari cluster dokter yang terpilih 2 buat objek array dari kelas Dokter_model. Seperti listing program berikut Dokter_Model [] tDokter= new Dokter_Model[jumDokterResult]; 87 3 copy array dari objek listDokter kedalam tDokter untuk dokter yang masuk kedalam cluster yang dipilih 4 seting variable dokListResult=tDokter; 5 setelah melakukan copy array buatlah variable resDistance[] bertipe double untuk menyimpan jarak dari setiap dokter dengan query 6 Setelah resDistance dibuat kemudian deklarasikanlah variable tersebut dalam method ini. resDistace= new double[tDokter.length]; 7 Hitung jarak antara dokter dalam dengan query menggunakan Euclidean seperti pada baris program berikut : for int i= 0; i resDistace.length; i++ { for int j = 0; j tDokter[0].getReekomendasi_obat.getOlahanData.getBobotgeneric.length; j++ { double tJum=Math.powtDokter[i].getReekomendasi_obat. getOlahanData.getBobotgeneric[j]-profileQuery[j],2; resDistace[i]=resDistace[i]+ tJum; } } 8 Lakukan proses perhitungan akar untuk setiap jarak for int i = 0; i resDistace.length; i++ { resDistace[i]=Math.sqrtresDistace[i]; } 88 9 Selesai g. bubleShort 1 akses variabel resDistance[] yang memuat jarak dari setiap dokter terhadap query 2 urutkan menggunakan algoritma bubleshort dari yang besar menuju yang kecil Algoritma buble sort : a Algoritma ini digunakan untuk mengurutkan data dengan metode bubble sort. b Masukan berupa kumpulan data dalam larik. c Keluaran akan menghasilkan kumpulan data dalam larik yang sudah dalam keadaan urut. d Langkah 0 : Baca data ke dalam larik e Langkah 1 : Untuk iterasi = 1 sampai N-1 lakukan langkah 2 f Langkah 2 : Untuk elemen = 0 sampai N-1-iterasi lakukan langkah 3 g Langkah 3 : Test apakah larik[elemen] larik[elemen + 1] Jika ya, tukarkan nilai kedua elemen ini 3 detail algoritma dalam implementasi : for int m = 0; m dokListResult.length-1; m++ { for int n = 0; n dokListResult.length-1-m; n++ { ifresDistace[n]resDistace[n+1]{ double tem= resDistace[n+1]; resDistace[n+1]=resDistace[n]; resDistace[n]=tem; 89 Dokter_Model dT=dokListResult[n+1]; dokListResult[n+1]=dokListResult[n]; dokListResult[n]=dT; } } } h. Dokter_Model shortRecomendationint idDokter 1 Method ini sama halnya dengan method BubleShort dimana method ini untuk mengurutkan obat yang direkomendasikan dokter berdasarkan jumlah terbesar 2 Berikut adalah algoritma pengurutan rerkomendasi obat menggunakan bubleshort Algoritma buble sort a Algoritma ini digunakan untuk mengurutkan data dengan metode bubble sort. b Masukan berupa kumpulan data dalam larik. c Keluaran akan menghasilkan kumpulan data dalam larik yang sudah dalam keadaan urut. d Langkah 0 : Baca data ke dalam larik e Langkah 1 : Untuk iterasi = 1 sampai N-1 lakukan langkah 2 f Langkah 2 : Untuk elemen = 0 sampai N-1-iterasi lakukan langkah 3 g Langkah 3 : Test apakah larik[elemen] larik[elemen + 1] Jika ya, tukarkan nilai kedua elemen ini 90

BAB V HASIL DAN PENGUJIAN

A. Hasil Pengujian Sistem

1. Item Query Yang Tersedia

Tabel 21. Item Query Yang Tersedia No Generic Obat Profil Query 1 Amikacin 2 Amoxicillin + clavulanic acid 3 Ampicillin sodium, 4 Ascorbic acid 5 Biotin + folic acid + glycine 6 Bupivacaine hydrochloride + dextrose monohydrate 7 Cefepime 8 Cefoperazone 9 Cefotaxime 10 Cefpirome 11 Ceftazidime 12 Ceftizoxime 13 Ceftriaxone 14 Cefuroxime 15 Ciprofloxacin 16 Citicoline 17 Dexketoprofen 18 Dexmedetomidine hydrochloride 19 Dextrose +lidocaine hydrochloride 20 Diazepam 21 Dipyrone 22 Dobutamine 23 Ephedrine hydrochloride + theophylline anhydrous epoetin alfa 24 Esomeprazole 25 Fentanyl 26 Ferric hydroxide sucrose complex 27 Fluconazole 28 Fosfomycin 29 Furosemide 30 Heparin 31 Hyoscine 32 Imipenem + cilastatin 33 Ketoprofen 34 Ketorolac 35 Levofloxacin 36 Mecobalamin 37 Meropenem 38 Methampyrone + vitamin B complek 39 Methylprednisolone 40 Metoclopramide hydrochloride 41 Metronidazole 42 Midazolam 43 Moxifloxacin 44 Neostigmine 45 Norepinephrine 46 Omeprazole 47 Ondansetron 48 Oxytocin 49 Pantoprazole 50 paracetamol + vitamin B complek 51 Parecoxib 52 Piracetam 53 Propofol 54 Ranitidine 55 rocuronium bromide 56 Tetanus immunoglobulin 57 Tramadol 59 tranexamic acid 60 Vecuronium bromide 61 Vitamin B-Complek