Sistem Pendukung Keputusan Menentukan Antibiotik Menggunakan Algoritma Analytical Hierarchy Process dan Weighted Product

(1)

LISTING PROGRAM

1. Form Utama

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

publicpartialclass FormUtama : Form {

public FormUtama() {

InitializeComponent(); }

privatevoid aBOUTMEToolStripMenuItem_Click(object sender, EventArgs e) {

AboutMe aboutme = new AboutMe(); aboutme.ShowDialog();

}

privatevoid mASTERDATAPENYAKITToolStripMenuItem_Click(object

sender, EventArgs e) {

MasterPenyakit masterpenyakit = new MasterPenyakit(); masterpenyakit.ShowDialog();

}

privatevoid mASTERDATAANTIBIOTIKToolStripMenuItem_Click(object

sender, EventArgs e) {

MasterAntibiotik masterantibiotik = new MasterAntibiotik(); masterantibiotik.ShowDialog();


(2)

}

privatevoid mASTERDATAKRITERIAToolStripMenuItem_Click(object

sender, EventArgs e) {

MasterKriteria masterkriteria = new MasterKriteria(); masterkriteria.ShowDialog();

}

privatevoid FormUtama_Load(object sender, EventArgs e) {

}

privatevoid eXITToolStripMenuItem_Click(object sender, EventArgs e) {

Application.Exit(); }

privatevoid pENILAIANKRITERIAToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianKriteria penilaian = new PenilaianKriteria(); penilaian.ShowDialog();

}

privatevoid pENILAIANANTIBIOTIKToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianAntibiotik penilaian = new PenilaianAntibiotik(); penilaian.ShowDialog();

}

privatevoid pENILAIANPRODUKWPToolStripMenuItem_Click(object sender, EventArgs e)

{

PenilaianProduk penilaian = new PenilaianProduk(); penilaian.ShowDialog();

} } }


(3)

2. Form Aboutme

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

publicpartialclass AboutMe : Form {

public AboutMe() {

InitializeComponent(); }

privatevoid button1_Click(object sender, EventArgs e) {

this.Close(); }

} }

3. Hasil AHP antibiotik

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data;

using System.Data.SqlServerCe;

using System.Diagnostics;


(4)

{

publicpartialclass HasilAHPAntibiotik : Form {

public DataTable TableBeratBadan = new DataTable(); public DataTable TableDosis = new DataTable(); public DataTable TableHarga = new DataTable(); public HasilAHPAntibiotik()

{

InitializeComponent(); }

privatevoid HasilAHPAntibiotik_Load(object sender, EventArgs e) {

Stopwatch sw = new Stopwatch(); sw.Start();

ProsesAHP(TableBeratBadan, "BeratBadan"); ProsesAHP(TableHarga, "Harga");

ProsesAHP(TableDosis, "Dosis"); HitungTotal();

sw.Stop();

MessageBox.Show(

"Perhitungan selesai\n" + "Tampilkan hasil perhitungan", "Perhitungan",

MessageBoxButtons.OK);

DataTable table_ranking = (DataTable)data_ranking.DataSource; DataView view = new DataView(table_ranking);

view.Sort = "[Eigen Vector] DESC"; table_ranking = view.ToTable();

table_ranking.Columns.Add("Rank No", typeof(double)); table_ranking.Columns.Remove("Deskripsi");

int rankNo = 1;

foreach(DataRow row in table_ranking.Rows) {

row["Rank No"] = rankNo++; }


(5)

}

private Dictionary<string, double> ProsesAHP(DataTable data, string kriteria) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = GetMatriks(data);

DataTable tableAkhir = new DataTable();

DataTable tableJumlahKolom = new DataTable(); DataTable dataAntibiotik = GetDataAntibiotik(); tableAkhir = matriks.Copy();

double lamda = 0; double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = 1.43;

double JumlahAntibiotik = dataAntibiotik.Rows.Count; result = Normalisasi(tableAkhir, dataAntibiotik); tableAkhir = result["MatriksAkhir"];

tableJumlahKolom = result["MatriksJumlahKolom"]; foreach (DataRow row in tableAkhir.Rows)

{

String NamaAntibiotik = row["Antibiotik"].ToString(); if (NamaAntibiotik == "Total Kolom") continue; lamda += (double)row["Eigen Max"];

}

nilaiCI = ((lamda) - JumlahAntibiotik) / (JumlahAntibiotik - 1); nilaiCR = nilaiCI / NilaiIR;

Dictionary<string, double> consistency = new Dictionary<string, double>(); consistency.Add("JumlahAntibiotik", JumlahAntibiotik);

consistency.Add("CI", nilaiCI); consistency.Add("CR", nilaiCR); consistency.Add("IR", NilaiIR);

DataTable data_consistency = new DataTable();

data_consistency.Columns.Add("Variable", typeof(string)); data_consistency.Columns.Add("Nilai", typeof(double)); DataRow newrow = data_consistency.NewRow(); newrow["Variable"] = "Jumlah Antibiotik"; newrow["Nilai"] = JumlahAntibiotik; data_consistency.Rows.Add(newrow);


(6)

newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai IR"; newrow["Nilai"] = NilaiIR;

data_consistency.Rows.Add(newrow); newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai CI"; newrow["Nilai"] = nilaiCI;

data_consistency.Rows.Add(newrow); newrow = data_consistency.NewRow(); newrow["Variable"] = "Nilai CR"; newrow["Nilai"] = nilaiCR;

data_consistency.Rows.Add(newrow);

Control[] matriks_ctl = this.Controls.Find("data_matriks" + kriteria, true); Control[] data_jumlah_kolom_ctl = this.Controls.Find("data_jumlah_kolom" + kriteria, true);

Control[] data_akhir_ctl = this.Controls.Find("data_akhir" + kriteria, true); Control[] data_consistency_ctl = this.Controls.Find("data_consistency" + kriteria, true);

if (matriks_ctl.Length > 0) {

((DataGridView)matriks_ctl[0]).DataSource = matriks; }

if (data_jumlah_kolom_ctl.Length > 0) {

((DataGridView)data_jumlah_kolom_ctl[0]).DataSource = tableJumlahKolom;

}

if (data_akhir_ctl.Length > 0) {

((DataGridView)data_akhir_ctl[0]).DataSource = tableAkhir; }

if (data_consistency_ctl.Length > 0) {

((DataGridView)data_consistency_ctl[0]).DataSource = data_consistency; }

return consistency; }


(7)

private DataTable GetDataAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetDataKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetMatriks(DataTable data) {

DataTable dataAntibiotik = GetDataAntibiotik(); DataTable matriks = new DataTable("Matriks"); matriks.Columns.Add("Antibiotik", typeof(string)); foreach (DataRow row in dataAntibiotik.Rows) {

matriks.Columns.Add(row["NamaAntibiotik"].ToString(), typeof(double)); }

foreach (DataRow row in dataAntibiotik.Rows) {

DataRow new_row = matriks.NewRow();

new_row["Antibiotik"] = row["NamaAntibiotik"]; matriks.Rows.Add(new_row);


(8)

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Antibiotik"].ToString(); if (column == row)

{

matriks.Rows[i][j] = 1; }

else

{

DataRow[] rows = data.Select("(AntibiotikB = '" + column + "' AND AntibiotikA = '" + row + "')");

double nilai = 0; string dominan = ""; if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else

{

rows = data.Select("(AntibiotikA = '" + column + "' AND AntibiotikB = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else

{

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }


(9)

{

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else

{

matriks.Rows[i][j] = 0; }

} } }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)

{

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");

DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_kolom.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); total_kolom[namaAntibiotik] += (double)row[namaAntibiotik]; }

}

newMatriks = data.Copy(); matriks = data.Copy();

DataRow new_row = newMatriks.NewRow(); new_row["Antibiotik"] = "Total Kolom";


(10)

{

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); new_row[namaAntibiotik] = total_kolom[namaAntibiotik]; }

newMatriks.Rows.Add(new_row); foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); row[namaAntibiotik] = (double)row[namaAntibiotik] /

total_kolom[namaAntibiotik]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_baris.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[namaAntibiotik] += (double)row[i]; }

}

data.Columns.Add("Jumlah Baris", typeof(double)); data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double));

Dictionary<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)

{

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue;


(11)

row["Jumlah Baris"] = total_baris[namaAntibiotik];

row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik; row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik * total_kolom[namaAntibiotik];

}

result.Add("MatriksJumlahKolom", newMatriks); result.Add("MatriksAkhir", data);

return result; }

