PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN PENGADAAN OBAT MENGGUNAKAN MODEL ANALISIS PARETO ABC DAN OPTIMASI KUALITATIF
SKRIPSI Diajukan untuk memenuhi salah satu syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika
Disusun oleh : Ancelmatini Nurwulandari 085314066
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA 2012 i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DECISION SUPPORT SYSTEM OF DRUG SUPPLY MANAGEMENT USING PARETO ABC ANALYSIS AND QUALITATIVE OPTIMIZATION MODEL
A Thesis Presented as Partial Fulfillment of the Requirements To Obtain the Sarjana Komputer Degree In Informatics Engineering Department
By : Ancelmatini Nurwulandari 085314066
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY 2012
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSEMBAHAN
Jalan hidupku tak selalu tanpa kabut yang pekat Namun kasihmu nyata padaku pada waktumu yang tepat Seperti pelangi sehabis hujan, itulah janji setiaMu Tuhan Di balik dukaku telah menanti, harta yang tak ternilai dan abadi
Pelangi Sehabis Hujan, by : Nikita
Ku Persembahkan untuk : Tuhan Yesus dan Bunda Maria, Keluarga Tercinta, Dosen Pembimbing, Kekasih dan Teman-teman
Terima Kasih untuk Segala Doa dan Dukungannya......
v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRAK
Selama ini pengelola apotek sering mengalami kesulitan dalam mengambil keputusan untuk pengadaan obat. Hal ini disebabkan karena adanya beberapa faktor yang harus dipertimbangkan oleh pengelola apotek yaitu jumlah pemakaian, jumlah investasi, indeks kritis, dan alokasi biaya. Permasalahan lain yang muncul adalah waktu yang dibutuhkan untuk mencari rekomendasi sangat lama. Hal ini disebabkan karena jumlah data pemakaian sediaan yang banyak dan proses pencarian rekomendasi masih dilakukan secara manual dengan bantuan lembar kerja (spreadsheet). Tugas akhir ini dibuat untuk mengembangkan sistem pendukung pengambilan keputusan pengadaan obat yang dapat memberikan rekomendasi pengadaan obat kepada pengelola apotek berdasarkan hasil analisis nilai pakai, nilai investasi, nilai indeks kritis, dan alokasi biaya. Sistem pendukung pengambilan keputusan ini dibuat dalam bentuk aplikasi desktop menggunakan bahasa pemrograman Java dan Database Management System MySQL. Model yang digunakan adalah metode analisis Pareto ABC dan optimasi kualitatif. Berdasar hasil dari uji coba kepada pengguna, sistem pendukung pengambilan keputusan ini berhasil memberikan rekomendasi untuk pengambilan keputusan pengadaan obat di apotek.
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ABSTRACT
Nowdays, the drugstore manager have problems in making decision of drug supply. This is caused by some factors that should be considered by drugstore manager, i.e. the number of used item, the amount of
invesment,
critical index, as well as budget allocation. In addition, the proccess to get the recommendation needs time due to the number of data that should be calculated using spreadsheet. This thesis aims to develop a decission support system that is able to give recommendations of drug supply for drugstore manager, considering the number of used item, the amount of
invesment, critical index, as well as budget
allocation. This decision support system was developed in the form of desktop application using Java programming language and MySQL Database Management System. The model applied in this system is the combination of Pareto ABC analysis and qualitative optimization. Based on user testing result, this decision support system is successful in giving recommendation for making decision of drug supply.
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
KATA PENGANTAR
Puji syukur penulis panjatkan atas Kehadirat Tuhan Yang Maha Esa, yang telah melimpahkan rahmat dan berkatNya sehingga penulis dapat menyelesaikan tugas akhir yang berjudul “Sistem Pendukung Pengambilan Keputusan Pengadaan Obat Menggunakan Model Pareto ABC dan Optimasi Kualitatif” dan penulis selalu diberi kekuatan untuk berkembang dan menjadi lebih. Tugas akhir ini ditulis sebagai salah satu syarat memperoleh gelar sarjana komputer program studi Teknik Informatika, Fakultas Sains dan Teknologi Universitas Sanata Dharma. Terima kasih sebesar-besarnya kepada semua pihak yang turut memberikan dukungan, semangat dan bantuan sehingga selesainya skripsi ini : 1. Tuhan Yesus Kristus dan Bunda Maria yang telah memberikan semuanya sehingga penulis bisa menyelesaikan tugas akhir ini. 2. Ibu P. H. Prima Rosa, S. Si., M. Sc. Selaku dosen pembimbing atas kesabaran, bimbingan, waktu, saran dan terlebih atas dukungan yang diberikan. 3. Bapak Drs. J. Eka Priyatma, M. Sc., Ph. D. dan Ibu AM. Polina, S. Kom., M. Sc. selaku dosen penguji atas kritik dan saran yang telah diberikan. 4. Bapak Ipang Djunarko, S. Si., Apt.Yyang telah memberikan ijin untuk penulis mengadakan penelitian di Apotek Pendidikan Sanata Dharma. 5. Kedua orang tua tercinta, Bapak Vincentius Purnama W dan Ibu Yustina Sumartini, atas kasih sayang, semangat, dan dukungan yang tak hentihentinya diberikan sehingga penulis dapat menyelesaikan tugas akhir ini. 6. Segenap keluarga yang telah memberikan semangat, perhatian, dan doa sehingga penulis dapat menyelesaikan tugas akhir ini. 7. Benediktus Fandy Yulian Tri Kristianto, yang selalu menyemangati dan menghibur ketika penulis dalam kesulitan, dan juga terimakasih untuk doanya. 8. Sahabat dan teman-teman, Elisabeth Gadis, Fransiska Yuliani Ika, Fransisca Endar, Emiliana Suci, Valentina Dian, dan teman-teman seperjuangan atas canda tawa dan semangat selama penulis menyelesaikan tugas akhir ini.
x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR ISI
HALAMAN JUDUL................................................................................... i HALAMAN JUDUL INGGRIS................................................................. ii HALAMAN PERSETUJUAN..............................................................
iii
HALAMAN PENGESAHAN........................................................... .......... iv HALAMAN PERSEMBAHAN.................................................................... v PERNYATAAN KEASLIAN KARYA............................................ .......... vi ABSTRAK.............................................................................................
vii
ABSTRACT................................................................................................. viii PERSETUJUAN PUBLIKASI.................................................................... ix KATA PENGANTAR....................................................................... .......... x DAFTAR ISI................................................................................................ xii DAFTAR TABEL........................................................................................xvii DAFTAR GAMBAR................................................................................... xx Bab I. PENDAHULUAN............................................................................ 1 I.1.
Latar Belakang ................................................................................. 1
I.2.
Rumusan Masalah ............................................................................ 2
I.3.
Tujuan .............................................................................................. 2
I.4.
Batasan Masalah .............................................................................. 3
I.5.
Metodologi Penelitian....................................................................... 3
I.6.
Sistematika Penulisan ....................................................................... 4
Bab II. LANDASAN TEORI....................................................................... 6 II.1.
Manajemen Persediaan ..................................................................... 6
xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
II.2.
Sistem Pendukung Pengambilan Keputusan .....................................7 II.2.1 Pengertian SPPK.................................................................... 7 II.2.2 Komponen SPPK................................................................... 7
II.3.
Analisis Pareto ABC (Always Better Control)...................................13
II.4.
Optimasi Kualitatif...................................................................
20
II.5.
Just In Time Management..........................................................
21
Bab III. ANALISIS DAN PERANCANGAN SISTEM............................. 23 III.1.
Analisis Sistem ............................................................................... 23 III.1.1 Gambaran umum sistem lama................................................ 23 III.1.2 Fase Definisi Ruang Lingkup................................................ 23 III.1.3 Analisis Masalah.................................................................... 24 III.1.4 Gambaran Umum Sistem Baru.............................................. 25 III.1.4.1 Data awal................................................................... 25 III.1.4.2 Input sistem................................................................ 26 III.1.4.3 Output sistem............................................................. 26 III.1.5 Analisis Kebutuhan................................................................ 27 III.1.5.1 Pihak yang terlibat dalam sistem............................... 27 III.1.5.2 Use-case Diagram..................................................... 27 III.1.5.3 Ringkasan use-case.................................................... 28 III.1.5.4 Narasi use-case.......................................................... 28
III.2.
Perancangan Sistem ........................................................................ 28
III.2.1 Perancangan Logikal................................................................... 28 III.2.1.1 Diagram Aktivitas.......................................................... 28 III.2.1.2 Perancangan Manajemen Data........................................ 29
xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.1.2.1Perancangan Konseptual Basis Data........................ 29 III.2.1.2.2 Perancangan Basis Data...........................................30 III.2.1.3 Perancangan Subsistem Manajemen Model....................30 III.2.1.4 Model Analisis................................................................ 45 III.2.1.4.1Model Analisis Use-case Input File Pemakaian Sediaan.................................................................... 45 III.2.1.4.2Model Analisis Use-case Input Alokasi Biaya........................................................... 46 III.2.1.4.3Model Analisis Use-case Input Skor Pareto............................................................... 47 III.2.1.4.4Model Analisis Use-case Analisis Pareto ABC................................................ 48 III.2.1.4.5Model Analisis Use-case Mencari Rekomendasi..............................................49 III.2.1.5 Diagram Kelas Analisis...................................................52 III.2.1.6 Perancangan Detil Kelas................................................. 53 III.2.2 Perancangan Fisikal.................................................................... 62 III.2.2.1 Perancangan Subsistem Manajemen Dialog................... 62 III.2.2.2 Perancangan Fisikal Basis Data...................................... 66 Bab IV. IMPLEMENTASI DAN ANALISIS HASIL............................... 68 IV.1. Implementasi .................................................................................... 68 IV.I.1. Spesifikasi Perangkat Keras dan Perangkat Lunak............. 68 IV.I.2. Implementasi Data .............................................................. 68 IV.I.3. Implementasi File.................................................................69
xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IV.I.4. Implementasi Antar Muka .................................................. 69 IV.1.4.1Tampilan Halaman Menu Utama.................................... 69 IV.1.4.2Tampilan Halaman Input Data........................................ 70 IV.1.4.2.1Tampilan Halaman Input File.............................. 70 IV.1.4.2.2Tampilan Halaman Input Biaya........................... 71 IV.1.4.2.3Tampilan Halaman Input Skor Pareto................. 72 IV.1.4.3Tampilan Halaman Analisis Pareto ABC ...................... 72 IV.1.4.4Tampilan Halaman Rekomendasi .................................. 73 IV.2. Analisis Hasil .................................................................................... 75 IV.2.1. Pengujian Validitas Program ................................................... 75 IV.2.1.1Pengujian Validitas Hasil Analisis Pareto ABC........... 75 IV.2.1.1.1Analisis nilai pakai.............................................. 75 IV.2.1.1.2Analisis nilai investasi......................................... 79 IV.2.1.1.3Analisis nilai indeks kritis................................... 83 IV.2.1.1Pengujian Validitas Hasil Cari Rekomendasi............... 88 IV.2.2. Kelebihan Sistem.................................................................
96
IV.2.3. Pengujian Pengguna........................................................
96
Bab V. KESIMPULAN DAN SARAN...................................................... 98 V.1 Kesimpulan ............................................................................... 98 V.2 Saran ..........................................................................
........... 98
DAFTAR PUSTAKA ................................................................................... 99 LAMPIRAN ................................................................................................. 101 Lampiran 1 Narasi Use-case.......................................................................... 101 Lampiran 2 Diagram Aktivitas...................................................................... 106
xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Lampiran 3 Data Pemakaian Sediaan............................................................ 108 Lampiran 4 Listing Program................................................................
112
Lampiran 5 Koesioner Pengujian Pengguna.................................................. 171
xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR TABEL
Tabel 2.1 Tabel jenis-jenis model SPPK...................................................... 10 Tabel 2.2 Daftar Pemakaian Sediaan di Apotek........................................... 18 Tabel 2.3 Hasil Perhitungan Nilai Pakai........................................................ 18 Tabel 2.4 Hasil Perhitungan Nilai Investasi.................................................. 19 Tabel 2.5 Hasil Perhitungan Nilai Indeks Kritis............................................ 19 Tabel 3.1 Tabel analisis sebab akibat............................................................ 24 Tabel 3.2 Data Atribut.......................... ....................................................... 26 Tabel 3.3 Ringkasan use-case Apoteker........................................................ 28 Tabel 3.4 Data sampel pemakaian sediaan farmasi....................................... 32 Tabel 3.5 Data berdasarkan jumlah pemakaian............................................. 33 Tabel 3.6 Data hasil analisis nilai pakai........................................................ 34 Tabel 3.7 Data berdasarkan jumlah investasi................................................ 35 Tabel 3.8 Data hasil analisis nilai investasi................................................. 37 Tabel 3.9 Data hasil analisis nilai indeks kritis..........................................
39
Tabel 3.10 Data hasil rekomendasi alternatif 1........................................... 40 Tabel 3.11 Data hasil rekomendasi alternatif 2........................................... 42 Tabel 3.12 Data hasil rekomendasi alternatif 3........................................... 44 Tabel 3.13 Tabel kelas analisis input file pemakaian sediaan..................... 45 Tabel 3.14 Tabel kelas analisis input alokasi biaya...................................... 47 Tabel 3.15 Tabel kelas analisis input skor pareto.......................................... 48 Tabel 3.16 Tabel kelas analisis analisis pareto abc........................................49 Tabel 3.17 Tabel kelas mencari rekomendasi................................................ 50
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.18 Kelas interface homeForm......................................................... 53 Tabel 3.19 Kelas interface inputFileForm.................................................... 53 Tabel 3.20 Kelas interface inputBiayaForm................................................. 54 Tabel 3.21 Kelas interface inputSkorForm................................................... 54 Tabel 3.22 Kelas interface analisisForm....................................................... 55 Tabel 3.23 Kelas interface rekomendasiForm.............................................. 56 Tabel 3.24 Kelas Controller databaseConnection.......................................... 58 Tabel 3.25 Kelas Entity Obat........................................................................ 58 Tabel 3.26 Kelas Entity Biaya...................................................................... 59 Tabel 3.27 Kelas Contoller analisisPareto..................................................... 59 Tabel 3.28 Kelas Entity chart...................................................................... 60 Tabel 3.29 Kelas Controller cariRekomendasi.............................................. 61 Tabel 3.30 Tabel Obat................................................................................... 66 Tabel 3.31 Tabel nilai_pakai..........................................................................66 Tabel 3.32 Tabel nilai_investasi.................................................................... 66 Tabel 3.33 Tabel nilai_indeks_kritis..............................................................66 Tabel 3.34 Tabel hasil_rekomendasi........................................................... 67 Tabel 3.35 Tabel kelas_pareto_np................................................................ 67 Tabel 3.38 Tabel kelas_pareto_ni................................................................ 67 Tabel 3.39 Tabel kelas_pareto_nik............................................................... 67 Tabel 4.1 Tabel implementasi file.............................................................
69
Tabel 4.2 Hasil pengujian validitas analisis nilai pakai.............................. 75 Tabel 4.3 Hasil pengujian validitas analisis nilai investasi.......................... 79 Tabel 4.4 Hasil pengujian validitas analisis nilai indeks kritis..................... 83
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 4.5 Hasil pengujian validitas pencarian rekomendasi......................... 88 Tabel 4.6 Hasil pengujian validitas perhitungan biaya.................................. 95 Tabel 4.7 Hasil Pengujian Pengguna ............................................................ 97
xix
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR GAMBAR
Gambar 2.1 Komponen SPPK (Turban, 19995:88)....................................... 13 Gambar 3.1 Diagram Konteks Sistem Baru...................................................25 Gambar 3.2 Use case Apoteker Pengelola.....................................................27 Gambar 3.3 Diagram ER........................................................................
29
Gambar 3.4 Rancangan Logikal Basis Data.................................................. 30 Gambar 3.5 Alur kerja sistem........................................................................ 31 Gambar 3.6 Model analisis input file pemakaian sediaan.......................
45
Gambar 3.7 Diagram sekuensial input file pemakaian sediaan.................... 46 Gambar 3.8 Gambar model analisis input alokasi biaya.............................. 46 Gambar 3.9 Diagram sekuensial input alokasi biaya.................................... 47 Gambar 3.10 Model analisis input skor Pareto............................................. 47 Gambar 3.11 Diagram sekuensial input skor Pareto..................................... 48 Gambar 3.12 Model analisis analisis Pareto ABC......................................... 48 Gambar 3.13 Diagram sekuensial analisis Pareto ABC................................ 49 Gambar 3.14 Model analisis mencari rekomendasi....................................... 50 Gambar 3.15 Diagram sekuensial mencari rekomendasi.............................. 51 Gambar 3.16 Diagram Kelas.......................................................................... 52 Gambar 3.17 Rancangan Halaman Menu Utama......................................... 63 Gambar 3.18 Rancangan Halaman Input File.............................................. 63 Gambar 3.19 Rancangan Halaman Input Biaya........................................... 63 Gambar 3.20 Rancangan Halaman Input Skor Pareto................................. 64 Gambar 3.21 Rancangan Halaman Analisis Pareto ABC............................ 64
xx
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 3.22 Rancangan Halaman Grafik................................................... 61 Gambar 3.23 Rancangan Halaman Rekomendasi........................................ 65 Gambar 3.24 Rancangan Halaman Input Maksimum Selisih...................... 65 Gambar 4.1 Tampilan Halaman Menu Utama............................................... 70 Gambar 4.2 Tampilan Halaman Input File.................................................... 71 Gambar 4.3 Tampilan Halaman Input Biaya............................................... 71 Gambar 4.4 Tampilan Halaman Input Skor Pareto...................................... 72 Gambar 4.5 Tampilan Halaman Analisis Pareto ABC.................................. 73 Gambar 4.6 Tampilan Halaman Cari Rekomendasi..................................... 74 Gambar 4.7 Tampilan Form Input Selisih Maksimum.................................. 74
xxi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB I PENDAHULUAN I.1.
Latar Belakang Seiring dengan perkembangan teknologi, banyak persaingan di dunia bisnis,
termasuk apotek. Hal ini menuntut pengelola apotek untuk menemukan strategi dalam memberikan pelayanan pasien secara efektif dan efisien. Oleh karena itu, diperlukan suatu metode untuk melakukan manajemen persediaan yang baik. Manajemen persediaan adalah “suatu cara mengendalikan persediaan agar dapat melakukan pemesanan yang tepat yaitu dengan biaya yang optimal” (Dwiningsih, 2009). Salah satu cara untuk perencanaan sediaan adalah dengan metode Pareto ABC. Pareto ABC digunakan untuk mengetahui prioritas item yang digunakan di apotek yaitu dengan melihat persentase kumulatif dari jumlah pemakaian (nilai pakai), persentase kumulatif dari jumlah investasi (nilai investasi), dan skor total nilai pakai dan nilai investasi (nilai indeks kritis). Dalam metode ini, item obat dikelompokkan menjadi 3 kelompok berdasarkan persentase kumulatif dari nilai pakai dan nilai investasi, yaitu 80% untuk kelompok A, 15% untuk kelompok B, dan 5% untuk kelompok C. Item prioritas merupakan item kelompok A yang menghabiskan biaya sebesar 80% dari total biaya persediaan (Zulkarijah, 2005). Analisis ini adalah metode yang sangat berguna untuk melakukan pemilihan, penyediaan, manajemen distribusi, dan promosi penggunaan obat yang rasional. Selain itu, metode ini juga membantu untuk mengidentifikasi biaya yang dihabiskan untuk setiap item obat yang tidak terdapat dalam daftar obat esensial
1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
atau jarang digunakan (Quick et al, 1997). Proses analisis ini masih dapat dilakukan secara manual ketika data sediaan yang akan diolah masih dalam jumlah sedikit. Jika data sediaan dalam jumlah yang banyak, tentu membutuhkan waktu dan tenaga yang cukup banyak. Permasalahan lain muncul ketika pengelola kurang tepat memberikan skor untuk nilai pakai pakai atau nilai investasi. Akibatnya, hasil perhitungan yang kurang tepat itu mengakibatkan hasil akhir nilai indeks kritis kurang tepat sehingga rekomendasi untuk pengadaan obat juga kurang akurat. Untuk mengatasi permasalahan di atas maka dibutuhkan sebuah sistem pendukung
pengambilan
keputusan
yang
bertujuan
untuk
memberikan
rekomendasi kelompok obat yang akan dibeli dengan menggunakan metode analisis Pareto ABC dan optimasi kualitatif sehingga pengadaan obat dapat dilakukan dengan lebih baik. I.2.
Rumusan Masalah Dari uraian di atas, masalah yang diangkat adalah apakah sistem pendukung
pengambilan keputusan pengadaan obat dapat meningkatkan efektivitas proses pengambilan keputusan pengadaan obat di apotek Sanata Dharma. I.3.
Tujuan Tujuan yang ingin dicapai dalam penulisan tugas akhir ini adalah
menghasilkan sistem pendukung pengambilan keputusan dengan menggunakan Pareto ABC dan optimasi kualitatif, yang dapat membantu apoteker pengelola dalam pengadaan obat di apotek secara efektif.
2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
I.4.
Batasan Masalah 1. Data yang digunakan adalah data sediaan obat di Apotek Pendidikan Sanata Dharma pada tahun 2011. 2. Metode yang diterapkan adalah Analisis Pareto ABC dan Optimasi Kualitatif. 3. File masukan berupa file dengan format .xls atau .xlsx 4. Atribut-atribut yang akan dipilih adalah : kode obat, nama obat, jumlah pemakaian, dan harga satuan. 5. Penilaian prioritas item dibagi menjadi 3, yaitu A, B, dan C.
I.5.
Metodologi Penelitian
Langkah-langlah dalam metodologi penelitian meliputi : 1. Analisis Sistem Analisis sistem meliputi hal-hal apa saja yang harus dilakukan oleh sistem dan batasan pengembangannya. 2. Pengembangan Sistem Pengembangan sistem ini menggunakan metode Framework for the Application of Sistem Thinking (FAST) yang meliputi : a. Scope Definition Phase Tahap definisi ruang lingkup yang merupakan tahap penentuan kelayakan dan batasan-batasan dari sistem yang akan dibangun. Hasil dari tahap ini adalah pernyataan masalah yang dihadapi. b. Problem Analysis Phase Tahap analisis masalah yang merupakan tahap analisa terhadap masalah-masalah utama yang dihadapi dan akan diselesaikan oleh
3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
sistem informasi. Tahap ini akan menghasilkan analisa sebabakibat (cause-effect analysis). c. Requirement Analysis Phase Tahap analisis kebutuhan merupakan tahap pengumpulan data akan kebutuhan sistem dan menganalisanya. Hasil dari tahap ini dipresentasikan dengan use-case diagram. d. Logical and Physical Design Tahap perancangan logikal dan perancangan fisikal yang merupakan tahap pembuatan rancangan sistem secara logikal dan fisikal, meliputi perancangan subsistem manajemen data, subsistem manajemen model dan subsistem manajemen dialog. e. Contruction and Testing Tahap ini merupakan tahap pembuatan dan implementasi sistem dari perancangan sistem serta melakukan pengujian meliputi keakuratan hasil pengelompokan dengan perhitungan manual, unjuk kerja, uji masukan dan keluaran dari sistem. 3. Evaluasi Sistem Evaluasi sistem merupakan pengujian sistem terhadap keinginan pengguna. I.6.
Sistematika Penulisan BAB I. PENDAHULUAN Bab ini memberikan gamabaran umum mengenai sistem pendukung pengambilan keputusan pengadaan obat untuk apotek. Di dalam bab ini berisi latar belakang masalah, rumusan masalah, batasan masalah,
4
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tujuan, metode penelitian, dan sistematika penulisan. BAB II. LANDASAN TEORI Bab ini berisi tentang dasar teori yang mendukung pembuatan tugas akhir ini. Dasar teori berisi manajemen persediaan dan teori-teori lain yang digunakan dalam perancangan dan pengimplementasian sistem pendukung pengambilan keputusan pengadaan obat. BAB III. ANALISIS DAN PERANCANGAN SISTEM Bab ini berisi uraian mengenai tahap analisis sistem, tahap analisis masalah,
tahap
analisis
kebutuhan,
perancangan
logical
dan
perancangan fisikal. Tahap analisis sistem terdiri dari gambaran umum sistem yang lama dan fase definisi ruang lingkup. Tahap analisis masalah berisi mengenai analisis sebab akibat. Tahap analisis kebutuhan terdiri dari pihak yang terlibat dalam sistem dan use-case diagram. Tahap perancangan logikal terdiri dari gambaran umum sistem yang akan dibuat perancangan manajemen data dan perancangan manajemen model. Tahap perancangan fisikal terdiri dari manajemen dialog. BAB IV.IMPLEMENTASI DAN ANALISIS HASIL Bab ini menjelaskan mengenai implementasi dari hasil perancangan yang dibahas pada Bab III serta pengujian, evaluasi program, dan analisis hasil berupa kelebihan dan kekurangan dari sistem yang telah dibuat berdasarkan hasil uji coba terhadap sistem. BAB V. KESIMPULAN DAN SARAN Bab ini berisi tentang kesimpulan dan saran.
5
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB II LANDASAN TEORI II.1. Manajemen Persediaan Manajemen persediaan (inventory management) merupakan suatu cara mengendalikan persediaan agar dapat melakukan pemesanan yang tepat yaitu dengan biaya yang optimal. Oleh karena itu konsep mengelola sangat penting diterapkan oleh perusahaan agar tujuan efektifitas maupun efisiensi tercapai. Setiap organisasi mempunyai beberapa jenis sistem perencanaan dan pengendalian persediaan. Dengan demikian dapat dikatakan bahwa sangat perlu untuk mempelajari bagaimana mengelola persediaan di suatu perusahaan (Dwiningsih, 2009). Manajemen persediaan juga berlaku pada perencanaan obat. Tujuan perencanaan obat adalah sebagai berikut (Quick et al, 1997) : a. untuk mendapatkan jenis dan jumlah obat yang tepat sesuai kebutuhan b. menghindari kekosongan obat c. meningkatkan penggunaan obat secara rasional d. meningkatkan efisiensi penggunaan obat Sedangkan kegiatan pokok dalam perencanaan obat adalah sebagai berikut (Quick et al, 1997) : a.
seleksi atau perkiraan kebutuhan (memilih obat yang akan diadakan)
b.
menyesuaikan jumlah kebutuhan obat dengan alokasi anggaran.
6
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
II.2. Sistem Pendukung Pengambilan Keputusan II.2.1 Pengertian SPPK Menurut Scott Morton, Sistem Pendukung Pengambilan Keputusan didefinisikan sebagai suatu sistem yang berbasis komputer yang ditujukan untuk membantu pengambilan keputusan dan memanfaatkan data dan model tertentu untuk memecahkan berbagai masalah yang tidak terstruktur (Turban,1995). II.2.2 Komponen SPPK Menurut Turban (1995), SPPK memiliki 4 subsistem utama yang menentukan kapabilitas teknis dari SPPK tersebut, yaitu : 1. Manajemen Data Subsistem manajemen data merupakan komponen SPPK yang menyediakan data bagi sistem. Data tersebut disimpan dalam suatu basis data yang diorganisasikan oleh sistem yang disebut DBMS (Database Management System). Subsistem ini disusun oleh komponen yang terdiri dari : a. Basis Data Basis data adalah komponen data yang direlasikan dan diatur sesuai kebutuhan organisasinya, dan dapat digunakan oleh banyak orang dalam banyak aplikasi. Basis data SPPK terdiri dari beberapa jenis data yaitu :
Data Internal Data ini berasal dari sistem proses transaksi dalam suatu
organisasi.
7
Data
tersebut
seperti
data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
akuntansi, keuangan, pemasaran, produksi, pribadi dan lain sebagainya, tergantung kebutuhan dari SPPK tersebut.
Data Eksternal Data ini berasal dari luar organisasi seperti data industri, data penelitian, pemasaran, data sensus, data tenaga kerja daerah, peraturan pemerintah, data tarif pajak dan data perekonomian nasional.
Data Pribadi Data ini berupa aturan-aturan pokok yang digunakan oleh para pembuat keputusan tertentu atau dalam keadaan-keadaan sebuah
basis
tertentu. data
Untuk
SPPK,
sering
membangun dilakukan
pengambilan data dari berbagai sumber data. Operasi ini disebut ekstraksi. Operasi ini melakukan pengambilan data berupa arsip, kesimpulan, data yang sudah disaring dan ringkasan data. Ekstraksi dapat terjadi pada saat pemakai membuat laporan data yang ada dalam basis data. b. Sistem Manajemen Basis Data Basis data dapat dibuat, diakses dan diperbaharui dengan menggunakan sistem ini. DBMS memiliki banyak kemampuan dalam pengelolaan data dan sangat kompleks, sehingga sedikit pemakai yang dapat membuat program dan
8
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
mengembangkan perangkat lunak DBMS. DBMS memiliki tiga fungsi dasar yaitu penyimpanan data, pencari data dan pengontrol data. c. Fasilitas Query Fasilitas
ini
memberikan
dasar-dasar
untuk
mengakses data. Fasilitas ini menerima permintaan data, menentukan bagaimana permintaan tersebut dapat dipenuhi, merumuskan
perincian
permintaan
dan
memberikan
hasilnya. d. Direktori Direktori adalah daftar seluruh data dalam basis data. Direktori berisi tentang definisi data yang berfungsi untuk mengetahui keberadan data, sumber data, dan kegunaan data tersebut. Direktori biasanya digunakan untuk fase pengetahuan pada proses pembuatan keputusan sebagai bantuan memeriksa data, mengidentifikasi masalah, dan mengetahui peluang-peluang yang ada. 2. Manajemen Model Model merupakan suatu peniruan dari alam nyata. Kendala yang kadang dihadapi dalam merancang suatu model adalah bahwa model yang disusun ternyata tidak mampu mencerminkan seluruh veriabel alam nyata. Sehingga keputusan yang diambil yang didasarkan pada model tersebut menjadi tidak akurat dan tidak sesuai dengan kebutuhan. Oleh karena itu, dalam menyimpan
9
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
berbagai model pada subsistem model harus tetap dijaga fleksibilitasnya. Artinya harus adafasilitas yang mampu membantu pengguna untuk memodifikasi atau menyempurnakan model, seiring dengan perkembangan pengetahuan. Turban (1995) mengelompokkan model-model yang digunakan dalam SPPK menjadi seperti berikut : Tabel 2.1 Tabel jenis-jenis model SPPK No. 1
Model
Proses dan Tujuan
Teknik Representasi
Optimasi
Mencari
Tabel keputusan,
masalah
penyelesaian terbaik
pohon keputusan
dengan
dari beragam
beberapa
alternatif
alternatif 2
3
Optimasi
Mencari
Model program
menggunakan
penyelesaian terbaik
linear, model
algoritma
dari sejumlah besar
jaringan dan model
alternatif
matematika lainnya
Optimasi
Mencari
Model
dengan rumus
penyelesaian terbaik
penyimpanan
analitis
dengan menggunakan rumus
4
Simulasi
Mencari
Beberapa model
penyelesaian terbaik
simulasi
di antara alternatif yang ada dengan menggunakan percobaan 5
Heuristik
Mencari
Pemrograman
penyelesaian yang
heuristic, sistem
10
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
cukup baik dengan
pakar
menggunakan aturan-aturan 6
Model
Mencari dan
Permodelan
deskriptif
menemukan “What-
keuangan
lainnya
if” menggunakan rumus
7
Model prediktif
Memprediksi
Analisis Markov,
kemungkinan yang
model perkiraan
akan terjadi berdasarkan skenario 3. Manajemen Dialog Melalui subsistem ini pemakai dapat berkomunikasi dengan sistem yang dibangun. Subsistem ini menyediakan fasilitas antar muka pemakai (User interface) yang terdiri dari 3 komponen yaitu : a. Bahasa aksi (Action Language), yaitu suatu perangkat lunak yang digunakan pengguna untuk berkomunikasi dengan sistem. b. Bahasa tampilan (Display atau Presentation Language), yaitu suatu perangkat yang berfungsi sebagai sarana untuk menampilkan sesuatu. c. Basis Pengetahuan (Knowledge Base), yaitu bagian yang mutlak diketahui oleh pengguna sehingga sistem yang dirancang dapat berfungsi secara efektif. Kombinasi dari berbagai kemampuan di atas dikenal dengan sebagai Gaya Dialog (Dialog Style). Gaya dialog terdiri dari : a. Dialog Tanya Jawab
11
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Dalam dialog ini, sistem bertanya kepada pengguna, dan pengguna menjawab, kemudian dari hasil dialog ini sistem akan menawarkan alternatif keputusan yang dianggap memenuhi keinginan pengguna. b. Dialog perintah Dalam dialog ini, pengguna memberikan perintah-perintah yang tersedia pada sistem untuk menjalankan fungsi yang ada pada SPPK. c. Dialog Menu Dialog ini merupakan gaya dialog yang paling popular dalam SPPK. Dalam hal ini pengguna dihadapkan pada berbagai alternatif menu yang disiapkan sistem.menu ini akan ditampilkan pada monitor. Pengguna cukup menekan tombol-tombol
tertentu,
dan
setiap
pilihan
akan
menghasilkan respon atau jawaban tertentu. d. Dialog Masukan/Keluaran Model dialog ini menggunakan form input atau masukan. Disamping form masukan, juga disediakan form keluaran yang merupakan respon dari sistem. 4. Manajemen Pengetahuan Subsistem ini diperlukan ketika subsistem lainnya yang mendukung kemampuan dari suatu DSS, tidak mampulagi untuk memecahkan suatu permasalahan yang tidak terstruktur dan semi terstruktur. Dalam subsistem ini telah disediakan beberapa keahlian
12
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
khusus oleh sistem pakar. Manajemen pengetahuan merupakan gabungan beberapa komponen yang berupa satu atau lebih sistemsistem pakar. Karena berkaitan dengan sistem pakar maka kemampuan dan manfaat dari subsistem ini tidak dijelaskan dalam pembahasan ini.
Gambar 2.1 Komponen SPPK (Turban, 1995:88) II.3. Analisis Pareto ABC (Always Better Control) Salah satu teknik menyusun data sesuai prioritas dan golongannya ke sebuah framework penyelesaian masalah adalah analisis Pareto. Analisis ini merupakan suatu cara yang mudah dipelajari, mudah dimengerti, dan sangat efektif hasilnya (Oakland, 2008). Analisis Pareto ABC adalah metode yang sangat berguna untuk melakukan pemilihan, penyediaan, manajemen distribusi, dan promosi penggunaan obat yang rasional. Terkait dengan pemilihan obat, evaluasi obat kelompok A menjelaskan tentang item obat yang paling banyak digunakan (Quick et al, 1997). Analisis Pareto memungkinkan individu untuk membuat perubahan 13
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
yang efektif. Salah satu keuntungan dalam menggunakan analisis Pareto adalah memperbaiki pembuatan keputusan. Individu yang melakukan analisis Pareto dapat mengukur dan membandingkan pengaruh dari perubahan yang terjadi. Dengan berfokus pada penyelesaian masalah, prosedur dan proses dibutuhkan untuk membuat perubahan yang terdokumentasi
selama
analisis
Pareto.
Dokumentasi
ini
akan
menghasilkan persiapan dan meningkatkan hasil pembuatan keputusan pada perubahan yang akan datang (Anonim, 2005). Keuntungan lain yang didapat dari penggunaan analisis ini adalah (Drug and Therapeutics Committees, 2003) : 1. Menunjukkan penggunaan item yang tinggi dalam list atau persediaan. Informasi ini dapat digunakan untuk pemilihan obat dengan
lebih
efektif,
mengidentifikasi
kesempatan
untuk
pergantian item obat, negosiasi harga lebih rendah dengan distributor. 2. Mengukur jumlah konsumsi obat yang dibutuhkan untuk kesehatan publik dan mengidentifikasi penggunaan obat yang tidak rasional. 3. Mengidentifikasi pembelian untuk item yang tidak terdapat dalam daftar obat esensial di rumah sakit. Analisis ini terbagi mengenai tiga kelas yaitu (Quick,1997) : 1. A (Always) Obat harus ada karena berhubungan dengan pengendalian dalam pengadaannya. Persentase kumulatifnya antara 75%-80%. Kelas A tersebut menunjukkan 10%-20% macam persediaan memiliki
14
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70%-80% dari total biaya persediaan. Hal ini berarti persediaan memiliki nilai jual yang tinggi sehingga memerlukan pengawasan ekstra dan pengendalian yang harus baik. 2. B (Better) Kelas B, 20-40% item obat di rumah sakit dengan alokasi dana 1015% dari keseluruhan anggaran obat. Persentase kumulatifnya antara 80-95%. 3. C (Control) Obat mempunyai nilai yang rendah, yaitu sekitar 5% namun jumlah obat sangat banyak, yaitu mencapai 60%. Karena obat selalu tersedia maka pengendalian pada tingkat ini tidak begitu berat. Persentase kumulatifnya antara 95%-100% Metode ini dilakukan dengan memperhatikan 3 hal, yaitu (Harjono, 2011): 1. Analisis Nilai Pakai Nilai pakai didapat dari jumlah pemakaian dalam satu periode, kemudian diurutkan dari jumlah pemakaian tertinggi hingga jumlah pemakaian terendah. Setelah data item terurut, kemudian dihitung persentase pemakaiannya dengan perhitungan berikut : 𝒙
𝑷𝒆𝒓𝒔𝒆𝒏𝒕𝒂𝒔𝒆 𝑷𝒆𝒎𝒂𝒌𝒂𝒊𝒂𝒏 = . ∑𝒙 𝒙𝟏𝟎𝟎%........................(2.1) Keterangan : x
: jumlah pemakaian obat (per item/tahun)
∑x
: jumlah pemakaian obat seluruhnya dalam 1 tahun
Setelah itu, dibuat klasifikasi sediaan sesuai jumlah pemakainnya menjadi kelompok ANP, BNP, dan CNP berdasarkan persentase
15
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kumulatif 80%, 15%, dan 5%. 2. Analisis Nilai Investasi Dalam analisis ini juga dilakukan pengelompokan berdasarkan persentase kumulatif, sama seperti pada analisis nilai pakai tetapi sebelumnya jumlah pemakaian item obat dikalikan dengan harga satuannya. Nilai investasi didapat dengan mengalikan jumlah pemakaian dengan harga satuannya. Perhitungan yang dilakukan adalah sebagai berikut : x = n x hi ........................................................................(2.2) Keterangan : x
: jumlah investasi per item obat selama setahun
n
: jumlah pemakaian per item obat selama setahun
hi
: harga satuan per item obat
Setelah didapat jumlah investasi per item obat selama setahun kemudian diurutkan dari jumlah investasi tertimggi hingga jumlah investasi terendah. Kemudian, dihitung persentase investasi per item obat dengan perhitungan sebagai berikut : 𝒙
𝑷𝒆𝒓𝒔𝒆𝒏𝒕𝒂𝒔𝒆 𝑰𝒏𝒗𝒆𝒔𝒕𝒂𝒔𝒊 = . ∑𝒙 𝒙 𝟏𝟎𝟎% ........................(2.3) Keterangan : x
: jumlah investasi per item obat dalam setahun
∑x
: jumlah investasi seluruh obat dalam setahun
Dari persentase investasi yang didapat akan dihitung persentase kumulatifnya, kemudian dikelompokkan dalam ANI, BNI, dan CNI. Kelompok ANI merupakan obat yang memiliki persentase
16
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kumulatif 80%, kelompok BNI merupakan obat yang memiliki persentase kumulatif 15% sedangkan kelompok CNI merupakan obat yang memiliki persentase kumulatif 5%. 3. Analisis Nilai Indeks Kritis Analisis ini dilakukan dengan menggabungkan hasil analisis nilai pakai dan nilai investasi. Hasil analisis nilai pakai dan nilai investasi yang telah dikelompokan menjadi ANP, BNP,CNP,ANI, BNI, dan CNIdiberi skor masing-masing. Setelah diberi skor masingmasing, nilai indeks kritis dapat dihitung dengan perhitungan sebagai berikut : ......(2.4) Nilai Indeks Kritis = Skor Nilai Pakai + Skor Nilai Investasi Sebagai contoh, untuk nilai pakai dan nilai investasi dengan skor A dikonversikan menjadi 3, B menjadi 2, dan C menjadi 1, jadi interval skor yang didapat adalah 2-6. Sediaan akan dikategorikan menjadi 3 kelompok, sehingga perlu dilakukan perhitungan interval untuk masing-masing kelompok dengan cara berikut : 𝑿𝟏+𝒀𝟏 −(𝑿𝟐+𝒀𝟐)
𝑰𝒏𝒕𝒆𝒓𝒗𝒂𝒍 𝑺𝒌𝒐𝒓 = . 𝒋𝒖𝒎𝒍𝒂𝒉 𝒌𝒆𝒍𝒂𝒔 𝒑𝒂𝒓𝒆𝒕𝒐 .............................(2.5) Keterangan : X1 : nilai tertinggi dari skor pareto nilai pakai Y1 : nilai tertinggi dari skor pareto nilai investasi X2 : nilai terendah dari skor pareto nilai pakai Y2 : nilai terendah dari skor pareto nilai investasi Jadi interval skor yang diperoleh adalah : 𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙 = .
17
6−2 4 = = 1,33 3 3
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Berdasarkan perhitungan tersebut, maka sediaan dengan skor 23,33 masuk dalam kelompok CNIK, sediaan dengan skor lebih dari 3,33-4,66 masuk dalam kelompok BNIK, dan sediaan dengan skor lebih besar dari 4,66-6 masuk dalam kelompok ANIK. Berikut ini merupakan contoh perhitungan dengan menggunakan analisis Pareto ABC. Tabel 2.2 Daftar Pemakaian Sediaan di Apotek Nama Obat Valisanbe 2mg Tab Zolastin® 1mg Tab Valisanbe® 5mg Tab Luminal 30 mg Zyparon®
Jumlah (butir) 430 0 60 208 0
Harga Satuan (Rp) 396 0 24 195 0
Dari tabel 2.2, diketahui jumlah pemakaian dan harga satuan dari masingmasing sediaan. Maka penyelesaian dengan Pareto ABC adalah sebagai berikut : Langkah pertama, menghitung nilai pakai dengan mengurutkan jumlah pemakaian dari jumlah pemakaian paling banyak ke jumlah paling sedikit, kemudian dihitung persentase nilai pakainya.Setelah diketahui persentase nilai pakai, maka dihitung persentase kumulatifnya, kemudian diberi skor untuk masing-masing sediaan. Tabel 2.3 Hasil Perhitungan Nilai Pakai Jumlah (butir) 430 208 60 0 0
Nama Obat Valisanbe® 2mg Tab Luminal 30 mg Valisanbe® 5mg Tab Zyparon® Zolastin® 1mg Tab
%NP
%Kumulatif
Pareto
61,60 29,80 8,60 0,00 0,00
61,60 91,40 100,00 100,00 100,00
A B C C C
Langkah kedua, menghitung nilai investasi dari sediaan dengan mengalikan jumlah pemakaian dengan hargasatuan kemudian diurutkan
18
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dari nilai terbesar ke nilai terkecil. Kemudian hitung persentase nilai investasinya. Selanjutnya, setelah diketahui persentase nilai investasi, dihitung persentase kumulatifnya untuk kemudian diberi skor. Tabel 2.4 Hasil Perhitungan Nilai Investasi Nama Obat Luminal 30 mg Valisanbe® 5mg Tab Valisanbe® 2mg Tab Zyparon® Zolastin® 1mg Tab
Jumlah (butir) 208 60 430 0 0
Hrg Satuan (Rp) 396 195 24 0 0
Total Harga (Rp) 82368 11700 10320 0 0
%NI 78,91 11,21 9,89 0,00 0,00
%Kumu latif 78,91 90,11 100,00 100,00 100,00
Langkah terakhir, menghitung nilai indeks kritis untuk masing-masing sediaan, yaitu dengan menjumlahkan bobot skor dari nilai pakai dan nilai investasi masing-masing sediaan. Selanjutnya, setiap sediaan diberi skor lagi dengan skor 2-3,33 masuk dalam kelompok CNIK, sediaan dengan skor lebih dari 3,33-4,66 masuk dalam kelompok BNIK, dan sediaan dengan skor lebih besar dari 4,66-6 masuk dalam kelompok ANIK. Tabel 2.5 Hasil Perhitungan Nilai Indeks Kritis Nama Obat Luminal 30 mg Valisanbe® 2mg Tab Valisanbe® 5mg Tab Zyparon® Zolastin® 1mg Tab
NP B A C C C
NI A C B C C
NIK 5 4 3 2 2
Pareto A B C C C
Pada tabel 2.5, Luminal 30mg termasuk ke dalam kelompok A yang memiliki prioritas tinggi, maka investasi sebesar 80% dari alokasi biaya pengadaan obat diperuntukkan kelompok ini. Hal ini dikarenakan item obat yang masuk ke dalam kelompok A memiliki nilai pakai dan nilai investasi yang paling tinggi. Untuk kelompok B dan C terdapat pertimbangan yang harus dilakukan dalam pengadaanya, seperti prioritas yang dimiliki obat serta besarnya biaya yang ada. Misalnya, Valisanbe®
19
Paret o A B C C C
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2mg memiliki nilai pakai yang tinggi namun rendah di nilai investasinya, obat ini dapat diadakan karena memiliki nilai pakai yang tinggi. Untuk item-item obat yang ada di kelompok C dengan jumlah pemakaian rendah, lebih baik diadakan secara just in time, karena memiliki nilai pakai dan nilai investasi yang rendah. II.4. Optimasi Kualitatif Pengambilan keputusan adalah proses memilih suatu alternatif cara bertindak dengan metode yang efisien sesuai situasi. Proses tersebut untuk menemukan dan menyelesaikan masalah organisasi. Suatu aturan kunci dalam pengambilan keputusan ialah sekali kerangka yang tepat telah selesai disusun, keputusan harus dibuat (Brinckloe, 1977). Ada dua pandangan dalam proses pengambilan suatu keputusan organisasi (Brinckloe, 1977) yaitu : 1. Optimasi. Di sini seorang eksekutif yang penuh keyakinan berusaha menyusun alternatif-alternatif, memperhitungkan untung rugi dari setiap alternatif itu terhadap tujuan organisasi. Sesudah itu memperkirakan kemungkinan timbulnya bermacam-macam kejadian ke depan, mempertimbangkan dampak dari kejadian-kejadian itu terhadap alternatif-alternatif yang telah dirumuskan dan kemudian menyusun urut-urutannya secara sistematis sesuai dengan prioritas lalu dibuat keputusan. Keputusan yang dibuat dianggap optimal karena setidaknya telah memperhitungkan semua faktor yang berkaitan dengan keputusan tersebut. 2. Satisfying. Seorang eksekutif cukup menempuh suatu penyelesaian
20
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
yang memuaskan daripada mengejar penyelesaian yang terbaik. Model ini dikembangkan oleh Simon karena adanya pengakuan terhadap rasionalitas terbatas (bounded rationality). Rasionalitas terbatas adalah batas-batas pemikiran yang memaksa orang membatasi pandangan mereka atas masalah dan situasi. Pemikiran itu terbatas karena pikiran manusia tidak memiliki kemampuan untuk memisahkan informasi yang tertumpuk. Teknik
pengambilan
keputusan
juga
sering dibagi
dalam
teknik
pengambilan keputusan matematik atau kuantitatif (Robbins, 1978) dan teknik pengambilan keputusan non-matematik atau kualitatif (Schroeder, 1989). Pendekatan terhadap pengambilan keputusan dapat dilakukan dengan optimasi
kualitatif
yaitu
menemukan
alternatif
yang
optimum
menguntungkan dengan analogi atau dengan menggunakan data riset pasar yang selektif. Pendekatan yang sistematis menjadi mungkin meskipun model matematis yang eksplisit tidak dirumuskan. Metode ini digunakan untuk prakiraan jangka menengah dan panjang yang melibatkan desain proses. Untuk keputusan ini, data masa lalu tidak selalu ada atau jika ada, akan menunjukkan pola yang tidak stabil (Schroeder, 1989). II.5. Just in time Management Stok atau penumpukan barang ada karena barang telah dibeli sebelum mereka dibutuhkan. Hal ini mendapat perhatian lebih dalam manajemen persediaan. Prinsip dari just in time sederhana, yaitu barang tersebut ada ketika mereka dibutuhkan dan tidak ada ketika mereka tidak dibutuhkan. Keuntungan operasional dengan menerapkan metode ini antara lain :
21
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
a. Investasi persediaan, dengan metode JIT ini biaya investasi barang yang termasuk slow moving stock dapat digunakan untuk menambah investasi barang yang termasuk dalam fast moving stock. b. Menyediakan pada saat dipesan daripada menyediakan stok, barang yang dibutuhkan dibeli pada saat pembeli memesan. Misalnya, obat generik A jarang dibutuhkan di apotek Z, jika ada pembeli yang memesan obat generik A, maka apotek Z dapat membeli obat generik A dari apotek lain yang menyediakan obat tersebut. c. Mengurangi slow moving stock. Hal ini bertujuan untuk mengurangi jumlah investasi barang yang jarang sekali dipakai dan meminimalkan anggaran belanja (Wild, 1997).
22
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB III ANALISIS DAN PERANCANGAN SISTEM III.1. Analisis Sistem III.1.1 Gambaran Umum Sistem Lama Pengambilan keputusan pengadaan obat di Apotek Pendidikan Sanata Dharma masih dilakukan secara manual, belum menggunakan sistem terkomputerisasi untuk membantu pemilihan pengadaan obat. Langkahlangkah yang dilakukan dalam proses pengadaan obat adalah sebagai berikut : 1. Petugas mengecek stok obat apa saja yang akan habis dan mencatatnya. 2. Petugas menyerahkan daftar stok obat kepada apoteker pengelola. 3. Apoteker pengelola memeriksa daftar kemudian memperhitungkan biaya untuk pengadaan obat. Kegiatan di atas dilakukan setiap bulan sekali sehingga pengadaan obat hanya dalam jumlah kecil saja. Hal ini membuat proses pengadaan obat kurang optimal. Padahal, jika ada manajemen pengelolaan obat yang baik, dapat mengurangi pemakaian biaya belanja obat karena pembelian obat dalam jumlah besar selalu mendapat potongan harga. III.1.2 Fase Definisi Ruang Lingkup Sistem pengadaan obat yang ada di Apotek Pendidikan Sanata Dharma saat ini masih dilakukan secara manual sehingga mengakibatkan berbagai kesulitan. Kesulitan-kesulitan tersebut adalah sebagai berikut : 1. Performance Pengelolaan data dan pengambilan keputusan pengadaan obat masih
23
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
dilakukan secara manual sehingga pengambilan keputusan kurang efektif dan memakan banyak waktu. 2. Efficiency Pencatatan stok obat yang dibutuhkan beserta perhitungannya memakan waktu lama, hal ini juga berakibat tertundanya kegiatan lain yang masih ada kaitannya. 3. Service Pemberian informasi pengadaan obat untuk Apoteker Pengelola Apotek membutuhkan waktu yang lama sehingga pelayanan yang diberikan kurang memuaskan. Kenerjanya menjadi terlihat kurang cekatan. III.1.3 Analisis Masalah III.1.3.1 Analisis Sebab Akibat Tabel 3.1 Tabel analisis sebab akibat Analisis Sebab dan Akibat Masalah Penyebab dan Akibat 1. Pengelolaan Penyebab : data dan Pengelola data pengambilan pengadaan obat keputusan kurang teliti dan pengadaan belum obat kurang menerapkan efektif dan evaluasi memakan pengadaan obat banyak waktu. secara baik.
Tujuan Memperbaiki Sistem Tujuan Sistem Batasan 1. Membantu apoteker pengelola dalam melakukan analisis Pareto ABC terhadap data pemakaian sediaan farmasi. 2. Menyediakan rekomendasi pengadaan obat yang diharapkan dapat memberi gambaran perhitungan terhadap pengadaan item obat di apotek.
Akibat : Perhitungan analisis pengadaan obat kurang tepat sehingga rekomendasi pengadaan obat yang didapat kurang akurat.
24
1. Sistem pendukung pengambilan keputusan pengadaan obat ini menggunakan hasil dari analisis Pareto ABC. 2. Atribut yang digunakan dari data pemakaian sediaan adalah kode obat, nama obat, jumlah pemakaian, dan harga satuan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.1.4 Gambaran Umum Sistem Baru Data pemakaian sediaan Apoteker Rekomendasi pengadaan obat
SPPK Pengadaan Obat
Gambar 3.1 Diagram Konteks Sistem Baru Sistem pendukung pengambilan keputusan ini berfungsi sebagai alat bantu untuk memberikan rekomendasi kelompok obat berdasarkan hasil analisis Pareto ABC. Sistem pendukung pengambilan keputusan ini akan dibuat dengan menggunakan bahasa pemrograman Java dan merupakan aplikasi desktop. Metode yang digunakan sebagai engine dalam sistem ini adalah metode analisis Pareto ABC (Always Better Control), yang merupakan metode yang sering dipakai oleh para manager persediaan farmasi untuk melakukan evaluasi pengadaan sediaan. Metode Pareto ABC digunakan dalam penentuan kelompok obat berdasarkan prioritas kebutuhan apotek akan obat. Prioritas obat dihitung berdasarkan nilai pakai, nilai investasi, dan nilai indeks kritis. Sistem yang baru menghasilkan tiga macam rekomendasi pengadaan obat yaitu rekomendasi berdasarkan pengadaan tahun lalu, rekomendasi berdasarkan metode just in time, dan rekomendasi dengan memaksimalkan jumlah pengadaan obat yang memiliki nilai pakai dan nilai investasi tinggi. III.1.4.1 Data Awal Dalam penelitian ini akan diolah data pemakaian sediaan farmasi apotek yang berasal dari tahun sebelumnya. Terdapat 4 atribut yang digunakan dalam penelitian, yaitu kode obat, nama obat, jumlah pemakaian, dan harga satuan.
25
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Daftar atribut yang digunakan terdapat pada Tabel 3.2. Tabel 3.2 Data Pemakaian Sediaan Farmasi No. Nama Atribut 1. 2. 3.
Kode Obat Nama Obat Jumlah Pakai
4.
Harga Satuan
Penjelasan Atribut ini menyimpan kode item obat Atribut ini menyimpan nama item obat Atribut ini menyimpan jumlah pemakaian item obat Atribut ini menyimpan harga item obat
III.1.4.2 Input Sistem Input sistem yang digunakan adalah data pemakaian sediaan farmasi dalam format .xls atau .xlsx, alokasi biaya yang disediakan untuk belanja obat di apotek pada periode tahun tertentu, dan skor pareto yang telah ditentukan oleh user. III.1.4.3 Output Sistem Setiap tahapan proses dalam program mempunyai keluaran sebagai berikut : a.
b.
c.
Proses input data menampilkan : 1.
Jumlah sampel data keseluruhan
2.
Jumlah atribut keseluruhan
3.
Nilai dari setiap atribut masukan
Proses analisis pareto menampilkan : 1.
Hasil analisis nilai pakai
2.
Hasil analisis nilai nvestasi
3.
Hasil analisis nilai indeks kritis
4.
Grafik setiap hasil analisis.
Proses rekomendasi menampilkan : 1.
Hasil rekomendasi berdasarkan pengadaan tahun lalu
2.
Hasil rekomendasi dengan menggunakan metode just in time
26
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3.
Hasil rekomendasi dengan memaksimalkan jumlah pengadaan
4.
Total investasi dan selisihnya dengan biaya awal
III.1.5 Analisis Kebutuhan III.1.5.1 Pihak yang Terlibat Dalam Sistem Pihak yang terlibat dalam sistem adalah apoteker pengelola apotek. Apoteker pengelola merupakan pihak yang memberikan masukan ke sistem dan menerima rekomendasi dari sistem. III.1.5.2 Use-case Diagram Input Data Input data pemakaian persediaan Input alokasi biaya Input skor Pareto
<<depends on>>
Analisis Pareto ABC
<<depends on>>
Pengguna
Mencari rekomendasi pengadaan obat
Gambar 3.2 Use-case Apoteker Pengelola
27
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.1.5.3 Ringkasan use-case Tabel 3.3 di bawah ini merupakan penggambaran umum mengenai usecase yang terdapat pada sistem. Tabel 3.3 Ringkasan Use-case Apoteker No. Usecase PAR01
Nama Use-case
Deskripsi
Aktor
Input file pemakaian sediaan
Use-case ini menggambarkan proses menginputkan data pemakaian sediaan ke dalam sistem. Use-case ini menggambarkan proses menginputkan jumlah biaya yang disediakan ke dalam sistem Use-case ini menggambarkan proses menginputkan skor pareto untuk setiap kelas ke dalam sistem Use-case ini menggambarkan proses analisis nilai pakai, nilai investasi, dan nilai indeks kritis oleh sistem Use-case ini menggambarkan proses pencarian rekomendasi oleh sistem
Pengguna
PAR02
Input alokasi biaya
PAR03
Input skor pareto
PAR04
Analisis Pareto ABC
PAR05
Mencari rekomendasi pengadaan obat
Pengguna
Pengguna
Pengguna
Pengguna
III.1.5.4 Narasi use-case Dalam narasi use-case akan dijelaskan tentang detail dari ringkasan usecase pada tabel 3.3. Narasi use-case terdapat pada lampiran 1. III.2. Perancangan Sistem III.2.1 Perancangan Logikal III.2.1.1 Diagram Aktivitas Uraian tentang diagram aktivitas untuk setiap use-case terdapat pada lampiran 2.
28
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.1.2 Perancangan Manajemen Data Subsistem
manajemen
data
merupakan
komponen
SPPK
yang
menyediakan data bagi sistem. Komponen-komponen penyusun subsistem manajemen data adalah sebagai berikut : III.2.1.2.1 Perancangan Konseptual Basis Data
batas_bawah kelas_paretonik
kelas_paretonp
batas_bawah batas_atas
batas_bawah batas_atas
batas_atas
kelas_paretoni
Kelas Pareto NP Kelas Pareto NI
Kelas Pareto NIK 1..1
1..1
memiliki
memiliki
1..1
memiliki
kelas_paretonp
kode_obat
Nilai Pakai
1
1..1 m em ilik i
m em ilik i
kode_obat memiliki 1.. 1
kode_obat
1..1
persentase
.1
1 ..
1. .1
Nilai Investasi
Nilai Indeks Kritis
persentase_kumulatif
persentase_kumulatif jumlah_investasi
1.
kode_obat
kelas_paretonik
1..*
1..*
persentase kelas_paretoni
1..*
Obat
harga_satuan nama_obat jumlah_pakai
1..1
memiliki
kode_rekomendasi 1..*
kode_obat
Rekomendasi
keterangan
jumlah_pengadaan jumlah_investasi
tipe_rekomendasi
Gambar 3.3 Diagram ER Pada gambar 3.3, entitas nilai indeks kritis, nilai investasi, dan nilai pakai merupakan entitas lemah. Entitas tersebut dibuat terpisah karena selain untuk mempercepat proses baca data dari database, hal ini juga dibutuhkan pada saat pembuatan laporan pada fungsi cetak hasil analisis dan rekomendasi nantinya.
29
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.1.2.2 Perancangan Basis Data Gambar 3.4 merupakan perancangan logikal sesuai dengan diagram konseptual pada gambar 3.3. kelas_pareto_nik kelas_paretonik (PK) batas_bawah batas_atas
nilai_indeks_kritis kode_obat (FK) nik kelas_pareto (FK)
rekomendasi kode_rekomendasi (PK) kode_obat (FK) jumlah_pengadaan jumlah_investasi tipe_rekomendasi keterangan
kelas_pareto_ni kelas_paretoni (PK) batas_bawah batas_atas nilai_investasi kode_obat (FK) jumlah_investasi persentase persen_kumulatif kelas_pareto (FK)
kelas_pareto_ni kelas_paretonp (PK) batas_bawah batas_atas
nilai_pakai kode_obat (FK) persentase persen_kumulatif kelas_pareto (FK)
obat kode_obat (PK) nama_obat jumlah_pakai harga_satuan
Gambar 3.4 Rancangan Logikal Basis Data III.2.1.3 Perancangan Subsistem Manajemen Model Sistem
pendukung
pengambilan
keputusan
pengadaan
obat
ini
menggunakan metode Analisis Pareto ABC untuk menentukan item obat mana saja yang diadakan sekaligus dan dimaksimalkan pengadaannya. Cara kerja dari sistem dapat dilihat pada gambar 3.5 berikut ini.
30
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Mulai Input : file excel, alokasi biaya, dan skor pareto Analisis Nilai Pakai Output : hasil Analisis Nilai Pakai Analisis Nilai Investasi Output : hasil Analisis Nilai Investasi Analisis Nilai Indeks Kritis Output : hasil Analisis Nilai Indeks Kritis Lihat Rekomendasi 1?
tidak
ya Rekomendasi 1 Output : hasil cari rekomendasi 1 Lihat Rekomendasi 2? ya Rekomendasi 2
tidak
Output : hasil cari rekomendasi 2 Lihat Rekomendasi 3?
tidak
ya Rekomendasi 3
tidak
Output : hasil cari rekomendsi 3 Selesai
Gambar 3.5 Alur Kerja Subsistem Berdasarkan gambar 3.5, hasil dari analisis indeks kritis yang berupa
31
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kelompok obat berdasarkan kelas pareto akan digunakan sebagai dasar untuk pencarian rekomendasi pengadaan obat. Rekomendasi dibuat tiga alternatif yaitu rekomendasi alternatif 1 merupakan rekomendasi berdasarkan jumlah pemakaian obat tahun lalu. Selanjutnya, rekomendasi alternatif 2 yaitu rekomendasi dengan mempertimbangkan metode just in time. Kemudian, rekomendasi alternatif 3 yaitu rekomendasi dengan mempertimbangkan metode just in time dan memaksimalkan jumlah pengadaan obat. Rekoemndasi alternatif 1 dan 2 tetap dibuat karena mengingat keinginan user berbeda-beda sehingga dengan diberikannya 3 rekomendasi ini, user dapat memilih sendiri mana yang paling sesuai dengan membandingkan masing-masing hasil rekomendasi. Selanjutnya, akan diuraikan mengenai masing-masing proses dari tahap analisis sampai pencarian rekomendasi. Data sampel pemakaian sediaan farmasi yang digunakan dapat dilihat pada tabel 3.4 Tabel 3.4 Data sampel pemakaian sediaan farmasi kode
nama obat
obat
1 2 3 4 5 6 26 27 28 29 132 133 153 154 155 156 157 158
jumlah pakai
harga
(butir)
satuan (Rp)
Amoxycillin.500 Kalium.diklofenak.50mg Lincomycin.500 Asam.Mefenamat.500mg Simvastatin.10mg Captopril.25mg Paracetamol.syr Lanzoprazol.30mg Metformin.500mg Prednison.5 Ibuprofen.tab.200mg Vit.B.compleks Propanolol.40 Metronidazol.250mg INH.100mg Ferrous.Sulphate.300mg Vit.C.100mg Cotrimoxazol.(pediatrik)
. Langkah-langkah proses SPPK pengadaan obat :
32
19075 1108 2580 11670 2768 9315 271 277 3100 9835 184 604 20 15 60 50 40 12
370 2584 650 131.95 513 137.75 1725 1672 149 40 73.36 22.2 82.18 105 25 21.86 26.43 49.86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1. Analisis Nilai Pakai a. Urutkan data item obat berdasarkan jumlah pemakaian tertinggi ke rendah (descending). Hasil dari langkah ini terdapat pada tabel 3.5 Tabel 3.5 Data sampel berdasarkan jumlah pemakaian kode obat
jml. pakai (butir)
nama obat
1
Amoxycillin.500
19075
4
Asam.Mefenamat.500mg
11670
Prednison.5
9835
Captopril.25mg
9315
28
Metformin.500mg
3100
5
Simvastatin.10mg
2768
3
Lincomycin.500
2580
2
Kalium.diklofenak.50mg
1108
29 6
Vit.B.compleks
604
27
Lanzoprazol.30mg
277
26
Paracetamol.syr
271
132
Ibuprofen.tab.200mg
184
155
INH.100mg
60
156
Ferrous.Sulphate.300mg
50
157
Vit.C.100mg
40
153
Propanolol.40
20
154
Metronidazol.250mg
15
158
Cotrimoxazol.(pediatrik)
12
133
b. Hitung persentase nilai pakai tiap item obat terhadap jumlah pemakaian seluruh obat Sebagai contoh pada tabel 3.5, Amoxyxillin 500 dengan jumlah pakai
19.075
dengan
rumus 2.1,
memiliki
perhitungan sebagai berikut : %𝑁𝑖𝑙𝑎𝑖 𝑃𝑎𝑘𝑎𝑖 = .
19.075 𝑥 100% = 31,28% 596.666
c. Hitung persentase kumulatif dari persentase nilai pakai
33
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
d. Tentukan kelas pareto nilai pakai untuk setiap item obat berdasarkan
persentase
kumulatif,
dengan
ketentuan
berikut: Jika 0% < %kumulatif <= 80%, maka termasuk kelas pareto nilai pakai A Jika 80% < %kumulatif <= 95%, maka termasuk kelas pareto nilai pakai B Jika 95% < %kumulatif <= 100%, maka termasuk kelas pareto nilai pakai C Berdasarkan ketentuan di atas, hasilnya dapat dilihat pada tabel 3.6. Item obat yang memiliki persentase kumulatif antara 31,28% sampai 66,54% termasuk ke dalam kelas pareto A, obat yang memiliki persentase kumulatif antara 81,82% sampai 91,44% termasuk ke dalam kelas pareto B, dan obat yang memiliki persentase kumulatif antara 95,67% sampai 100% termasuk ke dalam kelas pareto C. Tabel 3.6 Data hasil analisis nilai pakai kode obat
nama obat
jml. pakai (butir)
1
Amoxycillin.500
19075
4
Asam.Mefenamat.500mg
11670
29
Prednison.5
9835
Captopril.25mg
9315
28
Metformin.500mg
3100
5
Simvastatin.10mg
2768
3
Lincomycin.500
2580
2
Kalium.diklofenak.50mg
1108
6
Vit.B.compleks
604
27
Lanzoprazol.30mg
277
26
Paracetamol.syr
271
133
34
persentase (%)
31.28 19.14 16.13 15.27 5.08 4.54 4.23 1.82 0.99 0.45 0.44
persen. kumulatif(%)
kelas pareto
31.28 50.41 66.54 81.82 86.90 91.44 95.67 97.49 98.48 98.93 99.38
A A A B B C C C C C C
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
0.30 0.10 0.08 0.07 0.03 0.02 0.02
184
132
Ibuprofen.tab.200mg
155
INH.100mg
60
156
Ferrous.Sulphate.300mg
50
157
Vit.C.100mg
40
153
Propanolol.40
20
154
Metronidazol.250mg
15
158
Cotrimoxazol.(pediatrik)
12
99.68 99.78 99.86 99.92 99.96 99.98 100.00
C C C C C C C
2. Analisis Nilai Investasi a. Hitung jumlah investasi dari setiap item obat dengan rumus 2.2. Sebagai contoh, pada tabel 3.7, obat Amoxycillin 500 dengan jumlah pemakaian 19.075 dan harga satuan 370. 𝐽𝑢𝑚𝑙𝑎ℎ 𝐼𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 19.075 𝑥 370 𝐽𝑢𝑚𝑙𝑎ℎ 𝐼𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 7.057.750
b. Urutkan data item obat berdasarkan jumlah investasi tertinggi ke rendah. Data item obat setelah diurutkan nilai investasinya terdapat pada tabel 3.7. Tabel 3.7 Data berdasarkan jumlah investasi kode
jml. pakai
nama obat
(butir)
obat
harga Satuan (Rp)
jml. Investasi (Rp)
1
Amoxycillin.500
19075
370
7057750
2
Kalium.diklofenak.50mg
1108
2584
2863072
3
Lincomycin.500
2580
650
1677000
4
Asam.Mefenamat.500mg
11670
131.95
1539856.5
5
Simvastatin.10mg
2768
513
1419984
6
Captopril.25mg
9315
137.75
1283141.3
26
Paracetamol.syr
271
1725
467475
27
Lanzoprazol.30mg
277
1672
463144
28
Metformin.500mg
3100
149
461900
29
Prednison.5
9835
40
393400
132
Ibuprofen.tab.200mg
184
73.36
13498.24
133
Vit.B.compleks
604
22.2
13408.8
153
Propanolol.40
20
82.18
1643.6
154
Metronidazol.250mg
15
105
1575
155
INH.100mg
60
25
1500
156
Ferrous.Sulphate.300mg
50
21.86
1093
35
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
157 158
Vit.C.100mg
40
26.43
1057.2
Cotrimoxazol.(pediatrik)
12
49.86
598.32
c. Hitung persentase nilai investasi tiap item obat dengan rumus 2.3, sebagai contoh pada tabel 3.7, Amoxycillin 500 dengan jumlah investasi 7.057.750 memiliki perhitungan sebagai berikut : %𝑁𝑖𝑙𝑎𝑖 𝐼𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = .
7.057.750 𝑥 100% = 39,96% 282.027.690
d. Hitung persentase kumulatif dari persentase nilai investasi e. Tentukan kelas pareto untuk setiap item obat berdasarkan persentase kumulatif, dengan ketentuan berikut : Jika 0% < %kumulatif <= 80%, maka termasuk kelas pareto nilai investasi A Jika 80% < %kumulatif <= 95%, maka termasuk kelas pareto nilai investasi B Jika 95% < %kumulatif <= 100%, maka termasuk kelas pareto nilai investasi C Berdasarkan ketentuan di atas, hasil pengelompokan dapat dilihat pada tabel 3.8. Obat yang memiliki persentase kumulatif antara 39,96% sampai 74,39% termasuk dalam kelas pareto A, obat yang memiliki persentase kumulatif antara 82,43% sampai 94,96% termasuk dalam kelas pareto B, dan obat yang memiliki persentase kumulatif antara 97,58% sampai 100% termasuk dalam kelas pareto C.
36
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.8 Data hasil analisis nilai investasi kode
jml. pakai
nama obat
(butir)
obat
harga Satuan (Rp)
jml. Investasi (Rp)
19075
370
7057750
Kalium.diklofenak.50mg
1108
2584
2863072
3
Lincomycin.500
2580
650
1677000
4
Asam.Mefenamat.500mg
11670
131.95
1539856.5
5
Simvastatin.10mg
2768
513
1419984
6
Captopril.25mg
9315
137.75
1283141.3
26
Paracetamol.syr
271
1725
467475
27
Lanzoprazol.30mg
277
1672
463144
28
Metformin.500mg
3100
149
461900
29
Prednison.5
9835
40
393400
1
Amoxycillin.500
2
132
Ibuprofen.tab.200mg
184
73.36
13498.24
133
Vit.B.compleks
604
22.2
13408.8
153
Propanolol.40
20
82.18
1643.6
154
Metronidazol.250mg
15
105
1575
155
INH.100mg
60
25
1500
156
Ferrous.Sulphate.300mg
50
21.86
1093
157
Vit.C.100mg
40
26.43
1057.2
158
Cotrimoxazol.(pediatrik)
12
49.86
598.32
persentase (%)
39.96 16.21 9.50 8.72 8.04 7.27 2.65 2.62 2.62 2.23 0.08 0.08 0.01 0.01 0.01 0.01 0.01 0.00
persen. Kumulatif (%)
kelas pareto
39.96 56.17 65.67 74.39 82.43 89.69 92.34 94.96 97.58 99.81 99.88 99.96 99.97 99.98 99.98 99.99 100.00 100.00
A A A A B B B B C C C C C C C C C C
3. Analisis Nilai Indeks Kritis a. Konversi kelas pareto nilai pakai dan kelas pareto nilai investasi menjadi skor pareto sesuai dengan masukan user. Misalnya kelas A menjadi 3, kelas B menjadi 2, dan kelas C manjadi 1 b. Hitung nilai indeks kritis dengan menjumlahkan skor pareto dari nilai pakai dan nilai investasi dengan rumus 2.4, sebagai contoh dari tabel 3.6 dan tabel 3.8, Amoxycillin 500 dengan skor pareto nilai pakai A dan skor pareto nilai investasi A memiliki perhitungan sebagai berikut : 𝑁𝑖𝑙𝑎𝑖 𝐼𝑛𝑑𝑒𝑘𝑠 𝐾𝑟𝑖𝑡𝑖𝑠 = 3 + 3 = 6
37
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
c. Hitung interval untuk kelas pareto nilai indeks kritis dengan rumus 2.5. Berdasarkan data konversi kelas pareto, didapat nilai tertinggi skor pareto nilai pakai dan nilai investasi adalah 3, sedangkan nilai terendah skor pareto nilai pakai dan nilai investasi adalah 1, maka interval dapat dihitung dengan langkah berikut ini :
𝐼𝑛𝑡𝑒𝑟𝑣𝑎𝑙 = .
3+3 − 1+1 = 1,33 3
d. Tentukan kelas pareto nilai indeks kritis berdasarkan nilai indeks kritis dan interval dengan ketentuan berikut : Jika 4,66 < nilai indeks kritis <= 6, termasuk kelas pareto nilai indeks kritis A Jika 3.33 < nilai indeks kritis <= 4,66, termasuk kelas pareto nilai indeks kritis B Jika 2 < nilai indeks kritis <= 3,33, termasuk kelas pareto nilai indeks kritis C Berdasarkan aturan tersebut, dapat dilihat pada tabel 3.9 bahwa obat yang memiliki nilai indeks kritis 6 termasuk dalam kelas pareto A, obat yang memiliki nilai indeks kritis 4 termasuk dalam kelas pareto B, sedangkan obat yang memiliki nilai indeks kritis antara 2 sampai 3 termasuk dalam kelas pareto C.
38
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.9 Data hasil analisis nilai indeks kritis kode
nama obat
obat
jml. pakai
harga
kls. pareto
(butir)
satuan(Rp)
np
ni
np
ni
A A B C C A C C C C C B C C C C C C
A A B A A C C C C C B C C B C B C C
3 3 2 1 1 3 1 1 1 1 1 2 1 1 1 1 1 1
3 3 2 3 3 1 1 1 1 1 2 1 1 2 1 2 1 1
1
Amoxycillin.500
19075
370
4
Asam.Mefenamat.500mg
11670
131.95
6
Captopril.25mg
9315
137.75
2
Kalium.diklofenak.50mg
1108
2584
3
Lincomycin.500
2580
650
Prednison.5
9835
40
158
Cotrimoxazol.(pediatrik)
12
49.86
156
Ferrous.Sulphate.300mg
50
21.86
132
Ibuprofen.tab.200mg
184
73.36
155
INH.100mg
29
60
25
27
Lanzoprazol.30mg
277
1672
28
Metformin.500mg
3100
149
15
105
154 26 153 5
Metronidazol.250mg Paracetamol.syr
271
1725
20
82.18
2768
513
604
22.2
40
26.43
Propanolol.40 Simvastatin.10mg
133
Vit.B.compleks
157
Vit.C.100mg
trans
nik
trans nik
6 6 4 4 4 4 2 2 2 2 3 3 2 3 2 3 2 2
A A B B B B C C C C C C C C C C C C
4. Pencarian Rekomendasi Dalam penjualan obat secara umum, satu box obat berisi 100 butir obat. Untuk mencari rekomendasi, diperlukan masukan oleh user berupa alokasi biaya. Misalnya, alokasi biaya yang diberikan sebesar Rp 20.000.000,00 a. Alternatif 1 Rekomendasi alternatif 1 dibuat berdasarkan data pemakaian sediaan tahun lalu. Langkah-langkahnya adalah sebagi berikut:
Hitung jumlah pengadaan (per box) untuk setiap item obat. 𝑆−(𝑆 𝑚𝑜𝑑 100 )
𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 = Keterangan : S : jumlah pemakain item obat
39
100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Pada tabel
3.10, Amoxycillin 500 dengan jumlah
pemakaian 19.075, memiliki perhitungan jumlah pengadaan sebagai berikut : 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 =
19.075 − 19.075 𝑚𝑜𝑑 100 = 190 100
hitung besar investasi untuk setiap item obat 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 𝑥 100 𝑥 ℎ𝑎𝑟𝑔𝑎 𝑠𝑎𝑡𝑢𝑎𝑛
Pada tabel 3.10, Amoxycillin 500 dengan harga satuan 370 dan jumlah pengadaan 190 box, memiliki investasi sebesar : 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 190 𝑥 100 𝑥 370 = 7.030.000
hitung total investasi seluruh item obat yang didapat dengan menjumlah investasi seluruh obat. Berdasarkan tabel 3.10, total investasi adalah 16.786.251 Tabel 3.10 Data hasil rekomendasi alternatif 1
kode
nama obat
obat
jml. pakai
harga
kls. Pareto
jml.pengadaan
jml.
(butir)
satuan(Rp)
nik
(box)
investasi (Rp)
1
Amoxycillin.500
19075
370
A
190
7030000
4
Asam.Mefenamat.500mg
11670
131.95
A
116
1530620
6
Captopril.25mg
9315
137.75
B
93
1281075
2
Kalium.diklofenak.50mg
1108
2584
B
11
2842400
3
Lincomycin.500
2580
650
B
25
1625000
Prednison.5
9835
40
B
98
392000
158
29
Cotrimoxazol.(pediatrik)
12
49.86
C
0
0
156
Ferrous.Sulphate.300mg
50
21.86
C
0
0
132
Ibuprofen.tab.200mg
184
73.36
C
1
7336
155
INH.100mg
60
25
C
0
0
27
Lanzoprazol.30mg
277
1672
C
2
334400
28
Metformin.500mg
3100
149
C
31
461900
15
105
C
0
0
271
1725
C
2
345000
20
82.18
C
0
0
2768
513
C
27
1385100
604
22.2
C
6
13320
40
26.43
C
0
0
154 26 153 5
Metronidazol.250mg Paracetamol.syr Propanolol.40 Simvastatin.10mg
133
Vit.B.compleks
157
Vit.C.100mg
40
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
hitung selisih dana yang tersedia dengan total investasi seluruh item obat 𝑠𝑒𝑙𝑖𝑠𝑖ℎ = 𝑎𝑙𝑜𝑘𝑎𝑠𝑖 𝑑𝑎𝑛𝑎 − 𝑡𝑜𝑡𝑎𝑙 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 Hitung selisih dari biaya awal dan total investasi, yaitu : Selisih = Rp 20.000.000,00 – Rp 16.786.251,00 = Rp 3.213.749,00
b. Alternatif 2 Rekomendasi alternatif 2 dibuat berdasarkan jumlah pengadaan tahun lalu dan mempergunakan metode just in time.
hitung jumlah pengadaan (per box) untuk setiap item obat 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 =
𝑆 − (𝑆 𝑚𝑜𝑑 100) 100
Keterangan : S = jumlah pemakaian item obat
tentukan kelayakan pengadaan obat berdasarkan jumlah pengadaan dengan ketentuan berikut : -
Jika jumlah pengadaan <= 2 box, maka diadakan secara just in time
-
Jika 2 < jumlah pengadaan <= 10 box, maka diadakan 3 bulan sekali
-
Jika jumlah pengadaan >10 box, maka diadakan sekaligus
Berdasarkan ketentuan di atas, hasilnya dapat dilihat pada tabel 3.11, Amoxycillin 500 yang memiliki jumlah
41
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
pengadaan
>10
box
diadakan
sekaligus,
sedangkan
Ibuprofen tab 200mg yang memiliki jumlah pengadaan 2 diadakan secara just in time.
hitung besar investasi untuk setiap item obat 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 𝑥 100 𝑥 ℎ𝑎𝑟𝑔𝑎 𝑠𝑎𝑡𝑢𝑎𝑛
hitung total investasi seluruh item obat
hitung selisih dana yang tersedia dengan total investasi seluruh item obat 𝑠𝑒𝑙𝑖𝑠𝑖ℎ = 𝑎𝑙𝑜𝑘𝑎𝑠𝑖 𝑑𝑎𝑛𝑎 − 𝑡𝑜𝑡𝑎𝑙 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 Tabel 3.11 Data hasil rekomendasi alternatif 2
kode
nama obat
jml. pakai (butir)
obat
1 Amoxycillin.500
harga
trans
Satuan (Rp) nik
jml. pengadaan
jml.
(box)
investasi (Rp)
keterangan
19075
370
A
190
7030000 Diadakan sekaligus
4 Asam.Mefenamat.500mg 11670
131.95
A
116
1530620 Diadakan sekaligus
6 Captopril.25mg
9315
137.75
B
93
1281075 Diadakan sekaligus
2 Kalium.diklofenak.50mg
1108
2584
B
11
2842400 Diadakan sekaligus
3 Lincomycin.500
2580
650
B
25
1625000 Diadakan sekaligus
9835
40
B
98
392000 Diadakan sekaligus
158 Cotrimoxazol.(pediatrik)
29 Prednison.5
12
49.86
C
0
0 just in time
156 Ferrous.Sulphate.300mg
50
21.86
C
0
0 just in time
184
73.36
C
0
0 just in time
132 Ibuprofen.tab.200mg 155 INH.100mg
60
25
C
0
0 just in time
27 Lanzoprazol.30mg
277
1672
C
0
0 just in time
28 Metformin.500mg
3100
149
C
31
461900 Diadakan sekaligus
15
105
C
0
0 just in time
271
1725
C
0
0 just in time
20
82.18
C
0
0 just in time
2768
513
C
27
1385100 Diadakan sekaligus
604
22.2
C
6
0 Diadakan 2/3 bulan sekali
40
26.43
C
0
0 just in time
154 Metronidazol.250mg 26 Paracetamol.syr 153 Propanolol.40 5 Simvastatin.10mg 133 Vit.B.compleks 157 Vit.C.100mg
Hitung selisih dari biaya awal dan total investasi, yaitu : Selisih = Rp 20.000.000,00 – Rp 16.548.095 42
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
= Rp 3.451.905,00 c. Alternatif 3
Tentukan selisih maksimum antara biaya awal dan total investasi. Selisih maksimum ditentukan oleh user, misalnya selisihMaks = 1.000.000
hitung jumlah pengadaan (per box) untuk setiap item obat 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 =
𝑆 − (𝑆 𝑚𝑜𝑑 100) 100
Keterangan : S = jumlah pemakaian item obat
tentukan kelayakan pengadaan obat berdasarkan jumlah pengadaan dengan ketentuan berikut : -
Jika jumlah pengadaan <= 2 box, maka diadakan secara just in time
-
Jika 2 < jumlah pengadaan <= 10 box, maka diadakan 3 bulan sekali
-
Jika jumlah pengadaan >10 box, maka diadakan sekaligus
hitung besar investasi untuk setiap item obat 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖 = 𝑗𝑢𝑚𝑙𝑎ℎ 𝑝𝑒𝑛𝑔𝑎𝑑𝑎𝑎𝑛 𝑥 100 𝑥 ℎ𝑎𝑟𝑔𝑎 𝑠𝑎𝑡𝑢𝑎𝑛
hitung total investasi seluruh item obat
hitung selisih dana yang tersedia dengan total investasi seluruh item obat 𝑠𝑒𝑙𝑖𝑠𝑖ℎ = 𝑎𝑙𝑜𝑘𝑎𝑠𝑖 𝑑𝑎𝑛𝑎 − 𝑡𝑜𝑡𝑎𝑙 𝑖𝑛𝑣𝑒𝑠𝑡𝑎𝑠𝑖
43
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Bandingkan selisih dengan selisih maksimum dengan ketentuan berikut : -
Jika selisihMaks < selisih, maksimalkan jumlah pengadaan item obat di kelas pareto A dan B yang diadakan sekaligus. Pada tabel 3.12, Amoxycillin 500, Asam Mefenamat 500mg, Captopril 25mg, Lincomycin 500, dan Prednison 5 merupakan item obat yang jumlah pengadaannya dimaksimalkan.
-
Jika selisihMaks = selisih atau selisihMaks>selisih, maka rekomendasi telah terbentuk
Tabel 3.12 Data hasil rekomendasi alternatif 3
kode
nama obat
jml. pakai (butir)
obat 1 Amoxycillin.500
harga Satuan (Rp)
kls. Pareto nik
jml. pengadaan
jml.
(box)
investasi (Rp)
keterangan
19075
370
A
197 7289000 Diadakan sekaligus
4 Asam.Mefenamat.500mg 11670
131.95
A
123 1622985 Diadakan sekaligus
6 Captopril.25mg
9315
137.75
B
100 1377500 Diadakan sekaligus
2 Kalium.diklofenak.50mg
1108
2584
B
18 4651200 Diadakan sekaligus
3 Lincomycin.500
2580
650
B
9835
40
B
105
158 Cotrimoxazol.(pediatrik)
12
49.86
C
0
0 just in time
156 Ferrous.Sulphate.300mg
50
21.86
C
0
0 just in time
184
73.36
C
1
0 Just in time
60
25
C
0
0 just in time
27 Lanzoprazol.30mg
277
1672
C
2
0 Diadakan 2/3 bulan sekali
28 Metformin.500mg
3100
149
C
31
29 Prednison.5
132 Ibuprofen.tab.200mg 155 INH.100mg
154 Metronidazol.250mg 26 Paracetamol.syr 153 Propanolol.40 5 Simvastatin.10mg 133 Vit.B.compleks 157 Vit.C.100mg
32 2080000 Diadakan sekaligus 420000 Diadakan sekaligus
461900 Diadakan sekaligus
15
105
C
0
0 just in time
271
1725
C
2
0 Diadakan 2/3 bulan sekali
20
82.18
C
0
0 just in time
2768
513
C
604
22.2
C
6
0 Diadakan 2/3 bulan sekali
40
26.43
C
0
0 just in time
27 1385100 Diadakan sekaligus
Dari tabel 3.12, akan dihitung total investasi seluruh obat yang
44
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
diadakan sekaligus setelah jumlah pengadaan obat dimaksimalkan sampai selisih antara biaya awal dengan total investasi lebih kecil daripada selisihMaks 1.000.000. Sehingga didapat hasil akhir sebagai berikut : Selisih = biaya awal – total investasi = Rp 20.000.000,00 – Rp 19.287.685,00 = Rp 712.315,00 III.2.1.4 Model Analisis Model analisis dibuat berdasarkan setiap use-case sesuai dengan tabel 3.3. Model analisis terdiri atas diagram kelas analisis, tabel kelas analisis, dan diagram sekuensial. III.2.1.4.1 Model Analisis Use-case Input File Pemakaian Sediaan Dalam use-case input file pemakaian sediaan diperlukan tiga kelas yaitu terdapat pada gambar 3.6.
inputFileForm
Obat
databaseConnection
Gambar 3.6 Gambar model analisis input file pemakaian sediaan Kelas inputFileForm berfungsi sebagai interface, Obat sebagai entity yang akan diakses, dan databaseConnection sebagai controller. Tabel 3.13 merupakan tabel deskripsi dari kelas-kelas yang dipakai dalam input file pemakaian sediaan. Tabel 3.13 Tabel kelas analisis input file pemakaian sediaan No. 1.
Nama Kelas inputFileForm
Tipe Interface
45
Deskripsi Kelas ini menyediakan
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.
Obat
3.
databaseConnection Controller
halaman untuk menginputkan file Kelas ini menyediakan object obat Kelas ini berfungsi untuk mengontrol koneksi ke database
Entity
Urutan proses input file pemakaian sediaan terdapat pada gambar 3.7.
<
> inputFileForm
Pengguna
Klik tombol “Ambil File”
Klik tombol “Simpan”
<<entity>> Obat
<> databaseConnection
bacaFile(file) view kode, nama, jml pakai, harga ke JTable Set kode, nama, jml pakai, harga
Buka koneksi Query insert (kode, nama, jml pakai, harga) status
Tampil pesan sukses
Tutup koneksi
Gambar 3.7 Diagram Sekuensial input file pemakaian sediaan III.2.1.4.2 Model Analisis Use-case Input Alokasi Biaya Dalam use-case input alokasi biaya diperlukan tiga kelas yaitu terdapat pada gambar 3.8.
inputBiayaForm
Biaya
databaseConnection
Gambar 3.8 Gambar model analisis input alokasi biaya Kelas inputBiayaForm berfungsi sebagai interface, Biaya sebagai entity yang akan diakses, dan databaseConnection sebagai controller. Tabel 3.14 merupakan tabel deskripsi dari kelas-kelas yang dipakai dalam input alokasi biaya.
46
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.14 Tabel kelas analisis input alokasi biaya No. 1.
Nama Kelas inputBiayaForm
Tipe Interface
2.
Biaya
Entity
3.
databaseConnection
Controller
Deskripsi Kelas ini menyediakan halaman untuk menginputkan biaya Kelas ini menyediakan object biaya Kelas ini berfungsi untuk mengontrol koneksi ke database
Urutan proses input alokasi biaya terdapat pada gambar 3.9.
Pengguna
<> inputBiayaForm
<<entity>> Biaya
<> databaseConnection
Input biaya ke textfield Klik tombol “Simpan”
Set biaya Buka koneksi Query insert (biaya) Tampil pesan sukses
status Tutup koneksi
Gambar 3.9 Diagram Sekuensial input alokasi biaya III.2.1.4.3 Model Analisis Use-case Input Skor Pareto Dalam use-case input skor pareto diperlukan dua kelas yaitu terdapat pada gambar 3.10.
inputSkorForm
databaseConnection
Gambar 3.10 Gambar model analisis input skor pareto Kelas inputSkorForm berfungsi sebagai interface dan databaseConnection sebagai controller. Tabel 3.15 merupakan tabel deskripsi dari kelas-kelas yang dipakai dalam input skor pareto.
47
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.15 Tabel kelas analisis input skor pareto No. 1.
Nama Kelas inputSkorForm
Tipe Interface
2.
databaseConnection
Controller
Deskripsi Kelas ini menyediakan halaman untuk menginputkan skor Kelas ini berfungsi untuk mengontrol koneksi ke database
Urutan proses input skor pareto terdapat pada gambar 3.11.
<> inputSkorForm
Pengguna
<> databaseConnection
Input skor ke tabel Klik tombol “Simpan” Buka koneksi Query insert (skor) Tampil pesan sukses Tutup koneksi
Gambar 3.11 Diagram Sekuensial input skor pareto III.2.1.4.4 Model Analisis Use-case Analisis Pareto ABC Dalam use-case analisis Pareto ABC diperlukan tiga kelas yaitu terdapat pada gambar 3.12.
analisisForm
analisisPareto
Obat
Gambar 3.12 Gambar model analisis analisis Pareto ABC Kelas analisisForm berfungsi sebagai interface, Obat sebagai entity yang akan diakses, dan analisisPareto sebagai controller. Tabel 3.16 merupakan tabel deskripsi dari kelas-kelas yang dipakai dalam analisis Pareto ABC.
48
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Tabel 3.16 Tabel kelas analisis analisis Pareto ABC No. 1.
Nama Kelas analisisForm
Tipe Interface
2.
analisisPareto
Controller
3.
Obat
Entity
Deskripsi Kelas ini menyediakan halaman untuk proses analisis pareto ABC Kelas ini berfungsi untuk mengontrol setiap method yang akan dijalankan Kelas ini menyediakan object obat
Urutan proses analisis Pareto ABC terdapat pada gambar 3.13.
<> analisisForm
Pengguna
<> AnalisisPareto
<<entity>> Obat
Klik tombol “Nilai Pakai” Request analisis nilai pakai
Tampil hasil analisis nilai pakai Klik tombol “Nilai Investasi”
Request analisis nilai investasi
Tampil hasil analisis nilai investasi Klik tombol “Nilai Indeks Kritis”
Request analisis nilai indeks kritis
Tampil hasil analisis nilai indeks kritis
Run store procedure analisis nilai pakai Get persentase, persenrase kumulatif, kelas pareto
Run store procedure analisis nilai investasi Get jumlah investasi, persentase, persenrase kumulatif, kelas pareto
Run store procedure analisis nilai indeks kritis Get jumlah kelas pareto
Gambar 3.13 Diagram Sekuensial analisis Pareto ABC III.2.1.4.5 Model Analisis Use-case Mencari Rekomendasi Pengadaan Obat Dalam use-case mencari rekomendasi pengadaan obat empat kelas yaitu terdapat pada gambar 3.14. 49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
rekomendasiForm cariRekomendasi Obat
Biaya
Gambar 3.14 Model analisis mencari rekomendasi pengadaan obat Kelas rekomendasiForm berfungsi sebagai interface, Obat dan Biaya sebagai entity yang akan diakses, dan cariRekomendasi sebagai controller. Tabel 3.17 merupakan tabel deskripsi dari kelas-kelas yang dipakai dalam input file pemakaian sediaan. Tabel 3.17 Tabel kelas analisis mencari rekomendasi pengadaan obat No. 1.
Nama Kelas rekomendasiForm
Tipe Interface
2.
cariRekomendasi
Controller
3.
Obat
Entity
4.
Biaya
Entity
50
Deskripsi Kelas ini menyediakan halaman untuk mencari rekomendasi Kelas ini berfungsi untuk mengontrol setiap method yang akan dijalankan Kelas ini menyediakan object obat Kelas ini menyediakan object biaya
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Urutan proses cari rekomendasi terdapat pada gambar 3.15.
Pengguna
<> analisisForm Klik tombol “Rekomendasi 1”
<> AnalisisPareto
Request cari rekomendasi 1
<<entity>> Obat
<<entity>> Biaya
Run store procedure cari rekomendasi 1 Hitung selisih Get jumlah pengadaan, jumlah investasi, total investasi, selisih
Tampil hasil cari rekomendasai 1 Klik tombol “Rekomendasi 2”
Request cari rekomendasi 2
Run store procedure cari rekomendasi 2 Get jumlah pengadaan, jumlah investasi,keterangan, total investasi, selisih
Tampil hasil cari rekomendasai 2
Get total investasi, selisih
Hitung selisih Get total investasi, selisih
Klik tombol “Rekomendasi 3” Tampil textfield input maksimum selisih Input maksimum selisih
Request cari rekomendasi 3
Run store procedure memaksimalkan jumlah pengadaan Get jumlah pengadaan, jumlah investasi,keterangan, total investasi, selisih
Tampil hasil cari rekomendasai 3
Hitung selisih Get total investasi, selisih
Gambar 3.15 Diagram Sekuensial mencari rekomendasi pengadaan obat
51
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.1.5 Diagram Kelas Analisis <> inputFileForm +dtm : DefaultTableModel +obt[] : Obat +jButtonBrowse : JButton +jButtonSaveFileToDB : Jbutton +conn : databaseConnection -jButtonBrowseActionPerformed : void - jButtonSaveFileToDBActionPerformed : void <> inputBiayaForm + jButtonSaveBiaya : JButton + jTextFieldBiaya : JTextField + conn :databaseConnection -jButtonSaveBiayaActionPerformed:void
<> homeForm + link : Vector + jButtonInputData : JButton + jButtonCariRekomendasi : JButton + jButtonAnalisisPareto : JButton + jButtonExit : JButton + jButtonAbout : JButton +jButtonHelp :JButton - jButtonInputDataActionPerformed : void - jButtonCariRekomendasiActionPerformed : void - jButtonAnalisisParetoActionPerformed : void
<> inputSkorForm + conn : databaseConnection + dtm : DefaultTableModel + jButtonSaveSkor : JButton -jButtonSaveSkorActionPerformed :void <> analisisForm +conn : databaseConnection +obt[] : Obat +ch : chart +jTableHasil : JTable +jButtonNilaiPakai : JButton +jButtonNilaiInvestasi : JButton +jButtonNilaiIndeksKritis : Jbutton +jButtonLihatGrafik :JButton +jButtonCetak : JButton -jButtonNilaiPakaiActionPeerformed:void -jButtonNilaiInvestasiActionPeerformed:void -jButtonNilaiIndeksKritisActionPeerformed :void -jButtonLihatGrafikActionPeerformed:void -jButtonCetakActionPeerformed:void <> rekomendasiForm +conn : databaseConnection +obt[] : Obat +jButtonRekomendasi1: JButton +jButtonRekomendasi2: JButton +JButtonRekomendasi3: JButton +jButtonModifikasi: JButton +jButtonCetak : JButton -jButtonRekomendasi1ActionPerformed: void -jButtonRekomendasi2ActionPerformed: void -JButtonRekomendasi3ActionPerformed: void -jButtonModifikasiActionPerformed: void -jButtonCetakActionPerformed : void
52
databaseConnection +conn : Connection +jdbcURL : String +user : String +password : String +databaseConnection():constructor +getConnection() : Connection
analisisPareto +conn : databaseConnection +ob[] : Obat +ch : chart +hitung_nilaiPakai() : void +hitung_nilaiInvestasi(): void +hitung_nilaiIndeksKritis():void +trans_nilaiIndeksKritis() : void
cariRekomendasi +conn : databaseConnection +ob[] : Obat +b : Biaya +cari_rekomendasi1() : void +cari_rekomendasi2() : void +modifikasi_pengadaan() : void +memaksimalkanPengadaan() : void
Obat -kodeObat : String -namaObat : String -jumlahPakai : double -hargaSatuan : double -f : File +data : String[][] +kolom : String[] +namaKolom:LinkedList +tm : DefaultTableModel +Obat() : constructor +pilihFile(File) : void
Biaya -biayaAwal : double +Biaya() : constructor +simpanBiaya(double):void
chart -category : Integer -formatter : NumberFormat -calculateSeriesTotal (CategoryDataset, int) : double -createDataset():CategoryDataset
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.1.6 Perancangan Detil Kelas Kelas homeForm Tabel 3.18 Kelas Interface homeForm Atribut : Vector link; jButtonInputData : JButton jButtonCariRekomendasi : JButton jButtonAnalisisPareto : JButton jButtonExit : JButton jButtonAbout : JButton jButtonHelp :JButton Method : 1. private void jButtonInputDataActionPerformed(java.awt.event.ActionEvent evt) Input : Output : Halaman Input Data Fungsi : menampilkan halaman input data Algoritma : inputFileForm data = new inputFileForm(link); data.setVisible(true); this.dispose(); 2. private void jButtonCariRekomendasiActionPerformed(java.awt.event.ActionEvent evt) Input : Output : Halaman Cari Rekomendasi Fungsi : menampilkan halaman cari rekomendasi Algoritma : rekomendasiSemuaForm cari = new rekomendasiSemuaForm(link); cari.setVisible(true); this.dispose(); 3. private void jButtonAnalisisParetoActionPerformed(java.awt.event.ActionEvent evt) Input : Output : Halaman Analisis Pareto ABC Fungsi : menampilkan halaman analisis Algoritma : analisisForm analisis = new analisisForm(link); analisis.setVisible(true); this.dispose();
Kelas inputFileForm Tabel 3.19 Kelas Interface inputFileForm Atribut : dtm : DefaultTableModel obt[] : Obat jButtonBrowse : JButton
53
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonSaveFileToDB : Jbutton conn : databaseConnection Method : 1. private void jButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) Input : file .xls atau .xlsx Output : array data obat Fungsi : mengambil file dalam direktori untuk ditampilkan dalam JTable Algoritma : a. buat obyek baru JfileChooser fc = new JFileChooser(); b. get path directory dari lokasi file dari textField c. panggil method baca file dari kelas Obat d. buat array Object[] untuk simpan hasil baca file, looping sebanyak jumlah data e. tampilkan array Object[i] ke JTable 2. private void jButtonSaveFileToDBActionPerformed(java.awt.event.ActionEvent evt) Input : array data obat Output : data obat tersimpan dalam database Fungsi : menyimpan data dari JTable ke database Algoritma : a. buka koneksi ke database pareto b. masukkan query delete untuk clear tabel c. get array data[][] obat dari JTable d. masukkan query insert untuk simpan data obat ke tabel e. tutup koneksi
Kelas inputBiayaForm Tabel 3.20 Kelas Interface inputBiayaForm Atribut : jButtonSaveBiaya : JButton jTextFieldBiaya : JTextField conn :databaseConnection Method : 1. private void jButtonSaveBiayaToDBActionPerformed(java.event.ActionEvent evt) Input : biaya Output : biaya tersimpan di database Fungsi : menyimpan biaya ke dalam database Algoritma : a. object baru Biaya untuk menampung masukan biaya dari textfield b. buka koneksi c. masukkan query insert untuk simpan biaya d. tutup koneksi
Kelas inputSkorForm Tabel 3.21 Kelas Interface inputSkorForm Atribut : conn : databaseConnection dtm : DefaultTableModel
54
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonSaveSkor : JButton Method : 1. private void jButtonSaveSkorParetoActionPerformed(java.awt.event.ActionEvent evt) Input : array skor Output : skor tersimpan di database Fungsi : menyimpan skor pareto ke dalam database Algoritma : a. buka koneksi b. masukkan query delete untuk clear tabel c. get array data skor dari JTable d. masukkan query insert untuk simpan data skor ke tabel e. tutup koneksi
Kelas analisisForm Tabel 3.22 Kelas Interface analisisForm Atribut : conn : databaseConnection obt[] : Obat ch : chart jTableHasil : JTable jButtonNilaiPakai : JButton jButtonNilaiInvestasi : JButton jButtonNilaiIndeksKritis : Jbutton jButtonLihatGrafik :JButton jButtonCetak : JButton Method : 1. private void jButtonNilaiPakaiActionPerformed (java.awt.event.ActionEvent evt) Input : array data obat Output : hasil analisis nilai pakai Fungsi : menjalankan proses analisis nilai pakai Algoritma : a. membuat object kelas databaseConnection b. membuat object kelas Analisis Pareto c. panggil method hitung_np dari kelas Analisis Pareto d. buka koneksi e. query select untuk menampilkan hasil analisis nilai pakai f. tutup koneksi g. simpan resultset ke dalam array data[][] h. masukkan array data ke dalam JTable model 2. private void jButtonNilaiInvestasiActionPerformed (java.awt.event.ActionEvent evt) Input : array data obat Output : hasil analisis nilai investasi Fungsi : menjalankan proses analisis nilai investasi Algoritma : a. membuat object kelas databaseConnection b. membuat object kelas Analisis Pareto c. panggil method hitung_ni dari kelas Analisis Pareto d. buka koneksi
55
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
e. query select untuk menampilkan hasil analisis nilai pakai f. tutup koneksi g. simpan resultset ke dalam array data[][] h. masukkan array data ke dalam JTable model 3. private void jButtonNilaiIndeksKritisActionPerformed (java.awt.event.ActionEvent evt) Input : array data obat Output : hasil analisis nilai indeks kritis Fungsi : menjalankan proses analisis nilai indeks kritis Algoritma : a. membuat object kelas databaseConnection b. membuat object kelas Analisis Pareto c. panggil method untuk mentransformasi kelas pareto menjadi d. panggil method analisis nilai indeks kritis e. buka koneksi f. query select untuk menampilkan hasil analisis nilai pakai g. tutup koneksi h. simpan resultset ke dalam array data[][] i. masukkan array data ke dalam JTable model 4. private void jButtonLihatGrafikActionPerformed (java.awt.event.ActionEvent evt) Input : Output : Grafik analisis Pareto ABC Fungsi : menampilkan grafik Algoritma : a. membuat object kelas chart b. buat grafik c. tampilkan grafik 5. private void jButtonCetakActionPerformed (java.awt.event.ActionEvent evt) Input : Output : cetakan hasil analisis Fungsi : mencetak hasil analisis Algoritma : a. membuat object databaseConnection b. membuat object s bertipe integer untuk menyimpan tahap proses if s=1 tampil report nilai pakai else if s=2 tampil report nilai investasi else if s=3 tampil report nilai indeks kritis
Kelas rekomendasiForm Tabel 3.23 Kelas Interface rekomendasiForm Atribut : conn : databaseConnection obt[] : Obat jButtonRekomendasi1: JButton jButtonRekomendasi2: JButton jButtonRekomendasi3: JButton jButtonModifikasi: JButton jButtonCetak : JButton Method : 1. private void jButtonRekomendasi1ActionPerformed (java.awt.event.ActionEvent
56
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
evt) Input : data hasil analisis nilai indeks kritis Output : hasil rekomendasi 1 Fungsi : mencari rekomendasi berdasar jumlah pemakaian tahun sebelumnya Algoritma : a. membuat object kelas databaseConnection b. membuat object kelas CariRekomendasi c. panggil method cari rekomendasi 1 dari kelas Analisis Pareto d. buka koneksi e. masukkan query select untuk menampilkan hasil rekomendasi f. masukkan query select untuk menampilkan biaya dari rekomendasi g. tutup koneksi h. simpan resultset ke dalam array data[][] i. set array data[][] ke dalam JTable model 2. private void jButtonRekomendasi2ActionPerformed (java.awt.event.ActionEvent evt) Input : data hasil analisis nilai indeks kritis Output : hasil rekomendasi 2 Fungsi : mencari rekomendasi berdasarkan nilai indeks kritis dan just in time Algoritma : a. membuat object kelas databaseConnection b. membuat object kelas CariRekomendasi c. panggil method cari rekomendasi 2 dari kelas Analisis Pareto d. buka koneksi e. masukkan query select untuk menampilkan hasil rekomendasi f. masukkan query select untuk menampilkan biaya dari rekomendasi g. tutup koneksi h. simpan resultset ke dalam array data[][] i. masukkan array data ke dalam JTable model 3. private void jButtonRekomendasi3ActionPerformed (java.awt.event.ActionEvent evt) Input : data hasil analisis nilai indeks kritis Output : hasil rekomendasi 3 Fungsi : mencari rekomendasi berdasar nilai indeks kritis dan just in time dengan memaksimalkan jumlah pengadaan obat Algoritma : a. membuat object kelas databaseConnection b. membuat object baru minSelisih bertipe double untuk menyimpan masukan maksimum selisih antara biaya awal dan total investasi c. membuat object baru temp1 untuk menyimpan selisih dari database d. buat kondisi untuk membandingkan temp1 dengan selisih : while(temp1>minSelisih) buat object baru kelas CariRekomendasi panggil method untuk memaksimalkan jumlah pengadaan e. buka koneksi f. masukkan query select untuk menampilkan hasil rekomendasi g. masukkan query select untuk menampilkan biaya dari rekomendasi h. tutup koneksi i. simpan resultset ke dalam array data[][] j. masukkan array data ke dalam JTable model 4. private void jButtonModifikasiActionPerformed (java.awt.event.ActionEvent evt) Input : data pengadaan baru
57
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Output : hasil rekomendasi baru Fungsi : mengubah jumlah pengadaan obat Algoritma : a. membuat object kelas databaseConnection b. buka koneksi masukkan query delete untuk clear tabel temporer buat array data[][] untuk menyimpan masukan data pengadaan baru masukkan query insert untuk menyimpan array data[][] ke dalam database c. tutup koneksi d. membuat object baru kelas CariRekomendasi e. panggil method modifikasi f. buka koneksi g. masukkan query select untuk menampilkan data rekomendasi baru h. tutup koneksi
Kelas databaseConnection Tabel 3.24 Kelas Controller databaseConnection Atribut : Connection conn; String jdbcURL = "jdbc:mysql://localhost:3306/pareto"; String user = "root"; String password = ""; Method : public static Connection getConnection() Input : jdbnURL, user, password Output : koneksi ke database Fungsi : membangun koneksi ke database Algoritma : a. set connector ke mysql database Claaa.forName(“com.mysql.jdbc.Driver”) b. test koneksi conn = DriverManager.getConnection(jdbcURL, user, password); c. return conn.
Kelas Obat Tabel 3.25 Kelas Entity Obat Atribut : private String kodeObat; private String namaObat; private double jumlahPakai; private double hargaSatuan; private static File f = null; String[][] data; String[] kolom; static LinkedList namaKolom; static DefaultTableModel tableModel = null; Method :
58
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
1. public void pilihFile(File f) Input : file Output : array data[][] Fungsi : membaca file .xls dan menampilkan ke dalam JTable Algoritma : a. buat variabel baru kelas Workbook untuk menyimpan file dari direktori user b. buat variabel baru kelas Sheet untuk menyimpan halaman dari file c. get jumlah baris dan kolom d. buat looping untuk menyimpan data yang dibaca ke dalam array data[][] e. proses ini akan terus berulang sampai kolom terakhir pada baris terakhir f. tampilkan array data ke JTable dengan setTableModel
Kelas Biaya Tabel 3.26 Kelas Entity Biaya Atribut : biayaAwal : double Method : public void simpanBiaya(double biaya) Input : biaya Output : biaya tersimpan di database Fungsi : menyimpan biaya ke dalam database Algoritma : a. Membuat object databaseConnection b. Buka koneksi c. Masukkan query insert untuk simpan biaya rekomendasi 1 d. Masukkan query insert untuk simpan biaya rekomendasi 2 e. Masukkan query insert untuk simpan biaya rekomendasi 3 f. Tutup koneksi
Kelas analisisPareto Tabel 3.27 Kelas Controller analisisPareto Atribut : databaseConnection dc; Obat ob[]; Chart ch; Method : 1. public void hitung_nilaiPakai() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan Output : persentase, persentaseKumulatif, kelasParetoNilaiPakai Fungsi : menjalankan store procedure analisis nilai pakai Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_NP = "call hitung_nilai_pakai()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_NP); d. jalankan query cs. executeUpdate();
59
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
e. tutup koneksi 2. public void hitung_nilaiInvestasi() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan Output : jumlahInvestasi, persentase, persentaseKumulatif, kelasParetoNilaiInvestasi Fungsi : menjalankan store procedure analisis nilai investasi Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_NI = "call hitung_nilai_investasi()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_NI); d. jalankan query cs. executeUpdate(); e. tutup koneksi 3. public void hitung_nilaiIndeksKritis() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan, kelasParetoNilaiPakai, kelasParetoNilaiInvestasi Output : kelasParetoNilaiIndeksKritis Fungsi : menjalankan store procedure analisis nilai indeks kritis Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_NIK = "call hitung_nilai_indeks_kritis()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_NIK); d. jalankan query cs. executeUpdate(); e. tutup koneksi 4. public void trans_nilaiIndeksKritis() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan, kelasParetoNilaiPakai, kelasParetoNilaiInvestasi Output : kelasParetoNilaiPakai, kelasParetoNilaiInvestasi dalam format angka Fungsi : menjalankan store procedure untuk transformasi kelas_pareto ke angka Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_NIK = "call hitung_nilai_indeks_kritis()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_NIK); d. jalankan query cs. executeUpdate(); e. tutup koneksi
Kelas chart Tabel 3.28 Kelas Entity chart Atribut : private Integer category; private NumberFormat formatter; Method : 1. private double calculateSeriesTotal (CategoryDataset categorydataset, int i) Input : dataset Output :persentase setiap kelas
60
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Fungsi : mengolah dataset untuk pelabelan grafik Algoritma : a. membuat object baru bertipe double double d = 0.0D; b. looping sejumlah kolom dalam dataset for(int j = 0; j < categorydataset.getColumnCount(); j++) buat object kelas Number untuk menyimpan nilai dataset set nilai d terus bertambah sebanyak looping d+ = number. doubleValue(); c. return d 2. private static CategoryDataset createDataset () Input : Output : dataset untuk chart Fungsi : membuat dataset dengan get data dari database Algoritma : a. membuat object kelas databaseConnection b. buka koneksi c. membuat object kelas ResultSet d. masukkan query select untuk mendapat kelasPareto beserta jumlah item setiap kelasnya e. membuat array data untuk menampung hasil result set f. tutup koneksi
Kelas cariRekomendasi Tabel 3.29 Kelas Controller cariRekomendasi Atribut : conn : databaseConnection ob[] : Obat b : Biaya Method : 1. public void cari_rekomendasi1() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan, kelasParetoNIK Output : jumlah pengadaan, total investasi, selisih Fungsi : menjalanakan store prosedure cari rekomendasi alternatif 1 Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_cariRekomendasi1 = "call cari_rekomendasi1()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_ cariRekomendasi1); d. jalankan query cs. executeUpdate(); e. tutup koneksi 2. public void cari_rekomendasi2() Input : kodeObat, namaObat, jumlahPakai, hargaSatuan, kelasParetoNIK Output : jumlah pengadaan, total investasi, selisih, keterangan Fungsi : menjalanakan sore procedure cari rekomendasi alternatif 2 Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_cariRekomendasi2 = "call cari_rekomendasi2()";
61
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_ cariRekomendasi2); d. jalankan query cs. executeUpdate(); e. tutup koneksi 3. public void modifikasi_pengadaan() Input : jumlah pengadaan baru Output : jumlah pengadaan, total investasi, selisih, dan keterangan baru Fungsi : menjalanakan store procedure cari rekomendasi alternatif 3 Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_modif = "call modif_pengadaan()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_modif); d. jalankan query cs. executeUpdate(); e. tutup koneksi 4. public void memaksimalkanPengadaan() Input : selisih maksimm Output : jumlah pengadaan maksimum Fungsi : memaksimalkan jumlah pengadaan Algoritma : a. membuat object kelas databaseConnection b. membuat query memanggil store prosedure String SQL_RekSistem = " call memaksimalkanPengadaan()"; c. buka koneksi dengan callablestatement CallableStatement cs = (CallableStatement)conn.openConnection().prepareCall(SQL_RekSistem); d. jalankan query cs. executeUpdate(); e. tutup koneksi
III.2.2 Perancangan Fisikal III.2.2.1 Perancangan Subsistem Manajemen Dialog Pada
perancangan
antarmuka
sistem
ini
akan
ditampilkan
perancangan dari tiap form yang akan dibentuk. Halaman menu utama pada gambar 3.17 memiliki fungsi untuk menampilkan menu-menu utama yaitu Input Data, Analisis Pareto ABC, Cari Rekomendasi, Help, About, dan untuk keluar dari sistem.
62
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Menu Utama SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN PENGADAAN OBAT Menggunakan Metode Analisis Pareto ABC Input Data Analisis Pareto ABC Cari Rekomendasi Help About Exit
Gambar 3.17 Rancangan Halaman Menu Utama Halaman Input Data meliputi halaman Input File, halaman Input Biaya, dan halaman Input Skor Pareto.Halaman Input File pada gambar 3.18 memiliki fungsi untuk mengambil, membaca, dan menyimpan isi file masukan ke dalam database. Input Data INPUT FILE
kode
nama
jumlah
Ambil File
Input File
harga
Input Biaya Input Skor Menu Utama
Simpan
Gambar 3.18 Rancangan Halaman Input File Halaman Input Biaya pada gambar 3.19 memiliki fungsi untuk menyimpan masukan alokasi biaya ke dalam database. Input Data INPUT BIAYA Input File
Masukan alokasi biaya yang disediakan : Simpan
Input Biaya Input Skor Menu Utama
63
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 3.19 Rancangan Halaman Input Biaya Halaman Input Skor Pareto pada gambar 3.20 memiliki fungsi untuk menyimpan masukan skor pareto ke dalam database. Input Data INPUT SKOR PARETO kelas
Skor pareto nilai pakai
Skor pareto nilai investasi
Input File Input Biaya Input Skor
Simpan Menu Utama
Gambar 3.20 Rancangan Halaman Skor Pareto
Halaman Analisis Pareto ABC pada gambar 3.21 memiliki fungsi untuk mengolah dan menampilkan hasil analisis nilai pakai, nilai investasi, dan nilai indeks kritis. Pada halaman ini juga diberi menu untuk menampilkan grafik analisis seperti pada gambar 3.22 dan menu mencetak hasil analisis. Analisis ANALISIS PARETO ABC Nilai Pakai Nilai Investasi Grafik
Cetak
Nilai Indeks Kritis Menu Utama
Gambar 3.21 Rancangan Halaman Analisis Pareto ABC
Gambar 3.22 Rancangan Halaman Grafik
64
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Halaman Cari Rekomendasi pada gambar 3.23 memiliki fungsi untuk
mengolah
hasil
analisis
nilai
indeks
kritis
sehingga
menghasilkan rekomendasi untuk ditampilkan. Pada halaman ini juga diberikan menu yang berfungsi untuk mengubah jumlah pengadaan dan mencetak hasil rekomendasi. Cari Rekomendasi Rekomendasi 2
Rekomendasi 1
Biaya Awal Total Investasi Selisih
Modifikasi
Biaya Awal Total Investasi Selisih
Cetak
Modifikasi
Cetak
Rekomendasi 3 Rekomendasi 1 Rekomendasi 2 Biaya Awal Total Investasi Selisih
Rekomendasi 3 Modifikasi
Cetak
Menu Utama
Gambar 3.23 Rancangan Halaman Rekomendasi Pada saat user ingin mendapatkan hasil rekomendasi alternatif 3, user harus memasukkan selisih maksimal terlebih dahulu, form masukan seperti pada gambar 3.24. Masukkan selisih maksimal dari biaya awal dan total investasi : OK
Gambar 3.24 Rancangan Halaman Input Maksimum Selisih
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
III.2.2.2 Perancangan Fisikal Basisdata Berikut ini merupakan tabel-tabel yang akan dibangun sesuai dengan perancangan logikal.
Primary Key : kode_obat Tabel 3.30 Tabel Obat Nama kolom kode_obat nama_obat jumlah_pakai harga_satuan
Tipe data VARCHAR VARCHAR DECIMAL DECIMAL
Lebar 10 100 10,2 10,2
Primary Key : kode_obat Tabel 3.31 Tabel nilai_pakai Nama kolom kode_obat persentase persen_kumulatif kelas_pareto
Tipe data VARCHAR DECIMAL DECIMAL VARCHAR
Lebar 10 10,2 10,2 2
Primary Key : kode_obat Tabel 3.32 Tabel nilai_investasi Nama kolom kode_obat jumlah_investasi persentase persen_kumulatif kelas_pareto
Tipe data VARCHAR DECIMAL DECIMAL DECIMAL VARCHAR
Lebar 10 10,2 10,2 10,2 2
Primary Key : kode_obat Tabel 3.33 Tabel nilai_indeks_kritis Nama kolom kode_obat kelas_pareto
Tipe data Lebar VARCHAR 10 VARCHAR 2
66
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Primary Key : kode_rekomendasi Tabel 3.35 Tabel hasil_rekomendasi Nama kolom kode_obat kode_rekomendasi jumlah_pengadaan jumlah_investasi tipe_rekomendasi keterangan
Tipe data VARCHAR INT DECIMAL DECIMAL INT VARCHAR
Lebar 10 2 10,2 10,2 2 100
Primary Key : kelas_paretonp Tabel 3.36 Tabel kelas_pareto_np Nama kolom kelas_paretonp batas_bawah batas_atas
Tipe data Lebar VARCHAR 2 DECIMAL 10,2 DECIMAL 10,2
Primary Key : kelas_paretoni Tabel 3.37 Tabel kelas_pareto_ni Nama kolom kelas_paretoni batas_bawah batas_atas
Tipe data Lebar VARCHAR 2 DECIMAL 10,2 DECIMAL 10,2
Primary Key : kelas_paretonik Tabel 3.38 Tabel kelas_pereto_nik Nama kolom kelas_paretonik batas_bawah batas_atas
Tipe data Lebar VARCHAR 2 DECIMAL 10,2 DECIMAL 10,2
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB IV IMPLEMENTASI DAN ANALISIS HASIL IV.1. Implementasi Penelitian ini telah diimplementasikan menjadi sebuah aplikasi yang siap digunakan, yang dibangun dengan tahapan-tahapan berikut : IV.1.1 Spesifikasi Perangkat Keras dan Perangkat Lunak Perangkat keras yang dipakai untuk membangun sistem adalah sebagai berikut : Processor
: Intel core i5 2.53 GHz
Memori
: 2GB
Hard Disk
: 512 GB
Perangkat lunak yang dipakai untuk membangun sistem adalah sebagai berikut : Bahasa Pemrograman
: Java NetBeans IDE 6.1
DBMS
: MySQL 5.0
IV.1.2 Implementasi Data Data yang dipakai pada penelitian ini didapat dari Apotek Pendidikan Sanata Dharma, yaitu data pemakaian sediaan tahun 2011. Data yang diperoleh berbentuk file yang berekstensi .xls yang berisi kode barang, nama barang, harga satuan dan jumlah pemakaian. Data diseleksi terlebih dahulu karena penelitian ini bertujuan untuk pengadaan obat, jadi data pemakaian yang dipakai hanyalah data
68
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
tentang item obat saja. IV.1.3 Implementasi File Pada bab III sebelumnya sudah dibuat rancangan untuk kelas-kelas yang nantinya akan digunakan oleh sistem. Berikut ini adalah bentuk implementasi dari perancangan kelas menjadi implementasi file : Tabel 4.1 Tabel Implementasi file Use-case Input File Pemakaian Sediaan Input Alokasi Biaya Input Skor Pareto Analisis Pareto ABC Mencari Rekomendasi Pengadaan Obat
Kelas Perancangan inputFileForm databaseConnection Obat inputBiayaForm databaseConnection Biaya inputSkorForm databaseConnection analisisForm analisisPareto Obat rekomendasiForm cariRekomendasi Obat Biaya
Implementasi File inputFileForm.java databaseConnection.java Obat.java inputBiayaForm.java databaseConnection.java Biaya.java inputSkorForm.java databaseConnection.java analisisForm.java analisisPareto.java Obat.java rekomendasiForm.java cariRekomendasi.java Obat.java Biaya.java
Jenis Interface Controller Entity Interface Controller Entity Interface Controller Interface Controller Entity Interface Controller Entity Entity
IV.1.4 Implementasi Antar Muka IV.1.4.1 Tampilan Halaman Menu Utama Halaman ini merupakan tampilan awal pada sistem. Pada halaman
ini
terdapat
menu-menu
utama
yang
berfungsi
untuk
memasukkan file .xls, biaya, skor, analisis pareto, dan mencari rekomendasi.
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.1 Gambar Tampilan Halaman Menu Utama Listing program terdapat pada lampiran 4. IV.1.4.2 Tampilan Halaman Input Data IV.1.4.2.1 Tampilan Halaman Input File Pemakaian Sediaan Halaman ini berfungsi untuk memasukkan file .xls atau .xlsx untuk kemudian disimpan dalam database.
70
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.2 Gambar Tampilan Halaman Input File Listing program terdapat pada lampiran 4 IV.1.4.2.2 Tampilan Halaman Input File Biaya Halaman ini berfungsi untuk memasukkan biaya ke dalam database yang akan digunakan dalam mencari rekomendasi pengadaan obat.
Gambar 4.3 Gambar Tampilan Halaman Input Biaya Listing program terdapat pada lampiran 4
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IV.1.4.2.3 Tampilan Halaman Input Skor Pareto Halaman untuk memasukkan skor yang akan digunakan untuk proses analisis Pareto ABC.
Gambar 4.4 Gambar Tampilan Halaman Input Skor Pareto Listing program terdapat pada lampiran 4 IV.1.4.3 Tampilan Halaman Analisis Pareto ABC Halaman untuk melakukan proses analisis Pareto ABC yaitu menampilkan hasil analisis nilai pakai, analisis nilai investasi, dan analisis nilai indeks kritis. Pada halaman ini terdapat juga menu untuk melihat grafik hasil analisis Pareto ABC dan menu untuk mencetak hasil analisis.
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.5 Gambar Tampilan Halaman Analisis Pareto ABC Apabila proses analisis telah selesai dijalankan dan kemudian ditampilkan, akan muncul pesan berikut.
Berikut ini merupakan tampilan untuk grafik hasil analisis Pareto ABC.
Listing program terdapat pada lampiran 4. IV.1.4.4 Tampilan Halaman Cari Rekomendasi Halaman ini berfungsi untuk menampilkan fungsi mencari 73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
rekomendasi. Rekomendasi yang akan ditampilkan ada tiga alternatif sesuai dengan perancangan manajemen model pada Bab 3. Pada halaman ini semua hasil rekomendasi akan ditampilkan, dengan tujuan agar pengguna dapat membandingkan hasil rekomendasi mana yang paling sesuai. Pada halaman ini juga terdapat menu cetak untuk mencetak masing-masing hasil rekomendasi. Menu modifikasi pengadaan digunakan untuk memodifikasi jumlah pengadaan sesuai keinginan pengguna.
Gambar 4.6 Gambar Tampilan Halaman Cari Rekomendasi Berikut ini merupakan tampilan untuk fungsi input batas maksimum selisih biaya awal dengan total investasi untuk memaksimalkan jumlah pengadaan pada saat mencari rekomendasi 3.
Gambar 4.7 Form input selisih maksimum Listing program terdapat pada lampiran 4. 74
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IV.2. Analisis Hasil Pada bagian analisis hasil, penulis akan membahas mengenai pengujian validitas program serta menganalisis hasilnya. IV.2.1 Pengujian Validitas Program SPPK Pengadaan Obat yang telah berhasil dibuat diuji keakuratannya dengan cara membandingkan hasil analisis dari sistem dengan hasil analisis secara manual. File input yang digunakan adalah data pemakaian sediaan pada tahun 2011 dalam format .xls. File masukan terdapat pada lampiran 3. IV.2.1.1 Pengujian Validitas Hasil Analisis Pareto ABC IV.2.1.1.1 Analisis Nilai Pakai Berikut ini merupakan hasil Analisis Nilai Pakai yang dihitung secara manual dan dengan sistem. Tabel 4.2 Tabel hasil pengujian validitas analisis nilai pakai Analisis Nilai Pakai Kode
Manual
Nama Obat
Program
jml.pakai
Persen.
Persen.Kum
Kls
jml.pakai
Persen.
Persen.Kum
Kls
1
Amoxycillin 500
19075
9.45
9.45
A
19075
9.45
9.45
A
4
Asam Mefenamat 500mg
11670
5.78
15.23
A
11670
5.78
15.23
A
29
Prednison 5
9835
4.87
20.10
A
9835
4.87
20.10
A
42
Glyceril Guaicolas 100mg
9671
4.79
24.89
A
9671
4.79
24.89
A
6
Captopril 25mg
9315
4.61
29.50
A
9315
4.61
29.50
A
17
Glibenclamide
9255
4.58
34.09
A
9255
4.58
34.09
A
14
Aminophylin 200mg
9020
4.47
38.55
A
9020
4.47
38.55
A
9
Paracetamol 500mg strip
8428
4.17
42.73
A
8428
4.17
42.73
A
10
Vit B1 100mg
7153
3.54
46.27
A
7153
3.54
46.27
A
72
CTM 4mg
5270
2.61
48.88
A
5270
2.61
48.88
A
89
Vit B12 50mcg
5004
2.48
51.36
A
5004
2.48
51.36
A
32
Captopril 12.5mg
4913
2.43
53.79
A
4913
2.43
53.79
A
46
Deksametason tab 0.5mg los
4694
2.32
56.12
A
4694
2.32
56.12
A
75
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
56
Phenobarbital 30mg
4494
2.23
58.34
A
4494
2.23
58.34
A
57
Calcium laktate
3527
1.75
60.09
A
3527
1.75
60.09
A
28
Metformin 500mg
3100
1.54
61.62
A
3100
1.54
61.62
A
34
Nifedipin
3050
1.51
63.14
A
3050
1.51
63.14
A
33
Allopurinol tab 100mg
2901
1.44
64.57
A
2901
1.44
64.57
A
5
Simvastatin 10mg
2768
1.37
65.94
A
2768
1.37
65.94
A
11
Ciproflaxacin 500
2604
1.29
67.23
A
2604
1.29
67.23
A
119
Vit B6 10mg
2598
1.29
68.52
A
2598
1.29
68.52
A
3
Lincomycin 500
2580
1.28
69.80
A
2580
1.28
69.80
A
105
Ephedrin HCl
2119
1.05
70.85
A
2119
1.05
70.85
A
71
Paracetamol 500mg los
2101
1.04
71.89
A
2101
1.04
71.89
A
123
Ambroxol 30mg
1983
0.98
72.87
A
1983
0.98
72.87
A
78
Trihexyphenidyl 2mg
1955
0.97
73.84
A
1955
0.97
73.84
A
99
HCT 25
1876
0.93
74.77
A
1876
0.93
74.77
A
8
Methylpredinisolone 4mg
1776
0.88
75.65
A
1776
0.88
75.65
A
114
Extract Belladon
1762
0.87
76.52
A
1762
0.87
76.52
A
13
Ampicillin 500
1656
0.82
77.34
A
1656
0.82
77.34
A
25
Cetirizine
1506
0.75
78.08
A
1506
0.75
78.08
A
20
Ketokonazol tab 200mg
1391
0.69
78.77
A
1391
0.69
78.77
A
39
Tanitidin 150mg
1285
0.64
79.41
A
1285
0.64
79.41
A
45
Ibuprofen tab 400mg
1228
0.61
80.02
B
1228
0.61
80.02
B
53
Haloperidol tab 5mg
1227
0.61
80.63
B
1227
0.61
80.63
B
117
Vit B1 50mg
1224
0.61
81.23
B
1224
0.61
81.23
B
38
Natrium Diclofenac 50
1197
0.59
81.83
B
1197
0.59
81.83
B
36
Gemfibrozil 300mg
1146
0.57
82.39
B
1146
0.57
82.39
B
2
Kalium diklofenak 50mg
1108
0.55
82.94
B
1108
0.55
82.94
B
47
Natrium Diclofenac 25
1048
0.52
83.46
B
1048
0.52
83.46
B
69
Salbutamol 4mg
1045
0.52
83.98
B
1045
0.52
83.98
B
67
1032
0.51
84.49
B
1032
0.51
84.49
B
70
Piroxicam 20 Dextrometorphan tab 15mg los
1009
0.50
84.99
B
1009
0.50
84.99
B
76
Salbutamol 2mg
974
0.48
85.47
B
974
0.48
85.47
B
73
Amitriptylin 25
963
0.48
85.95
B
963
0.48
85.95
B
54
Diltiazem tab 30mg
929
0.46
86.41
B
929
0.46
86.41
B
92
Isosorbid dinitrat 5mg
915
0.45
86.86
B
915
0.45
86.86
B
87
Piroxicam 10
843
0.42
87.28
B
843
0.42
87.28
B
49
Trisulfa
789
0.39
87.67
B
789
0.39
87.67
B
124
Diazepam tab 5mg
766
0.38
88.05
B
766
0.38
88.05
B
129
Diazepam tab 2mg
766
0.38
88.43
B
766
0.38
88.43
B
97
INH 300mg
760
0.38
88.81
B
760
0.38
88.81
B
98
Papaverin 40mg
753
0.37
89.18
B
753
0.37
89.18
B
21
Cefadroxil 500
704
0.35
89.53
B
704
0.35
89.53
B
86
Antasida DOEN strip
701
0.35
89.87
B
701
0.35
89.87
B
106
Furosemid tab 40mg
670
0.33
90.21
B
670
0.33
90.21
B
76
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
41
Codein 10mg
651
0.32
90.53
B
651
0.32
90.53
B
96
Digoxin tab 0.25mg
617
0.31
90.83
B
617
0.31
90.83
B
133
Vit B compleks
604
0.30
91.13
B
604
0.30
91.13
B
55
Amoxycillin 250
591
0.29
91.43
B
591
0.29
91.43
B
51
Antalgin 500mg strip
590
0.29
91.72
B
590
0.29
91.72
B
30
Spiramycin 500mg
581
0.29
92.01
B
581
0.29
92.01
B
102
Amlodipin 5mg
570
0.28
92.29
B
570
0.28
92.29
B
22
meloxicam 7.5mg
523
0.26
92.55
B
523
0.26
92.55
B
85
Metronidazol 500mg
499
0.25
92.79
B
499
0.25
92.79
B
37
Acyclovir 400mg
460
0.23
93.02
B
460
0.23
93.02
B
115
Cimetidin
421
0.21
93.23
B
421
0.21
93.23
B
50
Acyclovir 200mg
414
0.21
93.44
B
414
0.21
93.44
B
7
Acyclovir cr 5%
403
0.20
93.64
B
403
0.20
93.64
B
104
Methylergometrin
400
0.20
93.83
B
400
0.20
93.83
B
112
Cotrimaxazol 480 (dewasa)
353
0.17
94.01
B
353
0.17
94.01
B
16
Glimepiride 2mg
340
0.17
94.18
B
340
0.17
94.18
B
83
Clonidin 0.15
340
0.17
94.34
B
340
0.17
94.34
B
110
Griseofulvin tab 125mg
334
0.17
94.51
B
334
0.17
94.51
B
82
Captopril 50mg
330
0.16
94.67
B
330
0.16
94.67
B
127
Propanolol 10
330
0.16
94.84
B
330
0.16
94.84
B
66
Erythromycin 250
328
0.16
95.00
B
328
0.16
95.00
B
118
Haloperidol tab 1.5mg
315
0.16
95.16
C
315
0.16
95.16
C
52
Piracetam 400mg
300
0.15
95.30
C
300
0.15
95.30
C
63
Kalium diklofenak 25mg
300
0.15
95.45
C
300
0.15
95.45
C
12
Bisoprolol tab 5mg
297
0.15
95.60
C
297
0.15
95.60
C
74
PTU 100
291
0.14
95.74
C
291
0.14
95.74
C
140
Antasida DOEN los
291
0.14
95.89
C
291
0.14
95.89
C
59
Rifampisin 450mg
290
0.14
96.03
C
290
0.14
96.03
C
147
Vit B6 25mg
287
0.14
96.17
C
287
0.14
96.17
C
27
Lanzoprazol 30mg
277
0.14
96.31
C
277
0.14
96.31
C
64
Omeprazol 20mg
275
0.14
96.45
C
275
0.14
96.45
C
26
Paracetamol syr
271
0.13
96.58
C
271
0.13
96.58
C
90
Carbamazepin 200mg
250
0.12
96.71
C
250
0.12
96.71
C
111
Pyrantel 125
239
0.12
96.82
C
239
0.12
96.82
C
44
Piracetam 800mg
238
0.12
96.94
C
238
0.12
96.94
C
60
Ethambutol tab 250mg
230
0.11
97.06
C
230
0.11
97.06
C
35
Meloxicam 15mg
222
0.11
97.17
C
222
0.11
97.17
C
43
Betahistin
220
0.11
97.27
C
220
0.11
97.27
C
101
Doxicycline
220
0.11
97.38
C
220
0.11
97.38
C
100
Pyrazinamid 500mg
210
0.10
97.49
C
210
0.10
97.49
C
24
Cefixime 100mg tab
199
0.10
97.59
C
199
0.10
97.59
C
40
Methylpredinisolone 16mg
191
0.09
97.68
C
191
0.09
97.68
C
107
Allopurinol tab 300mg
190
0.09
97.77
C
190
0.09
97.77
C
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
Thiamphenicol 500
187
0.09
97.87
C
187
0.09
97.87
C
132
Ibuprofen tab 200mg
184
0.09
97.96
C
184
0.09
97.96
C
48
Clobazam
180
0.09
98.05
C
180
0.09
98.05
C
91
Loratadin 10mg
180
0.09
98.14
C
180
0.09
98.14
C
68
Ofloxacin 200
173
0.09
98.22
C
173
0.09
98.22
C
61
Rifampisin 600mg
172
0.09
98.31
C
172
0.09
98.31
C
139
Cefixime 50mg tab
165
0.08
98.39
C
165
0.08
98.39
C
18
Amoxycillin 125mg syr
160
0.08
98.47
C
160
0.08
98.47
C
62
Clindamycin 300mg
160
0.08
98.55
C
160
0.08
98.55
C
23
Miconazole Cr
159
0.08
98.63
C
159
0.08
98.63
C
88
Domperidon tab 10mg
156
0.08
98.70
C
156
0.08
98.70
C
31
Hidrocortison cr 2.5%
146
0.07
98.78
C
146
0.07
98.78
C
135
Metoclorampenichol 250
144
0.07
98.85
C
144
0.07
98.85
C
81
Gliquidon tab 30mg
130
0.06
98.91
C
130
0.06
98.91
C
128
130
0.06
98.98
C
130
0.06
98.98
C
149
Amlodipin 10mg Deksametason tab 0.5mg strip
130
0.06
99.04
C
130
0.06
99.04
C
95
Tetracylin 500
128
0.06
99.10
C
128
0.06
99.10
C
141
Tetracylin 250
119
0.06
99.16
C
119
0.06
99.16
C
108
Rifampisin 300mg
116
0.06
99.22
C
116
0.06
99.22
C
19
Co Amoxyclav 625mg
112
0.06
99.28
C
112
0.06
99.28
C
150
HCT 50
100
0.05
99.33
C
100
0.05
99.33
C
79
Ofloxacin 400
90
0.04
99.37
C
90
0.04
99.37
C
65
Piracetam 1200mg
85
0.04
99.41
C
85
0.04
99.41
C
15
Ketokonazol cr 2%
83
0.04
99.45
C
83
0.04
99.45
C
134
Chlorampenichol 250
82
0.04
99.49
C
82
0.04
99.49
C
58
Gentamycin 0.1% ZK
80
0.04
99.53
C
80
0.04
99.53
C
120
75
0.04
99.57
C
75
0.04
99.57
C
144
Spironolakton 25mg Dextrometorphan tab 15mg strip
70
0.03
99.61
C
70
0.03
99.61
C
94
Glimepiride 1mg
65
0.03
99.64
C
65
0.03
99.64
C
84
Levofloxacin 500mg
60
0.03
99.67
C
60
0.03
99.67
C
148
Dimenhidrinat tab 50mg
60
0.03
99.70
C
60
0.03
99.70
C
155
INH 100mg
60
0.03
99.73
C
60
0.03
99.73
C
109
Clindamycin 150mg
50
0.02
99.75
C
50
0.02
99.75
C
156
Ferrous Sulphate 300mg
50
0.02
99.78
C
50
0.02
99.78
C
103
Chlorampenichol 3% TT
44
0.02
99.80
C
44
0.02
99.80
C
137
Ciproflaxacin 250
40
0.02
99.82
C
40
0.02
99.82
C
138
Ampicillin 250
40
0.02
99.84
C
40
0.02
99.84
C
157
Vit C 100mg
40
0.02
99.86
C
40
0.02
99.86
C
93
Betametason cr 1%
32
0.02
99.87
C
32
0.02
99.87
C
77
Ambroxol syr
31
0.02
99.89
C
31
0.02
99.89
C
126
Ketoprofen tab 50mg
30
0.01
99.90
C
30
0.01
99.90
C
151
Famotidin 20
25
0.01
99.92
C
25
0.01
99.92
C
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
Ketoprofen tab 100mg
20
0.01
99.93
C
20
0.01
99.93
C
152
Loperamid 2mg
20
0.01
99.94
C
20
0.01
99.94
C
153
Propanolol 40
20
0.01
99.95
C
20
0.01
99.95
C
154
Metronidazol 250mg
15
0.01
99.95
C
15
0.01
99.95
C
113
Antasida DOEN syr
13
0.01
99.96
C
13
0.01
99.96
C
75
Cotrimaxazol suspensi
12
0.01
99.97
C
12
0.01
99.97
C
158
Cotrimoxazol (pediatrik)
12
0.01
99.97
C
12
0.01
99.97
C
122
Risperidon 2mg
10
0.00
99.98
C
10
0.00
99.98
C
136
Spironolakton 100mg
10
0.00
99.98
C
10
0.00
99.98
C
146
Erythromycin syrup
10
0.00
99.99
C
10
0.00
99.99
C
131
Antihemoroid
7
0.00
99.99
C
7
0.00
99.99
C
130
Dextrometorphan syr
6
0.00
99.99
C
6
0.00
99.99
C
143
Chlorampenichol 1% ZM
5
0.00
100.00
C
5
0.00
100.00
C
142
Ampicillin 125 syr
4
0.00
100.00
C
4
0.00
100.00
C
125
Cefadroxil 125 syr
3
0.00
100.00
C
3
0.00
100.00
C
145
Chlorampenichol 125mg syr
2
0.00
100.00
C
2
0.00
100.00
C
116
Cefiximine 100mg syr
1
0.00
100.00
C
1
0.00
100.00
C
Analisa : Hasil analisis nilai pakai dari hitungan manual dan sistem : Pada tabel 4.2 perbandingan hasil analisis nilai pakai antara perhitungan manual dan sistem menghasilkan kelas pareto yang sama. Data yang dianalisis oleh hitungan manual dan sistem sama persis, sehingga dapat ditarik kesimpulan bahwa SPPK Pengadaan Obat sudah valid. IV.2.1.1.2 Analisis Nilai Investasi Berikut ini merupakan hasil Analisis Nilai Investasi yang dihitung secara manual dan dengan sistem. Tabel 4.3 Tabel hasil pengujian validitas analisis nilai investasi Kelas Pareto Nilai Investasi Kode
Nama Obat
Sistem
Manual jml. investasi
persen.
persen kumulatif
kls
jml. investasi
persen.
persen kumulatif
kls
1
Amoxycillin 500
7057750
17.4
17.4
A
7057750
17.38
17.38
A
2
Kalium diklofenak 50mg
2863072
7.0
24.4
A
2863072
7.05
24.43
A
3
Lincomycin 500
1677000
4.1
28.6
A
1677000
4.13
28.56
A
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
4
Asam Mefenamat 500mg
1539857
3.8
32.3
A
1539857
3.79
32.35
A
5
Simvastatin 10mg
1419984
3.5
35.8
A
1419984
3.50
35.85
A
6
Captopril 25mg
1283141
3.2
39.0
A
1283141
3.16
39.01
A
7
Acyclovir cr 5%
1209000
3.0
42.0
A
1209000
2.98
41.98
A
8
Methylpredinisolone 4mg
904428
2.2
44.2
A
904428
2.23
44.21
A
9
Paracetamol 500mg strip
884940
2.2
46.4
A
884940
2.18
46.39
A
10
Vit B1 100mg
707289
1.7
48.1
A
707289
1.74
48.13
A
11
Ciproflaxacin 500
690060
1.7
49.8
A
690060
1.70
49.83
A
12
Bisoprolol tab 5mg
689536
1.7
51.5
A
689536
1.70
51.53
A
13
Ampicillin 500
612720
1.5
53.0
A
612720
1.51
53.04
A
14
Aminophylin 200mg
586300
1.4
54.5
A
586300
1.44
54.48
A
15
Ketokonazol cr 2%
581000
1.4
55.9
A
581000
1.43
55.91
A
16
Glimepiride 2mg
556934
1.4
57.3
A
556934
1.37
57.28
A
17
Glibenclamide
555300
1.4
58.6
A
555300
1.37
58.65
A
18
Amoxycillin 125mg syr
544000
1.3
60.0
A
544000
1.34
59.99
A
19
Co Amoxyclav 625mg
542080
1.3
61.3
A
542080
1.33
61.32
A
20
Ketokonazol tab 200mg
517452
1.3
62.6
A
517452
1.27
62.60
A
21
Cefadroxil 500
492800
1.2
63.8
A
492800
1.21
63.81
A
22
meloxicam 7.5mg
491882
1.2
65.0
A
491882
1.21
65.02
A
23
Miconazole Cr
477000
1.2
66.2
A
477000
1.17
66.20
A
24
Cefixime 100mg tab
476525
1.2
67.4
A
476525
1.17
67.37
A
25
Cetirizine
472131
1.2
68.5
A
472131
1.16
68.53
A
26
Paracetamol syr
467475
1.2
69.7
A
467475
1.15
69.68
A
27
Lanzoprazol 30mg
463144
1.1
70.8
A
463144
1.14
70.82
A
28
Metformin 500mg
461900
1.1
72.0
A
461900
1.14
71.96
A
29
Prednison 5
393400
1.0
72.9
A
393400
0.97
72.93
A
30
Spiramycin 500mg
363369
0.9
73.8
A
363369
0.89
73.83
A
31
Hidrocortison cr 2.5%
362737
0.9
74.7
A
362737
0.89
74.72
A
32
Captopril 12.5mg
348332
0.9
75.6
A
348332
0.86
75.58
A
33
Allopurinol tab 100mg
348120
0.9
76.4
A
348120
0.86
76.43
A
34
Nifedipin
328943
0.8
77.2
A
328943
0.81
77.24
A
35
Meloxicam 15mg
313189
0.8
78.0
A
313189
0.77
78.01
A
36
Gemfibrozil 300mg
304423
0.7
78.8
A
304423
0.75
78.76
A
37
Acyclovir 400mg
262812
0.6
79.4
A
262812
0.65
79.41
A
38
Natrium Diclofenac 50
260563
0.6
80.1
B
260563
0.64
80.05
B
39
Tanitidin 150mg
257000
0.6
80.7
B
257000
0.63
80.69
B
40
Methylpredinisolone 16mg
256148
0.6
81.3
B
256148
0.63
81.32
B
41
Codein 10mg
252874
0.6
81.9
B
252874
0.62
81.94
B
42
Glyceril Guaicolas 100mg
224754
0.6
82.5
B
224754
0.55
82.49
B
43
Betahistin
203280
0.5
83.0
B
203280
0.50
82.99
B
44
Piracetam 800mg
198968
0.5
83.5
B
198968
0.49
83.48
B
45
181142
0.4
83.9
B
181142
0.45
83.93
B
46
Ibuprofen tab 400mg Deksametason tab 0.5mg los
180907
0.4
84.4
B
180907
0.45
84.37
B
47
Natrium Diclofenac 25
175729
0.4
84.8
B
175729
0.43
84.81
B
48
Clobazam
171000
0.4
85.2
B
171000
0.42
85.23
B
49
Trisulfa
170108
0.4
85.6
B
170108
0.42
85.65
B
50
Acyclovir 200mg
160707
0.4
86.0
B
160707
0.40
86.04
B
51
Antalgin 500mg strip
153400
0.4
86.4
B
153400
0.38
86.42
B
52
Piracetam 400mg
150480
0.4
86.8
B
150480
0.37
86.79
B
53
Haloperidol tab 5mg
150050
0.4
87.2
B
150050
0.37
87.16
B
54
Diltiazem tab 30mg
140864
0.3
87.5
B
140864
0.35
87.51
B
55
Amoxycillin 250
140658
0.3
87.9
B
140658
0.35
87.85
B
56
Phenobarbital 30mg
139314
0.3
88.2
B
139314
0.34
88.20
B
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
57
Calcium laktate
138717
0.3
88.5
B
138717
0.34
88.54
B
58
Gentamycin 0.1% ZK
132000
0.3
88.9
B
132000
0.33
88.86
B
59
Rifampisin 450mg
130500
0.3
89.2
B
130500
0.32
89.18
B
60
Ethambutol tab 250mg
123048
0.3
89.5
B
123048
0.30
89.49
B
61
Rifampisin 600mg
120942
0.3
89.8
B
120942
0.30
89.79
B
62
Clindamycin 300mg
120440
0.3
90.1
B
120440
0.30
90.08
B
63
Kalium diklofenak 25mg
117252
0.3
90.4
B
117252
0.29
90.37
B
64
Omeprazol 20mg
112291
0.3
90.6
B
112291
0.28
90.65
B
65
Piracetam 1200mg
112200
0.3
90.9
B
112200
0.28
90.92
B
66
Erythromycin 250
110805
0.3
91.2
B
110805
0.27
91.20
B
67
Piroxicam 20
108360
0.3
91.5
B
108360
0.27
91.46
B
68
Ofloxacin 200
102087
0.3
91.7
B
102087
0.25
91.71
B
69
101877
0.3
92.0
B
101877
0.25
91.97
B
70
Salbutamol 4mg Dextrometorphan tab 15mg los
99891
0.2
92.2
B
99891
0.25
92.21
B
71
Paracetamol 500mg los
95595.5
0.2
92.4
B
95595.5
0.24
92.45
B
72
CTM 4mg
90433.2
0.2
92.7
B
90433.2
0.22
92.67
B
73
Amitriptylin 25
88692.3
0.2
92.9
B
88692.3
0.22
92.89
B
74
PTU 100
87174.9
0.2
93.1
B
87174.9
0.21
93.10
B
75
Cotrimaxazol suspensi
86760
0.2
93.3
B
86760
0.21
93.32
B
76
Salbutamol 2mg
81845.2
0.2
93.5
B
81845.2
0.20
93.52
B
77
Ambroxol syr
80104
0.2
93.7
B
80104
0.20
93.71
B
78
Trihexyphenidyl 2mg
79705.4
0.2
93.9
B
79705.4
0.20
93.91
B
79
Ofloxacin 400
78570
0.2
94.1
B
78570
0.19
94.10
B
80
Thiamphenicol 500
76565.3
0.2
94.3
B
76565.3
0.19
94.29
B
81
Gliquidon tab 30mg
76261.9
0.2
94.5
B
76261.9
0.19
94.48
B
82
Captopril 50mg
74045.4
0.2
94.7
B
74045.4
0.18
94.66
B
83
Clonidin 0.15
69700
0.2
94.8
B
69700
0.17
94.83
B
84
Levofloxacin 500mg
69220.8
0.2
95.0
C
69220.8
0.17
95.01
C
85
Metronidazol 500mg
67365
0.2
95.2
C
67365
0.17
95.17
C
86
Antasida DOEN strip
63910.2
0.2
95.3
C
63910.2
0.16
95.33
C
87
Piroxicam 10
63225
0.2
95.5
C
63225
0.16
95.48
C
88
Domperidon tab 10mg
62964.7
0.2
95.6
C
62964.7
0.16
95.64
C
89
Vit B12 50mcg
61849.4
0.2
95.8
C
61849.4
0.15
95.79
C
90
Carbamazepin 200mg
61612.5
0.2
95.9
C
61612.5
0.15
95.94
C
91
Loratadin 10mg
59954.4
0.1
96.1
C
59954.4
0.15
96.09
C
92
Isosorbid dinitrat 5mg
59694.6
0.1
96.2
C
59694.6
0.15
96.24
C
93
Betametason cr 1%
57600
0.1
96.4
C
57600
0.14
96.38
C
94
Glimepiride 1mg
56462.9
0.1
96.5
C
56462.9
0.14
96.52
C
95
Tetracylin 500
52408.3
0.1
96.6
C
52408.3
0.13
96.65
C
96
Digoxin tab 0.25mg
51340.6
0.1
96.8
C
51340.6
0.13
96.77
C
97
INH 300mg
50266.4
0.1
96.9
C
50266.4
0.12
96.90
C
98
Papaverin 40mg
47439
0.1
97.0
C
47439
0.12
97.01
C
99
HCT 25
46224.6
0.1
97.1
C
46224.6
0.11
97.13
C
100
Pyrazinamid 500mg
46200
0.1
97.2
C
46200
0.11
97.24
C
101
Doxicycline
45988.8
0.1
97.4
C
45988.8
0.11
97.36
C
102
Amlodipin 5mg
45981.9
0.1
97.5
C
45981.9
0.11
97.47
C
103
Chlorampenichol 3% TT
44000
0.1
97.6
C
44000
0.11
97.58
C
104
Methylergometrin
43984
0.1
97.7
C
43984
0.11
97.69
C
105
Ephedrin HCl
43948.1
0.1
97.8
C
43948.1
0.11
97.79
C
106
Furosemid tab 40mg
43831.4
0.1
97.9
C
43831.4
0.11
97.90
C
107
Allopurinol tab 300mg
42356.7
0.1
98.0
C
42356.7
0.10
98.01
C
108
Rifampisin 300mg
40600
0.1
98.1
C
40600
0.10
98.11
C
109
Clindamycin 150mg
37637.5
0.1
98.2
C
37637.5
0.09
98.20
C
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
110
Griseofulvin tab 125mg
111
Pyrantel 125
37064
0.1
98.3
C
37064
0.09
98.29
C
35818.9
0.1
98.4
C
35818.9
0.09
98.38
C
112 113
Cotrimaxazol 480 (dewasa)
35300
0.1
98.5
C
35300
0.09
98.46
C
Antasida DOEN syr
34359
0.1
98.5
C
34359
0.08
98.55
114
C
Extract Belladon
31522.2
0.1
98.6
C
31522.2
0.08
98.63
C
115
Cimetidin
30421.5
0.1
98.7
C
30421.5
0.07
98.70
C
116
Cefiximine 100mg syr
30250
0.1
98.8
C
30250
0.07
98.78
C
117
Vit B1 50mg
29229.1
0.1
98.8
C
29229.1
0.07
98.85
C
118
Haloperidol tab 1.5mg
26012.7
0.1
98.9
C
26012.7
0.06
98.91
C
119
Vit B6 10mg
25980
0.1
99.0
C
25980
0.06
98.98
C
120
Spironolakton 25mg
25977.8
0.1
99.0
C
25977.8
0.06
99.04
C
121
Ketoprofen tab 100mg
24552
0.1
99.1
C
24552
0.06
99.10
C
122
Risperidon 2mg
23750
0.1
99.2
C
23750
0.06
99.16
C
123
Ambroxol 30mg
22467.4
0.1
99.2
C
22467.4
0.06
99.21
C
124
Diazepam tab 5mg
22214
0.1
99.3
C
22214
0.05
99.27
C
125
Cefadroxil 125 syr
21690
0.1
99.3
C
21690
0.05
99.32
C
126
Ketoprofen tab 50mg
21120
0.1
99.4
C
21120
0.05
99.37
C
127
Propanolol 10
19107
0.0
99.4
C
19107
0.05
99.42
C
128
Amlodipin 10mg
18352.1
0.0
99.5
C
18352.1
0.05
99.47
C
129
Diazepam tab 2mg
15166.8
0.0
99.5
C
15166.8
0.04
99.50
C
130
Dextrometorphan syr
14400
0.0
99.5
C
14400
0.04
99.54
C
131
Antihemoroid
14000
0.0
99.6
C
14000
0.03
99.57
C
132
Ibuprofen tab 200mg
13498.2
0.0
99.6
C
13498.2
0.03
99.61
C
133
Vit B compleks
13408.8
0.0
99.6
C
13408.8
0.03
99.64
C
134
Chlorampenichol 250
12304.1
0.0
99.7
C
12304.1
0.03
99.67
C
135
Metoclorampenichol 250
10987.2
0.0
99.7
C
10987.2
0.03
99.70
C
136
Spironolakton 100mg
10549.6
0.0
99.7
C
10549.6
0.03
99.72
C
137
Ciproflaxacin 250
10000
0.0
99.7
C
10000
0.02
99.75
C
138
Ampicillin 250
9520
0.0
99.8
C
9520
0.02
99.77
C
139
Cefixime 50mg tab
9117.9
0.0
99.8
C
9117.9
0.02
99.79
C
140
Antasida DOEN los
8884.23
0.0
99.8
C
8884.23
0.02
99.82
C
141
Tetracylin 250
8687
0.0
99.8
C
8687
0.02
99.84
C
142
Ampicillin 125 syr
8000
0.0
99.9
C
8000
0.02
99.86
C
143
7815
0.0
99.9
C
7815
0.02
99.88
C
144
Chlorampenichol 1% ZM Dextrometorphan tab 15mg strip
6930
0.0
99.9
C
6930
0.02
99.89
C
145
Chlorampenichol 125mg syr
146
Erythromycin syrup
147
Vit B6 25mg
148 149
Dimenhidrinat tab 50mg Deksametason tab 0.5mg strip
150
HCT 50
151
Famotidin 20
152
Loperamid 2mg
153
Propanolol 40
154 155
6740
0.0
99.9
C
6740
0.02
99.91
C
5349.9
0.0
99.9
C
5349.9
0.01
99.92
C
5329.59
0.0
99.9
C
5329.59
0.01
99.94
C
5070
0.0
99.9
C
5070
0.01
99.95
C
5010.2
0.0
100.0
C
5010.2
0.01
99.96
C
3500
0.0
100.0
C
3500
0.01
99.97
C
2827.5
0.0
100.0
C
2827.5
0.01
99.98
C
1831
0.0
100.0
C
1831
0.00
99.98
C
1643.6
0.0
100.0
C
1643.6
0.00
99.99
C
Metronidazol 250mg
1575
0.0
100.0
C
1575
0.00
99.99
C
INH 100mg
1500
0.0
100.0
C
1500
0.00
99.99
C
156
Ferrous Sulphate 300mg
1093
0.0
100.0
C
1093
0.00
100.00
C
157
Vit C 100mg
1057.2
0.0
100.0
C
1057.2
0.00
100.00
C
158
Cotrimoxazol (pediatrik)
598.32
0.0
100.0
C
598.32
0.00
100.00
C
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Analisa : Hasil analisis nilai investasi dari hitungan manual dan sistem : Pada tabel 4.3 perbandingan hasil analisis nilai investasi antara perhitungan manual dan sistem menghasilkan kelas pareto yang sama. Data yang dianalisis oleh hitungan manual dan sistem sama persis, sehingga dapat ditarik kesimpulan bahwa SPPK Pengadaan Obat sudah valid. IV.2.1.1.3 Analisis Nilai Indeks Kritis Berikut ini merupakan hasil Analisis Nilai Indeks Kritis yang dihitung secara manual dan dengan sistem. Tabel 4.4 Tabel hasil pengujian validitas analisis nilai indeks kritis Nilai Indeks Kritis Kode
Nama Obat
Manual
Sistem
nik
kls
nik
kls
37
Acyclovir 400mg
5
A
5
A
7
Acyclovir cr 5%
5
A
5
A
33
Allopurinol tab 100mg
6
A
6
A
14
Aminophylin 200mg
6
A
6
A
1
Amoxycillin 500
6
A
6
A
13
Ampicillin 500
6
A
6
A
4
Asam Mefenamat 500mg
6
A
6
A
57
Calcium laktate
5
A
5
A
32
Captopril 12.5mg
6
A
6
A
6
Captopril 25mg
6
A
6
A
21
Cefadroxil 500
5
A
5
A
25
Cetirizine
6
A
6
A
11
Ciproflaxacin 500
6
A
6
A
72
CTM 4mg
5
A
5
A
46
Deksametason tab 0.5mg los
5
A
5
A
36
Gemfibrozil 300mg
5
A
5
A
17
Glibenclamide
6
A
6
A
16
Glimepiride 2mg
5
A
5
A
42
Glyceril Guaicolas 100mg
5
A
5
A
2
Kalium diklofenak 50mg
5
A
5
A
20
Ketokonazol tab 200mg
6
A
6
A
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
3
Lincomycin 500
6
A
6
A
22
meloxicam 7.5mg
5
A
5
A
28
Metformin 500mg
6
A
6
A
8
Methylpredinisolone 4mg
6
A
6
A
34
Nifedipin
6
A
6
A
71
Paracetamol 500mg los
5
A
5
A
9
Paracetamol 500mg strip
6
A
6
A
56
Phenobarbital 30mg
5
A
5
A
29
Prednison 5
6
A
6
A
5
Simvastatin 10mg
6
A
6
A
30
Spiramycin 500mg
5
A
5
A
39
Tanitidin 150mg
5
A
5
A
78
Trihexyphenidyl 2mg
5
A
5
A
10
Vit B1 100mg
6
A
6
A
50
Acyclovir 200mg
4
B
4
B
123
Ambroxol 30mg
4
B
4
B
73
Amitriptylin 25
4
B
4
B
18
Amoxycillin 125mg syr
4
B
4
B
55
Amoxycillin 250
4
B
4
B
51
Antalgin 500mg strip
4
B
4
B
12
Bisoprolol tab 5mg
4
B
4
B
82
Captopril 50mg
4
B
4
B
24
Cefixime 100mg tab
4
B
4
B
83
Clonidin 0.15
4
B
4
B
19
Co Amoxyclav 625mg
4
B
4
B
41
4
B
4
B
70
Codein 10mg Dextrometorphan tab 15mg los
4
B
4
54
Diltiazem tab 30mg
4
B
4
B
105
Ephedrin HCl
4
B
4
B
66
Erythromycin 250
4
B
4
B
114
Extract Belladon
4
B
4
B
53
Haloperidol tab 5mg
4
B
4
B
99
HCT 25
4
B
4
B
31
Hidrocortison cr 2.5%
4
B
4
B
45
Ibuprofen tab 400mg
4
B
4
B
15
Ketokonazol cr 2%
4
B
4
B
27
Lanzoprazol 30mg
4
B
4
B
35
Meloxicam 15mg
4
B
4
B
23
Miconazole Cr
4
B
4
B
47
Natrium Diclofenac 25
4
B
4
B
38
Natrium Diclofenac 50
4
B
4
B
26
Paracetamol syr
4
B
4
B
84
B
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
Piroxicam 20
4
B
4
B
76
Salbutamol 2mg
4
B
4
B
69
Salbutamol 4mg
4
B
4
B
49
Trisulfa
4
B
4
B
89
Vit B12 50mcg
4
B
4
B
119
Vit B6 10mg
4
B
4
B
107
Allopurinol tab 300mg
2
C
2
C
77
Ambroxol syr
3
C
3
C
128
Amlodipin 10mg
2
C
2
C
102
Amlodipin 5mg
3
C
3
C
142
Ampicillin 125 syr
2
C
2
C
138
Ampicillin 250
2
C
2
C
140
Antasida DOEN los
2
C
2
C
86
Antasida DOEN strip
3
C
3
C
113
Antasida DOEN syr
2
C
2
C
131
Antihemoroid
2
C
2
C
43
Betahistin
3
C
3
C
93
Betametason cr 1%
2
C
2
C
90
Carbamazepin 200mg
2
C
2
C
125
Cefadroxil 125 syr
2
C
2
C
139
Cefixime 50mg tab
2
C
2
C
116
Cefiximine 100mg syr
2
C
2
C
143
Chlorampenichol 1% ZM
2
C
2
C
145
Chlorampenichol 125mg syr
2
C
2
C
134
Chlorampenichol 250
2
C
2
C
103
Chlorampenichol 3% TT
2
C
2
C
115
Cimetidin
3
C
3
C
137
Ciproflaxacin 250
2
C
2
C
109
Clindamycin 150mg
2
C
2
C
62
Clindamycin 300mg
3
C
3
C
48
Clobazam
3
C
3
C
112
Cotrimaxazol 480 (dewasa)
3
C
3
C
75
Cotrimaxazol suspensi
3
C
3
C
158
Cotrimoxazol (pediatrik)
2
C
2
C
149
Deksametason tab 0.5mg strip
2
C
2
C
130
2
C
2
C
144
Dextrometorphan syr Dextrometorphan tab 15mg strip
2
C
2
129
Diazepam tab 2mg
3
C
3
C
124
Diazepam tab 5mg
3
C
3
C
96
Digoxin tab 0.25mg
3
C
3
C
148
Dimenhidrinat tab 50mg
2
C
2
C
88
Domperidon tab 10mg
2
C
2
C
85
C
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
101
Doxicycline
2
C
2
C
146
Erythromycin syrup
2
C
2
C
60
Ethambutol tab 250mg
3
C
3
C
151
Famotidin 20
2
C
2
C
156
Ferrous Sulphate 300mg
2
C
2
C
106
Furosemid tab 40mg
3
C
3
C
58
Gentamycin 0.1% ZK
3
C
3
C
94
Glimepiride 1mg
2
C
2
C
81
Gliquidon tab 30mg
3
C
3
C
110
Griseofulvin tab 125mg
3
C
3
C
118
Haloperidol tab 1.5mg
2
C
2
C
150
HCT 50
2
C
2
C
132
Ibuprofen tab 200mg
2
C
2
C
155
INH 100mg
2
C
2
C
97
INH 300mg
3
C
3
C
92
Isosorbid dinitrat 5mg
3
C
3
C
63
Kalium diklofenak 25mg
3
C
3
C
121
Ketoprofen tab 100mg
2
C
2
C
126
Ketoprofen tab 50mg
2
C
2
C
84
Levofloxacin 500mg
2
C
2
C
152
Loperamid 2mg
2
C
2
C
91
Loratadin 10mg
2
C
2
C
104
Methylergometrin
3
C
3
C
40
Methylpredinisolone 16mg
3
C
3
C
135
Metoclorampenichol 250
2
C
2
C
154
Metronidazol 250mg
2
C
2
C
85
Metronidazol 500mg
3
C
3
C
68
Ofloxacin 200
3
C
3
C
79
Ofloxacin 400
3
C
3
C
64
Omeprazol 20mg
3
C
3
C
98
Papaverin 40mg
3
C
3
C
65
Piracetam 1200mg
3
C
3
C
52
Piracetam 400mg
3
C
3
C
44
Piracetam 800mg
3
C
3
C
87
Piroxicam 10
3
C
3
C
127
Propanolol 10
3
C
3
C
153
Propanolol 40
2
C
2
C
74
PTU 100
3
C
3
C
111
Pyrantel 125
2
C
2
C
100
Pyrazinamid 500mg
2
C
2
C
108
Rifampisin 300mg
2
C
2
C
59
Rifampisin 450mg
3
C
3
C
61
Rifampisin 600mg
3
C
3
C
86
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
Risperidon 2mg
3
C
3
C
136
Spironolakton 100mg
2
C
2
C
120
Spironolakton 25mg
2
C
2
C
141
Tetracylin 250
2
C
2
C
95
Tetracylin 500
2
C
2
C
80
Thiamphenicol 500
3
C
3
C
133
Vit B compleks
3
C
3
C
117
Vit B1 50mg
3
C
3
C
147
Vit B6 25mg
2
C
2
C
157
Vit C 100mg
2
C
2
C
Analisa : Hasil analisis nilai indeks kritis dari hitungan manual dan sistem : Pada tabel 4.4 perbandingan hasil analisis nilai indeks kritis antara perhitungan manual dan sistem menghasilkan kelas pareto yang sama. Data yang dianalisis oleh hitungan manual dan sistem sama persis, sehingga dapat ditarik kesimpulan bahwa SPPK Pengadaan Obat sudah valid.
87
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
IV.2.1.2 Pengujian Validitas Hasil Rekomendasi
Kod e
Nama Obat
NI K
Jumla h
Harga
Pakai
Satua n
Rekomendasi 1
Rekomendasi 2
Rekomendasi 3
Pengadaan Baru
Pengadaan Baru
Progra m
Manu al
Progra m
Manu al
Progra m
Manu al
Progra m
Manu al
Progra m
(butir)
(Rp)
Manu al
Keterangan
Pengadaan Baru
Keterangan
33
Allopurinol tab 100mg
A
2901
120
29
29
29
29
*
*
34
34
*
*
Keterangan :
14
Aminophylin 200mg
A
9020
65
90
90
90
90
*
*
95
95
*
*
*
Diadakan sekaligus
1
Amoxycillin 500
A
19075
370
190
190
190
190
*
*
195
195
*
*
&
Diadakan 2/3 bulan sekali
13
Ampicillin 500
A
1656
370
16
16
16
16
*
*
21
21
*
*
#
Just in time
4
Asam Mefenamat 500mg
A
11670
132
116
116
116
116
*
*
121
121
*
*
32
Captopril 12.5mg
A
4913
70.9
49
49
49
49
*
*
54
54
*
*
6
Captopril 25mg
A
9315
137.8
93
93
93
93
*
*
98
98
*
*
25
Cetirizine
A
1506
313.5
15
15
15
15
*
*
20
20
*
*
11
Ciproflaxacin 500
A
2604
265
26
26
26
26
*
*
31
31
*
*
17
Glibenclamide
A
9255
60
92
92
92
92
*
*
97
97
*
*
20
Ketokonazol tab 200mg
A
1391
372
13
13
13
13
*
*
18
18
*
*
3
Lincomycin 500
A
2580
650
25
25
25
25
*
*
30
30
*
*
28
Metformin 500mg
A
3100
149
31
31
31
31
*
*
36
36
*
*
8
Methylpredinisolone 4mg
A
1776
509.3
17
17
17
17
*
*
22
22
*
*
34
Nifedipin
A
3050
107.9
30
30
30
30
*
*
35
35
*
*
9
Paracetamol 500mg strip
A
8428
105
84
84
84
84
*
*
89
89
*
*
29
Prednison 5
A
9835
40
98
98
98
98
*
*
103
103
*
*
88
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
5
Simvastatin 10mg
A
2768
513
27
27
27
27
*
*
32
32
*
*
10
Vit B1 100mg
A
7153
98.88
71
71
71
71
*
*
76
76
*
*
37
Acyclovir 400mg
A
460
571.3
4
4
0
0
&
&
0
0
&
&
7
Acyclovir cr 5%
A
403
3000
4
4
0
0
&
&
0
0
&
&
57
Calcium laktate
A
3527
39.33
35
35
35
35
*
*
40
40
*
*
21
Cefadroxil 500
A
704
700
7
7
0
0
&
&
0
0
&
&
72
A
5270
17.16
52
52
52
52
*
*
57
57
*
*
46
CTM 4mg Deksametason tab 0.5mg los
A
4694
38.54
46
46
46
46
*
*
51
51
*
*
36
Gemfibrozil 300mg
A
1146
265.6
11
11
11
11
*
*
16
16
*
*
16
Glimepiride 2mg
A
340
1638
3
3
0
0
&
&
0
0
&
&
42
Glyceril Guaicolas 100mg
A
9671
23.24
96
96
96
96
*
*
101
101
*
*
2
Kalium diklofenak 50mg
A
1108
2584
11
11
11
11
*
*
16
16
*
*
22
meloxicam 7.5mg
A
523
940.5
5
5
0
0
&
&
0
0
&
&
71
Paracetamol 500mg los
A
2101
45.5
21
21
21
21
*
*
26
26
*
*
56
Phenobarbital 30mg
A
4494
31
44
44
44
44
*
*
49
49
*
*
30
Spiramycin 500mg
A
581
625.4
5
5
0
0
&
&
0
0
&
&
39
Tanitidin 150mg
A
1285
200
12
12
12
12
*
*
17
17
*
*
78
Trihexyphenidyl 2mg
A
1955
40.77
19
19
19
19
*
*
24
24
*
*
50
Acyclovir 200mg
B
414
388.2
4
4
0
0
&
&
0
0
&
&
123
Ambroxol 30mg
B
1983
11.33
19
19
19
19
*
*
24
24
*
*
73
Amitriptylin 25
B
963
92.1
9
9
0
0
&
&
0
0
&
&
18
Amoxycillin 125mg syr
B
160
3400
1
1
0
0
#
#
0
0
#
#
55
Amoxycillin 250
B
591
238
5
5
0
0
&
&
0
0
&
&
51
Antalgin 500mg strip
B
590
260
5
5
0
0
&
&
0
0
&
&
89
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
12
Bisoprolol tab 5mg
B
297
2322
2
2
0
0
#
#
0
0
#
#
82
Captopril 50mg
B
330
224.4
3
3
0
0
&
&
0
0
&
&
24
Cefixime 100mg tab
B
199
2395
1
1
0
0
#
#
0
0
#
#
83
Clonidin 0.15
B
340
205
3
3
0
0
&
&
0
0
&
&
19
Co Amoxyclav 625mg
B
112
4840
1
1
0
0
#
#
0
0
#
#
41
B
651
388.4
6
6
0
0
&
&
0
0
&
&
70
Codein 10mg Dextrometorphan tab 15mg los
B
1009
99
10
10
0
0
&
&
0
0
&
&
54
Diltiazem tab 30mg
B
929
151.6
9
9
0
0
&
&
0
0
&
&
105
Ephedrin HCl
B
2119
20.74
21
21
21
21
*
*
26
26
*
*
66
Erythromycin 250
B
328
337.8
3
3
0
0
&
&
0
0
&
&
114
Extract Belladon
B
1762
17.89
17
17
17
17
*
*
22
22
*
*
53
Haloperidol tab 5mg
B
1227
122.3
12
12
12
12
*
*
17
17
*
*
99
HCT 25
B
1876
24.64
18
18
18
18
*
*
23
23
*
*
31
Hidrocortison cr 2.5%
B
146
2485
1
1
0
0
#
#
0
0
#
#
45
Ibuprofen tab 400mg
B
1228
147.5
12
12
12
12
*
*
17
17
*
*
15
Ketokonazol cr 2%
B
83
7000
0
0
0
0
#
#
0
0
#
#
27
Lanzoprazol 30mg
B
277
1672
2
2
0
0
#
#
0
0
#
#
35
Meloxicam 15mg
B
222
1411
2
2
0
0
#
#
0
0
#
#
23
Miconazole Cr
B
159
3000
1
1
0
0
#
#
0
0
#
#
47
Natrium Diclofenac 25
B
1048
167.7
10
10
0
0
&
&
0
0
&
&
38
Natrium Diclofenac 50
B
1197
217.7
11
11
11
11
*
*
16
16
*
*
26
Paracetamol syr
B
271
1725
2
2
0
0
#
#
0
0
#
#
67
Piroxicam 20
B
1032
105
10
10
0
0
&
&
0
0
&
&
76
Salbutamol 2mg
B
974
84.03
9
9
0
0
&
&
0
0
&
&
90
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
Salbutamol 4mg
B
1045
97.49
10
10
0
0
&
&
0
0
&
&
49
Trisulfa
B
789
215.6
7
7
0
0
&
&
0
0
&
&
89
Vit B12 50mcg
B
5004
12.36
50
50
50
50
*
*
55
55
*
*
119
Vit B6 10mg
B
2598
10
25
25
25
25
*
*
30
30
*
*
77
Ambroxol syr
C
31
2584
0
0
0
0
#
#
0
0
#
#
102
Amlodipin 5mg
C
570
80.67
5
5
0
0
&
&
0
0
&
&
86
Antasida DOEN strip
C
701
91.17
7
7
0
0
&
&
0
0
&
&
43
Betahistin
C
220
924
2
2
0
0
#
#
0
0
#
#
115
Cimetidin
C
421
72.26
4
4
0
0
&
&
0
0
&
&
62
Clindamycin 300mg
C
160
752.8
1
1
0
0
#
#
0
0
#
#
48
Clobazam
C
180
950
1
1
0
0
#
#
0
0
#
#
112
Cotrimaxazol 480 (dewasa)
C
353
100
3
3
0
0
&
&
0
0
&
&
75
Cotrimaxazol suspensi
C
12
7230
0
0
0
0
#
#
0
0
#
#
129
Diazepam tab 2mg
C
766
19.8
7
7
0
0
&
&
0
0
&
&
124
Diazepam tab 5mg
C
766
29
7
7
0
0
&
&
0
0
&
&
96
Digoxin tab 0.25mg
C
617
83.21
6
6
0
0
&
&
0
0
&
&
60
Ethambutol tab 250mg
C
230
535
2
2
0
0
#
#
0
0
#
#
106
Furosemid tab 40mg
C
670
65.42
6
6
0
0
&
&
0
0
&
&
58
Gentamycin 0.1% ZK
C
80
1650
0
0
0
0
#
#
0
0
#
#
81
Gliquidon tab 30mg
C
130
586.6
1
1
0
0
#
#
0
0
#
#
110
Griseofulvin tab 125mg
C
334
111
3
3
0
0
&
&
0
0
&
&
97
INH 300mg
C
760
66.14
7
7
0
0
&
&
0
0
&
&
92
Isosorbid dinitrat 5mg
C
915
65.24
9
9
0
0
&
&
0
0
&
&
63
Kalium diklofenak 25mg
C
300
390.8
3
3
0
0
&
&
0
0
&
&
91
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
Methylergometrin
C
400
110
4
4
0
0
&
&
0
0
&
&
40
Methylpredinisolone 16mg
C
191
1341
1
1
0
0
#
#
0
0
#
#
85
Metronidazol 500mg
C
499
135
4
4
0
0
&
&
0
0
&
&
68
Ofloxacin 200
C
173
590.1
1
1
0
0
#
#
0
0
#
#
79
Ofloxacin 400
C
90
873
0
0
0
0
#
#
0
0
#
#
64
Omeprazol 20mg
C
275
408.3
2
2
0
0
#
#
0
0
#
#
98
Papaverin 40mg
C
753
63
7
7
0
0
&
&
0
0
&
&
65
Piracetam 1200mg
C
85
1320
0
0
0
0
#
#
0
0
#
#
52
Piracetam 400mg
C
300
501.6
3
3
0
0
&
&
0
0
&
&
44
Piracetam 800mg
C
238
836
2
2
0
0
#
#
0
0
#
#
87
Piroxicam 10
C
843
75
8
8
0
0
&
&
0
0
&
&
127
Propanolol 10
C
330
57.9
3
3
0
0
&
&
0
0
&
&
74
PTU 100
C
291
299.6
2
2
0
0
#
#
0
0
#
#
59
Rifampisin 450mg
C
290
450
2
2
0
0
#
#
0
0
#
#
61
Rifampisin 600mg
C
172
703.2
1
1
0
0
#
#
0
0
#
#
80
Thiamphenicol 500
C
187
409.4
1
1
0
0
#
#
0
0
#
#
133
Vit B compleks
C
604
22.2
6
6
0
0
&
&
0
0
&
&
117
Vit B1 50mg
C
1224
23.88
12
12
12
12
*
*
12
12
*
*
107
Allopurinol tab 300mg
C
190
222.9
1
1
0
0
#
#
0
0
#
#
128
Amlodipin 10mg
C
130
141.2
1
1
0
0
#
#
0
0
#
#
142
Ampicillin 125 syr
C
4
2000
0
0
0
0
#
#
0
0
#
#
138
Ampicillin 250
C
40
238
0
0
0
0
#
#
0
0
#
#
140
Antasida DOEN los
C
291
30.53
2
2
0
0
#
#
0
0
#
#
113
Antasida DOEN syr
C
13
2643
0
0
0
0
#
#
0
0
#
#
92
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
131
Antihemoroid
C
7
2000
0
0
0
0
#
#
0
0
#
#
93
Betametason cr 1%
C
32
1800
0
0
0
0
#
#
0
0
#
#
90
Carbamazepin 200mg
C
250
246.5
2
2
0
0
#
#
0
0
#
#
125
Cefadroxil 125 syr
C
3
7230
0
0
0
0
#
#
0
0
#
#
139
Cefixime 50mg tab
C
165
55.26
1
1
0
0
#
#
0
0
#
#
116
Cefiximine 100mg syr
C
1
30250
0
0
0
0
#
#
0
0
#
#
143
C
5
1563
0
0
0
0
#
#
0
0
#
#
145
Chlorampenichol 1% ZM Chlorampenichol 125mg syr
C
2
3370
0
0
0
0
#
#
0
0
#
#
134
Chlorampenichol 250
C
82
150.1
0
0
0
0
#
#
0
0
#
#
103
Chlorampenichol 3% TT
C
44
1000
0
0
0
0
#
#
0
0
#
#
137
Ciproflaxacin 250
C
40
250
0
0
0
0
#
#
0
0
#
#
109
Clindamycin 150mg
C
50
752.8
0
0
0
0
#
#
0
0
#
#
158
Cotrimoxazol (pediatrik) Deksametason tab 0.5mg strip
C
12
49.86
0
0
0
0
#
#
0
0
#
#
C
130
38.54
1
1
0
0
#
#
0
0
#
#
C
6
2400
0
0
0
0
#
#
0
0
#
#
144
Dextrometorphan syr Dextrometorphan tab 15mg strip
C
70
99
0
0
0
0
#
#
0
0
#
#
148
Dimenhidrinat tab 50mg
C
60
84.5
0
0
0
0
#
#
0
0
#
#
88
Domperidon tab 10mg
C
156
403.6
1
1
0
0
#
#
0
0
#
#
101
Doxicycline
C
220
209
2
2
0
0
#
#
0
0
#
#
146
Erythromycin syrup
C
10
535
0
0
0
0
#
#
0
0
#
#
151
Famotidin 20
C
25
113.1
0
0
0
0
#
#
0
0
#
#
156
Ferrous Sulphate 300mg
C
50
21.86
0
0
0
0
#
#
0
0
#
#
94
Glimepiride 1mg
C
65
868.7
0
0
0
0
#
#
0
0
#
#
149 130
93
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
Haloperidol tab 1.5mg
C
315
82.58
3
3
0
0
#
#
0
0
#
#
150
HCT 50
C
100
35
1
1
0
0
#
#
0
0
#
#
132
Ibuprofen tab 200mg
C
184
73.36
1
1
0
0
#
#
0
0
#
#
155
INH 100mg
C
60
25
0
0
0
0
#
#
0
0
#
#
121
Ketoprofen tab 100mg
C
20
1228
0
0
0
0
#
#
0
0
#
#
126
Ketoprofen tab 50mg
C
30
704
0
0
0
0
#
#
0
0
#
#
84
Levofloxacin 500mg
C
60
1154
0
0
0
0
#
#
0
0
#
#
152
Loperamid 2mg
C
20
91.55
0
0
0
0
#
#
0
0
#
#
91
Loratadin 10mg
C
180
333.1
1
1
0
0
#
#
0
0
#
#
135
Metoclorampenichol 250
C
144
76.3
1
1
0
0
#
#
0
0
#
#
154
Metronidazol 250mg
C
15
105
0
0
0
0
#
#
0
0
#
#
153
Propanolol 40
C
20
82.18
0
0
0
0
#
#
0
0
#
#
111
Pyrantel 125
C
239
149.9
2
2
0
0
#
#
0
0
#
#
100
Pyrazinamid 500mg
C
210
220
2
2
0
0
#
#
0
0
#
#
108
Rifampisin 300mg
C
116
350
1
1
0
0
#
#
0
0
#
#
122
Risperidon 2mg
C
10
2375
0
0
0
0
#
#
0
0
#
#
136
Spironolakton 100mg
C
10
1055
0
0
0
0
#
#
0
0
#
#
120
Spironolakton 25mg
C
75
346.4
0
0
0
0
#
#
0
0
#
#
141
Tetracylin 250
C
119
73
1
1
0
0
#
#
0
0
#
#
95
Tetracylin 500
C
128
409.4
1
1
0
0
#
#
0
0
#
#
147
Vit B6 25mg
C
287
18.57
2
2
0
0
#
#
0
0
#
#
157
Vit C 100mg
C
40
26.43
0
0
0
0
#
#
0
0
#
#
94
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Berikut ini hasil pengujian perhitungan biaya oleh program dan perhitungan biaya secara manual dengan biaya awal Rp 30.000.000,00. Tabel 4.6 Tabel hasil pengujian validitas perhitungan biaya Manual Rekomendasi 1 Total Investasi Selisih Rekomendasi 2 Total Investasi Selisih Rekomendasi 3 Selisih < Rp 1.000.000,00 Total Investasi Selisih Selisih < Rp 500.000,00 Total Investasi Selisih Analisa :
Program
Rp36,259,287.00 Rp36,259,287.00 -Rp6,259,287.00 -Rp6,259,287.00 Rp25,676,080.00 Rp29,003,560.00 Rp4,323,920.00 Rp4,323,920.00
Rp29,003,560.00 Rp29,003,560.00 Rp996,440.00 Rp996,440.00 Rp29,835,430.00 Rp29,835,430.00 Rp164,570.00 Rp164,570.00
Hasil pencarian rekomendasi dari hitungan manual dan sistem : Pada tabel 4.5 perbandingan hasil rekomendasi alternatif 1 antara perhitungan manual dan sistem menghasilkan jumlah pengadaan yang sama, begitu pula dengan hasil rekomendasi alternatif 2 dan hasil rekomendasi alternatif 3. Begitu pula dengan keterangan apakah item obat tersebut akan diadakan sekaligus atau tidak. Pada hasil rekomendasi 1, selisih yang dihasilkan negatif karena pada rekomendasi alternatif 1, semua jumlah pengadaan obat disesuaikan dengan pengadaan tahun lalu tanpa memperhatikan besar kecilnya pemakaian item obat dan mengabaikan metode just in time. Hasil yang sama juga ditunjukkan pada biaya pengadaan obat untuk setiap rekomendasi. Pada tabel 4.6, selisih antara biaya awal dengan total investasi pengadaan obat yang dihitung secara manual dan sistem menghasilkan nominal
95
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
yang sama. Data yang dianalisis oleh hitungan manual dan sistem sama persis, sehingga dapat ditarik kesimpulan bahwa SPPK Pengadaan Obat sudah valid. IV.2.2 Kelebihan Sistem Sistem dapat melakukan seluruh rangkaian proses pencarian rekomendasi mulai dari analisis Pareto ABC sampai perhitungan pengadaan barang dari data masukan pengguna. Sistem ini dapat mempermudah proses pengambilan keputusan tanpa harus memasukkan formula atau rumus seperti pada perhitungan dengan bantuan Excel. Pada proses mencari rekomendasi, sistem dapat memberikan tiga alternatif rekomendasi, salah satunya rekomendasi alternatif 3 yaitu dengan menggunakan metode just in time dan memaksimalkan jumlah pengadaan sesuai dengan alokasi biaya yang dimasukkan oleh user. Dalam rekomendasi ini sistem dapat menentukan obat mana saja yang harus dimaksimalkan jumlah pengadaannya sesuai dengan beberapa pertimbangan yaitu hasil analisis Pareto ABC dan jumlah pemakaiannya pada periode tertentu. IV.2.3 Pengujian Pengguna Pengujian pengguna sistem dilakukan dengan pemberian koesioner tentang sistem kepada Bapak Ipang Djunarko selaku pengguna sistem. Dari hasil pengujian tersebut dapat disimpulkan bahwa sistem yang dibuat sesuai dengan kebutuhan di apotek. Selanjutnya, Analisis Pareto ABC yang diimplementasikan ke dalam sistem sudah sesuai dengan konsep dasar Analisis Pareto ABC. Sistem juga sudah dapat membantu mendukung keputusan pengadaan obat di Apotek. Dari segi perancangan, sistem mudah digunakan dan mudah dimengerti, serta perancangan tampilan cukup menarik dan nyaman dipakai. Berikut ini merupakan
96
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
hasil pengujiannya : Tabel 4.7 Hasil Pengujian Pengguna No. Pernyataan SS 1. Sistem yang dibuat sesuai kebutuhan di √ Apotek 2. Analisis Pareto ABC yang diimplementasikan pada sistem sudah sesuai dengan konsep dasar Analisis Pareto ABC 3. Sistem ini dapat membantu mendukung √ keputusan pengadaan obat di Apotek 4. Langkah-langkah dalam penggunaan √ sistem mudah dimengerti 5. Perancangan tampilan menarik dan nyaman dipakai
97
S
√
√
R
TS
STS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
BAB V KESIMPULAN DAN SARAN V.1. Kesimpulan Beberapa kesimpulan yang dapat diperoleh sebagai hasil selama pembuatan Tugas Akhir ini : 1. Metode Analisis Pareto ABC telah berhasil diimplementasikan dan diujicobakan dengan menggunakan data pemakaian sediaan farmasi di Apotek Pendidikan Sanata Dharma tahun 2011. 2. Hasil pengujian validasi proses analisis Pareto ABC dan pencarian rekomendasi dengan membandingkan perhitungan manual dan sistem memiliki hasil yang sama. 3. Hasil pengujian pengguna antara lain sistem yang dibuat sesuai dengan kebutuhan dan hasil rekomendasinya mampu mendukung pengambilan keputusan pengadaan obat di apotek. V.2. Saran Saran yang diperlukan untuk pengembangan program lebih lanjut adalah : 1. Sistem bisa membedakan pengadaan obat dengan bentuk yang bervariasi seperti cream dan syrup tidak hanya terbatas pada tablet atau strip saja, sehingga rekomendasi yang dihasilkan akan lebih baik lagi. 2. Sistem ditambah fasilitas yang memungkinkan user untuk mengubah model rekomendasi pengadaan obat.
98
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR PUSTAKA Connolly, T and Begg, C. (2010), Database Systems : A Practical Approach to Design, Implementation, and Management 5th edition, Addison-Wesley Drug and Therapeutics Comittees (2003), Analysis of Aggregate Medicine Use Data, A Practical Guide Dwiningsih, N. (2009), Manajemen Persediaan, Modul Kuliah Bab 9 www.stekpi.ac.id diakses tanggal 30 Januari 2012
Harjono, Tri (2011), Evaluasi Pengadaan Narkotika dan Psikotropika Di Apotek-Apotek
Kabupaten
Bantul
Periode
Januari
–
Juni
2010
Menggunakan Analisis Pareto ABC dan Moving Average Total, Skripsi, Universitas Sanata Dharma, Yogyakarta
Oakland, John S (2008), Statistical Process Control, Elsevier Linacre House, Jordan Hill, Oxford
Peraturan Pemerintah Republik Indonesia (2009), Peraturan Pemerintah Republik Indonesia No.51 Tahun 2009 Tentang Pekerjan Kefarmasian, www.depkes.go.id, diakses tanggal 30 Januari 2012 Quick, J.D., Hume, M.L., Rankin, J.R., O’Connor, R.M.L, O’Connor, R.W (1997), Managing Drug Supply,ManagementSciences for Health, 7th printing, Boston, Massachussets, pp.633 Turban, Efraim (1995), Decision Support and Expert System : Management Support Systems, Fourth Edition,Prentice-Hall, Inc.,United State. Whitten, Jeffrey L (2004), System Analysis ang Design Methods 6th edition, McGraw Hill, New York
99
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Wild, Tony (1997), Best Practice in Inventory Management, Woodhead Publishing, Canada Zulfikarijah, Fien (2005), Manajemen Persediaan,Penerbit Universitas Muhammadiyah Malang , Malang, pp.5 _________(2005), What Are the Benefits of Pareto Analysis ? www.ehow.com diakses tanggal 7 Juli 2012 Schroeder, Roger G. (1989), Manajemen Operasi Pengambilan Keputusan dalam Fungsi Operasi Edisi 3, Penerbit Erlangga, Jakarta.
100
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
LAMPIRAN Lampiran 1 Narasi Use-case 1.1 Use-case Input Data Pemakaian Sediaan Nama Use-case : ID Usecase : Prioritas : Pelaku bisnis utama : Deskripsi : Kondisi awal : Pemicu : Urutan aktifitas normal :
Aktifitas alternatif :
Kesimpulan : Kondisi akhir : Prosedur bisnis :
Input data pemakaian sediaan PAR-01 Tinggi Apoteker
Jenis use-case Kebutuhan operasional
Use-case ini menggambarkan proses menginputkan data pemakaian sediaan ke dalam sistem. Apoteker telah masuk ke halaman utama sistem. Use-case ini digunakan apabila user ingin melakukan analisis Pareto ABC dan mencari rekomendasi. Aksi aktor Tanggapan sistem Langkah 1 : User menekan tombol Langkah 2 : menu “Input Data” Sistem menampilkan halaman Input Data Langkah 3 : User menekan tombol menu “Input File” Langkah 4 : Sistem menampilkan halaman Input File Langkah 5 : User menekan tombol “Browse” Langkah 6 : Sistem membuka halaman Browse (file selector) Langkah 7 : User memilih file data yang akan digunakan, Langkah 8 : kemudian meneken Sistem menampilkan data tombol “Open” masukan Langkah 9 : Langkah 10: User menekan tombol Sistem menyimpan data ke “Simpan” dalam database. Langkah11: Sistem menampilkan pesan bahwa data berhasil disimpan dalam database. Aksi aktor Langkah Alternatif 3 : User menekan tombol “Halaman Utama” Langkah Alternatif 5 : User menekan tombol “Cancel”
Tanggapan sistem Langkah Alternatif 4 : Sistem menampilkan Halaman Utama.
Langkah Alternatif 6 : Sistem kembali menampilkan Halaman Input File Dalam use-case ini user telah memasukan data yang dibutuhkan sistem dalam analisis Pareto ABC. Sistem berhasil menyimpan masukan data dari user. User harus memasukkan data dengan benar
101
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Batasan implementasi dan spesifikasi :
Data yang diinputkan harus sesuai format yaitu .xls atau .xlsx
1.2 Use-case Input Alokasi Biaya Nama Use-case : ID Usecase : Prioritas : Pelaku bisnis utama : Deskripsi : Kondisi awal : Pemicu : Urutan aktifitas normal :
Aktifitas alternatif :
Kesimpulan : Kondisi akhir : Prosedur bisnis : Batasan implementasi dan spesifikasi :
Input alokasi biaya
Jenis use-case Kebutuhan operasional
PAR-02 Tinggi Apoteker Use-case ini menggambarkan proses menginputkan jumlah biaya yang disediakan ke dalam sistem Apoteker telah masuk ke halaman Input Data Use-case ini digunakan apabila user ingin melakukan analisis Pareto ABC dan mencari rekomendasi. Aksi aktor Tanggapan sistem Langkah 1 : User menekan tombol Langkah 2 : menu “Input Biaya” Sistem menampilkan halaman Input Biaya Langkah 3 : User memasukan alokasi biaya yang disediakan Langkah 4 : User menekan tombol Langkah 6 : “Simpan” Sistem menyimpan masukan biaya ke database Langkah 7 : Sistem menampilkan pesan bahwa biaya telah berhasil disimpan Aksi aktor Tanggapan sistem Langkah Alternatif 2 : Langkah Alternatif 3 : User menekan tombol Sistem menampilkan Halaman “Halaman Utama” Utama Dalam use-case ini user memasukkan alokasi biaya ke dalam sistem untuk pencarian rekomendasi. Sistem berhasil menyimpan masukan biaya dari user. User harus memasukkan data dengan benar Data yang diinputkan harus sesuai format
1.3 Use-case Input Skor Pareto Nama Use-case : ID Usecase : Prioritas : Pelaku bisnis utama : Deskripsi :
input skor Pareto
Jenis use-case Kebutuhan operasional
PAR-03 Tinggi Apoteker Use-case ini menggambarkan proses menginputkan skor
102
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kondisi awal : Pemicu : Urutan aktifitas normal :
Aktifitas alternatif :
Kesimpulan :
Kondisi akhir : Prosedur bisnis : Batasan implementasi dan spesifikasi :
pareto untuk setiap kelas ke dalam sistem Apoteker telah masuk ke halaman Input Data Use-case ini digunakan apabila user ingin melakukan analisis Pareto ABC dan mencari rekomendasi. Aksi aktor Tanggapan sistem Langkah 1 : User menekan tombol menu “Input Skor Pareto” Langkah 2 : Sistem menampilkan halaman Input Skor Pareto Langkah 3 : User memasukan skor Pareto ke dalam tabel Langkah 4 : User menekan tombol Langkah 5 : “Simpan” Sistem menyimpan masukan skor Pareto ke dalam database Langkah 6 : Sistem menampilkan pesan bahwa data skor Pareto telah berhasil disimpan Aksi aktor Tanggapan sistem Langkah Alternatif 2 : Langkah Alternatif 3 : User menekan tombol Sistem menampilkan Halaman “Halaman Utama” Utama Dalam use-case ini user mendapatkan rekomendasi kelompok obat yang sesuai dengan kebutuhan apotek mereka berdasarkan data pemakaian sediaan. Data skor Pareto berhasil disimpan oleh sistem User harus memasukkan data dengan benar Data yang diinputkan harus sesuai format
1.4 Use-case Analisis Pareto ABC Nama Use-case : ID Usecase : Prioritas : Pelaku bisnis utama : Deskripsi : Kondisi awal : Pemicu : Urutan aktifitas normal :
Analisis Nilai Pakai
Jenis use-case Kebutuhan operasional
PAR-04 Tinggi Apoteker Use-case ini menggambarkan proses analisis nilai pakai, nilai investasi, dan nilai indeks kritis oleh sistem User berada pada halaman utama sistem Use-case ini digunakan apabila user ingin mendapatkan hasil analisis nilai pakai Aksi aktor Tanggapan sistem Langkah 1 : User menekan tombol Langkah 2 : menu “Analisis Pareto Sistem menampilkan halaman ABC” Analisis Pareto ABC Langkah 3 : User menekan tombol Langkah 4 : “Nilai Pakai” Sistem melakukan proses
103
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Langkah 7 : User menekan tombol “Nilai Investasi”
Langkah 11 : User menekan tombol “Nilai Indeks Kritis”
Aktifitas alternatif :
Kesimpulan : Kondisi akhir : Prosedur bisnis : Batasan implementasi dan spesifikasi :
analisis nilai pakai Langkah 5: Sistem menampilkan hasil analisis nilai pakai ke dalam JTable Langkah 6 : Sistem menampilkan pesan bahwa hasil analisis telah ditampilkan Langkah 8 : Sistem melakukan proses analisis nilai investasi Langkah 9: Sistem menampilkan hasil analisis nilai investasi ke dalam JTable Langkah 10 : Sistem menampilkan pesan bahwa hasil analisis telah ditampilkan
Langkah 12 : Sistem melakukan proses analisis nilai indeks kritis Langkah 13: Sistem menampilkan hasil analisis nilai indeks kritis ke dalam JTable Langkah 14 : Sistem menampilkan pesan bahwa hasil analisis telah ditampilkan Aksi aktor Tanggapan sistem Langkah Alternatif7 : Langkah Alternatif 8 : User menekan tombol Sistem menampilkan grafik “Lihat Grafik” hasil analisis Langkah Alternatif 7 : Langkah Alternatif 8: User menekan tombol Sistem menjalankan fungsi “Cetak” cetak hasil analisis Dalam use-case ini user mendapatkan hasil analisis nilai pakai dari sistem Sistem dapat menampilkan hasil analisis nilai pakai User harus melakukan analisis sesuai dengan langkah yang ditentukan. Analisis harus dilakukan secara urut
1.5 Use-case Mencari Rekomendasi Pengadaan Obat Nama Use-case :
Mencari rekomendasi pengadaan obat
104
Jenis use-case Kebutuhan operasional
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ID Usecase : Prioritas : Pelaku bisnis utama : Deskripsi : Kondisi awal : Pemicu : Urutan aktifitas normal :
Aktifitas alternatif :
PAR-05 Tinggi Apoteker Use-case ini menggambarkan proses pencarian rekomendasi oleh sistem User berada pada halaman utama Use-case ini digunakan apabila user ingin mendapatkan hasil rekomendasi Aksi aktor Tanggapan sistem Langkah 1 : User menekan tombol Langkah 2: menu “Cari Rekomendasi” Sistem menampilkan halaman Cari Rekomendasi Langkah 3 : User menekan tombol “Rekomendasi 1” Langkah 4: Sistem melakukan perhitungan untuk rekomendasi 1 Langkah 5: Sistem menampilkan hasil perhitungan rekomendasi 1 ke JTable Langkah 7 : Langkah 6: User menekan tombol Sistem menampilkan pesan “Rekomendasi 2” sukses Langkah 8 : Sistem melakukan perhitungan untuk rekomendasi 2 Langkah 10 : Langkah 9 : User menekan tombol Sistem menampilkan hasil “Rekomendasi 3” perhitungan rekomendasi 2 ke JTable Rekomendasi 12 : Langkah 11 : User memasukkan batas Sistem menampilkan pesan maksimum selisih input maksimum selisih biaya awal dan total investasi. Langkah 12 : Sistem menyimpan masukan dan melakukan perhitungan Langkah 14 : User menekan tombol untuk rekomendasi sistem “Halaman Utama” Langkah 13 : Sistem menampilkan hasil perhitungan rekomendasi sistem Aksi aktor Tanggapan sistem Langkah Alternatif 7 : Langkah Alternatif 8 : User menekan tombol Sistem menjalankan fungsi “Modifikasi Pengadaan” modifikasi jumlah pengadaan obat Langkah Alternatif 7: User menekan tombol Langkah Alternatif 8: “Cetak” Sistem menjalankan fungsi cetak hasil rekomendasi.
105
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Kesimpulan : Kondisi akhir : Prosedur bisnis : Batasan implementasi dan spesifikasi :
Dalam use-case ini user mendapatkan hasil rekomendasi pengadaan obat Sistem dapat menampilkan rekomendasi User harus melakukan analisis Pareto ABC terlebih dahulu. User harus memasukan batas maksimum selisih sesuai format
Lampiran 2 Diagram Aktivitas 2.1 Diagram Aktivitas Input Data Pemakaian Sediaan User
Sistem
Awal Tekan tombol “Input Data”
Menampilkan halaman Input Data
Tekan tombol “Input File”
Menampilkan halaman Input File
Tekan tombol “Browse”
Tekan tombol “Open”
Menampilkan halaman Browse (JFileChooser) Membaca file Tidak sesuai
Menampilkan pesan format tidak sesuai
sesuai
Menampilkan isi file ke JTable Tekan tombol “Simpan”
Menyimpan data ke database Menampilkan pesan data berhasil disimpan
Akhir
Gambar 2.1 Diagram Aktivitas Input Data Pemakaian Sediaan
2.2 Diagram Aktivitas Input Alokasi Biaya User
Sistem
Awal Tekan tombol “Input Biaya”
Menampilkan halaman Input Biaya
Masukan alokasi biaya Tekan tombol “Simpan”
Menyimpan masukan biaya ke database Menampilkan pesan data berhasil disimpan Akhir
Gambar 2.2 Diagram Aktivitas Input Alokasi Biaya
106
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.3 Diagram Aktivitas Input Skor Pareto User Awal
Sistem
Tekan tombol “Input Skor Pareto”
Menampilkan halaman Input Skor
Masukan skor Pareto Tekan tombol “Simpan”
Menyimpan masukan biaya ke database Menampilkan pesan data berhasil disimpan Akhir
Gambar 2.3 Diagram Aktivitas Input Skor Pareto
2.4 Diagram Aktivitas Analisis Pareto ABC User
Sistem
Awal Tekan tombol “Analisis Pareto ABC”
Menampilkan halaman Analisis
Melakukan proses analisis nilai pakai
Tekan tombol “Nilai Pakai”
Menampilkan hasil analisis nilai pakai ke JTable
Tekan tombol “Nilai Investasi”
Melakukan proses analisis nilai investasi Menampilkan hasil analisis nilai investasi Ke JTable
Tekan tombol “Nilai Indeks Kritis”
Melakukan proses analisis nilai indeks kritis Menampilkan hasil analisis nilai indeks kritis ke JTable Akhir
Gambar 2.4 Diagram Aktivitas Input Analisis Pareto ABC
107
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
2.5 Diagram Aktivitas Mencari Rekomendasi Pengadaan Obat User
Sistem
Awal Tekan tombol “Cari Rekomendasi”
Menampilkan halaman Rekomendasi
Tekan tombol “Rekomendasi 1”
Melakukan proses hitung untuk rekomendasi 1 Menampilkan hasil rekomendasi1 ke JTable Melakukan proses hitung untuk rekomendasi 2
Tekan tombol “Rekomendasi 2”
Menampilkan hasil rekomendasi 2 ke JTable
Menampilkan perintah masukan maksimum selisih biaya awal dengan total investasi
Tekan tombol “Rekomendasi 3”
Melakukan proses hitung rekomendasi 3
Tekan tombol “Rekomendasi 3”
Menampilkan hasil rekomendasi 3 ke JTable
Gambar 2.5 Diagram Aktivitas Mencari Rekomendasi Pengadaan Obat
Lampiran 3 Data Pemakaian Sediaan Farmasi Tahun 2011 No.
Nama Obat
1
Amoxycillin 500
2
Kalium diklofenak 50mg
3
Lincomycin 500
4
Asam Mefenamat 500mg
5
Jumlah
Harga
pemakaian (butir)
satuan (Rp)
19075
370
1108
2584
2580
650
11670
131.95
Simvastatin 10mg
2768
513
6
Captopril 25mg
9315
137.75
7
Acyclovir cr 5%
403
3000
8
Methylpredinisolone 4mg
1776
509.25
9
Paracetamol 500mg strip
8428
105
10
Vit B1 100mg
7153
98.88
108
Akhir
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
11
Ciproflaxacin 500
2604
265
12
Bisoprolol tab 5mg
297
2321.67
13
Ampicillin 500
1656
370
14
Aminophylin 200mg
9020
65
15
Ketokonazol cr 2%
16
Glimepiride 2mg
17
Glibenclamide
18
83
7000
340
1638.04
9255
60
Amoxycillin 125mg syr
160
3400
19
Co Amoxyclav 625mg
112
4840
20
Ketokonazol tab 200mg
1391
372
21
Cefadroxil 500
704
700
22
meloxicam 7.5mg
523
940.5
23
Miconazole Cr
159
3000
24
Cefixime 100mg tab
199
2394.6
25
Cetirizine
1506
313.5
26
Paracetamol syr
271
1725
27
Lanzoprazol 30mg
277
1672
28
Metformin 500mg
3100
149
29
Prednison 5
9835
40
30
Spiramycin 500mg
581
625.42
31
Hidrocortison cr 2.5%
146
2484.5
32
Captopril 12.5mg
4913
70.9
33
Allopurinol tab 100mg
2901
120
34
Nifedipin
3050
107.85
35
Meloxicam 15mg
222
1410.76
36
Gemfibrozil 300mg
1146
265.64
37
Acyclovir 400mg
460
571.33
38
Natrium Diclofenac 50
1197
217.68
39
Tanitidin 150mg
1285
200
40
Methylpredinisolone 16mg
191
1341.09
41
Codein 10mg
651
388.44
42
Glyceril Guaicolas 100mg
9671
23.24
43
Betahistin
220
924
44
Piracetam 800mg
238
836
45
Ibuprofen tab 400mg
1228
147.51
46
Deksametason tab 0.5mg los
4694
38.54
47
Natrium Diclofenac 25
1048
167.68
48
Clobazam
180
950
49
Trisulfa
789
215.6
50
Acyclovir 200mg
414
388.18
51
Antalgin 500mg strip
590
260
52
Piracetam 400mg
300
501.6
53
Haloperidol tab 5mg
1227
122.29
109
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Diltiazem tab 30mg
929
151.63
55
Amoxycillin 250
591
238
56
Phenobarbital 30mg
4494
31
57
Calcium laktate
3527
39.33
58
Gentamycin 0.1% ZK
80
1650
59
Rifampisin 450mg
290
450
60
Ethambutol tab 250mg
230
534.99
61
Rifampisin 600mg
172
703.15
62
Clindamycin 300mg
160
752.75
63
Kalium diklofenak 25mg
300
390.84
64
Omeprazol 20mg
275
408.33
65
Piracetam 1200mg
85
1320
66
Erythromycin 250
328
337.82
67
Piroxicam 20
1032
105
68
Ofloxacin 200
173
590.1
69
Salbutamol 4mg
1045
97.49
70
Dextrometorphan tab 15mg los
1009
99
71
Paracetamol 500mg los
2101
45.5
72
CTM 4mg
5270
17.16
73
Amitriptylin 25
963
92.1
74
PTU 100
291
299.57
75
Cotrimaxazol suspensi
12
7230
76
Salbutamol 2mg
974
84.03
77
Ambroxol syr
31
2584
78
Trihexyphenidyl 2mg
1955
40.77
79
Ofloxacin 400
90
873
80
Thiamphenicol 500
187
409.44
81
Gliquidon tab 30mg
130
586.63
82
Captopril 50mg
330
224.38
83
Clonidin 0.15
340
205
84
Levofloxacin 500mg
60
1153.68
85
Metronidazol 500mg
499
135
86
Antasida DOEN strip
701
91.17
87
Piroxicam 10
843
75
88
Domperidon tab 10mg
156
403.62
89
Vit B12 50mcg
5004
12.36
90
Carbamazepin 200mg
250
246.45
91
Loratadin 10mg
180
333.08
92
Isosorbid dinitrat 5mg
915
65.24
93
Betametason cr 1%
32
1800
94
Glimepiride 1mg
65
868.66
95
Tetracylin 500
128
409.44
96
Digoxin tab 0.25mg
617
83.21
110
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
97
INH 300mg
760
66.14
98
Papaverin 40mg
753
63
99
HCT 25
1876
24.64
100
Pyrazinamid 500mg
210
220
101
Doxicycline
220
209.04
102
Amlodipin 5mg
570
80.67
103
Chlorampenichol 3% TT
44
1000
104
Methylergometrin
400
109.96
105
Ephedrin HCl
2119
20.74
106
Furosemid tab 40mg
670
65.42
107
Allopurinol tab 300mg
190
222.93
108
Rifampisin 300mg
116
350
109
Clindamycin 150mg
50
752.75
110
Griseofulvin tab 125mg
334
110.97
111
Pyrantel 125
239
149.87
112
Cotrimaxazol 480 (dewasa)
353
100
113
Antasida DOEN syr
13
2643
114
Extract Belladon
1762
17.89
115
Cimetidin
421
72.26
116
Cefiximine 100mg syr
1
30250
117
Vit B1 50mg
1224
23.88
118
Haloperidol tab 1.5mg
315
82.58
119
Vit B6 10mg
2598
10
120
Spironolakton 25mg
75
346.37
121
Ketoprofen tab 100mg
20
1227.6
122
Risperidon 2mg
10
2375
123
Ambroxol 30mg
1983
11.33
124
Diazepam tab 5mg
766
29
125
Cefadroxil 125 syr
126
Ketoprofen tab 50mg
127
3
7230
30
704
Propanolol 10
330
57.9
128
Amlodipin 10mg
130
141.17
129
Diazepam tab 2mg
766
19.8
130
Dextrometorphan syr
6
2400
131
Antihemoroid
7
2000
132
Ibuprofen tab 200mg
184
73.36
133
Vit B compleks
604
22.2
134
Chlorampenichol 250
82
150.05
135
Metoclorampenichol 250
144
76.3
136
Spironolakton 100mg
10
1054.96
137
Ciproflaxacin 250
40
250
138
Ampicillin 250
40
238
139
Cefixime 50mg tab
165
55.26
111
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
140
Antasida DOEN los
291
30.53
141
Tetracylin 250
119
73
142
Ampicillin 125 syr
4
2000
143
Chlorampenichol 1% ZM
5
1563
144
Dextrometorphan tab 15mg strip
145
Chlorampenichol 125mg syr
146
Erythromycin syrup
147
Vit B6 25mg
148
Dimenhidrinat tab 50mg
149
70
99
2
3370
10
534.99
287
18.57
60
84.5
Deksametason tab 0.5mg strip
130
38.54
150
HCT 50
100
35
151
Famotidin 20
25
113.1
152
Loperamid 2mg
20
91.55
153
Propanolol 40
20
82.18
154
Metronidazol 250mg
15
105
155
INH 100mg
60
25
156
Ferrous Sulphate 300mg
50
21.86
157
Vit C 100mg
40
26.43
158
Cotrimoxazol (pediatrik)
12
49.86
Lampiran 4 Listing Program homeForm.java package view; import java.util.Vector; /** * * @author ncel */ public class homeForm extends javax.swing.JFrame { //
private Vector link; List ob = new ArrayList(); /** Creates new form homeForm */ public homeForm(Vector link) { initComponents(); this.link = link; this.setLocationRelativeTo(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanelKampus = new javax.swing.JPanel(); jLabelYog = new javax.swing.JLabel(); jPanelMenu = new javax.swing.JPanel();
112
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonCariRekomendasi = new javax.swing.JButton(); jButtonInputData = new javax.swing.JButton(); jButtonAnalisisPareto = new javax.swing.JButton(); jButtonAbout = new javax.swing.JButton(); jButtonExit = new javax.swing.JButton(); jButtonHelp = new javax.swing.JButton(); jPanelJudul = new javax.swing.JPanel(); jLabelJudul1 = new javax.swing.JLabel(); jLabelJudul2 = new javax.swing.JLabel(); jPanelCopy = new javax.swing.JPanel(); jLabelCopy = new javax.swing.JLabel(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Home"); setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); jPanelKampus.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jLabelYog.setFont(new java.awt.Font("Arial", 0, 14)); jLabelYog.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelYog.setIcon(new javax.swing.ImageIcon(getClass().getResource("/zcoll/img/homeImageMini.jp g"))); // NOI18N javax.swing.GroupLayout jPanelKampusLayout = new javax.swing.GroupLayout(jPanelKampus); jPanelKampus.setLayout(jPanelKampusLayout); jPanelKampusLayout.setHorizontalGroup( jPanelKampusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanelKampusLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabelYog, javax.swing.GroupLayout.DEFAULT_SIZE, 484, Short.MAX_VALUE) .addContainerGap()) ); jPanelKampusLayout.setVerticalGroup( jPanelKampusLayout.createParallelGroup(javax.swing.GroupLayout.Alignment. LEADING) .addGroup(jPanelKampusLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabelYog, javax.swing.GroupLayout.PREFERRED_SIZE, 332, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(56, Short.MAX_VALUE)) ); jPanelMenu.setBorder(javax.swing.BorderFactory.createTitledBorder("")); jButtonCariRekomendasi.setText("Cari Rekomendasi"); jButtonCariRekomendasi.setToolTipText("langkah 3 : Mencari rekomendasi pengadaan obat."); jButtonCariRekomendasi.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCariRekomendasiActionPerformed(evt); } });
113
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonInputData.setText("Input Data"); jButtonInputData.setToolTipText("Langkah 1 : Input data untuk analisis."); jButtonInputData.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputDataActionPerformed(evt); } }); jButtonAnalisisPareto.setText("Analisis Pareto ABC"); jButtonAnalisisPareto.setToolTipText("Langkah 2 : Proses Analisis Pareto ABC"); jButtonAnalisisPareto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAnalisisParetoActionPerformed(evt); } }); jButtonAbout.setText("About"); jButtonAbout.setToolTipText("Melihat informasi tentang sistem."); jButtonAbout.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAboutActionPerformed(evt); } }); jButtonExit.setText("Exit"); jButtonExit.setToolTipText("Keluar dari sistem."); jButtonExit.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonExitActionPerformed(evt); } }); jButtonHelp.setText("Help"); jButtonHelp.setToolTipText("Petunjuk penggunaan sistem."); jButtonHelp.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonHelpActionPerformed(evt); } }); javax.swing.GroupLayout jPanelMenuLayout = new javax.swing.GroupLayout(jPanelMenu); jPanelMenu.setLayout(jPanelMenuLayout); jPanelMenuLayout.setHorizontalGroup( jPanelMenuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanelMenuLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelMenuLayout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanelMenuLayout.createParallelGroup(javax.swing.GroupLayout.Al ignment.TRAILING, false) .addComponent(jButtonAnalisisPareto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE,
114
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonCariRekomendasi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonInputData, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonHelp, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(jButtonAbout, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE) .addComponent(jButtonExit, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE)) .addContainerGap()) ); jPanelMenuLayout.setVerticalGroup( jPanelMenuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(jPanelMenuLayout.createSequentialGroup() .addContainerGap() .addComponent(jButtonInputData, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonAnalisisPareto, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonCariRekomendasi, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonHelp, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonAbout, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonExit, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(71, Short.MAX_VALUE)) ); jLabelJudul1.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelJudul1.setText("SISTEM PENDUKUNG PENGAMBILAN KEPUTUSAN PENGADAAN OBAT"); jLabelJudul2.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelJudul2.setText("Menggunakan Metode Analisis Pareto ABC"); javax.swing.GroupLayout jPanelJudulLayout = new javax.swing.GroupLayout(jPanelJudul);
115
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jPanelJudul.setLayout(jPanelJudulLayout); jPanelJudulLayout.setHorizontalGroup( jPanelJudulLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelJudulLayout.createSequentialGroup() .addContainerGap() .addGroup(jPanelJudulLayout.createParallelGroup(javax.swing.GroupLayout.A lignment.TRAILING) .addComponent(jLabelJudul2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 671, Short.MAX_VALUE) .addComponent(jLabelJudul1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanelJudulLayout.setVerticalGroup( jPanelJudulLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.L EADING) .addGroup(jPanelJudulLayout.createSequentialGroup() .addContainerGap() .addComponent(jLabelJudul1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabelJudul2) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanelCopy.setBorder(javax.swing.BorderFactory.createTitledBorder("")); javax.swing.GroupLayout jPanelCopyLayout = new javax.swing.GroupLayout(jPanelCopy); jPanelCopy.setLayout(jPanelCopyLayout); jPanelCopyLayout.setHorizontalGroup( jPanelCopyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGap(0, 679, Short.MAX_VALUE) ); jPanelCopyLayout.setVerticalGroup( jPanelCopyLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGap(0, 11, Short.MAX_VALUE) ); jLabelCopy.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabelCopy.setText("Tugas Akhir Ancel 2012"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap()
116
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jPanelJudul, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jPanelKampus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(jPanelMenu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(jLabelCopy, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 691, Short.MAX_VALUE) .addComponent(jPanelCopy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanelJudul, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING, false) .addComponent(jPanelMenu, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanelKampus, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, 18) .addComponent(jLabelCopy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jPanelCopy, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); pack(); }// private void jButtonInputDataActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: inputFileXlsForm data = new inputFileXlsForm(link); data.setVisible(true); this.dispose(); }
117
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
private void jButtonCariRekomendasiActionPerformed(java.awt.event.ActionEvent evt) { rekomendasiSemuaForm cari = new rekomendasiSemuaForm(link); cari.setVisible(true); this.dispose(); } private void jButtonHelpActionPerformed(java.awt.event.ActionEvent evt) { helpForm help = new helpForm(link); help.setVisible(true); this.dispose(); } private void jButtonAboutActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here:\ aboutForm about = new aboutForm(link); about.setVisible(true); this.dispose(); } private void jButtonAnalisisParetoActionPerformed(java.awt.event.ActionEvent evt) { analisisForm analisis = new analisisForm(link); analisis.setVisible(true); this.dispose(); } private void jButtonExitActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: System.exit(0); } /** * @param args the command line arguments */ public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new homeForm(null).setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButtonAbout; private javax.swing.JButton jButtonAnalisisPareto; private javax.swing.JButton jButtonCariRekomendasi; private javax.swing.JButton jButtonExit; private javax.swing.JButton jButtonHelp; private javax.swing.JButton jButtonInputData; private javax.swing.JLabel jLabelCopy; private javax.swing.JLabel jLabelJudul1; private javax.swing.JLabel jLabelJudul2; private javax.swing.JLabel jLabelYog; private javax.swing.JPanel jPanelCopy; private javax.swing.JPanel jPanelJudul; private javax.swing.JPanel jPanelKampus; private javax.swing.JPanel jPanelMenu; // End of variables declaration }
118
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
inputFileForm.java package view; import java.util.Vector; import javax.swing.JFileChooser; import javax.swing.table.DefaultTableModel; import entityNcontroller.*; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.LinkedList; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.TableModel; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** *^ * @author ncel */ public class inputFileXlsForm extends javax.swing.JFrame { private Vector link; private DefaultTableModel dtm; private Obat obt[]; private static File f = null; String[][] data; String[] kolom; static LinkedList namaKolom; static DefaultTableModel tableModel = null; /** Creates new form createTreeForm */ public inputFileXlsForm(Vector link) { initComponents(); this.link = link; this.setLocationRelativeTo(this); } public static void setF(File aF) { f = aF; } public DefaultTableModel getTableModel() { return tableModel; } public void setTableModel(DefaultTableModel tableModel) { inputFileXlsForm.tableModel = tableModel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jButtonBrowse = new javax.swing.JButton(); jTextFieldBrowse = new javax.swing.JTextField();
119
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jLabelJudul = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); jTableTampilFile = new javax.swing.JTable(); jButtonSaveFileToDB = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jButtonInputSkor = new javax.swing.JButton(); jButtonInputBiaya = new javax.swing.JButton(); jButtonInputFile = new javax.swing.JButton(); jButtonBack1 = new javax.swing.JButton(); jLabelJudul1 = new javax.swing.JLabel(); jmlData = new javax.swing.JTextField(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE) ; setTitle("Input Data"); jButtonBrowse.setText("Browse"); jButtonBrowse.setToolTipText("Mencari lokasi file .xls atau .xlsx."); jButtonBrowse.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButtonBrowseMouseClicked(evt); } }); jButtonBrowse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBrowseActionPerformed(evt); } }); jTextFieldBrowse.setToolTipText("lokasi file .csv"); jTextFieldBrowse.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldBrowseActionPerformed(evt); } }); jLabelJudul.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelJudul.setText("INPUT FILE"); jTableTampilFile.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan" } )); jScrollPane2.setViewportView(jTableTampilFile); jButtonSaveFileToDB.setText("Simpan"); jButtonSaveFileToDB.setToolTipText("Menyimpan file ke dalam database."); jButtonSaveFileToDB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSaveFileToDBActionPerformed(evt); } });
120
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonInputSkor.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonInputSkor.setText("Input Skor"); jButtonInputSkor.setToolTipText("Langkah 3 : Masukan skor Pareto."); jButtonInputSkor.setEnabled(false); jButtonInputSkor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputSkorActionPerformed(evt); } }); jButtonInputBiaya.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonInputBiaya.setText("Input Biaya"); jButtonInputBiaya.setToolTipText("Langkah 2 : Masukan alokasi biaya."); jButtonInputBiaya.setEnabled(false); jButtonInputBiaya.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputBiayaActionPerformed(evt); } }); jButtonInputFile.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonInputFile.setText("Input File"); jButtonInputFile.setToolTipText("Langkah 1 : Masukan file .xls atau .xlsx."); jButtonInputFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputFileActionPerformed(evt); } }); jButtonBack1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonBack1.setText("Halaman Utama"); jButtonBack1.setToolTipText("Kembali ke halaman utama."); jButtonBack1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBack1ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jButtonInputFile, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE)
121
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(jButtonInputBiaya, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addComponent(jButtonInputSkor, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addComponent(jButtonBack1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButtonInputFile) .addGap(18, 18, 18) .addComponent(jButtonInputBiaya) .addGap(18, 18, 18) .addComponent(jButtonInputSkor) .addGap(18, 18, 18) .addComponent(jButtonBack1) .addContainerGap(55, Short.MAX_VALUE)) ); jLabelJudul1.setFont(new java.awt.Font("Cambria", 0, 12)); jLabelJudul1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelJudul1.setText("Jumlah Record :"); jmlData.setBackground(new java.awt.Color(240, 240, 240)); jmlData.setBorder(null); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jLabelJudul, javax.swing.GroupLayout.DEFAULT_SIZE, 497, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jTextFieldBrowse, javax.swing.GroupLayout.PREFERRED_SIZE, 412, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonBrowse)) .addGroup(layout.createSequentialGroup() .addComponent(jLabelJudul1, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jmlData, javax.swing.GroupLayout.PREFERRED_SIZE, 53, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 290, Short.MAX_VALUE)
122
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(jButtonSaveFileToDB)) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 494, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(jLabelJudul) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA SELINE) .addComponent(jTextFieldBrowse, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonBrowse)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 220, Short.MAX_VALUE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR AILING) .addComponent(jLabelJudul1) .addComponent(jmlData, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonSaveFileToDB)) .addContainerGap()) ); pack(); }// public void pilihFile(File f){ try{ Workbook workbook = Workbook.getWorkbook(f); //baca sheet pertama Sheet sheet1 = workbook.getSheet(0); //mendapatkan jumlah baris dan kolom int banyakKolom = sheet1.getColumns();
123
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
int banyakBaris = sheet1.getRows(); //deklarasi header tabel data = new String[banyakBaris][banyakKolom]; kolom = new String[banyakKolom]; ArrayList coba = new ArrayList(); namaKolom = new LinkedList(); /* ambil data */ for (int i = 0; i < banyakBaris; i++) { for (int j = 0; j < banyakKolom; j++) { Cell cell = sheet1.getCell(j, i); data[i][j] = cell.getContents(); System.out.println("data :"+data[i][j]);
//
coba.add(data[i][j]); } namaKolom.add(coba.clone()); System.out.println("urutan "+i+" "+coba); coba.clear(); System.out.println("crazy: "+namaKolom); } System.out.println("excel: "+data.length); System.out.println("jumlah baca excel: "+namaKolom.size());
//
/* tampilkan data */ setTableModel(new DefaultTableModel(data, kolom)); jTableTampilFile.setModel(getTableModel()); //menghitung jumlah record data yg ditampilkan dalam tabel int jumlah=0; for(int i=1;i
} private void jButtonBrowseActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileChooser = new JFileChooser(new File("..")); FileNameExtensionFilter filter = new FileNameExtensionFilter("MS Excel", "xls", "xlsx"); fileChooser.setFileFilter(filter); int returnValue = fileChooser.showOpenDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { jTextFieldBrowse.setText(" " + fileChooser.getSelectedFile().getPath()); setF(fileChooser.getSelectedFile()); pilihFile(f); } } private void jButtonBrowseMouseClicked(java.awt.event.MouseEvent evt) { // TODO add your handling code here: } private void jButtonSaveFileToDBActionPerformed(java.awt.event.ActionEvent evt) { try { Obat o = new Obat(); Connection hai = Obat.getConnection();
124
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Statement nenek = hai.createStatement(); String kris = "delete from master_data"; nenek.execute(kris); hai.close(); TableModel m = jTableTampilFile.getModel(); for (int baris = 0; baris <= m.getRowCount()-1; baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement Statement fandul = con.createStatement(); String yulian = "insert into master_data (kode_obat, nama_obat, jumlah_pakai, harga_satuan)" + "values ('"+ m.getValueAt(baris, 0)+"','"+m.getValueAt(baris, 1)+"',"+ m.getValueAt(baris, 2)+","+m.getValueAt(baris, 3)+")"; //execute statment fandul.execute(yulian); //close connection con.close(); jButtonInputBiaya.setEnabled(true); } JOptionPane.showMessageDialog(null,"File berhasil disimpan"); } catch (SQLException ex) { Logger.getLogger(inputFileXlsForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonInputSkorActionPerformed(java.awt.event.ActionEvent evt) { inputSkorForm hm = new inputSkorForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputBiayaActionPerformed(java.awt.event.ActionEvent evt) { inputBiayaForm hm = new inputBiayaForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputFileActionPerformed(java.awt.event.ActionEvent evt) { inputFileXlsForm hm = new inputFileXlsForm(link); hm.setVisible(true); this.dispose(); } private void jButtonBack1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: homeForm hm = new homeForm(link); hm.setVisible(true); this.dispose(); } private void jTextFieldBrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButtonBack1;
125
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
private javax.swing.JButton jButtonBrowse; private javax.swing.JButton jButtonInputBiaya; private javax.swing.JButton jButtonInputFile; private javax.swing.JButton jButtonInputSkor; private javax.swing.JButton jButtonSaveFileToDB; private javax.swing.JLabel jLabelJudul; private javax.swing.JLabel jLabelJudul1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable jTable1; private javax.swing.JTable jTableTampilFile; private javax.swing.JTextField jTextFieldBrowse; private javax.swing.JTextField jmlData; // End of variables declaration }
inputBiayaForm.java package view; import entityNcontroller.*; import java.sql.SQLException; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; /** *^ * @author ncel */ public class inputBiayaForm extends javax.swing.JFrame { private Vector link; /** Creates new form createTreeForm */ public inputBiayaForm(Vector link) { initComponents(); this.link = link; this.setLocationRelativeTo(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabelJudul1 = new javax.swing.JLabel(); jLabel1 = new javax.swing.JLabel(); jTextFieldInputBiaya = new javax.swing.JTextField(); jLabel2 = new javax.swing.JLabel(); jButtonSaveBiayaToDB = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jButtonInputSkor = new javax.swing.JButton(); jButtonInputBiaya = new javax.swing.JButton(); jButtonInputFile = new javax.swing.JButton(); jButtonBack = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE) ;
126
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
setTitle("Input Data"); jLabelJudul1.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul1.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelJudul1.setText("INPUT BIAYA"); jLabel1.setText("Masukan alokasi biaya yang tersedia :"); jLabel2.setText("contoh : 200000"); jButtonSaveBiayaToDB.setText("Simpan"); jButtonSaveBiayaToDB.setToolTipText("Klik di sini untuk menyimpan alokasi biaya."); jButtonSaveBiayaToDB.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSaveBiayaToDBActionPerformed(evt); } }); jButtonInputSkor.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonInputSkor.setText("Input Skor"); jButtonInputSkor.setToolTipText("Langkah 3 : Masukan skor Pareto."); jButtonInputSkor.setEnabled(false); jButtonInputSkor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputSkorActionPerformed(evt); } }); jButtonInputBiaya.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonInputBiaya.setText("Input Biaya"); jButtonInputBiaya.setToolTipText("Langkah 2 : Masukan alokasi biaya yang disediakan."); jButtonInputBiaya.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputBiayaActionPerformed(evt); } }); jButtonInputFile.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonInputFile.setText("Input File"); jButtonInputFile.setToolTipText("Langkah 1 : Masukan file .xls atau .xlsx yang akan diolah."); jButtonInputFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputFileActionPerformed(evt); } }); jButtonBack.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonBack.setText("Halaman Utama"); jButtonBack.setToolTipText("Kembali ke halaman utama."); jButtonBack.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBackActionPerformed(evt); }
127
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
}); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jButtonInputFile, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addComponent(jButtonInputBiaya, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addComponent(jButtonInputSkor, javax.swing.GroupLayout.DEFAULT_SIZE, 141, Short.MAX_VALUE) .addComponent(jButtonBack, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButtonInputFile) .addGap(18, 18, 18) .addComponent(jButtonInputBiaya) .addGap(18, 18, 18) .addComponent(jButtonInputSkor) .addGap(18, 18, 18) .addComponent(jButtonBack) .addContainerGap(53, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(layout.createSequentialGroup() .addComponent(jLabelJudul1, javax.swing.GroupLayout.DEFAULT_SIZE, 397, Short.MAX_VALUE)
128
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)) .addGroup(layout.createSequentialGroup() .addComponent(jTextFieldInputBiaya, javax.swing.GroupLayout.PREFERRED_SIZE, 282, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonSaveBiayaToDB))) .addGap(0, 0, 0)) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))) .addGroup(layout.createSequentialGroup() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR AILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jLabelJudul1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel1) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA SELINE) .addComponent(jTextFieldInputBiaya, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonSaveBiayaToDB)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jLabel2)) .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(121, Short.MAX_VALUE)) ); pack(); }// private void jButtonSaveBiayaToDBActionPerformed(java.awt.event.ActionEvent evt) { try { Biaya b = new Biaya(); b.simpanBiaya(Double.parseDouble(jTextFieldInputBiaya.getText()));
129
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonInputSkor.setEnabled(true); } catch (SQLException ex) { Logger.getLogger(inputBiayaForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonInputSkorActionPerformed(java.awt.event.ActionEvent evt) { inputSkorForm hm = new inputSkorForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputBiayaActionPerformed(java.awt.event.ActionEvent evt) { inputBiayaForm hm = new inputBiayaForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputFileActionPerformed(java.awt.event.ActionEvent evt) { inputFileForm hm = new inputFileForm(link); hm.setVisible(true); this.dispose(); } private void jButtonBackActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: homeForm hm = new homeForm(link); hm.setVisible(true); this.dispose(); } private void jTextFieldBrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButtonBack; private javax.swing.JButton jButtonInputBiaya; private javax.swing.JButton jButtonInputFile; private javax.swing.JButton jButtonInputSkor; private javax.swing.JButton jButtonSaveBiayaToDB; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabelJudul1; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable jTable1; private javax.swing.JTextField jTextFieldInputBiaya; // End of variables declaration }
inputSkorForm.java package view; import entityNcontroller.*; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; import javax.swing.table.TableModel;
130
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
/** *^ * @author ncel */ public class inputSkorForm extends javax.swing.JFrame { private Vector link; /** Creates new form createTreeForm */ public inputSkorForm(Vector link) { initComponents(); this.link = link; this.setLocationRelativeTo(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabelJudul2 = new javax.swing.JLabel(); jScrollPane3 = new javax.swing.JScrollPane(); jTableInputSkor = new javax.swing.JTable(); jButtonSaveSkorPareto = new javax.swing.JButton(); jPanel1 = new javax.swing.JPanel(); jButtonInputSkor = new javax.swing.JButton(); jButtonInputBiaya = new javax.swing.JButton(); jButtonInputFile = new javax.swing.JButton(); jButtonBack = new javax.swing.JButton(); jButtonDefault = new javax.swing.JButton(); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Id Player", "Field Goal", "3 Point", "Free Throw", "Offensive Rebountl", "Defensive Rebount", "Total Rebount", "Assist Per Gamesl", "Steal Per Games", "Block Per Games", "Point Per Games", "Turn Over", "Personal Foul", "Tinggi", "Berat", "Posisi" } )); jScrollPane1.setViewportView(jTable1); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE) ; setTitle("Input Data"); jLabelJudul2.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelJudul2.setText("INPUT SKOR PARETO"); jTableInputSkor.setFont(new java.awt.Font("Tahoma", 0, 14)); jTableInputSkor.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {"A", null, null}, {"B", null, null},
131
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
{"C", null, null} }, new String [] { "Kelas", "Skor Pareto Nilai Pakai", "Skor Pareto Nilai Investasi" } ) { boolean[] canEdit = new boolean [] { false, true, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane3.setViewportView(jTableInputSkor); jButtonSaveSkorPareto.setText("Simpan"); jButtonSaveSkorPareto.setToolTipText("Klik di sini untuk menyimpan skor."); jButtonSaveSkorPareto.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonSaveSkorParetoActionPerformed(evt); } }); jButtonInputSkor.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonInputSkor.setText("Input Skor"); jButtonInputSkor.setToolTipText("Langkah 3 : Masukan skor Pareto."); jButtonInputSkor.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputSkorActionPerformed(evt); } }); jButtonInputBiaya.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonInputBiaya.setText("Input Biaya"); jButtonInputBiaya.setToolTipText("Langkah 2 : Masukan alokasi biaya yang disediakan."); jButtonInputBiaya.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputBiayaActionPerformed(evt); } }); jButtonInputFile.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonInputFile.setText("Input File"); jButtonInputFile.setToolTipText("Langkah 1 : Masukan file .csv yang akan diolah."); jButtonInputFile.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonInputFileActionPerformed(evt); } }); jButtonBack.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonBack.setText("Halaman Utama"); jButtonBack.setToolTipText("Kembali ke halaman utama."); jButtonBack.addActionListener(new java.awt.event.ActionListener()
132
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
{ public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBackActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jButtonInputFile, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) .addComponent(jButtonInputBiaya, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) .addComponent(jButtonInputSkor, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE) .addComponent(jButtonBack, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)) .addContainerGap()) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButtonInputFile) .addGap(18, 18, 18) .addComponent(jButtonInputBiaya) .addGap(18, 18, 18) .addComponent(jButtonInputSkor) .addGap(18, 18, 18) .addComponent(jButtonBack) .addContainerGap(55, Short.MAX_VALUE)) ); jButtonDefault.setText("Default"); jButtonDefault.setToolTipText("Set default skor pareto"); jButtonDefault.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonDefaultActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR
133
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
AILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(jLabelJudul2, javax.swing.GroupLayout.DEFAULT_SIZE, 385, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(layout.createSequentialGroup() .addComponent(jButtonDefault) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButtonSaveSkorPareto)) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 319, javax.swing.GroupLayout.PREFERRED_SIZE))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(jLabelJudul2) .addGap(18, 18, 18) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA SELINE) .addComponent(jButtonSaveSkorPareto) .addComponent(jButtonDefault)))) .addContainerGap(116, Short.MAX_VALUE)) ); pack(); }// private void jButtonBackActionPerformed(java.awt.event.ActionEvent evt) { homeForm hm = new homeForm(link); hm.setVisible(true); this.dispose(); } private void jButtonSaveSkorParetoActionPerformed(java.awt.event.ActionEvent evt) { try {
134
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Obat o = new Obat(); Connection hai = Obat.getConnection(); Statement nenek = hai.createStatement(); String kris = "delete from skor"; nenek.execute(kris); hai.close(); TableModel m = jTableInputSkor.getModel(); for (int baris = 0; baris < m.getRowCount(); baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement Statement fandul = con.createStatement(); String yulian = "insert into skor (kelas, skor_paretonp, skor_paretoni)" + "values ('"+ m.getValueAt(baris, 0)+"',"+m.getValueAt(baris, 1)+","+m.getValueAt(baris, 2)+")"; //execute statment fandul.execute(yulian); //close connection con.close(); } JOptionPane.showMessageDialog(null,"Skor berhasil disimpan"); } catch (SQLException ex) { Logger.getLogger(inputSkorForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonInputSkorActionPerformed(java.awt.event.ActionEvent evt) { inputSkorForm hm = new inputSkorForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputBiayaActionPerformed(java.awt.event.ActionEvent evt) { inputBiayaForm hm = new inputBiayaForm(link); hm.setVisible(true); this.dispose(); } private void jButtonInputFileActionPerformed(java.awt.event.ActionEvent evt) { inputFileForm hm = new inputFileForm(link); hm.setVisible(true); this.dispose(); } private void jButtonDefaultActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: try { TableModel m = jTableInputSkor.getModel(); m.setValueAt(3, 0, 1);m.setValueAt(3, 0, 2); m.setValueAt(2, 1, 1);m.setValueAt(2, 1, 2); m.setValueAt(1, 2, 1);m.setValueAt(1, 2, 2); // try { Obat o = new Obat(); Connection hai = Obat.getConnection(); Statement nenek = hai.createStatement(); String kris = "delete from skor";
135
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
nenek.execute(kris); hai.close(); TableModel m = jTableInputSkor.getModel(); for (int baris = 0; baris < m.getRowCount(); baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement
//
Statement fandul = con.createStatement(); String yulian = "insert into skor (kelas, skor_paretonp, skor_paretoni)" + "values ('"+ m.getValueAt(baris, 0)+"',"+m.getValueAt(baris, 1)+","+m.getValueAt(baris, 2)+")"; //execute statment fandul.execute(yulian); //close connection con.close(); } JOptionPane.showMessageDialog(null,"Skor berhasil disimpan"); } catch (SQLException ex) { Logger.getLogger(inputSkorForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jTextFieldBrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButtonBack; private javax.swing.JButton jButtonDefault; private javax.swing.JButton jButtonInputBiaya; private javax.swing.JButton jButtonInputFile; private javax.swing.JButton jButtonInputSkor; private javax.swing.JButton jButtonSaveSkorPareto; private javax.swing.JLabel jLabelJudul2; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JTable jTable1; private javax.swing.JTable jTableInputSkor; // End of variables declaration }
analisisParetoForm.java package view; import import import import import import import import import import import import import import import
entityNcontroller.*; java.sql.Connection; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement; java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; java.util.Vector; java.util.logging.Level; java.util.logging.Logger; javax.swing.JOptionPane; javax.swing.table.TableModel; net.sf.jasperreports.engine.JRException;
136
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
import import import import
net.sf.jasperreports.engine.JasperFillManager; net.sf.jasperreports.engine.JasperPrint; net.sf.jasperreports.view.JasperViewer; org.jfree.ui.RefineryUtilities;
/** *^ * @author ncel */ public class analisisForm extends javax.swing.JFrame { private Vector link; /** Creates new form createTreeForm */ public analisisForm(Vector link) { initComponents(); this.link = link; this.setLocationRelativeTo(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jLabelJudul = new javax.swing.JLabel(); jPanel1 = new javax.swing.JPanel(); jButtonNIK = new javax.swing.JButton(); jButtonNilaiInvest = new javax.swing.JButton(); jButtonNilaiPakai = new javax.swing.JButton(); jButtonBack1 = new javax.swing.JButton(); jScrollPane2 = new javax.swing.JScrollPane(); jTableHasil = new javax.swing.JTable(); jButtonLihatGrafik = new javax.swing.JButton(); jButtonCetak = new javax.swing.JButton(); jLabel3 = new javax.swing.JLabel(); jTextFieldStepCount = new javax.swing.JTextField(); jLabel4 = new javax.swing.JLabel(); jButtonUbah = new javax.swing.JButton(); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Id Player", "Field Goal", "3 Point", "Free Throw", "Offensive Rebountl", "Defensive Rebount", "Total Rebount", "Assist Per Gamesl", "Steal Per Games", "Block Per Games", "Point Per Games", "Turn Over", "Personal Foul", "Tinggi", "Berat", "Posisi" } )); jScrollPane1.setViewportView(jTable1); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE) ; setTitle("Analisis Pareto ABC");
137
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jLabelJudul.setFont(new java.awt.Font("Aparajita", 1, 24)); jLabelJudul.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); jLabelJudul.setText("ANALISIS PARETO ABC"); jButtonNIK.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N jButtonNIK.setText("Nilai Indeks Kritis"); jButtonNIK.setToolTipText("Langkah 3 : Proses analisis nilai indeks kritis."); jButtonNIK.setEnabled(false); jButtonNIK.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonNIKActionPerformed(evt); } }); jButtonNilaiInvest.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonNilaiInvest.setText("Nilai Investasi"); jButtonNilaiInvest.setToolTipText("Langkah 2 : Proses analisis nilai investasi."); jButtonNilaiInvest.setEnabled(false); jButtonNilaiInvest.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonNilaiInvestActionPerformed(evt); } }); jButtonNilaiPakai.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonNilaiPakai.setText("Nilai Pakai"); jButtonNilaiPakai.setToolTipText("Langkah 1 : Proses analisis nilai pakai."); jButtonNilaiPakai.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonNilaiPakaiActionPerformed(evt); } }); jButtonBack1.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonBack1.setText("Halaman Utama"); jButtonBack1.setToolTipText("Klik di sini untuk kembali ke halaman utama."); jButtonBack1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBack1ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
138
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.TRAILING) .addComponent(jButtonNilaiPakai, javax.swing.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE) .addComponent(jButtonNilaiInvest, javax.swing.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE) .addComponent(jButtonNIK, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jButtonBack1, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) .addGap(8, 8, 8)))) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jButtonNilaiPakai) .addGap(18, 18, 18) .addComponent(jButtonNilaiInvest) .addGap(18, 18, 18) .addComponent(jButtonNIK) .addGap(18, 18, 18) .addComponent(jButtonBack1) .addGap(57, 57, 57)) ); jTableHasil.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Title 1", "Title 2", "Title 3", "Title 4" } )); jScrollPane2.setViewportView(jTableHasil); jButtonLihatGrafik.setFont(new java.awt.Font("Tahoma", 1, 12)); jButtonLihatGrafik.setText("Lihat Grafik"); jButtonLihatGrafik.setToolTipText("Klik di sini untuk melihat grafik hasil analisis."); jButtonLihatGrafik.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonLihatGrafikActionPerformed(evt); } }); jButtonCetak.setFont(new java.awt.Font("Tahoma", 1, 12)); jButtonCetak.setText("Cetak"); jButtonCetak.setToolTipText("Klik di sini untuk mencetak hasil analisis."); jButtonCetak.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCetakActionPerformed(evt); } });
139
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 14)); jLabel3.setText("Langkah"); jTextFieldStepCount.setBackground(new java.awt.Color(240, 240, 240)); jTextFieldStepCount.setFont(new java.awt.Font("Tahoma", 0, 14)); jTextFieldStepCount.setBorder(null); jLabel4.setFont(new java.awt.Font("Tahoma", 0, 14)); jLabel4.setText("dari 3"); jButtonUbah.setFont(new java.awt.Font("Tahoma", 1, 12)); jButtonUbah.setText("Ubah Konfigurasi Kelas"); jButtonUbah.setToolTipText("Klik di sini untuk melihat grafik hasil analisis."); jButtonUbah.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonUbahActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jLabelJudul, javax.swing.GroupLayout.DEFAULT_SIZE, 736, Short.MAX_VALUE) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 722, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTextFieldStepCount, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 212, Short.MAX_VALUE) .addComponent(jButtonUbah) .addGap(18, 18, 18) .addComponent(jButtonLihatGrafik,
140
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonCetak, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(196, 196, 196)))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 220, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(layout.createSequentialGroup() .addComponent(jLabelJudul) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR AILING) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA SELINE) .addComponent(jLabel3) .addComponent(jTextFieldStepCount, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel4)) .addContainerGap(29, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA SELINE) .addComponent(jButtonLihatGrafik) .addComponent(jButtonCetak) .addComponent(jButtonUbah)) .addContainerGap()))) ); pack(); }// private void jButtonNIKActionPerformed(java.awt.event.ActionEvent evt) { jTextFieldStepCount.setText("3"); try { AnalisisPareto pre = new AnalisisPareto(); List ob = new ArrayList(); pre.trans_nik(); pre.hitung_nik(); Connection con = Obat.getConnection();
141
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan,b.nik, b.kelas_pareto " + "from master_data a, hasil_nik b where a.kode_obat=b.kode_obat order by b.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableHasil.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][6]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("nik"); data[baris][5]=rs.getString("kelas_pareto"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); ob.add(obat); } jTableHasil.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "NIK", "Kelas Pareto"} ) ); con.close(); JOptionPane.showMessageDialog(null, "Data Selesai Dianalisis"); } catch (ClassNotFoundException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonNilaiInvestActionPerformed(java.awt.event.ActionEvent evt) { jTextFieldStepCount.setText("2"); try { AnalisisPareto pre = new AnalisisPareto(); List ob = new ArrayList(); pre.hitung_ni(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement();
142
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan," + "b.jumlah_investasi, b.persentase, b.persen_kumulatif, b.kelas_pareto " + "from master_data a, hasil_ni b where a.kode_obat=b.kode_obat;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableHasil.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][8]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("jumlah_investasi"); data[baris][5]=rs.getString("persentase"); data[baris][6]=rs.getString("persen_kumulatif"); data[baris][7]=rs.getString("kelas_pareto"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setTotalInvestasi(Double.parseDouble(rs.getString("jumlah_investasi" ))); obat.setPersen(Double.parseDouble(rs.getString("persentase"))); obat.setPersen_kumulatif(Double.parseDouble(rs.getString("persen_kumulati f"))); obat.setKelasPareto(rs.getString("kelas_pareto")); ob.add(obat); } jTableHasil.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Jumlah Investasi", "Persentase", "Persen. Kum.", "Kelas Pareto"} ) ); con.close(); jButtonNIK.setEnabled(true); JOptionPane.showMessageDialog(null, "Data Selesai Dianalisis"); } catch (ClassNotFoundException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); } }
143
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
private void jButtonNilaiPakaiActionPerformed(java.awt.event.ActionEvent evt) { jTextFieldStepCount.setText("1"); try { AnalisisPareto pre = new AnalisisPareto(); List ob = new ArrayList(); pre.hitung_np(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan," + "b.persentase, b.persen_kumulatif, b.kelas_pareto " + "from master_data a, hasil_np b where a.kode_obat=b.kode_obat;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableHasil.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][7]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("persentase"); data[baris][5]=rs.getString("persen_kumulatif"); data[baris][6]=rs.getString("kelas_pareto"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setPersen(Double.parseDouble(rs.getString("persentase"))); obat.setPersen_kumulatif(Double.parseDouble(rs.getString("persen_kumulati f"))); obat.setKelasPareto(rs.getString("kelas_pareto")); ob.add(obat); } jTableHasil.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Persentase", "Persen. Kum.", "Kelas Pareto"} ) ); con.close(); jButtonNilaiInvest.setEnabled(true); JOptionPane.showMessageDialog(null, "Data Selesai Dianalisis"); } catch (ClassNotFoundException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null,
144
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ex); } catch (SQLException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonBack1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: homeForm hm = new homeForm(link); hm.setVisible(true); this.dispose(); } private void jButtonLihatGrafikActionPerformed(java.awt.event.ActionEvent evt) { chart itemlabeldemo2 = new chart("Lihat Grafik"); itemlabeldemo2.pack(); RefineryUtilities.centerFrameOnScreen(itemlabeldemo2); itemlabeldemo2.setVisible(true); } private void jButtonCetakActionPerformed(java.awt.event.ActionEvent evt) { try { Connection kon = null; kon = Obat.getConnection(); Integer s = Integer.parseInt(jTextFieldStepCount.getText()); String reportSource; if(s == 1){ reportSource = "./Reports/report_np.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } else if (s == 2){ reportSource = "./Reports/report_ni.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } else if (s == 3){ reportSource = "./Reports/report_nik.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } // } catch (SQLException ex) { // Logger.getLogger(FormAnalisis.class.getName()).log(Level.SEVERE, null, ex); } catch (JRException ex) { Logger.getLogger(analisisForm.class.getName()).log(Level.SEVERE, null, ex); }
145
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} private void jButtonUbahActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: ubahKonfigurasiKP hm = new ubahKonfigurasiKP(link); hm.setVisible(true); this.dispose(); } private void jTextFieldBrowseActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButtonBack1; private javax.swing.JButton jButtonCetak; private javax.swing.JButton jButtonLihatGrafik; private javax.swing.JButton jButtonNIK; private javax.swing.JButton jButtonNilaiInvest; private javax.swing.JButton jButtonNilaiPakai; private javax.swing.JButton jButtonUbah; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabelJudul; private javax.swing.JPanel jPanel1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTable jTable1; private javax.swing.JTable jTableHasil; private javax.swing.JTextField jTextFieldStepCount; // End of variables declaration }
cariRekomendasiForm.java package view; import import import import import import import import import import import import import import import import import import
java.util.Vector; javax.swing.JOptionPane; entityNcontroller.*; java.sql.Connection; java.sql.ResultSet; java.sql.SQLException; java.sql.Statement; java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; java.util.logging.Level; java.util.logging.Logger; javax.swing.table.TableModel; net.sf.jasperreports.engine.JRException; net.sf.jasperreports.engine.JasperFillManager; net.sf.jasperreports.engine.JasperPrint; net.sf.jasperreports.view.JasperViewer;
/** *^ * @author ncel */ public class rekomendasiSemuaForm extends javax.swing.JFrame { private Vector link; /** Creates new form createTreeForm */ public rekomendasiSemuaForm(Vector link) { initComponents(); this.link = link;
146
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
this.setLocationRelativeTo(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTable1 = new javax.swing.JTable(); jPanel1 = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); jScrollPane4 = new javax.swing.JScrollPane(); jTableRek3 = new javax.swing.JTable(); jLabel10 = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jLabel12 = new javax.swing.JLabel(); jButtonModifRek3 = new javax.swing.JButton(); jButtonCetak3 = new javax.swing.JButton(); jTextFieldBiaya3 = new javax.swing.JTextField(); jTextFieldTotalInvest3 = new javax.swing.JTextField(); jTextFieldSelisih3 = new javax.swing.JTextField(); jPanel3 = new javax.swing.JPanel(); jButtonRekomendasi1 = new javax.swing.JButton(); jButtonRekomendasi2 = new javax.swing.JButton(); jButtonRekomendasi3 = new javax.swing.JButton(); jButtonBack1 = new javax.swing.JButton(); jPanel2 = new javax.swing.JPanel(); jScrollPane3 = new javax.swing.JScrollPane(); jTableRek2 = new javax.swing.JTable(); jLabel2 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); jButtonCetak2 = new javax.swing.JButton(); jButtonModifRek2 = new javax.swing.JButton(); jTextFieldBiaya2 = new javax.swing.JTextField(); jTextFieldTotalInvest2 = new javax.swing.JTextField(); jTextFieldSelisih2 = new javax.swing.JTextField(); jPanel4 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jScrollPane2 = new javax.swing.JScrollPane(); jTableRek1 = new javax.swing.JTable(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jButtonCetak1 = new javax.swing.JButton(); jButtonModifRek1 = new javax.swing.JButton(); jTextFieldBiaya1 = new javax.swing.JTextField(); jTextFieldTotalInvest1 = new javax.swing.JTextField(); jTextFieldSelisih1 = new javax.swing.JTextField(); jTable1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Id Player", "Field Goal", "3 Point", "Free Throw", "Offensive Rebountl", "Defensive Rebount", "Total Rebount", "Assist Per Gamesl", "Steal Per Games", "Block Per Games", "Point Per Games", "Turn Over", "Personal Foul", "Tinggi", "Berat", "Posisi"
147
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} )); jScrollPane1.setViewportView(jTable1); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE) ; setTitle("Cari Rekomendasi"); jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jLabel3.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel3.setText("Rekomendasi 3"); jTableRek3.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadaan Baru" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane4.setViewportView(jTableRek3); jLabel10.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel10.setText("Biaya Awal"); jLabel11.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel11.setText("Total Investasi"); jLabel12.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel12.setText("Selisih"); jButtonModifRek3.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jButtonModifRek3.setText("Modifikasi Pengadaan"); jButtonModifRek3.setToolTipText("Masukkan jumlah pengadaan baru terlebih dahulu."); jButtonModifRek3.setEnabled(false); jButtonModifRek3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonModifRek3ActionPerformed(evt); } }); jButtonCetak3.setFont(new java.awt.Font("Tahoma", 1, 12)); jButtonCetak3.setText("Cetak"); jButtonCetak3.setToolTipText("Mencetak hasil rekomendasi."); jButtonCetak3.setEnabled(false); jButtonCetak3.addActionListener(new java.awt.event.ActionListener() {
148
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCetak3ActionPerformed(evt); } }); jTextFieldBiaya3.setEditable(false); jTextFieldBiaya3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldBiaya3ActionPerformed(evt); } }); jTextFieldTotalInvest3.setEditable(false); jTextFieldSelisih3.setEditable(false); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 763, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel3) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jLabel11) .addComponent(jLabel12)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING, false) .addComponent(jTextFieldSelisih3) .addComponent(jTextFieldTotalInvest3) .addComponent(jTextFieldBiaya3, javax.swing.GroupLayout.DEFAULT_SIZE, 154, Short.MAX_VALUE)))) .addContainerGap(58, Short.MAX_VALUE)) .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 436, Short.MAX_VALUE) .addComponent(jButtonModifRek3) .addGap(18, 18, 18) .addComponent(jButtonCetak3, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(47, 47, 47))))
149
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 197, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel10) .addComponent(jTextFieldBiaya3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel11) .addComponent(jTextFieldTotalInvest3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel12) .addComponent(jTextFieldSelisih3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jButtonCetak3) .addComponent(jButtonModifRek3))) .addContainerGap(37, Short.MAX_VALUE)) ); jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jButtonRekomendasi1.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonRekomendasi1.setText("Rekomendasi 1"); jButtonRekomendasi1.setToolTipText("Rekomendasi berdasarkan pengadaan tahun lalu."); jButtonRekomendasi1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {
150
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonRekomendasi1ActionPerformed(evt); } }); jButtonRekomendasi2.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonRekomendasi2.setText("Rekomendasi 2"); jButtonRekomendasi2.setToolTipText("Rekomendasi berdasarkan metode just in time."); jButtonRekomendasi2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonRekomendasi2ActionPerformed(evt); } }); jButtonRekomendasi3.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonRekomendasi3.setText("Rekomendasi 3"); jButtonRekomendasi3.setToolTipText("Rekomendasi dengan memaksimalkan jumlah pengadaan."); jButtonRekomendasi3.setEnabled(false); jButtonRekomendasi3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonRekomendasi3ActionPerformed(evt); } }); jButtonBack1.setFont(new java.awt.Font("Tahoma", 1, 14)); jButtonBack1.setText("Halaman Utama"); jButtonBack1.setToolTipText("Klik di sini untuk kembali ke halaman utama."); jButtonBack1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonBack1ActionPerformed(evt); } }); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(137, 137, 137) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.TRAILING, false) .addComponent(jButtonBack1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonRekomendasi3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonRekomendasi2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jButtonRekomendasi1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 161, Short.MAX_VALUE))
151
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addContainerGap(188, Short.MAX_VALUE)) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel3Layout.createSequentialGroup() .addGap(42, 42, 42) .addComponent(jButtonRekomendasi1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jButtonRekomendasi2, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonRekomendasi3, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jButtonBack1, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(107, Short.MAX_VALUE)) ); jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jTableRek2.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadaan Baru" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, false, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jScrollPane3.setViewportView(jTableRek2); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel2.setText("Rekomendasi 2"); jLabel7.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel7.setText("Biaya Awal"); jLabel8.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel8.setText("Total Investasi"); jLabel9.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel9.setText("Selisih"); jButtonCetak2.setFont(new java.awt.Font("Tahoma", 1, 12));
152
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jButtonCetak2.setText("Cetak"); jButtonCetak2.setToolTipText("Mencetak hasil rekomendasi."); jButtonCetak2.setEnabled(false); jButtonCetak2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCetak2ActionPerformed(evt); } }); jButtonModifRek2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jButtonModifRek2.setText("Modifikasi Pengadaan"); jButtonModifRek2.setToolTipText("Masukkan jumlah pengadaan baru terlebih dahulu."); jButtonModifRek2.setEnabled(false); jButtonModifRek2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonModifRek2ActionPerformed(evt); } }); jTextFieldBiaya2.setEditable(false); jTextFieldBiaya2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jTextFieldBiaya2ActionPerformed(evt); } }); jTextFieldTotalInvest2.setEditable(false); jTextFieldSelisih2.setEditable(false); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jLabel2) .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 596, Short.MAX_VALUE) .addGroup(jPanel2Layout.createSequentialGroup() .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jLabel8) .addComponent(jLabel9) .addComponent(jLabel7)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.TRAILING, false) .addComponent(jTextFieldBiaya2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 151,
153
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addComponent(jTextFieldSelisih2, javax.swing.GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE) .addComponent(jTextFieldTotalInvest2))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 75, Short.MAX_VALUE) .addComponent(jButtonModifRek2) .addGap(18, 18, 18) .addComponent(jButtonCetak2, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel7) .addComponent(jButtonCetak2) .addComponent(jButtonModifRek2) .addComponent(jTextFieldBiaya2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel8) .addComponent(jTextFieldTotalInvest2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel9) .addComponent(jTextFieldSelisih2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(19, Short.MAX_VALUE)) );
154
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jPanel4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12)); jLabel1.setText("Rekomendasi 1"); jTableRek1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Pengadaan Baru" } ) { boolean[] canEdit = new boolean [] { false, false, false, false, false, false, false, true }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); jTableRek1.setToolTipText(""); jScrollPane2.setViewportView(jTableRek1); jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel4.setText("Biaya Awal"); jLabel5.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel5.setText("Selisih"); jLabel6.setFont(new java.awt.Font("Tahoma", 1, 14)); jLabel6.setText("Total Investasi"); jButtonCetak1.setFont(new java.awt.Font("Tahoma", 1, 12)); jButtonCetak1.setText("Cetak"); jButtonCetak1.setToolTipText("Mencetak hasil rekomendasi."); jButtonCetak1.setEnabled(false); jButtonCetak1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonCetak1ActionPerformed(evt); } }); jButtonModifRek1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N jButtonModifRek1.setText("Modifikasi Pengadaan"); jButtonModifRek1.setToolTipText("Masukkan jumlah pengadaan baru terlebih dahulu."); jButtonModifRek1.setEnabled(false); jButtonModifRek1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonModifRek1ActionPerformed(evt); } }); jTextFieldBiaya1.setEditable(false); jTextFieldBiaya1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) {
155
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
jTextFieldBiaya1ActionPerformed(evt); } }); jTextFieldTotalInvest1.setEditable(false); jTextFieldSelisih1.setEditable(false); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 681, Short.MAX_VALUE) .addComponent(jLabel1) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addComponent(jLabel6) .addComponent(jLabel4) .addComponent(jLabel5)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING, false) .addComponent(jTextFieldTotalInvest1) .addComponent(jTextFieldSelisih1) .addComponent(jTextFieldBiaya1, javax.swing.GroupLayout.PREFERRED_SIZE, 154, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 157, Short.MAX_VALUE) .addComponent(jButtonModifRek1) .addGap(18, 18, 18) .addComponent(jButtonCetak1, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))) .addContainerGap()) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADI NG) .addGroup(jPanel4Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 199, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
156
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup() .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel4) .addComponent(jTextFieldBiaya1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel6) .addComponent(jTextFieldTotalInvest1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jLabel5) .addComponent(jTextFieldSelisih1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Align ment.BASELINE) .addComponent(jButtonCetak1) .addComponent(jButtonModifRek1))) .addContainerGap(22, Short.MAX_VALUE)) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addGroup(layout.createSequentialGroup() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18)
157
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING, false) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE ADING) .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); pack(); }// private void jButtonRekomendasi1ActionPerformed(java.awt.event.ActionEvent evt) { try { CariRekomendasi pre = new CariRekomendasi(); List ob = new ArrayList(); List b = new ArrayList(); pre.cari_rek1(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi " + "from master_data a, hasil_nik h, rekomendasi1 r " + " where (a.kode_obat=h.kode_obat and h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek1.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][7]; int baris = -1; while(rs.next()){
158
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); ob.add(obat); } jTableRek1.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Pengadaan Baru"} ) ); String wulan ="select * from biaya_rek1;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya1.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest1.setText(rs.getString("total_investasi")); jTextFieldSelisih1.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Hasil Rekomendasi Selesai Ditampilkan"); } catch (ClassNotFoundException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } jButtonModifRek1.setEnabled(true); jButtonCetak1.setEnabled(true); } private void jButtonRekomendasi2ActionPerformed(java.awt.event.ActionEvent evt) { try { CariRekomendasi pre = new CariRekomendasi(); List ob = new ArrayList(); List b = new ArrayList(); pre.cari_rek2(); Connection con = Obat.getConnection();
159
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi, r.keterangan " + "from master_data a, hasil_nik h, rekomendasi2 r " + "where (a.kode_obat=h.kode_obat and h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek2.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][8]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); data[baris][7]=rs.getString("keterangan"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); obat.setKeterangan(rs.getString("keterangan")); ob.add(obat); } jTableRek2.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadan Baru"} ) ); String wulan ="select * from biaya_rek2;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya2.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest2.setText(rs.getString("total_investasi")); jTextFieldSelisih2.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Hasil Rekomendasi Selesai
160
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Ditampilkan"); } catch (ClassNotFoundException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } jButtonModifRek2.setEnabled(true); jButtonCetak2.setEnabled(true); jButtonRekomendasi3.setEnabled(true); } private void jButtonRekomendasi3ActionPerformed(java.awt.event.ActionEvent evt) { try { String s = JOptionPane.showInputDialog(null, "Masukan batas maksimum selisih biaya awal dengan total investasi.\n Contoh:200.000"); Double minSelisih = Double.parseDouble(s); Connection con = Obat.getConnection(); Obat ob = new Obat(); //selisih dari tabel try { ResultSet rs = null; Statement bebek = con.createStatement(); String ncel = "select * from biaya_rek3;"; rs = bebek.executeQuery(ncel); int jumdata = 0; while (rs.next()) { jumdata++; } rs.beforeFirst(); String[][] data = new String[jumdata][3]; int baris = -1; while (rs.next()) { baris = baris + 1; data[baris][0] = rs.getString("biaya_awal"); data[baris][1] = rs.getString("total_investasi"); data[baris][2] = rs.getString("selisih"); ob.setSelisih(Double.parseDouble(rs.getString("selisih"))); } // con.close(); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } //end selisih dari tabel Double temp1 = ob.getSelisih(); while(temp1>minSelisih){ // do { //memaksimalkan pengadaan try { CariRekomendasi cr = new CariRekomendasi(); cr.memaksimalkanPengadaan(); } catch (ClassNotFoundException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) {
161
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } //select selisih dari tabel try { ResultSet res = null; Statement bebek = con.createStatement(); String ncel = "select * from biaya_rek3;"; res = bebek.executeQuery(ncel); int jumdata = 0; while (res.next()) { jumdata++; } res.beforeFirst(); String[][] data = new String[jumdata][3]; int baris = -1; while (res.next()) { baris = baris + 1; data[baris][0] = res.getString("biaya_awal"); data[baris][1] = res.getString("total_investasi"); data[baris][2] = res.getString("selisih"); ob.setSelisih(Double.parseDouble(res.getString("selisih"))); } // con.close(); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } //end selisih dari tabel //set selisih baru temp1 = ob.getSelisih(); } // } while (temp1 > minSelisih); con.close(); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } //tampil ke tabel try { List ob = new ArrayList(); List b = new ArrayList(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi, r.keterangan " + "from master_data a, hasil_nik h, rekomendasi_sistem r " + "where (a.kode_obat=h.kode_obat and h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek3.getModel(); int jumdata=0; while(rs.next()){ jumdata++;
162
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} rs.beforeFirst(); String [][] data=new String[jumdata][8]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); data[baris][7]=rs.getString("keterangan"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); obat.setKeterangan(rs.getString("keterangan")); ob.add(obat); } jTableRek3.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadaan Baru"} ) ); String wulan ="select * from biaya_rek3;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya3.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest3.setText(rs.getString("total_investasi")); jTextFieldSelisih3.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Hasil Rekomendasi Selesai Ditampilkan"); } catch (SQLException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } jButtonModifRek3.setEnabled(true); jButtonCetak3.setEnabled(true); } private void jButtonBack1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: homeForm hm = new homeForm(link);
163
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
hm.setVisible(true); this.dispose(); } private void jButtonCetak1ActionPerformed(java.awt.event.ActionEvent evt) { try { Connection kon = null; kon = Obat.getConnection(); String reportSource = "./Reports/report_rekomendasi1.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } catch (JRException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonModifRek1ActionPerformed(java.awt.event.ActionEvent evt) { try { Obat o = new Obat(); Connection hai = Obat.getConnection(); Statement nenek = hai.createStatement(); String kris = "delete from temp_modifikasi"; nenek.execute(kris); hai.close(); TableModel m = jTableRek1.getModel(); for (int baris = 0; baris < m.getRowCount(); baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement // System.out.print(m.getValueAt(baris, 0)+"-->"); // System.out.print(m.getValueAt(baris, 7)+"\n"); Statement fandul = con.createStatement(); String yulian = "insert into temp_modifikasi (kode_obat, pengadaan_baru)" + "values ('"+ m.getValueAt(baris, 0)+"',"+m.getValueAt(baris, 7)+");"; //execute statment fandul.execute(yulian); //close connection con.close(); } //langkah 2, hitung rekomendasi baru try { // Obat pre = new Obat(); CariRekomendasi pre = new CariRekomendasi(); List ob = new ArrayList(); List b = new ArrayList(); pre.modif1(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi " + "from master_data a, hasil_nik h, rekomendasi1 r " + " where (a.kode_obat=h.kode_obat and
164
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek1.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][7]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); ob.add(obat); } jTableRek1.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Pengadaan Baru"} ) ); String wulan ="select * from biaya_rek1;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya1.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest1.setText(rs.getString("total_investasi")); jTextFieldSelisih1.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Rekomendasi Baru Selesai Ditampilkan"); } catch (ClassNotFoundException ex) { Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); }
165
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
} catch (SQLException ex) { Logger.getLogger(inputFileForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonCetak2ActionPerformed(java.awt.event.ActionEvent evt) { try { Connection kon = null; kon = Obat.getConnection(); String reportSource = "./Reports/report_rekomen2.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } catch (JRException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonModifRek2ActionPerformed(java.awt.event.ActionEvent evt) { try { Obat o = new Obat(); Connection hai = Obat.getConnection(); Statement nenek = hai.createStatement(); String kris = "delete from temp_modifikasi"; nenek.execute(kris); hai.close(); TableModel m = jTableRek2.getModel(); for (int baris = 0; baris < m.getRowCount(); baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement // System.out.print(m.getValueAt(baris, 0)+"-->"); // System.out.print(m.getValueAt(baris, 8)+"\n"); Statement fandul = con.createStatement(); String yulian = "insert into temp_modifikasi (kode_obat, pengadaan_baru)" + "values ('"+ m.getValueAt(baris, 0)+"',"+m.getValueAt(baris, 8)+")"; //execute statment fandul.execute(yulian); //close connection con.close(); } //langkah 2, hitung rekomendasi baru try { // Obat pre = new Obat(); CariRekomendasi pre = new CariRekomendasi(); List ob = new ArrayList(); List b = new ArrayList(); pre.modif2(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi , r.keterangan" +
166
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
" from master_data a, hasil_nik h, rekomendasi2 r " + " where (a.kode_obat=h.kode_obat and h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek2.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][8]; int baris = -1; while(rs.next()){ baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); data[baris][7]=rs.getString("keterangan"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); ob.add(obat); } jTableRek2.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadaan Baru"} ) ); String wulan ="select * from biaya_rek2;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya2.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest2.setText(rs.getString("total_investasi")); jTextFieldSelisih2.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Rekomendasi Baru Selesai Ditampilkan"); } catch (ClassNotFoundException ex) { Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) {
167
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); } } catch (SQLException ex) { Logger.getLogger(inputFileForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonModifRek3ActionPerformed(java.awt.event.ActionEvent evt) { try { Obat o = new Obat(); Connection hai = Obat.getConnection(); Statement nenek = hai.createStatement(); String kris = "delete from temp_modifikasi"; nenek.execute(kris); hai.close(); TableModel m = jTableRek3.getModel(); for (int baris = 0; baris < m.getRowCount(); baris++) { //buka koneksi Connection con = Obat.getConnection(); //buat statement // System.out.print(m.getValueAt(baris, 0)+"-->"); // System.out.print(m.getValueAt(baris, 8)+"\n"); Statement fandul = con.createStatement(); String yulian = "insert into temp_modifikasi (kode_obat, pengadaan_baru)" + "values ('"+ m.getValueAt(baris, 0)+"',"+m.getValueAt(baris, 8)+")"; //execute statment fandul.execute(yulian); //close connection con.close(); } //langkah 2, hitung rekomendasi baru try { // Obat pre = new Obat(); CariRekomendasi pre = new CariRekomendasi(); List ob = new ArrayList(); List b = new ArrayList(); pre.modif3(); Connection con = Obat.getConnection(); ResultSet rs =null; Statement bebek = con.createStatement(); String ncel ="select a.kode_obat, a.nama_obat, a.jumlah_pakai, a.harga_satuan, h.kelas_pareto, r.jumlah_pengadaan, r.jumlah_investasi , r.keterangan" + " from master_data a, hasil_nik h, rekomendasi_sistem r " + " where (a.kode_obat=h.kode_obat and h.kode_obat=r.kode_obat) order by h.nik desc;"; rs = bebek.executeQuery(ncel); TableModel tm = jTableRek3.getModel(); int jumdata=0; while(rs.next()){ jumdata++; } rs.beforeFirst(); String [][] data=new String[jumdata][8]; int baris = -1; while(rs.next()){
168
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
baris = baris+1; data[baris][0]=rs.getString("kode_obat"); data[baris][1]=rs.getString("nama_obat"); data[baris][2]=rs.getString("jumlah_pakai"); data[baris][3]=rs.getString("harga_satuan"); data[baris][4]=rs.getString("kelas_pareto"); data[baris][5]=rs.getString("jumlah_pengadaan"); data[baris][6]=rs.getString("jumlah_investasi"); data[baris][7]=rs.getString("keterangan"); Obat obat=new Obat(); obat.setKodeObat(rs.getString("kode_obat")); obat.setNamaObat(rs.getString("nama_obat")); obat.setJumlahPakai(Double.parseDouble(rs.getString("jumlah_pakai"))); obat.setHargaSatuan(Double.parseDouble(rs.getString("harga_satuan"))); obat.setKelasPareto(rs.getString("kelas_pareto")); obat.setRekJumlahPengadaan(Double.parseDouble(rs.getString("jumlah_pengad aan"))); obat.setRekJumlahInvestasi(Double.parseDouble(rs.getString("jumlah_invest asi"))); ob.add(obat); } jTableRek3.setModel(new javax.swing.table.DefaultTableModel(data ,new String [] { "Kode Obat", "Nama Obat", "Jumlah Pakai", "Harga Satuan", "Kelas Pareto NIK", "Jumlah Pengadaan", "Jumlah Investasi", "Keterangan", "Pengadaan Baru"} ) ); String wulan ="select * from biaya_rek3;"; rs = bebek.executeQuery(wulan); while(rs.next()){ jTextFieldBiaya3.setText(rs.getString("biaya_awal")); jTextFieldTotalInvest3.setText(rs.getString("total_investasi")); jTextFieldSelisih3.setText(rs.getString("selisih")); } con.close(); JOptionPane.showMessageDialog(null, "Rekomendasi Baru Selesai Ditampilkan"); } catch (ClassNotFoundException ex) { Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(modifikasiForm.class.getName()).log(Level.SEVERE, null, ex); } } catch (SQLException ex) { Logger.getLogger(inputFileForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jButtonCetak3ActionPerformed(java.awt.event.ActionEvent evt) { try { Connection kon = null;
169
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
kon = Obat.getConnection(); String reportSource = "./Reports/report_rekomenSistem.jasper"; Map<String, Object> params = new HashMap<String, Object>(); JasperPrint jasperPrint = JasperFillManager.fillReport(reportSource, params, kon); JasperViewer.viewReport(jasperPrint, false); } catch (JRException ex) { Logger.getLogger(rekomendasiForm.class.getName()).log(Level.SEVERE, null, ex); } } private void jTextFieldBiaya1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } // Variables declaration - do not modify private javax.swing.JButton jButtonBack1; private javax.swing.JButton jButtonCetak1; private javax.swing.JButton jButtonCetak2; private javax.swing.JButton jButtonCetak3; private javax.swing.JButton jButtonModifRek1; private javax.swing.JButton jButtonModifRek2; private javax.swing.JButton jButtonModifRek3; private javax.swing.JButton jButtonRekomendasi1; private javax.swing.JButton jButtonRekomendasi2; private javax.swing.JButton jButtonRekomendasi3; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel12; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JTable jTable1; private javax.swing.JTable jTableRek1; private javax.swing.JTable jTableRek2; private javax.swing.JTable jTableRek3; private javax.swing.JTextField jTextFieldBiaya1; private javax.swing.JTextField jTextFieldBiaya2; private javax.swing.JTextField jTextFieldBiaya3; private javax.swing.JTextField jTextFieldSelisih1; private javax.swing.JTextField jTextFieldSelisih2; private javax.swing.JTextField jTextFieldSelisih3; private javax.swing.JTextField jTextFieldTotalInvest1; private javax.swing.JTextField jTextFieldTotalInvest2; private javax.swing.JTextField jTextFieldTotalInvest3; // End of variables declaration }
170
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Lampiran 5 Koesioner Pengujian Pengguna
171