privatevoid HitungTotal() {

DataTable table_hitung = new DataTable(); DataTable table_ranking = new DataTable(); DataTable Data_kriteria = GetDataKriteria(); DataTable Data_antibiotik = GetDataAntibiotik(); table_hitung.Columns.Add("Kriteria", typeof(string)); table_hitung.Columns.Add("Prioritas", typeof(double)); table_ranking = Data_antibiotik.Copy();

table_ranking.Columns.Add("Eigen Vector", typeof(double));

Dictionary<String, DataTable> datas = new Dictionary<string, DataTable>(); foreach (DataRow kriteria in Data_kriteria.Rows)

{

string namakriteria = kriteria["NamaKriteria"].ToString().Replace(" ",""); DataTable table_nilai = new DataTable();

Control[] ctls = this.Controls.Find("data_akhir" + namakriteria, true); if (ctls.Length > 0)

{

table_nilai = (DataTable)((DataGridView)(ctls[0])).DataSource; }

datas.Add(namakriteria, table_nilai); }

foreach (DataRow antibiotik in Data_antibiotik.Rows) {

string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString(); table_hitung.Columns.Add(nama_antibiotik, typeof(double)); }


(12)

foreach (DataRow kriteria in Data_kriteria.Rows) {

string namakriteria = kriteria["NamaKriteria"].ToString(); double eigenvector =

String.IsNullOrEmpty(kriteria["EigenVector"].ToString()) ? 0 : (double)(kriteria["EigenVector"]);;

DataRow new_row = table_hitung.NewRow(); new_row["Kriteria"] = namakriteria;

new_row["Prioritas"] = eigenvector; table_hitung.Rows.Add(new_row); }

DataRow row_total = table_hitung.NewRow(); row_total["Kriteria"] = "Total Eigen";

foreach (DataRow rank in table_hitung.Rows) {

string namakriteria = rank["Kriteria"].ToString().Replace(" ", ""); double eigenvectorkriteria = (double)rank["Prioritas"];

foreach (DataRow antibiotik in Data_antibiotik.Rows) {

string nama_antibiotik = antibiotik["NamaAntibiotik"].ToString(); DataRow[] rows = datas[namakriteria].Select("Antibiotik ='" + nama_antibiotik + "'");

double eigenvectorpemain = rows.Length > 0 ? (double)rows[0]["Eigen Vector"] : 1;

rank[nama_antibiotik] = eigenvectorkriteria * eigenvectorpemain; if (String.IsNullOrEmpty(row_total[nama_antibiotik].ToString())) row_total[nama_antibiotik] = 0;

row_total[nama_antibiotik] = (double)row_total[nama_antibiotik] + (double)rank[nama_antibiotik];

} }

table_hitung.Rows.Add(row_total);

foreach(DataRow antibiotik in table_ranking.Rows) {


(13)

antibiotik["Eigen Vector"] = row_total[nama_antibiotik]; }

data_hitung.DataSource = table_hitung; data_ranking.DataSource = table_ranking; }

privatevoid BKeluar_Click(object sender, EventArgs e) {

this.Close(); }

} }

4. Hasil AHP Kriteria

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

publicpartialclass HasilAHPKriteria : Form {

public DataTable TableAwal; public DataTable TableKolom; public DataTable TableAkhir; publicdouble CR;

publicdouble IR; publicdouble CI;

publicdouble perulangan; public HasilAHPKriteria() {


(14)

}

privatevoid HasilAHPKriteria_Load(object sender, EventArgs e) {

data_awal.DataSource = TableAwal;

data_total_kolom.DataSource = TableKolom; data_akhir.DataSource = TableAkhir;

txtCI.Text = CI.ToString(); txtCR.Text = CR.ToString(); txtIR.Text = IR.ToString(); }

privatevoid BSimpan_Click(object sender, EventArgs e) {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); foreach(DataRow row in data.Rows)

{

string nama = row["NamaKriteria"].ToString();

DataRow[] rows = TableAkhir.Select("Kriteria = '" + nama + "'"); if (rows.Length > 0)

{

row["EigenVector"] = rows[0]["Eigen Vector"]; }

}

bool isOk = database.SaveDataTable("table_kriteria", data, null, null); if (isOk)

{

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }


(15)

} } }

5. Hasil WP Antibiotik

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

publicpartialclass HasilWPAntibiotik : Form {

public DataTable TableData = new DataTable();

public DataTable TablePembobotan = new DataTable(); public DataTable TableRanking = new DataTable(); public HasilWPAntibiotik()

{

InitializeComponent(); }

privatevoid HasilWPAntibiotik_Load(object sender, EventArgs e) {

TableData.Columns.Remove("Deskripsi");

TablePembobotan.Columns.Remove("Deskripsi"); TableRanking.Columns.Remove("Deskripsi"); DataView view = new DataView(TableRanking); view.Sort = "Ranking DESC";

TableRanking = view.ToTable();

DataTable TableRankingNo = TableRanking.Copy();

TableRankingNo.Rows.RemoveAt(TableRankingNo.Rows.Count - 1); TableRankingNo.Columns.Add("Rank No", typeof(double));


(16)

foreach(DataRow row in TableRankingNo.Rows) {

row["Rank No"] = rankNo++; }

TableRankingNo.Columns.Remove("Skor"); TableRankingNo.Columns.Remove("Ranking"); data_data.DataSource = TableData;

data_pembobotan.DataSource = TablePembobotan; data_ranking.DataSource = TableRanking;

dataview_ranking_no.DataSource = TableRankingNo; }

privatevoid BKeluar_Click(object sender, EventArgs e) {

this.Close(); }

} }

6. Master Antibiotik

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

publicpartialclass MasterAntibiotik : Form {

public MasterAntibiotik() {

InitializeComponent(); }


(17)

privatevoid MasterAntibiotik_Load(object sender, EventArgs e) {

LoadData(); }

privatevoid LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaPenyakit ASC, NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_antibiotik.DataSource = data; }

privatevoid SaveData() {

Database database = new Database("CEConn");

DataTable data = (DataTable)data_antibiotik.DataSource;

bool isOk = database.SaveDataTable("table_antibiotik", data, null, null); if (isOk)

{

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }

}

privatevoid BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

} }


(18)

7. Master Kriteria

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

publicpartialclass MasterKriteria : Form {

public MasterKriteria() {

InitializeComponent(); }

privatevoid MasterKriteria_Load(object sender, EventArgs e) {

LoadData(); }

privatevoid LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_kriteria.DataSource = data; }

privatevoid SaveData() {


(19)

DataTable data = (DataTable)data_kriteria.DataSource;

bool isOk = database.SaveDataTable("table_kriteria", data, null, null); if (isOk)

{

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }

}

privatevoid BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

} }

8. Master Penyakit

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

publicpartialclass MasterPenyakit : Form {

public MasterPenyakit() {

InitializeComponent(); }


(20)

privatevoid MasterPenyakit_Load(object sender, EventArgs e) {

LoadData(); }

privatevoid LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_penyakit ORDER BY NamaPenyakit ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); data = Utility.AutoNumberedTable(data);

data_penyakit.DataSource = data; }

privatevoid SaveData() {

Database database = new Database("CEConn");

DataTable data = (DataTable)data_penyakit.DataSource;

bool isOk = database.SaveDataTable("table_penyakit", data, null, null); if (isOk)

{

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }

}

privatevoid BSimpan_Click(object sender, EventArgs e) {

SaveData(); }


(21)

}

9. Penilaian Antibiotik

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Data.SqlServerCe;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace MenentukanAntibiotik {

publicpartialclass PenilaianAntibiotik : Form {

public DataTable tableAntibiotik = new DataTable(); public PenilaianAntibiotik()

{

InitializeComponent(); }

privatevoid PenilaianAntibiotik_Load(object sender, EventArgs e) {

LoadData(); }

privatevoid LoadData() {

view_nilai_harga.DataSource = GetData("Harga"); view_nilai_dosis.DataSource = GetData("Dosis");

view_nilai_beratbadan.DataSource = GetData("Berat Badan"); tableAntibiotik = GetDataAntibiotik();

}

private DataTable GetData(String Kriteria) {

Database database = new Database("CEConn"); DataTable data = new DataTable();


(22)

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_penilaian_antibiotik WHERE Kriteria = @Kriteria ORDER BY AntibiotikA ASC, AntibiotikB ASC"; parameters = new List<SqlCeParameter>();

parameters.Add(new SqlCeParameter("Kriteria", Kriteria)); data = database.GetDataTable(query, parameters);

data = Utility.AutoNumberedTable(data); return data;

}

privatevoid SaveData(DataGridView dataview, String Kriteria) {

Database database = new Database("CEConn"); DataTable data = (DataTable)dataview.DataSource; foreach (DataRow row in data.Rows)

{

if (row.RowState == DataRowState.Deleted) continue; row["Kriteria"] = Kriteria;

}

bool isOk = database.SaveDataTable("table_penilaian_antibiotik", data, null,

null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }

}

privatevoid BSimpan_Click(object sender, EventArgs e) {

SaveData(view_nilai_harga, "Harga"); }

privatevoid BSimpanBerat_Click(object sender, EventArgs e) {


(23)

SaveData(view_nilai_beratbadan, "Berat Badan"); }

privatevoid BSimpanDosis_Click(object sender, EventArgs e) {

SaveData(view_nilai_dosis, "Dosis"); }

privatevoid BHitung_Click(object sender, EventArgs e) {

HasilAHPAntibiotik formhasil = new HasilAHPAntibiotik(); DataTable DataBeratBadan = GetData("Berat Badan"); DataTable DataDosis = GetData("Dosis");

DataTable DataHarga = GetData("Harga"); formhasil.TableBeratBadan = DataBeratBadan; formhasil.TableDosis = DataDosis;

formhasil.TableHarga = DataHarga; formhasil.ShowDialog();

}

privatebool Hitung(DataTable data, DataTable dataAntibiotik) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = GetMatriks(data, dataAntibiotik);

DataTable tableAkhir = new DataTable();

DataTable tableJumlahKolom = new DataTable(); tableAkhir = matriks.Copy();

double lamda = 0; double nilaiCI = 0; double nilaiCR = 0; double NilaiIR = 1.43;

double JumlahAntibiotik = dataAntibiotik.Rows.Count; result = Normalisasi(tableAkhir, dataAntibiotik); tableAkhir = result["MatriksAkhir"];

tableJumlahKolom = result["MatriksJumlahKolom"]; foreach (DataRow row in tableAkhir.Rows)

{

String NamaAntibiotik = row["Antibiotik"].ToString(); if (NamaAntibiotik == "Total Kolom") continue; lamda += (double)row["Eigen Max"];

}


(24)

nilaiCR = nilaiCI / NilaiIR; if (Math.Abs(nilaiCR) <= 0.1) returnfalse;

returntrue; }

private DataTable GetDataAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable GetMatriks(DataTable data, DataTable dataAntibiotik) {

DataTable matriks = new DataTable("Matriks"); matriks.Columns.Add("Antibiotik", typeof(string)); foreach (DataRow row in dataAntibiotik.Rows) {

matriks.Columns.Add(row["NamaAntibiotik"].ToString(), typeof(double)); }

foreach (DataRow row in dataAntibiotik.Rows) {

DataRow new_row = matriks.NewRow();

new_row["Antibiotik"] = row["NamaAntibiotik"]; matriks.Rows.Add(new_row);

}

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Antibiotik"].ToString(); if (column == row)


(25)

{

matriks.Rows[i][j] = 1; }

else

{

DataRow[] rows = data.Select("(AntibiotikB = '" + column + "' AND AntibiotikA = '" + row + "')");

double nilai = 0; string dominan = ""; if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else

{

rows = data.Select("(AntibiotikA = '" + column + "' AND AntibiotikB = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else

{

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }

elseif (column == dominan) {

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else

{

matriks.Rows[i][j] = 0; }


(26)

} }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data, DataTable dataAntibiotik)

{

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");

DataTable newMatriks = new DataTable("NewMatriks"); double JumlahAntibiotik = dataAntibiotik.Rows.Count;

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_kolom.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); total_kolom[namaAntibiotik] += (double)row[namaAntibiotik]; }

}

newMatriks = data.Copy(); matriks = data.Copy();

DataRow new_row = newMatriks.NewRow(); new_row["Antibiotik"] = "Total Kolom";

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); new_row[namaAntibiotik] = total_kolom[namaAntibiotik]; }

newMatriks.Rows.Add(new_row); foreach (DataRow row in data.Rows) {


(27)

foreach (DataRow antibiotik in dataAntibiotik.Rows) {

String namaAntibiotik = antibiotik["NamaAntibiotik"].ToString(); row[namaAntibiotik] = (double)row[namaAntibiotik] /

total_kolom[namaAntibiotik]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow antibiotik in dataAntibiotik.Rows)

{

total_baris.Add(antibiotik["NamaAntibiotik"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[namaAntibiotik] += (double)row[i]; }

}

data.Columns.Add("Jumlah Baris", typeof(double)); data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double));

Dictionary<string, double> eigenVectors = new Dictionary<string, double>(); foreach (DataRow row in data.Rows)

{

String namaAntibiotik = row["AntiBiotik"].ToString(); if (namaAntibiotik == "Total Kolom") continue; row["Jumlah Baris"] = total_baris[namaAntibiotik];

row["Eigen Vector"] = total_baris[namaAntibiotik] / JumlahAntibiotik; row["Eigen Max"] = total_baris[namaAntibiotik] / JumlahAntibiotik * total_kolom[namaAntibiotik];

}

result.Add("MatriksJumlahKolom", newMatriks); result.Add("MatriksAkhir", data);


(28)

return result; }

} }

10. Penilaian Kriteria

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

namespace MenentukanAntibiotik {

publicpartialclass PenilaianKriteria : Form {

public PenilaianKriteria() {

InitializeComponent(); }

privatevoid PenilaianKriteria_Load(object sender, EventArgs e) {

LoadData(); }

privatevoid LoadData() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_penilaian_kriteria ORDER BY KriteriaA ASC, KriteriaB ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters);


(29)

data = Utility.AutoNumberedTable(data); data_nilai.DataSource = data;

}

privatevoid SaveData() {

Database database = new Database("CEConn"); DataTable data = (DataTable)data_nilai.DataSource;

bool isOk = database.SaveDataTable("table_penilaian_kriteria", data, null,

null);

if (isOk) {

LoadData();

MessageBox.Show("Berhasil Simpan"); }

else

{

MessageBox.Show("Gagal Simpan"); }

}

privatevoid BSimpan_Click(object sender, EventArgs e) {

SaveData(); }

privatevoid BHitung_Click(object sender, EventArgs e) {

DataTable data = (DataTable)data_nilai.DataSource; DataTable matriks = ConvertToMatrix(data);

Dictionary<string, DataTable> result = new Dictionary<string,DataTable>(); DataTable TableAkhir = new DataTable();

TableAkhir = matriks.Copy();

double TotalEigen = 0; double NilaiCI = 0; double NilaiCR = 0; double IR = 0.58; Int32 counter = 0;

result = Normalisasi(TableAkhir); TableAkhir = result["MatriksAkhir"];


(30)

foreach (DataRow row in TableAkhir.Rows) {

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; TotalEigen += (double)row["Eigen Max"]; }

NilaiCI = (TotalEigen - 3)/(3-1); // 3 ---> jumlah kriteria

NilaiCR = NilaiCI / IR; // tampilkan hasil perhitungan

HasilAHPKriteria formhasil = new HasilAHPKriteria(); formhasil.TableAwal = matriks;

formhasil.TableKolom = result["MatriksJumlahKolom"]; formhasil.TableAkhir = result["MatriksAkhir"];

formhasil.CI = NilaiCI; formhasil.CR = NilaiCR; formhasil.IR = IR;

formhasil.perulangan = counter; formhasil.ShowDialog();

}

private DataTable GetDataKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

private DataTable ConvertToMatrix(DataTable data) {

DataTable matriks = new DataTable("Matriks"); DataTable data_kriteria = GetDataKriteria(); matriks.Columns.Add("Kriteria", typeof(string)); foreach (DataRow row in data_kriteria.Rows) {


(31)

matriks.Columns.Add(row["NamaKriteria"].ToString(), typeof(double)); }

DataRow new_row;

foreach (DataRow row in data_kriteria.Rows) {

new_row = matriks.NewRow();

new_row["Kriteria"] = row["NamaKriteria"]; matriks.Rows.Add(new_row);

}

for (int i = 0; i < matriks.Rows.Count; i++) {

for (int j = 1; j < matriks.Columns.Count; j++) {

string column = matriks.Columns[j].ColumnName; string row = matriks.Rows[i]["Kriteria"].ToString(); if (column == row)

{

matriks.Rows[i][j] = 1; }

else

{

DataRow[] rows = data.Select("(KriteriaA = '" + column + "' AND KriteriaB = '" + row + "')");

double nilai = 0; string dominan = ""; if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];

dominan = rows[0]["Dominan"].ToString(); }

else

{

rows = data.Select("(KriteriaB = '" + column + "' AND KriteriaA = '" + row + "')");

if (rows.Length == 1) {

nilai = (double)rows[0]["Nilai"];


(32)

} else

{

nilai = 0; }

}

if (row == dominan) {

matriks.Rows[i][j] = nilai; }

elseif (column == dominan) {

matriks.Rows[i][j] = nilai == 0 ? 0 : 1 / nilai; }

else

{

matriks.Rows[i][j] = 0; }

} } }

return matriks; }

private Dictionary<string, DataTable> Normalisasi(DataTable data) {

Dictionary<string, DataTable> result = new Dictionary<string, DataTable>(); DataTable matriks = new DataTable("Matriks");

DataTable data_kriteria = GetDataKriteria();

Dictionary<string, double> total_kolom = new Dictionary<string, double>(); foreach (DataRow kriteria in data_kriteria.Rows)

{

total_kolom.Add(kriteria["NamaKriteria"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

foreach (DataRow kriteria in data_kriteria.Rows) {


(33)

total_kolom[NamaKriteria] += (double)row[NamaKriteria]; }

}

matriks = data.Copy();

DataRow new_row = matriks.NewRow(); new_row["Kriteria"] = "Total Kolom";

foreach (DataRow kriteria in data_kriteria.Rows) {

String NamaKriteria = kriteria["NamaKriteria"].ToString(); new_row[NamaKriteria] = total_kolom[NamaKriteria]; }

matriks.Rows.Add(new_row); foreach (DataRow row in data.Rows) {

foreach (DataRow kriteria in data_kriteria.Rows) {

String NamaKriteria = kriteria["NamaKriteria"].ToString(); row[NamaKriteria] = (double)row[NamaKriteria] /

total_kolom[NamaKriteria]; }

}

//hitung jumlah baris

Dictionary<string, double> total_baris = new Dictionary<string, double>(); foreach (DataRow kriteria in data_kriteria.Rows)

{

total_baris.Add(kriteria["NamaKriteria"].ToString(), 0); }

foreach (DataRow row in data.Rows) {

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; for (int i = 1; i < data.Columns.Count; i++) {

total_baris[NamaKriteria] += (double)row[i]; }

}


(34)

data.Columns.Add("Eigen Vector", typeof(double)); data.Columns.Add("Eigen Max", typeof(double)); foreach (DataRow row in data.Rows)

{

String NamaKriteria = row["Kriteria"].ToString(); if (NamaKriteria == "Total Kolom") continue; row["Jumlah Baris"] = total_baris[NamaKriteria]; row["Eigen Vector"] = total_baris[NamaKriteria] / data_kriteria.Rows.Count;

row["Eigen Max"] = (double)row["Eigen Vector"] * total_kolom[NamaKriteria];

}

result.Add("MatriksJumlahKolom", matriks); result.Add("MatriksAkhir", data);

return result; }

} }

11. Penilaian Product

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlServerCe;

using System.Diagnostics;

namespace MenentukanAntibiotik {

publicpartialclass PenilaianProduk : Form {

DataTable DataKriteria = new DataTable(); DataTable DataAntibiotik = new DataTable(); DataTable TableData = new DataTable();


(35)

DataTable TablePembobotan = new DataTable(); DataTable TableRanking = new DataTable(); public PenilaianProduk()

{

InitializeComponent(); }

privatevoid PenilaianProduk_Load(object sender, EventArgs e) {

DataKriteria = GetTableKriteria(); DataAntibiotik = GetTableAntibiotik();

TableData = GetSample(DataAntibiotik.Copy()); view_produk.DataSource = TableData;

}

private DataTable HitungRanking(DataTable sample) {

sample.Columns.Add("Skor", typeof(double)); sample.Columns.Add("Ranking", typeof(double));

Dictionary<string, double> bobot = new Dictionary<string, double>(); foreach(DataRow rowSample in sample.Rows)

{

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

bobot.Add("Dosis", (double)rowSample["Dosis"]); bobot.Add("Harga", (double)rowSample["Harga"]);

bobot.Add("Berat Badan", (double)rowSample["Berat Badan"]); }

}

double totalSkor = 0;

foreach (DataRow rowSample in sample.Rows) {

double skor = 0;

if (rowSample["NamaAntibiotik"].ToString() != "Bobot") {

double nilaiDosis = (double)rowSample["Dosis"]; double nilaiHarga = (double)rowSample["Harga"];

double nilaiBeratBadan = (double)rowSample["Berat Badan"]; skor += Math.Pow(nilaiDosis, bobot["Dosis"]);


(36)

skor += Math.Pow(nilaiHarga, bobot["Harga"]);

skor += Math.Pow(nilaiBeratBadan, bobot["Berat Badan"]); }

totalSkor += skor;

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

rowSample["Skor"] = totalSkor; }

else

{

rowSample["Skor"] = skor; }

}

foreach (DataRow rowSample in sample.Rows) {

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") continue;

double skor = (double)rowSample["Skor"] / totalSkor; rowSample["Ranking"] = skor;

}

return sample; }

private DataTable FixBobot(DataTable sample, DataTable dataKriteria) {

double totalBobot = 0;

foreach(DataRow rowKriteria in dataKriteria.Rows) {

totalBobot += (double)rowKriteria["Bobot"]; }

foreach(DataRow rowSample in sample.Rows) {

if (rowSample["NamaAntibiotik"].ToString() == "Bobot") {

rowSample["Dosis"] = (double)rowSample["Dosis"] / totalBobot; rowSample["Harga"] = (double)rowSample["Harga"] / totalBobot; rowSample["Berat Badan"] = (double)rowSample["Berat Badan"] / totalBobot;


(37)

}

return sample; }

private DataTable GetSample(DataTable dataAntibiotik) {

dataAntibiotik.Columns.Remove("Id");

dataAntibiotik.Columns.Remove("NamaPenyakit"); return dataAntibiotik;

}

private DataTable GetData(DataTable dataKriteria, DataTable dataAntibiotik) {

dataAntibiotik.Columns.Remove("Id");

dataAntibiotik.Columns.Remove("NamaPenyakit"); DataRow new_row = dataAntibiotik.NewRow(); new_row["NamaAntibiotik"] = "Bobot";

foreach(DataRow rowKriteria in dataKriteria.Rows) {

String namaKriteria = rowKriteria["NamaKriteria"].ToString(); double bobot = (double)rowKriteria["Bobot"];

new_row[namaKriteria] = bobot; }

dataAntibiotik.Rows.Add(new_row); return dataAntibiotik;

}

private DataTable GetTableKriteria() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>();

String query = "SELECT * FROM table_kriteria ORDER BY NamaKriteria ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;


(38)

}

private DataTable GetTableAntibiotik() {

Database database = new Database("CEConn"); DataTable data = new DataTable();

List<SqlCeParameter> parameters = new List<SqlCeParameter>(); String query = "SELECT * FROM table_antibiotik ORDER BY NamaAntibiotik ASC";

parameters = new List<SqlCeParameter>(); data = database.GetDataTable(query, parameters); return data;

}

privatevoid BHitung_Click(object sender, EventArgs e) {

Stopwatch sw = new Stopwatch();

DataTable dataSample = GetData(DataKriteria.Copy(), DataAntibiotik.Copy());

sw.Start();

TablePembobotan = FixBobot(dataSample, DataKriteria); TableRanking = HitungRanking(TablePembobotan.Copy()); sw.Stop();

MessageBox.Show(

"Perhitungan selesai\n" + "Tampilkan hasil perhitungan", "Perhitungan",

MessageBoxButtons.OK); // tampilkan hasil perhitungan

HasilWPAntibiotik formhasil = new HasilWPAntibiotik(); formhasil.TableData = TableData;

formhasil.TablePembobotan = TablePembobotan; formhasil.TableRanking = TableRanking;

formhasil.ShowDialog(); }

} }


(39)

Ananda, R. D. 2015. Perbandingan metode analytical hierarchy process dan weighted sum model pada sistem pendukung keputusan pemilihan sepeda. Skripsi. Universitas Sumatera Utara.

Bahri, S. 2015. Perbandingan metode weighted product dan simple multi-attribute rating technique dalam menentukan lahan terbaik untuk tanaman karet. Skripsi. Universitas Sumatera Utara.

Febiana, T. 2012. Kajian rasionalitas penggunaan antibiotik di bangsal anak rsup dr kariadi semarang periode agustus-desember 2011. Skripsi. Universitas Diponegoro Semarang.

Hassan, R. & Alatas, H. (Editors). 2007. Ilmu Kesehatan Anak 3. Infomedika. Jakarta.

Honggowibowo, A. S. 2010. Implementasi metode analytical hierarchy process untuk pengambilan keputusan pemilihan foto berdasarkan tujuan perolehan foto. Vol.2, No.1: 59-60. (Online) ( 10 Maret 2015).

Kasim, F. (Pimpinan Redaksi). 2012. Informasi Spesialite Obat. PT.ISFI: Jakarta.

Kusrini. 2007. Konsep dan Aplikasi Sistem Pendukung Keputusan. CV.Andi: Yogyakarta.

Kusumadewi, S., Hartati, S., Harjoko, A. & Wardoyo, R. 2006. Fuzzy Multi-Attribute Decision Making (FUZZY MADM). Graha Ilmu: Yogyakarta.

Kurnia, D. J., Retnaningsih, M. S. & Aridinanti, L. 2013. Analisis kapabilitas proses produksi monosodium glutamat (msg) di pt ajinomoto indonesia. Jurnal sains dan seni pomits. Vol.2, No.1: 25-26(Online) (15 Agustus 2015).


(40)

Magdalena, H. 2012. Sistem pendukung keputusan untuk menentukan mahasiswa lulusan terbaik di perguruan tinggi (studi kasus stmik atma luhur pangkal pinang). Seminar nasional teknologi informasi dan komunikasi 2012 (Sentika2012). ISSN.2089-9815. (Online) (28 Mei 2015).

Mawuntu, W. P. N. 2015. Implementasi metode analytical hierarchy process (AHP) dan Weighted Product (WP) untuk pemilihan produk makanan. Skripsi. Universitas Sumatera Utara.

Milala, M. S. O. 2014. Implementasi color constancy pada citra digital menggunakan logarithmic image processing. Skripsi. Universitas Sumatera Utara.

Muhlis, M. 2011. Kajian peresepan antibiotika pada pasien dewasa di saalah satu puskesmas kota yogyakarta periode januari-april 2010. Jurnal Ilmiah Kefarmasian Vol.1, No.1: 53.

http://eprints.uad.ac.id/1426/2/kajianresep-muhlis3-pharmaciana1-1.pdf (Online) (10 Maret 2015).

Novesar, A, R., Darwin, E. & Yani, F, F. 2014. Pola kejadian ispa pada balita di wilayah kerja puskesmas anak air padang tahun 2012. Jurnal Kesehatan Andalas Vol.3, No.3: 339.

http://jurnal.fk.unand.ac.id/images/articles/vol3/no3/339-342.pdf (Online) (10 Maret 2015).

Nugraha, M. R. 2014. Implementasi sistem pendukung keputusan seleksi sertifikasi guru sma menggunakan metode analytical hierarchy process dan weighted product. Skripsi. Universitas Sumatera Utara

Rani, S. 2014. Sistem pendukung keputusan pemilihan sepeda motor berbasis web dengan metode weighted product. Pelita Informatika Budi Darma. Vol.6, No.3: 63. (Online) (10 Maret 2015).


(41)

Rohmani, A. & Anggraini, M.T. 2012. Pemakaian antibiotik pada kasus demam berdarah dengue anak di rumah sakit Roemani Semarang tahun 2012. Seminar Hasil-Hasil Penelitian – LPPM UNIMUS 2012, ISBN : 978-602-18809-0-6. (Online) (4 Maret 2015).

Sulistyowati, I. & Soeleman, A. 2013. Sistem pakar berbasis web untuk mendiagnosa penyakit dalam pada manusia. Jurnal Teknologi Informasi Vol.9, No.1: 15.

Syaukani M. & Hartati S. 2012. Pemodelan sistem pendukung keputusan kelompok untuk diadnosa penyakit pneumonia dengan fuzzy linguistic quantifier dan ahp. Jurnal Ilmu Komputer Vol.5, No.1: 34. (Online) (10 Maret 2015).

Syaukani M. & Kusnanto H. 2012. Pemodelan sistem pendukung keputusan kelompok dengan metode fuzzy weighted product untuk diagnosis penyakit pneumonia. Jurnal Teknologi Vol.5, No.1: 23. http://jurtek.akprind.ac.id/sites/default/files/ 17_23_Syaukani_oke.pdf (Online) (10 Maret 2015).

Tominanto. 2012. Sistem pendukung keputusan dengan metode analytical hierarchy process (AHP) untuk penentuan prestsi kinerja dokter pada rsud sukoharjo. INFOKES Vol.2, No. 1: 5.

Utami, E. R. 2012. Antibiotika resistesnis dan rasionalitas terapi. Saintis Vol.1, No.1: 124-125.

http://download.portalgaruda.org/article.php?article=115570&val=5285 (Online) (10 Maret).

Wahid, A, A., Ikhawana A. & Partano. 2012. Sistem pendukung keputusan penentuan jumlah pemesanan barang. Vol.9, No.22: 2.


(42)

Winarni., Ummah, B, A. & Salim, S, A, N. 2010. Hubungan antara perilaku merokok orang tua dan anggota keluarga yang tinggal dalam satu rumah dengan kejadian ispa pada balita di wilayah kerja puskesmas sempor II kabupaten kebumen tahun 2009. Jurnal Ilmiah Kesehatan Keperawatan Vol.6, No.1: 16.

http://digilib.stikesmuhgombong.ac.id/files/disk1/23/jtstikesmuhgo-gdl-winarnibas 124-2-hal.16--1.pdf (Online) (10 Maret 2015).


(43)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Sistem

Analisis sistem merupakan proses pemecahan masalah yang menguraikan sistem menjadi beberapa bagian komponen-komponen dengan tujuan mempelajari kinerja dari masing masing komponen dan berinteraksi untuk mencapai tujuan utama. Analisis sistem dapat dilakukan dengan menentukan apa-apa saja yang menjadi input dari sistem, proses apa yang dilakukan sistem dan apa yang menjadi output dari sistem tersebut.

3.2. Analisis Masalah

Analisis masalah adalah proses mengidentifikasi sebab dan akibat dibangunnya sebuah sistem agar sistem yang akan dibangun tersebut dapat berjalan sebagaimana mestinya sesuai dengan tujuan dari sistem itu. Saat ini terdapat bermacam-macam antibiotik, oleh karena itu dibutuhkan sebuah sistem untuk memberikan informasi yang tepat dalam proses untuk menentukan antibiotik yang sesuai dengan kebutuhan dan kriteria pengguna dengan menggunakan metode Analytical Hierarchy Process dan Weighted Product.

Untuk mengidentifikasi masalah tersebut digunakan diagram ishikawa. Diagram sebab akibat sering disebut dengan diagram ishikawa atau sering juga disebut dengan diagram fishbone (tulang ikan), digunakan untuk menyajikan penyebab suatu masalah secara grafis. Diagram ini digunakan untuk menampilkan secara jelas permasalahan yang dapat mempengaruhi kualitas produk. Analisa masalah lebih jelas melalui diagram Ishikawa dapat dilihat pada Gambar 3.1.


(44)

Gambar 3.1. Diagram Ishikawa analisis masalah sistem

Berdasarkan Gambar 3.1. dapat diketahui bahwa permasalahan pemilihan antibiotik dikarenakan banyaknya merek antibiotik yang ada di apotik dan juga belum adanya sistem informasi yang ditujukan khusus untuk menyelesaikan masalah tersebut. Untuk itu dibuatlah sebuah Sistem Pendukung Keputusan dengan menggunakan metode Analytical Hierarchy Process dan Weighted Product.

3.3. Analisis Kebutuhan Sistem

Analisis Kebutuhan Sistem meliputi Kebutuhan Fungsional Sistem dan Kebutuhan Non-Fungsional Sistem.

3.3.1. Kebutuhan Fungsional Sistem

Kebutuhan fungsional sistem yang harus dimiliki oleh sistem yaitu: 1. Sistem dapat menerima inputan data antibiotik dan bobot kriteria.

2. Sistem dapat mengetahui antibiotik yang sesuai dengan kriteria user, berdasarkan algoritma Analytical Hierarchy Process dan Weighted Product.

3. Sistem dapat menampilkan hasil perhitungan pemilihan antibiotik berdasarkan malgoritma Analytical Hierarchy Process dan Weighted Product.


(45)

3.3.2. Kebutuhan Non-Fungsional Sistem

Untuk mendukung kinerja sistem, sistem sebaiknya dapat berfungsi sebagai berikut: 1. Sistem harus dapat melakukan perhitungan untuk menentukan antibiotik, sesuai

dengan kriteria dari user dengan kecepatan komputasi yang tinggi.

2. Sistem harus mudah digunakan sehingga dapat dioperasikan dengan baik oleh user.

3.4. Flowchart Sistem

3.4.1. Flowchart Sistem secara umum


(46)

3.4.2. Flowchart proses Analytical Hierarchy Process


(47)

3.4.3. Flowchart proses Weighted Product


(48)

3.5. Perancangan Antarmuka (interface)

Merancang antarmuka merupakan bagian yang paling penting dari merancang sebuah sistem. Sebuah antarmuka harus dirancang dengan memperhatikan faktor pengguna sehingga sistem yang dibangun dapat memberikan kenyamanan dan kemudahan untuk digunakan oleh pengguna. Form antarmuka dapat dilihat pada gambar 3.5. dibawah ini.

Gambar 3.5. Form Antarmuka

Keterangan : 1. Menu File

Berfungsi untuk menampikan submenu exit 2. Submenu exit

Berfungsi untuk keluar dari program 3. Menu Master Data

Berfungsi untuk menampilkan submenu master data dan perhitungan Analytical Hierarchy Process dan Weighted Product

4. Submenu Master Data Penyakit

Berfungsi untuk menampilkan master data penyakit 5. Submenu Master Data Antibiotik

Berfungsi untuk menampilkan master data Antibiotik 6. Submenu Master Data Kriteria

Berfungsi untuk menampilkan master data Kriteria


(49)

Berfungsi untuk menampilkan form penilaian dan perhitungan kriteria dengan algoritma ahp

8. Submenu Penilaian Antibiotik Analytical Hierarchy Process

Berfungsi untuk menampilkan form penilaian dan perhitungan antibiotik dengan algoritma ahp

9. Submenu Penilaian Product Weighted Product

Berfungsi untuk menampilkan form penilaian dan perhitungan dengan algoritma Weighted Product

10. Menu About me


(50)

BAB IV

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1. Implementasi Sistem

Implementasi sistem merupakan tahapan yang harus dilalui dalam proses pengembangan perangkat lunak dari suatu sistem. Pada tahap ini dilakukan setelah terlebih dahulu melalui tahap Analisis dan Perancangan Sistem.

Adapun sistem ini dibangun menggunakan Software Microsoft Visual Studio 2010 dengan bahasa pemrograman C#. Pada sistem ini terdapat 3 halaman utama yaitu terdiri dari :

1. Form Awal 2. Form Utama 3. Form About me

4.1.1. Tampilan Halaman Form Awal

Pada halaman Form Awal ini merupakan halaman yang pertama kali muncul ketika pada saat sistem dijalankan. Tampilan Halaman Form Awal dapat dilihat pada Gambar 4.1.


(51)

Halaman Form Awal terdapat 3 buah Menu, dan masing masing menu mempunyai sub menu. Pada file terdapat sub menu exit, master data terdapat submenu, master data penyakit, master data antibiotik, master data kriteria, penilaian kriteria (Analytical Hierarchy Process), penilaian antibiotik (Analytical Hierarchy Process) dan penilaian produk (Weighted Product) dan about me.

4.1.2. Tampilan Halaman Form Utama

Halaman Form Utama Merupakan halaman yang digunakan untuk melakukan proses penginputan penyakit dan memasukkan data antibiotik dengan cara menginput nama penyakit, nama antibiotik, dosis dan harga. Tampilan halaman Form utama dapat dilihat pada Gambar 4.2. dan Gambar 4.3.


(52)

Gambar 4.3. Tampilan Halaman Form Utama Data Antibiotik

4.1.3. Tampilan Halaman Form About me

Halaman form About me merupakan halaman yang digunakan untuk melihat informasi tentang program dan programmer, tampilan halaman form About me dapat dilihat pada gambar 4.3 dibawah ini:


(53)

4.2. Pengujian Sistem

Pengujian sistem dilakukan untuk mengetahui bagaimana kinerja sistem dalam melakukan proses perhitungan antibiotik terbaik menggunakan algoritma Analytical Hierarchy Process dan Weighted Product.

4.2.1. Pengujian Sistem dengan algoritma Analytical Hierarchy Process

Untuk melakukan pemilihan antibiotik dengan algoritma Analytical Hierarchy Process tahap awal adalah memilih sub menu perhitungan Analytical Hierarchy Process. Setelah tampilan form perhitungan Analytical Hierarchy Process muncul lakukan langkah-langkah berikut :

1. Mengisi Form perbandingan berpasangan kriteria.

2. Setelah mengisi tabel perbandingan berpasangan tekan tombol hitung ranking untuk mendapatkan bobot dari kriteria berdasarkan perbandingan berpasangan.


(54)

Gambar 4.6. Form Bobot Kriteria Perbandingan Berpasangan

3. Melakukan perhitungan total.

4. Kemudian tekan tombol ranking untuk mendapatkan antibiotik.

Gambar 4.7. Form Perhitungan Total


(55)

4.2.2. Pengujian Sistem dengan algoritma Weighted Product

Untuk perhitungan dengan algoritma Weighted Product, masing masing bobot kriteria untuk setiap kriteria di tentukan oleh pengguna. Setelah itu lakukan langkah langkah berikut ini untuk melakukan proses pemilihan.

1. Masukkan nilai kriteria Berat badan, Dosis dan Harga, sesuai dengan keinginan pengguna dan tentukan bobot.

2. Melakukan pembobotan weighted product. 3. Melakukan perhitungan weighted product.

4. Kemudian tekan tombol ranking untuk mendapatkan perangkingan antibiotik

Gambar 4.9. Form Input Bobot


(56)

Gambar 4.11. Form Perhitungan


(57)

4.4. Hasil Pengujian

Hasil pengujian yang didapatkan melalui penelitian ini adalah nilai dari masing masing antibiotik berdasarkan algoritma analytical hierarchy process dan weighted product dengan nilai kriteria yang diinginkan pengguna.


(58)

BAB V

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Berdasarkan hasil implementasi dan pengujian Sistem Pendukung Keputusan Menentukan Antibiotik Menggunakan Algoritma Analytical Hierarchy Process dan Weighted Product, maka didapat kesimpulan sebagai berikut :

1. Sistem dapat memberikan rekomendasi ranking alternatif pilihan untuk menyelesaikan pemilihan antibiotik dengan mengimplementasikan algoritma Analytical Hierarchy Process dan Weighted Product pada sistem.

2. Dengan menggunakan sistem ini pengguna dapat lebih efektif dan efisien dalam menentukan antibiotik sesuai dengan kriteria yang diinginkan.

3. Hasil yang diperoleh dari perhitungan sistem ini hanya sebagai alat bantu bagi pengguna untuk menyelesaikan permasalahan menentukan antibiotik

5.2. Saran

Saran yang dapat diberikan pada penulis untuk pengembangan dan perbaikan sistem lebih lanjut adalah:

1. Sistem yang dirancang diharapkan dapat lebih dikembangkan untuk mengembangkan penelitian ini.

2. Analisis yang dilakukan diharapkan dapat lebih dalam lagi sehingga dapat mengetahui kompleksitas dari Algoritma Analytical Hierarchy Process dan Weighted Product.


(59)

BAB II

TINJAUAN PUSTAKA

2.1. Sistem Pendukung Keputusan

Sistem Pendukung Keputusan merupakan suatu sistem interaktif yang mendukung kepututsan dalam proses pengambilan keputusan melalui alternatif-alternatif yang diperoleh dari hasil pengolahan data, informasi dan rancangan model. Sistem pendukung keputusan ( Decision Support System ) adalah suatu sistem informasi yang menggunakan model-model keputusan, basis data, dan pemikiran manajer sendiri, proses modeling interaktif dengan komputer untuk mencapai pengambilan keputusan oleh manajer tertentu.

Dengan pengertian diatas dapat dijelaskan bahwa sistem pendukung keputusan bukan merupakan alat pengambil keputusan, melainkan merupakan sistem yang membantu pengambil keputusan yang melengkapi mereka dengan informasi dari data yang telah diolah dengan relevan dan diperlukan untuk membuat keputusan tentang suatu masalah dengan lebih cepat dan akurat. Sehingga sistem ini tidak dimaksudkan untuk menggantikan pengambilan keputusan dalam dalam proses pembuatan keputusan.

2.2. Antibiotik

Antibiotik merupakan obat untuk menghentikan atau menekan pertumbuhan kuman atau bakteri. Penggunaan antibiotik yang berlebihan pada beberapa kasus yang tidak tepat guna, dapat menyebabkan masalah kekebalan antimikrobial. Penggunaan antibiotik yang tidak tepat dalam hal indikasi, maupun cara pemberian dapat merugikan penderita dan dapat memudahkan terjadinya resistensi terhadap atibiotik serta dapat menimbulkan efek samping.

Ketersediaan antibiotik yang sangat banyak jumlahnya dalam klinik, ternyata juga membawa kesulitan bagi para praktisi terutama dalam melakukan pemilihan antibiotika secara tepat, aman dan efefktif bagi seorang pasien. Cepatnya penemuan


(60)

berbagai jenis antibiotika baru, sayangnya tidak diikuti secara sepadan oleh perkembangan prinsip-prinsip/sistematika terapi antibiotika dalam klinik (Santoso, 1990 dalam muhlis 2011).

2.2.1. Infeksi Saluran Pernapasan Akut

Infeksi Saluran Pernapasan Akut (ISPA) adalah salah satu dari banyak penyakit yang menginfeksi di negara maju maupun negara berkembang. Menurut WHO (2003), Infeksi Saluran Pernapasan Akut merupakan salah satu penyebab kematian tersering pada anak di negara sedang berkembang. Sekitar empat dari lima belas juta perkiraan kematian pada anak berusia dibawah lima tahun pada setiap tahunnya sebanyak 2/3 kematian tersebut adalah bayi.

Antibiotik : Cefadroxil 500 mg/kgbb Ciprofloxacin 500 mg/kgbb Cephalexin 500 mg/kgbb Cefixime 150 mg/kgbb Levofloxacin 200 mg/kgbb Corsatrocin 200 mg/kgbb Lapimox 500 mg/kgbb Binozyt 500 mg/kgbb Ixor 150 mg/kgbb

Co amaxiclav 625 mg/kgbb

2.3. Algoritma Analytical Hierarchy Process

Algoritma Analytical Hierarchy Process merupakan salah satu model untuk pengambilan keputusan yang dapat membantu kerangka berfikir manusia. Pada dasarnya Analytical Hierarchy Process adalah algoritma yang memecah suatu masalah yang kompleks dan tidak terstruktur ke dalam kelompok-kelompok, mengatur kelompok-kelompok tersebut kedalam suatu susunan hirarki, memasukkan nilai numeris sebagai pengganti persepsi manusia dalam melakukan perbandingan relatif, dan akhirnya dengan suatu sintesis ditentukan elemen mana yang mempunyai prioritas tertinggi (Permadi, 1992 dalam Honggowibowo 2010).


(61)

2.3.1. Prinsip Dasar Analytical Hierarchy Process

Pada dasarnya langkah-langkah dalam pembentukan algoritma Analytical Hierarchy Process dapat dijelaskan berikut ini.

1. Menyusun Hirarki

Membuat struktur hirarki yang diawali dengan tujuan, dilanjutkan dengan kriteria-kriteria dan kemungkinan alternatif-alternatif pada tingkatan yang paling bawah.

2. Penilaian kriteria dan alternatif

Kriteria dan alternatif dilakukan dengan perbandingan berpasangan. Menurut Saaty (1988), untuk berbagai persoalan, skala 1 sampai 9 adalah skala terbaik untuk mengekspresikan pendapat. Nilai dan definisi pendapat kualitatif dari skala perbandingan Saaty dapat diukur menggunakan tabel analisis seperti pada tabel 9.3.1 berikut ini:

Intensitas Kepentingan

Keterangan 1 Kedua elemen sama pentingnya

3 Elemen yang satu sedikit lebih penting daripada elemen yang lainnya 5 Elemen yang satu lebih penting daripada yang lainnya

7 Satu elemen jelas lebih mutlak penting daripada elemen lainnya 9 Satu elemen mutlak penting daripada elemen lainnya

2,4,6,8 Nilai-nilai antara dua nilai pertimbangan-pertimbangan yang berdekatan

Tabel 2.3.1 Skala Penilaian Perbandingan Pasangan.

3. Menetapkan bobot/Prioritas elemen a. Menetapkan perbandingan berpasangan

Perbandingan dilakukan berdasarkan judgment pengambil keputusan dengan menilai tingkat kepentingan suatu elemen dibandingkan elemen lain.

b. Menghitung bobot/prioritas elemen 4. Mengukur konsistensi

Konsistensi perlu diukur untuk mengetahui apakah penelitian atau pertimbangan yang dilakukan pada setiap langkah kedua diatas menunjukkan bahwa konsistensi antara objek yang dinilai adalah benar. Analytical Hierarchy Process mengukur


(62)

konsistensi harus 0,1 atau kurang. Nilai rasio konsistensi yang melebihi 0,1 akan menyebabkan konsistensi tidak 100% disarankan untuk dilakukan perbandingan ulang pada matriksnya.

2.3.2 Prosedur Analytical Hierarchy Process

Pada dasarnya, prosedur atau langkah-langkah dalam metode Analytical Hierarchy Process meliputi :

1. Mendefinisikan masalah dan menentukan solusi yang diinginkan, lalu menyusun hirarki dari permasalahan yang dihadapi.

2. Menentukan prioritas elemen

a. Langkah pertama dalam menentukan prioritas elemen adalah membuat perbandingan pasangan, yaitu membandingkan elemen secara berpasangan sesuai kriteria yang diberikan.

b. Matriks perbandingan berpasangan diisi menggunakan bilangan untuk mempresentasikan kepentingan relatif dari suatu elemen terhadap elemen yang lainnya.

3. Sintesis

Pertimbangan-pertimbangan terhadap perbandingan berpasangan disintesis untuk memperoleh keseluruhan prioritas. Hal-hal yang dilakukan dalam langkah ini adalah:

a. Menjumlahkan nilai-nilai dari setiap kolom pada matriks.

b. Membagi setiap nilai dari kolom dengan total kolom yang bersangkutan untuk memperoleh normalisasi matriks.

c. Menjumlahkan nilai-nilai dari setiap baris dan membaginya dengan jumlah elemen untuk mendapatkan nilai rata-rata.

4. Mengukur konsistensi

Dalam pembuatan keputusan, penting untuk mengetahui seberapa baik konsistensi yang ada karena kita tidak menginginkan keputusan berdasarkan pertimbangan dengan konsistensi yang rendah. Hal-hal yang dilakukan dalam langkah ini adalah:

a. Kalikan setiap nilai pada kolom pertama dengan prioritas relatif elemen pertama, nilai pada kolom kedua dengan prioritas relatif elemen kedua dan seterusnya.


(63)

b. Jumlahkan setiap baris.

c. Hasil dari penjumlahan baris dibahi dengan elemen prioritas relatif yang bersangkutan.

d. Jumlahkan hasil bagi di atas dengan banyaknya elemen yang ada. Hasilnya di sebut  maks.

5. Hitung Consistency Index (CI) dengan rumus:

CI = (  maks – n ) / n ...(1) Di mana n = banyaknya elemen.

6. Hitung Rasio Konsistensi / Consistency Ratio (CR) dengan rumus:

CR = CI / IR ...(2) Dimana CR = Consistency Ratio

CI = Consistency Index

IR = Indeks Random Consistency

7. Memeriksa konsistensi hirarki. Jika nilainya lebih dari 10%, maka penilaian data judgement harus diperbaiki, berarti langkah kedua harus diulang kembali. Namun, jika rasio konsistensi (CI/IR) kurang atau sama dengan 0,1 maka hasil perhitungan bisa dinyatakan benar.

Ukuran matriks Nilai IR

1 0.00

2 0.00

3 0.58

4 0.90

5 1.12

6 1.24

7 1.32

8 1.41

9 1.45

10 1.49

11 1.51

12 1.48

13 1.56

14 1.57

15 1.59


(64)

2.4. Algoritma Weighted Product

Weighted Product merupakan salah satu metode yang digunakan untuk menyelesaikan masalah Multi Attribute Decision Making (MADM). Algoritma Weighted Product menggunakan perkalian untuk menghubungkan rating atribut, dimana rating setiap atribut harus dipangkatkan dulu dengan bobot atribut yang bersangkutan (Yoon, 1989 dalam Kusumadewi, et al., 2012). Proses ini sama halnya dengan proses normalisasi.

Preferensi untuk alternatif Ai diberikan sebagai berikut:

...(1)

Dengan i = 1, 2, ...,m dan j= 1, 2, ...n. Keterangan:

= product

S = Preferensi alternatif dianalogikan sebagai vektor S X = nilai kriteria

W = Bobot kriteria/subkriteria i = alternatif

j = kriteria

n = banyaknya kriteria

Dimana wj adalah pangkat bernilai positif untuk atribut keuntungan, dan bernilai negatif untuk atribut biaya.

Preferensi relatif dari setiap alternatif, diberikan pada rumus 2:


(65)

Dengan i = 1,2, ...,n...(2) Dimana :

V : Preferensi alternatif dianalogikan sebagai vektor V X : nilai kriteria

w : bobot kriteria i : alternatif j : kriteria

n : banyaknya kriteria

Algoritma weighted product adalah salah satu analisis multi-kriteria keputusan yang sangat terkenal. Multiple Attribute Decision Making (MADM) yang diberikan adalah satu set terbatas dari alternatif keputusan yang dijelaskan dalam hal sejumlah kriteria keputusan.

2.4.1 Langkah-langkah algoritma Weighted Product

Secara singkat, algoritma Weighted Product ini adalah sebagai berikut (Anggraeni et al.,2013 dalam Mawuntu, 2015).

a. Melakukan normalisasi bobot untuk menghasilkan nilai = 1. Dimana j = 1,2,...,n adalah banyak alternatif.

b. Menentukan kategori dari masing-masing kriteria, apakah termasuk kedalam kriteria keuntungan atau kriteria biaya.

c. Menetukan nilai vektor S dengan mengalikan seluruh kriteria bagi sebuah alternatif dengan bobot sebagai pangkat positif untuk kriteria keuntungan dan bobot berfungsi sebagai pangkat negatif pada kriteria biaya.

d. Menentukan nilai vektor V yang akan digunakan untuk perangkingan. e. Menemukan urutan alternatif terbaik yang akan menjadi keputusan.

2.5. Penelitian yang Relevan

Adapun penelitian-penelitian yang relevan terhadap penelitian ini adalah:

1. Muhammad Syaukani Dan Sri Hartati (2012), Pemodelan Sistem Pendukung Keputusan Kelompok Untuk Diagnosa Penyakit Pneumonia Dengan Fuzzy Linguistic Quantifier Dan Ahp. Hasil penelitian Berdasarkan uraian dan pembahasan, dapat disimpulkan bahwa sistem pendukung keputusan kelompok


(66)

menggunakan Fuzzy Linguistic Quantifier dan AHP dapat menetapkan penyakit dan jenis antibiotik sebagai hasil dianogsis penyakit pneumonia.

2. Muhammad Syaukani Dan Hari Kusnanto (2012), Pemodelan Sistem Pendukung Keputusan Kelompok Dengan Metode Fuzzy Weighted Product Untuk Diagnosa Penyakit Pneumonia. Hasil penelitian Berdasarkan uraian dan pembahasan, dapat disimpulkan bahwa sistem pendukung keputusan kelompok menggunakan Fuzzy Weighted Product dapat menetapkan penyakit dan jenis antibiotik sebagai hasil diagnosa penyakit pneumonia. Penelitian ini akan dikembangkan lebih lanjut dengan melakukan penambahan data gejala dan meneliti lebih jauh sistem penilaian terhadap gejala dari suatu penyakit.

3. Muhammad Muhlis (2011), Kajian Peresepan Antibiotika Pada Pasien Dewasa Di Salah Satu Puskesmas Kota Yogyakarta Periode Januari-April 2010. Hasil penelitian Berdasarkan hasil penelitian terhadap penggunaan antibiotika pasien dewasa di salah satu puskesmas Kota Yogyakarta periode Januari sampai dengan April 2010 dapat diambil kesimpulan sebagai berikut, tercatat sebanyak 320 pasien yang mendapatkan antibiotika, dengan 6 jenis antibiotika yaitu amoksisilin 64,53%, ampisilin 11,31 %, kontrimoksazol 15,90%, kloramfenikol, 0,61 %, metronidazol 2,75 % dan tetrasiklin 4,89 %. Sebanyak 313 pasien mendapat antibiotika tunggal dan 7 pasien mendapat kombinasi antibiotika, semua peresepan memenuhi ketepatan dosis dan frekuensi, kecuali kotrimoksasol tepat dosis 98 % dan Ampisilin tepat dosis 49 %. Semua peresepan (100%) tidak memenuhi ketepan durasi penggunaan antibiotika.


(1)

vi

ABSTRAK

Semakin banyak merek antibiotik yang ada di apotek menjadi kendala dalam menentukan pilihan. Ketepatan pemberian antibiotik serta dosis yang sesuai merupakan faktor penting dalam upaya penyembuhan bagi pasien. Sistem ini dapat digunakan untuk membantu apoteker dalam menentukan antibiotik yang sesuai dengan kebutuhan dan kriteria yang diinginkan. Sistem pendukung keputusan merupakan sistem yang mendukung alternatif-alternatif yang diperoleh dari hasil pengolahan data, informasi dan rancangan model. Dimana dengan Algoritma Analytical Hierarchy Process masalah yang kompleks dapat dengan mudah disederhanakan sehingga mempercepat proses pengambilan keputusan. Algoritma Weighted Product merupakan Algoritma yang menggunakan perkalian untuk menghubungkan nilai atribut kriteria harus dipangkatkan terlebih dahulu dengan bobot kriteria yang bersangkutan. Hasil dari sistem ini adalah perankingan dari kedua algoritma dengan kriteria yang sudah ditentukan.

Kata Kunci : Sistem Pendukung Keputusan, Analytical Hierarchy Process, Weigthed Product, Antibiotik.


(2)

vii

DESICION SUPPORT SYSTEMS DETERMINE ANTIBIOTIC USE ANALYTICAL HIERARCHY PROCESS ALGORITHM AND

WEIGHTED PRODUCT

ABSTRACT

More and more brands of antibiotics in pharmacies become an obstacle in determining the choice. The accuracy of antibiotics as well as the appropriate dose is an important factor in the effort to cure the patient. This system can be used to assist the pharmacist in determining antibiotic that suits your needs and desired criteria. Decision support system is a system that supports alternatives derived from the processing of data, information and design models. Where the Analytical Hierarchy Process Algorithm complex problems can easily be simplified so as to accelerate the decision making process. Weighted Product algorithm is an algorithm that uses multiple criteria to connect the attribute value must be raised to advance to the weight of the relevant criteria. Results of this ranking system of two algorithms with pre-determined criteria. Keywords: Decision Support Systems, Analytical Hierarchy Process, Weighted Product, Antibiotics.


(3)

viii

DAFTAR ISI

Halaman

Persetujuan ii

Pernyataan iii

Penghargaan iv

Abstrrak vi

Abstract vii

Daftar Isi viii

Daftar Tabel x

Daftar Gambar xi

Bab 1 Pendahuluan 1

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Masalah 2

1.4. Tujuan Penelitian 2

1.5. Manfaat Penelitian 3

1.6. Metodologi Penelitian 3

1.7. Sistematika Peneltian 4

Bab 2 Tinjauan Pustaka 5

2.1. Sistem Pendukung Keputusan 5

2.2. Antibiotik 5

2.2.1. Infeksi Saluran Pernafasan 6

2.3. Algoritma Analytical Hierarchy Process 6 2.3.1. Prinsip Dasar Analytical Hierarchy Process 7 2.3.2. Procedure Analytical Hierarchy Process 8

2.4. Algoritma Weighted Produc 10

2.4.1. Langkah-langkah Algoritma Weighted Product 11

2.5. Penelitian yang Relevan 11

Bab 3 Analisis dan Perancangan Sistem 13

3.1. Analisis Sistem 13

3.2. Analisis Masalah 13

3.3. Analisis Kebutuhan Sistem 14

3.3.1. Kebutuhan Fungsional Sistem 14

3.3.2. Kebutuhan Non-Fungsional Sistem 15

3.4. Flowchart Sistem 15

3.4.1. Flowchart Sistem Secara Umum 15

3.4.2. Flowchart Analytical Hierarchy Process 16

3.4.3. Flowchart Weighted Product 17


(4)

ix

Bab 4 Implementasi dan Pengujian Sistem 20

4.1. Implementasi Sistem 20

4.1.1. Tampilan Halaman Form Awal 20

4.1.2. Tampilan Halaman Form Utama 21

4.1.3. Tampilan Halaman Form About Me 22

4.2. Pengujian Sistem 23

4.2.1. Pengujian Sistem dengan Algoritma Analytical

Hierarchy Process 23

4.2.2. Pengujian Sistem dengan Algoritma Weighted

Product 25

4.3. Hasil Pengujian 27

Bab 5 Kesimpulan dan Saran 28

5.1. Kesimpulan 28

5.2. Saran 28

Daftar Pustaka 29


(5)

x

DAFTAR TABEL

Halaman Tabel 2.3.1. Skala Penilaian Perbandingan Pasangan 7 Tabel 2.3.2. Daftar Indeks Random Konsistensi (IR) 9


(6)

xi

DAFTAR GAMBAR

Halaman Gambar 3.1. Diagram Ishikawa Analisis Masalah Sistem 14

Gambar 3.2. Flowchart Sistem 15

Gambar 3.3. Flowchart Algoritma Analytical Hierarchy Process 16 Gambar 3.4. Flowchart Algoritma Weighted Product 17

Gambar 3.5. Form Antarmuka 18

Gambar 4.1. Tampilah Halaman Form Awal 20

Gambar 4.2. Tampilan Form Utama Data Penyakit 21 Gambar 4.3. Tampilan Halaman Form Utama Data Antibiotik 22

Gambar 4.4. Tampilah Halaman Form About Me 22

Gambar 4.5. Form Perbandingan Berpasangan Kriteria 23 Gambar 4.6. Form Bobot Kriteria Perbandingan Berpasangan 24

Gambar 4.7. Form Perhitungan Total 24

Gambar 4.8. Form Ranking 24

Gambar 4.9. Form Input Bobot 25

Gambar 4.10. Form Pembobotan 25

Gambar 4.11. Form Perhitungan 26