• Tidak ada hasil yang ditemukan

DIJKSTRA ALGORITHM IMPLEMENTATION TO SEARCH ROOM LOCATION Objective : Yogyakarta Bethesda Hospital

N/A
N/A
Protected

Academic year: 2019

Membagikan "DIJKSTRA ALGORITHM IMPLEMENTATION TO SEARCH ROOM LOCATION Objective : Yogyakarta Bethesda Hospital"

Copied!
104
0
0

Teks penuh

(1)

IMPLEMENTASI ALGORITMA DIJKSTRA

UNTUK PENCARIAN LOKASI RUANGAN

Studi Kasus : RS. Bethesda Yogyakarta

Skripsi

Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika

Oleh :

Agnes Christy Mara Devvi

NIM : 045314070

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

(2)

FINAL ASSIGNMENT

Presented as a Meaning For Gaining Engineering Holder In Informatics Enginering Study Program

By :

Agnes Christy Mara Devvi

NIM : 045314070

INFORMATICS ENGINEERING DEPARTMENT

SCIENCE AND TECHNOLOGY FACULTY

(3)
(4)
(5)

INTISARI

Pencarian lokasi ruangan di rumah sakit, khususnya RS. Bethesda, merupakan suatu masalah yang dihadapi pengunjung awam pada umumnya. Dalam skripsi ini di buat suatu program bantu dengan mengimplementasikan algoritma dijkstra untuk pencarian lokasi ruangan di rumah sakit dengan studi kasus di RS. Bethesda. Algoritma dijkstra ini, diimplementasikan dengan bahasa pemrograman Visual Basic 6.0 dan untuk penyimpanan data-data ruangannya, di gunakan MySQL 5.0.

(6)

one of the common problems faced by new visitor. From this Thesis, an assistance program is made by implementing dijkstra algorithm to search location of rooms in hospital, with Bethesda Hospital as the objective. This djikstra algorithm, was implemented by using Visual Basic 6.0 and to store the data of rooms, MySQL 5.0 is used.

(7)

KATA PENGANTAR

Puji syukur saya ucapkan ke hadirat Allah, SWT atas berkat dan limpahan kasih karunia yang telah diberikan-Nya sehingga penulis bisa menyelesaikan tugas akhir dan menyusun laporan ini dengan judul “Implementasi Algoritma Dijkstra Untuk Pencarian Lokasi Ruangan dengan Studi Kasus di RS Bethesda Yogyakarta”.

Dorongan serta nasehat dari berbagai pihak sangat membantu dalam pembuatan tugas akhir ini sampai tersusunnya laporan ini. Untuk itu, penulis ingin mengucapkan terima kasih kepada :

1. Bapak Puspaningtyas Sanjoyo Adi, S.T.,M.T selaku Ketua Jurusan Teknik Informatika Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.

2. Bapak Drs.Jong Jek Siang, M.Sc selaku Dosen Pembimbing Tugas Akhir yang telah membimbing dan menyediakan waktu dalam memberikan pengarahan selama pembuatan tugas akhir dan penulisan laporan tugas akhir ini.

3. Pihak RS. Bethesda yang telah memberikan ijin pada penulis untuk melakukan penelitian di Rs. Bethesda Yogyakarta.

4. Ibu dan Bapakku tercinta, yang selalu memberikan dorongan pada penulis untuk selalu maju dan terus berjuang untuk menggapai masa depan yang lebih baik. Terima kasih atas doa yang senantiasa selalu menemani langkahku. 5. Papa tersayang ku, yang selalu memberikanku motivasi untuk maju, untuk

selalu berusaha menjadi yang terbaik. “ I love u, my father….. I miss u “ 6. Nenek dan Kakek ku tersayang yang senantiasa memberikan saran, doa dan

dukungan untuk penulis.

7. Eko Budi Kuncoro atas kritik, masukan dan semangat untuk segera menyelesaikan tugas akhir ini, yang tak pernah lelah menjadi tempat keluh kesahku.

(8)
(9)
(10)
(11)

DAFTAR ISI

Halaman

HALAMAN JUDUL... i

HALAMAN JUDUL ( DALAM B.INGGRIS )... ii

HALAMAN PERSETUJUAN PEMBIMBING... iii

HALAMAN PENGESAHAN... iv

INTISARI... v

ABSTRACT... vi

KATA PENGANTAR... vii

PERNYATAAN KEASLIAN KARYA... ix

LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS... x

DAFTAR ISI... xi

DAFTAR GAMBAR... xiv

DAFTAR TABEL... xv

DAFTAR LAMPIRAN... xvi

BAB I PENDAHULUAN... 1

1.1 Latar Belakang Masalah... 1

1.2 Rumusan Masalah ... 2

1.3 Batasan Masalah ... 2

1.4 Tujuan Penelitian ... 3

1.5 Metode Penelitian ... 3

1.6 Sistematika Penyusunan Laporan ... 3

BAB II LANDASAN TEORI... 5

2.1 Pengenalan Graf ... 5

2.2 Lintasan Terpendek... 6

(12)

ANALISA DAN PERANCANGAN SISTEM... 15

3.1 Gambaran Sistem ... 15

3.2 Fase Definisi ... 17

3.3 Fase Analisis Masalah... 18

3.4 Gambaran Sistem Baru ... 20

3.5 Requirement Analisis ... 23

3.6 Perancangan Basis Data ... 23

3.6.1. Pemodelan Proses... 23

3.6.2. Pemodelan Data ... 30

3.7 Desain Input Output ... 31

3.7.1. Desain Input ... 31

3.7.2. Desain Output ... 33

3.8 Perancangan Proses ... 33

3.8.1. Pembuatan Matrik Jarak... 34

3.8.2. Pembagian Ruang Lingkup ... 35

BAB IV IMPLEMENTASI DAN ANALISA... 42

4.1 Implementasi Program ... 42

4.1.1. Implementasi Algoritma Dijkstra... 42

4.1.1.1. Menentukan Titik Awal ... 43

4.1.1.2. Menentukan Titik Tujuan... 44

4.1.1.3. Menentukan Ruang Lingkup... 45

4.1.1.4. Iterasi Algoritma Dijkstra ... 46

4.1.2. Implementasi Pembuatan Output ... 50

(13)

4.1.2.2. Output Berupa Denah RS. Bethesda Disertai

Jalur Terpendek... 54

4.2 Hasil Implementasi... 56

4.2.1. Menu Utama... 56

4.2.2. Menu Input Titik Awal dan Titik Tujuan... 57

4.2.3. Tampilan Output ... 58

4.3 Analisa Hasil ... 61

4.3.1. Pengaruh Pembagian Ruang Lingkup... 61

4.3.2. Waktu Iterasi Algoritma Dijkstra... 63

BAB V KESIMPULAN DAN SARAN... 65

5.1 Kesimpulan ... 65

(14)

Gambar 3.1. Denah Rumah Sakit Bethesda Yogyakarta ... 16

Gambar 3.2 Flowchart Pencarian Jalur Terpendek ... 22

Gambar 3.3 Use Case Diagram... 23

Gambar 3.4 Context Diagram ... 24

Gambar 3.5 Diagram Berjenjang ... 25

Gambar 3.6. Data Flow Diagram Level 1 ... 26

Gambar 3.7. Data Flow Diagram Level 2 Proses 1 ... 27

Gambar 3.8. Data Flow Diagram Level 2 Proses 3 ... 28

Gambar 3.9. Data Flow Diagram Level 2 Proses 5 ... 29

Gambar 3.10. E-R Diagram ... 30

Gambar 3.11. Relational Model ... 30

Gambar 3.12 Graf Keseluruhan Rumah Sakit Bethesda Lantai 1... 39

Gambar 3.13 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 2 ... 40

Gambar 3.14 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 3………... 41

Gambar 4.1. Tampilan Menu Utama... 57

Gambar 4.2 Tampilan Menu Untuk Kategori Fasilitas Umum... 58

Gambar 4.3. Tampilan Output Yang Berupa Gambar Denah RS. Bethesda Dilengkapi dengan Jalur Terpendek... 59

Gambar 4.4. Tampilan Output Jalur Terpendek Yang Berupa Kode Ruangan dan Nama Ruangan ... 60

(15)

DAFTAR TABEL

Halaman

Tabel 2.1. Tabel Perhitungan Algoritma Dijkstra... 11

Tabel 3.1. Tabel Couses dan Effects... 18

Tabel 3.1. Tabel Contoh Kasus Penyempitan Ruang Lingkup ... 36

Tabel 3.2. Tabel Aturan Ruang Lingkup Pengecekan Titik... 37

Tabel 4.1. Tabel Pengaruh Pembagian Ruang Lingkup... 62

(16)
(17)

BAB I

PENDAHULUAN

1.1 Latar Belakang Masalah

Para pengunjung rumah sakit biasanya menginginkan sampai ke ruangan yang ingin dikunjungi dengan cepat, hal ini disebabkan karena biasanya orang datang ke rumah sakit dalam keadaan terburu – buru ingin mengunjungi teman atau saudaranya yang sedang sakit. Kejadian dimana seorang pengunjung tersesat sewaktu mencari ruangan dirumah sakit, terjadi jika pengunjung tersebut tidak mengetahui dimana lokasi ruangan yang ingin dituju, sedangkan rumah sakit yang dikunjungi memiliki area yang sangat luas dengan lorong – lorong yang sangat banyak.

(18)

1.2 Rumusan Masalah

Dari latar belakang masalah diatas dapat dirumuskan menjadi masalah sebagai berikut :

Bagaimana mengimplementasikan algoritma dijkstra dalam pencarian jalur terpendek suatu lokasi ruangan di Rumah Sakit Bethesda dengan cepat ?

1.3 Batasan Masalah

Dalam pembuatan program Bantu pencarian lokasi di rumah sakit dilakukan beberapa batasan masalah sebagai berikut :

1. Studi kasus dilaksanakan di Rumah Sakit Bethesda Yogyakarta.

2. Data ruangan dan jarak antar ruangan yang ada merupakan data Rumah Sakit Bethesda Yogyakarta tahun 2003.

3. Ruangan yang bisa dituju adalah Ruang Rawat Inap Pasien, Klinik, Laboratorium, Ruang Administrasi, ATM, Ruang Operasional, Farmasi, IGD, Staff Bethesda dan fasilitas umum.

4. Program dibuat dengan bahasa pemrograman Visual Basic 6.0 dengan database MYSQL 5.0

(19)

3

1.4 Tujuan Penelitian

Tujuan penyusunan skripsi :

Membuat suatu program Bantu dengan mengimplementasikan algoritma dijkstra, untuk mencari jalur terpendek menuju ruangan – ruangan yang ada di Rumah Sakit Bethesda.

1.5 Metode Penelitian

Metode Penelitian :

1. Studi pustaka tentang metode dijkstra, bahasa pemograman VB 6.0, database MySQL 5.0.

2. Survey lokasi di rumah sakit Bethesda untuk mengetahui secara langsung jalur-jalur tiap ruangan di rumah sakit.

3. Implementasi pencarian jarak terpendek dengan menggunakan metode dijkstra dalam suatu program

1.6 Sistematika Penyusunan Laporan

BAB I PENDAHULUAN

Bab ini berisi latar belakang masalah, rumusan masalah, batasan masalah, tujuan penelitian, metodologi penelitian dan sistematika penyusunan laporan.

BAB II LANDASAN TEORI

(20)

BAB III ANALISA DAN PERANCANGAN SISTEM

Bab ini berisi tentang gambaran sistem baru, pembahasan analisis terhadap sistem informasi yang dibuat, analisis kebutuhan sistem dan desain perancangan sistem.

BAB IV IMPLEMENTASI DAN ANALISA HASIL

Bab ini berisi tentang pengimplementasian dari rancangan sistem yang telah dibuat pada bab III dengan menggunakan bahasa pemrograman VB6.0 dan database MYSQL 5.0 dan analisa dari hasil pengimplementasian algoritma dijkstra dalam pencarian jalur terpendek.

BAB V PENUTUP

(21)

BAB II

LANDASAN TEORI

2.1 Pengenalan Graf

Graf adalah himpunan titik yang dihubungkan dengan garis-garis. Dalam

kehidupan sehari-hari banyak sekali persoalan yang diimplementasikan dengan

graf. Bidang-bidang yang menggunakan penerapan graf antara lain Switching

network, Coding theory, Electrical analysis, Operation research, Aljabar, Computer science, dan Kimia. Suatu graf G terdiri dari 2 himpunan yang berhingga, yaitu himpunan titik-titik tidak kosong yang disimbolkan dengan V(G)

dan himpunan garis-garis yang disimbolkan dengan E(G) sehingga dapat ditulis

menjadi notasi G = (V,E).

Terdapat beberapa istilah penting yang berkaitan dengan graf. Berikut ini

didefinisikan beberapa terminologi yang sering digunakan:

• Derajat ( Degree )

Derajat suatu simpul pada graf tak berarah adalah jumlah sisi yang bersisian

dengan simpul tersebut. Pada graf berarah, derajat simpul v dinyatakan dengan

d

in(v) dan dout(v), yang dalam hal ini:

d

in(v) = derajat masuk (in-degree) , jumlah simpul yang masuk ke simpul v

d

out(v) = derajat keluar (in-degree), jumlah simpul yang keluar dari simpul v

Dimana, d(v) = d

in(v) + dout(v).

(22)

Edge ( garis )

Adalah sebuah garis yang menghubungkan 2 titik.

Walk

Adalah barisan titik – titik dan garis secara berselang seling.

• Lintasan ( Path )

Adalah sebuah walk dimana yang semua garisnya harus berbeda,

• Siklus ( Cycle ) atau Sirkuit ( Circuit )

Adalah sebuah lintasan yang berawal dan berakhir pada titik yang sama.

Distance ( jarak )

Adalah panjang garis antara kedua titik

• Graf Berbobot ( Weighted Graph )

Adalah graf yang setiap sisinya diberi harga (bobot).

2.2 Lintasan Terpendek

Lintasan terpendek merupakan salah satu dari masalah yang dapat

diselesaikan dengan graf. Beberapa algoritma yang digunakan untuk

menyelesaikan persoalan pencarian lintasan terpendek adalah:

1. Algoritma Dijkstra

2. Algoritma Bellman-Ford

3. Algoritma Floyd-Warshall.

Dari ke tiga algoritma di atas Algoritma Dijkstra merupakan algoritma

yang paling tepat untuk menangani masalah pencarian lintasan terpendek pada

(23)

7

2.3 Algoritma Dijkstra

Algoritma ini ditemukan oleh Edsger Dijkstra . Yang merupakan salah

satu algoritma dalam memecahkan permasalahan jarak terpendek (shortest path

problem) untuk sebuah graf berarah (directed graph) dengan bobot-bobot sisi (edge weights) yang bernilai tidak-negatif.

Untuk lebih jelasnya maka dapat digambarkan sebagai berikut : Misalkan

G adalah graf berarah berlabel dengan titik-titik V(G) = { v1,v2,v3,………,vn } dan

path terpendek yang dicari adalah dari v1 ke vn . Algoritma Dijkstra dimulai dari

titik v1 . Dalam iterasinya, algoritma akan mencari satu titik yang jumlah

bobotnya dari titik 1 terkecil. Titik-titik yang terpilih dipisahkan dan tidak

diperhatikan lagi dalam iterasi berikutnya. Misalkan :

V(G) = { v1,v2,v3,………,vn }

L = Himpunan titik-titik € V(G) yang sudah terpilih dalam alur

path terpendek

D(j) = Jumlah bobot path terkecil dari v1 ke vj.

w(I,j) = Bobot garis dari titik vi ke titik vj.

w*(1,j) = Jumlah bobot path terkecil dari v1 ke vj.

Secara formal, algoritma Dijkstra untuk mencari path terpendek adalah sebagai

berikut :

1. L = { }

V = { v2, v3,…., vn }

2. Untuk i= 2,……, n , lakukan D(i) = w(1,i)

(24)

a. Pilih titik vk € V-L dengan D(k) terkecil

L = L U { vk }

b. Untuk setiap vj € V-L lakukan :

Jika D(j) > D(k) +W(k,j) maka ganti D(j) dengan D(k) + W(k,j)

4. Untuk setiap vj € V, w*(1,j) = D(j)

Menurut alagoritma diatas, path terpendek dari titik v1 ke vn adalah melalui

titik titik dalam L secara berurutan, dalam jumlah bobot path terkecilnya adalah

D(n). Untuk lebih memahami algoritma dijkstra, maka berikut contoh soal

pencarian jalur terpendek dari graf pada gambar 2.1 di bawah ini .

Gambar 2.1 Gambar graf kasus implementasi algoritma dijkstra

Kasus :

Dari gambar graf 2.1 diatas maka carilah jalur terpendek dari titik a

sampai dengan titik e.

Penyelesaian :

Va Vb Vc Vd Ve

Va ∞ 5 4 6 7

Vb 5 ∞ 7 8 6

W = Vc 4 7 ∞ 3 4

Vd 6 8 3 ∞ 5

Ve 7 6 4 5 ∞

a b

c d

e

5

6 5

6

4 7

8 4

(25)

9

Ada 4 langkah yang dilakukan untuk menyelesaikan masalah diatas, yaitu :

1. Mula- mula L= { } dan V= { Vb,Vc,Vd,Ve}

2. D(b) = W(a,b) = 5 ; D(c) = W(a,c) = 4

D(d) = W(a,d) = 6 ; D(e) = W(a,e) = 7

3. V – L = { Vb,Vc,Vd,Ve } – { } = { Vb,Vc,Vd,Ve }

Vn = Ve ∉ L, sehingga langkah 3(a) – 3(b) dilakukan.

3(a) : D(k) terkecil adalah D(c) sehingga vk = Vc

L = L ∪ {vk} = { } ∪ { Vc } = { Vc }

3(b) : V-L = { Vb,Vc,Vd,Ve } – { Vc } = { Vb,Vd,Ve }

k = c ( dari langkah 3(a) )

Diselidiki tiap titik dalam V-L

Untuk j = b :

D(j) = D(b) = 5 ; D(k) + W(k,j) = D(c) + W(c,b) = 4 + 7 = 11

Karena D(b) > D(c) + W(c,b) maka D(b) tetap = 5

Untuk j = d :

D(j) = D(d) = 6 ; D(k) + W(k,j) = D(c) + W(c,d) = 4 + 3 = 7

Karena D(d) > D(c) + W(c,d) maka D(d) tetap = 6

Untuk j = e :

D(j) = D(e) = 7 ; D(k) + W(k,j) = D(c) + W(c,e) = 4 + 4 = 8

(26)

Langkah selanjutnya kembali ke langkah 3(a), kerena Ve ∉ L

V-L = { Vb,Vd,Ve } ≠∅

Diantara D(k) ( k = b,d,e ) hasil iterasi langkah 3(b), D(k) yang terkecil adalah

D(b), sehingga Vk =Vb

Maka sekarang, L = L ∪ { Vb } = { Vc } ∪ { Vb } = { Vb,Vc }

3(b) : V- L = { Vb,Vc,Vd,Ve } – { Vb,Vc } = { Vd,Ve }

Langkah 3(b) untuk mengecek setiap titik dalam V-L diulangi lagi.

Langkah 3(a) dan 3(b) di ulang-ulang terus hingga Ve ∈ L. Hasil iterasi

(27)

11

Indeks k shg D(k) minuman

L V-L D(b) D(c) D(d) D(e)

- ∅ {Vb,Vc,Vd,

Ve }

W(a,b) = 5 W(a,c) = 4 W(a,d) = 6 W(a,e) = 7

c {Vc} {Vb,Vd,Ve}

Min

(D(b),D(c)+W(c,b)) = Min(5, 4 + 7) = 5

4( tetap )

Min

(D(d),D(c)+W(c,d)) = Min(6,4+3) = 6

Min

(D(e),D(c)+W(c,e)) = Min (7,4+4) = 7

b {Vb,Vc} {Vd,Ve} 5( tetap ) 4( tetap )

Min (D(d),D(b)+W(b,d)

= Min(6,5+8) = 6

Min

(D(e),D(b)+W(b,e) = Min(7,5+6) = 7

d {Vb,Vc,Vd} {Ve} 5( tetap ) 4( tetap ) 6( tetap )

Min D(e),D(d)+W(d,e)

= Min(7,6+5) = 7

e {Vb,Vc,Vd,Ve}

(28)

Dari tabel perhitungan algoritma yang ditunjukkan pada tabel 2.1 dapat

dilihat karena vn = Ve ∈ L, maka iterasi dihentikan. Path terpendek dari Va

sampai ke Ve adalah 7 dengan jalur yang dibaca mundur sebagai berikut :

Pada iterasi k = d tidak terjadi penurunan jarak ( dari 7 tetap 7 ). Ini berarti

bahwa titik pada indeks k = d (Vd) bukan jalur path. Naik 1 baris diatasnya pada

iterasi k = b tidak terjadi penurunan jarak ( dari 7 tetap 7 ), Ini berarti bahwa titik

pada indeks k = b (Vb) bukan jalur path. Naik 1 baris diatasnya pada iterasi k = c

juga tidak terjadi penurunan jarak ( dari 7 tetap 7 ), Ini berarti bahwa titik pada

indeks k = c (Vc) bukan jalur path.

Jadi path terpendek adalah Va → Ve dengan total jarak = 7.

2.4 Visual Basic 6.0

Microsof Visual Basic 6.0 adalah salah suatu developement tools untuk

membangun aplikasi dalam lingkungan Windows. Dalam pengembangan aplikasi,

Visual Basic menggunakan pendekatan Visual untuk merancang user interface

dalam bentuk form, sedangkan untuk kodingnya menggunakan bahasa Basic yang

cenderung mudah dipelajari. Kelebihan dari Visual Basic adalah kemampuannya

untuk mengkompilasi program dalam bentuk Native Code, yaitu optimisasi pada

saat prosesor mengkompilasi dan menjalankan program tersebut. Selain itu Visual

Basic juga menyediakan fasilitas antar muka penulisan kode program yang lebih

mudah dimengerti dan dipakai sehingga berbagai tipe program dapat

dikembangkan didalamnya, misalnya EXE,DLL dan OCX, bahkan program –

(29)

13

2.5 MYSQL 5.0

SQL adalah bahasa terstruktur yang digunakan untuk query, meng-update

dan memanipulasi database. Tabel adalah suatu struktur dalam database yang

dipakai untuk menyimpan data. Primary Key adalah suatu indeks pengurutan data

yang secara fisik bergabung dengan table. Primary key diperlukan SQL Server

untuk menjaga suatu table , agar mengikuti aturan tertentu dan untuk

mempercepat pencarian berdasarkan primary key. String adalah rangkaian

karakter, angka dan symbol-simbol lainnya. Banyak fungsi string yang disediakan

MySQL untuk memanipulasi data string sehingga memudahkan pengolahan data.

ƒ Insert(str,pos,len,newstr)

Menyisipkan string ke dalam string lain dimulai pada posisi tertentu

sebanyak panjang string tertentu.

ƒ Substring(str,pos,len)

Untuk mengambil sebagian string mulai dari posisi tertentu sebanyak

panjang tertentu.

Stored Procedure adalah suatu sub program atau sekelompok perintah atau

sekelompok perintah SQL tersimpan dan menyatu dalam suatu database. Store

Prosedur dan Trigger adalah fasilitas baru yang ditambahkan dalam MySQL versi

5.0. Dengan adanya fasilitas ini menjadikan MySQL sebagai aplikasi database

yang secara penuh dapat menerapkan konsep pemrograman Client-Server, bukan

hanya Multi-User.

ODBC ( Open Database onectivity ) merupakan standart yang digunakan

(30)

independent terhadap suatu produk. ODBC bekerja dalam lingkup system operasi

windows. Konektor ODBC adalah program dan driver yang bisa mengaitkan suatu

(31)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1 Gambaran Sistem

Rumah Sakit Bethesda merupakan salah satu rumah sakit terbesar yang

ada di Yogyakarta. Rumah sakit ini melayani pengobatan pasien rawat inap dan

rawat jalan, konsultasi kesehatan, layanan laboratorium dan layanan kesehatan

lainnya. Ruangan yang ada di rumah sakit ini sangat banyak sehingga sering

menimbulkan kebingungan bagi para pengunjung untuk mencari lokasi suatu

ruangan. Ruangan yang ada di rumah sakit ini antara lain ruang rawat inap pasien,

laboratorium, klinik, kas bank, ATM dan lain sebagainya. Pintu masuk yang

disediakan di rumah sakit ini ada 3, yaitu : pintu masuk IGD & IRJ, pintu masuk

pengunjung pasien rawat inap dan pintu masuk samping paviliun Srikandi. Untuk

pengunjung yang baru pertama kali datang ke Rumah Sakit Bethesda mungkin

akan merasa kebingungan untuk mencari lokasi ruangan yang ingin mereka

kunjungi. Sehingga pihak rumah sakit menyediakan fasilitas layanan informasi

untuk memudahkan para pengunjung untuk menemukan ruangan yang ingin

dikunjunginya. Mereka dapat menanyakan lokasi ruangan tersebut pada petugas

informasi, sehingga pengunjung akan memperoleh informasi yang diinginkannya.

Pengunjung akan menemukan ruangan yang ingin dikunjungi dengan bantuan

petunjuk yang ada di setiap lorong Rumah Sakit Bethesda. Gambaran mengenai

lokasi ruangan yang ada di Rumah Sakit Bethesda ini dapat dilihat pada gambar

(32)
(33)

17

3.2 Fase Definisi

Masalah pokok yang terjadi pada Rumah Sakit Bethesda ini adalah

bagaimana cara untuk memberikan informasi mengenai lokasi ruangan yang ada

dirumah sakit ini dengan cara yang mudah di mengerti oleh pengunjung secara

efektif dan efisien. Masalah-masalah tersebut dapat dikategorikan pada PIECES

sebagai berikut :

1. Performance

Pada sistem lama yang masih manual, pengunjung harus mencari petunjuk

yang ada pada tiap-tiap lorong rumah sakit untuk sampai ke lokasi ruangan

yang ingin dikunjungi.

2. Information

Kemungkinan pengunjung akan merasa kebingungan dalam menemukan

lokasi yang ingin dikunjungi jika lokasi ruangan tersebut cukup jauh dari

pintu masuk. Karena saat mereka menanyakan informasi mengenai lokasi

tersebut pada petugas rumah sakit maka informasi yang didapat, hanya

berupa petunjuk yang panjang berupa kata-kata yang susah untuk diingat.

3. Economics

Tidak ada masalah dalam hal economics.

4. Control

Kemungkinan pengunjung tersesat pada saat mencari lokasi ruangan yang

ingin dikunjungi besar apalagi jika pengunjung tersebut baru pertama kali

(34)

5. Efficiency

Membutuhkan waktu yang lama (kurang efisien) bagi pengunjung untuk

mencari lokasi ruangan yang ingin dikujungi, jika pengunjung harus

menanyakan lokasi tersebut pada petugas dan pengunjung harus mencari

lokasi tersebut dengan berpedoman pada papan petunjuk yang ada pada

tiap lorong rumah sakit

6. Service

Pelayanan tidak maksimal, karena sistem yang masih manual dapat

memungkinkan pengunjung merasa kebingungan saat ingin mencari lokasi

ruangan yang baru pertama kali dikunjungi.

3.3 Fase Analisis Masalah

Pada fase ini dapat di gambarkan dengan tabel 3.1 dibawah ini.

Problem or oportunity Couses and effects System objectives System constraint

1. Pada sistem lama

yang masih manual

pengunjung harus

1. Proses pencarian

(35)

19

setiap lorong

rumah sakit untuk

sampai ke lokasi

ruangan yang ingin

dikunjungi.

ruangan yang ingin

dikunjungi besar.

4. Pelayanan tidak

maksimal

setiap lorong

rumah sakit

memakan banyak

waktu dan kurang

efisien.

2. Informasi yang

tidak jelas dapat

membuat

pengunjung

tersesat dan

kebingungan

pada saat mencari

lokasi ruangan

yang ada dirumah

(36)

3.4 Gambaran Umum Sistem Baru

Sistem ini dibuat untuk mempermudah proses pencarian lokasi ruangan di

Rumah Sakit Bethesda Yogyakarta, karena system ini merupakan system yang

sudah terkomputerisasi. Ada 2 macam pengguna yang dapat mengakses progam

bantu ini, yaitu : pengunjung RS. Bethesda dan admin.

Proses untuk pengunjung RS. Bethesda diawali ketika pengunjung

memilih salah satu kategori ruangan yang di tawarkan pada program bantu ini.

Dimana pengunjung akan ditawarkan berbagai pilihan kategori ruangan yang ada

dirumah sakit ini. Kemudian setelah pengunjung memilih salah satu kategori yang

ditawarkan maka sistem akan memberikan output yang berupa nama-nama

ruangan yang termasuk dalam kategori ruangan yang telah dipilih. Pengunjung

bisa memilih nama ruangan yang ingin di kunjungi atau juga bisa kembali ke

menu sebelumnya. Setelah nama ruangan dipilih maka pengunjung harus

menentukan dari pintu mana pengunjung tersebut masuk . Dimana ada 3 pintu

masuk yang tersedia di rumah sakit ini yaitu pintu masuk IGD & IRJ, pintu masuk

pengunjung pasien rawat inap dan pintu masuk samping paviliun Srikandi.

Sebagai hasilnya maka sistem akan memberikan output berupa jarak dan jalur

terpendek dari pintu masuk sampai ke ruangan yang ingin di kunjungi yang

dilengkapi dengan denah RS. Bethesda.

Admin mempunyai hak akses lebih pada program bantu ini. Pada program

bantu ini ada 2 macam admin, yaitu admin dan super admin. Dimana super admin

mempunyai hak lebih dari pada admin. Admin hanya bisa mengolah data ruangan

(37)

21

admin dapat melihat semua data ruangan yang ada di RS. Bethesda dan

meng-update data ruangan yang ada. Update data ruangan, di gunakan jika ada suatu ruangan yang sedang di renovasi sehingga ruangan tersebut untuk sementara tidak

dapat digunakan. Sehingga ketika ruangan tersebut diakses oleh pengunjung

RS.Bethesda maka pengunjung tersebut akan memperoleh informasi bahwa

ruangan tersebut sedang di renovasi dan jika ruangan tersebut telah selesai

direnovasi, maka admin dapat mengembalikan data ruangan tersebut. Untuk super

admin, selain bisa mengolah data ruangan, super admin juga bisa mengolah data

admin. Yang dimaksud mengolah data admin adalah super admin bisa melihat

semua data admin, memasukan data admin baru dan menghapus data admin. Flow

(38)

Start

Input kategori ruangan

Input ruangan yang ingin dikunjungi

Pilih pintu masuk

Inisialisasi titik awal, titik tujuan

Penentuan ruang lingkup

Iterasi algoritma Dijkstra

Jarak dan jalur terpendek dari titik awal ke titik tujuan

END

(39)

3.5 Requirement Analysis

Use case diagram program bantu pencarian lokasi ruangan di RS. Bethesda

dapat digambarkan pada gambar 3.3 dibawah ini.

User

Pilih ruangan yang ingin dituju

Tentukan pintu masuk Pilih kategori ruangan

yang ditawarkan

Admin Edit Data Ruangan

Login

Hapus Data Ruangan

Restore Data Ruangan << depend on >>

<< depend on >>

Pengolahan data ruangan Edit password admin

<< extends >>

Lihat Data Ruangan Pengolahan data admin

Register data admin baru

Hapus data admin << extends >>

Lihat Data Admin

Gambar 3.3 Use Case Diagram 3.6 Perancangan Basis Data

23

3.6.1 Pemodelan Proses

Pemodelan proses pada sistem yang dibuat dapat digambarkan pada

context diagram, diagram berjenjang dan data flow diagram, ketiganya nampak

(40)

Program bantu

pencarian lokasi

ruangan di RS

Bethesda

Yogyakarta

User

kategori ruangan,

nama ruangan

dan pintu masuk

jarak dan jalur terpendek

lengkap dengan denah

RS.Betehsda

Admin

nama ruangan,pintu masuk,

data admin baru

dan data ruangan baru

jarak dan jalur terpendek

lengkap dengan denah

RS.Bethesda, data admin baru

dan data ruangan baru

(41)

25

0 ---PROGRAM BANTU

PENCARIAN LOKASI RUANGAN

DI RS.BETHESDA

(42)
(43)

27

(44)

---

---3.3P

---REGISTER DATA ADMIN BARU

3.4P

---HAPUS DATA ADMIN

3.1P

---VALIDASI SUPER ADMIN

Admin

username,passwd superadmin

user valid

data admin baru

user valid

data admin baru

level admin, data admin baru

3.2P

---LIHAT DATA ADMIN user valid

level admin data admin 3. admin

username,password username,password

level admin

data admin baru

level admin, data admin baru

data admin baru

(45)

29

status ruangan baru

status ruangan baru data ruangan baru

status ruangan baru

status ruangan baru

(46)

3.6.2 Pemodelan Data

Pemodelan data untuk sistem yang dibuat nampak pada gambar 3.10 dan

3.11 dibawah ini.

Ruangan

(47)

31

3.7 Desain Input Output

3.7.1 Desain Input

Ada 11 kategori ruangan yang disediakan pada program bantu ini. Dimana

tiap kategori terdiri dari beberapa ruangan. Isi dari tiap-tiap kategori tersebut

adalah :

1. Kategori Ruangan Pasien

Yang terdiri dari 2 kategori, yaitu paviliun dan ruangan biasa.

ƒ Paviliun : Paviliun Srikandi, Shinta, Anggrek, Gardena,

Flamboyan, Hibiscus, Dahlia, Bakung, Canna, Edelweis dan Jasmine.

ƒ Ruangan Biasa : Ruang Bayi, Galilea ,I, III, IV,VI,VII, A, B, C, D,

E, F , G, H, I, J, dan N.

2. Kategori Klinik

Terdiri dari semua klinik yang ada di RS.Bethesda yaitu klinik laktasi,

gizi, akupuntur, psikiatri, karyawan, psikologi, CB anak sehat, mata, kulit, gigi &

mulut, THT, alergi, kebidanan, fisioterapi, saraf, penyakit dalam, bedah, dan

polikinik Kartini.

3. Kategori IGD

Terdiri dari pintu masuk ruang IGD, tempat pendaftaran pasien IGD dan

ruang IRD.

4. Kategori Laboratorium

Terdiri dari laboratorium anatomi & patologi, mikrobiologi, radiologi,

(48)

5. Kategori Farmasi

Terdiri dari medical record, satelit farmasi rawat jalan dan farmasi pusat

pasien rawat inap.

6. Kategori Staff Bethesda

Terdiri dari ruang dokter, sekretariat, wakil direktur & direktur, kepala

IRD, kantor IRJ, humas & pemasaran, bagian kepegawaian, panitia rekam medik,

PDI, PSMRS, PSP, PYC, PKPKY, PKBRS, BMKK, IDI, PDE, komite bidang

diklat, komite gerejani, komite dana pension YAKKUM, komite medis.

7. Kategori Operasional

Terdiri dari dapur, instansi gizi, petrollena, ruang diklat, kantor

elektromedik, ruang senam & fitness, studio, unit jahit, liner bersih, liner kotor,

ruang operasional, PSPM dan ruang rapat.

8. Kategori Staff Administrasi

Terdiri dari loket administrasi, ruang akutansi & keuangan, loket askes,

kantor piutang.

9. Kategori ATM

Terdiri dari ATM BRI, kas BRI, kas Lippo Bank dan kas BPD DIY.

10.Kategori Fasilitas Umum

Terdiri dari toilet, café, lift, tempat layanan informasi dan mini market.

11.Kategori Lain-lain

Terdiri dari unit perawatan ginjal dan ruang cuci darah, ruang bersalin,

(49)

33

3.7.2 Desain Output

Desain output dari program bantu ini adalah berupa jarak terpendek dan

jalur terpendek dari pintu masuk sampai ke ruangan yang ingin di kunjungi oleh

pengguna program bantu yang disertai dengan denah RS.Bethesda.

3.8 Perancangan Proses

Untuk menemukan jalur terpendek ke setiap ruangan yang ada di rumah

sakit ini, digunakan suatu algoritma pencarian jarak terpendek yaitu algoritma

dijkstra. Untuk mengimplementasikan algoritma ini, maka denah rumah sakit di

ubah ke dalam bentuk graf. Data jarak dan ruangan didapat dari pihak Bethesda

Yogyakarta berbentuk denah rumah sakit dengan skala 1 : 125 cm untuk gedung

lantai 1 kecuali gedung IGD dan IRJ, karena untuk gedung IRJ dan IGD di

berikan data asli tanpa skala.

Dalam pengimplementasian perubahan denah rumah sakit ke dalam graf

ada beberapa aturan yang dipakai, antara lain :

1. Setiap ruangan, pertigaan dan perempatan dijadikan suatu titik.

2. Jika ruangan berupa ruang rawat inap pasien maka ada aturan berbeda untuk

ruang rawat inap pasien yang berupa paviliun dan bangsal. Hal ini disebabkan

karena untuk ruang rawat inap pasien yang berupa paviliun mempunyai pintu

masuk sendiri-sendiri untuk setiap pasiennya, sedangkan untuk ruang rawat

inap pasien yang berupa bangsal pintu masuk hanya 1. Aturan tersebut adalah

(50)

ƒ Jika ruang rawat inap pasien yang dituju berupa bangsal maka titik

diletakan di pintu masuk ruangan.

ƒ Jika ruangan rawat inap pasien berupa paviliun maka titik diletakan di

ruang perawat paviliun tersebut.

3. Untuk ruangan selain ruang rawat inap pasien maka titik di letakan di pintu

masuk ruangan tersebut.

3.8.1 Pembuatan Matriks Jarak

Dalam menentukan jarak antar titik pada graf, langkah yang dilakukan

adalah dengan mengukur jarak pada denah rumah sakit yang berskala 1 : 125 cm

untuk gedung lantai 1 kecuali gedung IGD dan IRJ, untuk gedung IGD dan IRJ

dihitung tanpa skala karena data yang di dapat sudah berupa data asli tanpa skala.

Untuk jalur yang hanya searah maka pada tabel jarak hanya ada jarak

antara titik awal ke titik tujuan, tidak sebaliknya, tetapi untuk jalur yang 2 arah,

maka pada tabel jarak akan ada jarak antara titik awal ke titik tujuan dan

sebaliknya tetapi titik tujuan dijadikan titik awal dan titik awal dijadikan titik

tujuan. Jarak antar titik dikatakan ∞ jika kedua titik tidak terhubung langsung.

Jika kedua titik terhubung langsung maka dalam field jarak pada tabel jarak akan

diisi jarak antara kedua titik tersebut. Tabel jarak untuk graf rumah sakit Bethesda

(51)

35

3.8.2 Pembagian Ruang Lingkup

Untuk efisiensi pengimplementasian algoritma dijkstra pada program,

maka dari keseluruhan graf rumah rumah sakit Bethesda Yogyakarta akan dibagi

menjadi 9 ruang lingkup seperti yang nampak pada gambar 3.12, 3.13 dan 3.14,

yaitu ruang lingkup A, B, C, D, E, F, G dan H, I, dengan pembagiannya sebagai

berikut :

ƒ Ruang Lingkup A

Meliputi sebagian besar paviliun ruang rawat inap pasien yang dimulai dari

pintu masuk samping paviliun Srikandi sampai dengan pertigaan selasar utama

paviliun Dahlia.

ƒ Ruang Lingkup B

Meliputi paviliun Edelweis, ruang pertemuan I dan semua ruangan yang

dimulai dari pintu masuk pengunjung pasien rawat inap sampai dengan pertigaan

selasar utama.

ƒ Ruang Lingkup C

Meliputi semua ruangan di gedung IRJ dan IGD lantai 1 yang dimulai dari

pintu masuk IRJ sampai dengan selasar belakang IRJ.

ƒ Ruang Lingkup D

Meliputi semua ruangan bangsal pasien rawat inap dari A sampai N, ruang

jenazah dan parkir ambulans, yang dimulai dari dapur kecil.

ƒ Ruang Lingkup E

Meliputi PSPM, dapur besar dan selasar penghubung antara ruang lingkup B,

(52)

ƒ Ruang Lingkup F

Meliputi semua ruangan rawat inap pasien I sampai VII kecuali VI, ruang

Galilea, yang dimulai dari selasar utama sampai dengan selasar utama paviliun

Dahlia.

ƒ Ruang Lingkup G

Meliputi ATM BRI dan minimarket

ƒ Ruang Lingkup H

Meliputi semua ruangan di gedung IRJ dan IGD lantai 2

ƒ Ruang Lingkup I

Meliputi semua ruangan di gedung IRJ dan IGD lantai 3

Untuk efisiensi penerapan algoritma dijkstra, maka di buat aturan

pembagian ruang lingkup pengecekan titik berdasarkan ruang lingkup pintu

masuk dan ruang lingkup titik tujuan. Pada aturan pembagian ruang lingkup

pengecekan titik, ada beberapa contoh kasus yang menyebabkan ruang lingkup

pengecekan titik dipersempit, karena pada kenyataannya ada ruang lingkup yang

sebenarnya tidak masuk ke dalam jalur terpendek. Contoh-contoh kasusnya dapat

di lihat pada table 3.2 di bawah ini.

Titik Asal Titik Tujuan Ruang Lingkup Jalur Terpendek

A1 C3 A,B,C,E,F

A1 D4 A,B,D,E,F

B1 C24 B,C,G

B1 E6 B,E

(53)

37

C1 B31 B,C,G

C1 F2 B,C,E,F

C1 A12 A,B,C,E,F

Tabel 3.2 Tabel Contoh Kasus Penyempitam Ruang Lingkup Pengecekan Titik

Dari beberapa contoh kasus pada table 3.2 di atas, maka aturan pembagian

pengecekan titik nampak pada tabel 3.3 dibawah ini.

Ruang Lingkup Pintu

Masuk

Ruang Lingkup Titik

Tujuan

Ruang Lingkup Pengecekan

Titik

A A A

A B AB,F

A C A,B,C,E,F

A D A,B,D,E,F

A E A,B,E,F

A F A,F

A G A,B,F,G

A H A,B,C,E,F,H

A I A,B,C,E,F,H,I

B A A,B,F

B B B

B C B,C,G

(54)

B E B,E

B F B,F

B G B,G

B H B,C,G,H

B I B,C,G,H,I

C A A,B,C,E,F

C B B,C,G

C C C

C D C,D,E

C E C,E

C F B,C,E,F

C G C,G

C H C,H

C I C,H,I

(55)

39

(56)

H1

Gambar 3.13 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 2

(57)

41

R uang Lingkup I

I33

Gambar 3.14 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 3

(58)

Pada bab ini akan dibahas tentang implementasi pembuatan program bantu pencarian lokasi di RS. Bethesda Yogyakarta dengan menggunakan bahasa pemograman Visual Basic 6.0 dan databasenya menggunakan MySQL 5.0. Pada bab ini juga akan dibahas tentang analisa dari program bantu tersebut dan pembahasannya.

4.1 Implementasi Program

Program bantu ini dibuat untuk membantu pengunjung RS. Bethesda untuk memperoleh jalur terpendek dalam mencari ruangan yang ingin dikunjungi dan mempermudah pihak rumah sakit dalam memberikan pelayanan yang lebih baik dan mudah untuk pengunjung maupun pengguna jasa RS. Bethesda.

4.1.1 Implementasi Algoritma Dijkstra

(59)

43

4.1.1.1Menentukan titik awal

Titik awal yang dimaksud disini adalah kode pintu masuk yang telah dipilih oleh pengguna program bantu ini. Pada program bantu ini di sediakan 3 pintu masuk, yaitu pintu masuk IGD & IRJ, pintu masuk pengunjung pasien rawat inap dan pintu masuk samping paviliun Srikandi. Dalam penentuan titik awal ini digunakan event click() pada kontol option button berikut listing programnya :

Private Sub OptIgd_Click() TextIgd = "C1"

kodeawal1 = TextIgd

awal1 = Left(kodeawal1, 1) End Sub

Private Sub OptPasien_Click() TextIgd = "B1"

kodeawal1 = TextIgd

awal1 = Left(kodeawal1, 1) End Sub

Private Sub OptSamping_Click() TextIgd = "A1"

kodeawal1 = TextIgd

awal1 = Left(kodeawal1, 1) End Sub

Keterangan :

Pada tiap form kategori ruangan dipasang event click() pada ke 3 kontrol option button, dimana kontrol option button ini digunakan untuk menampung ke tiga pilihan pintu masuk yang di ada.

(60)

dari depan yang disimpan dalam variabel awal1 yang digunakan dalam penentuan ruang lingkup.

4.1.1.2Menentukan titik tujuan

Titik tujuan yang dimaksud disini adalah kode ruangan yang ingin dikunjungi oleh pengguna program bantu ini, berikut listing program untuk menetukan titik tujuan :

Set rs = New ADODB.Recordset

rs.Open " select * from ruangan where nama_ruangan='" & ComboAdministrasi & "'", conn

If Not rs.EOF Then

If status_ruangan = 0 Then kode = rs("kode_ruangan") kodeakhir1 = kode

akhir = Left(kode, 1) Else

MsgBox "Maaf, ruangan yang ingin di kunjungi sedang di renovasi. . !!", vbCritical, "Error" ComboAdministrasi = "Pilih Ruang Administrasi terlebih dahulu. . !!", vbCritical, "Error"

ComboAdministrasi = "Pilih Ruang Administrasi Yang

(61)

45

Pada penentuan titik tujuan ini, jika status ruangan yang ingin dituju oleh pengguna program bantu ini adalah 1 ( yang berarti ruangan sedang di renovasi ), maka program bantu ini akan memberikan informasi pada pengguna program bantu bahwa ruangan yang ingin di kunjungi sedang di renovasi.

Data kode_ruangan yang dihasilkan dari query tersebut akan ditampung dalam variabel kode, yang kemudian akan ditampung lagi pada variabel kodeakhir1 yang merupakan variabel titik tujuan yang merupakan titik akhir dalam iterasi algoritma dijksra, selanjutnya kode_ruangan tersebut akan dipotong 1 huruf dari depan yang ditampung dalam variable akhir, hal ini diperlukan untuk menentukan ruang lingkup.

4.1.1.3Menentukan ruang lingkup

(62)

DELIMITER $$;

DROP PROCEDURE IF EXISTS `bethesda`.`lingkupA_A`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `lingkupA_A`(lingkup_awal varchar(1),lingkup_tujuan varchar(1))

BEGIN

declare titik_lingkup varchar(4); declare jumlah int;

declare x int default 1;

declare cur1 cursor for select count(*) from ruangan where Substring(kode_ruangan,1,1)=lingkup_awal OR Substring(kode_ruangan,1,1)=lingkup_tujuan;

declare cur2 cursor for select kode_ruangan from ruangan where substring(kode_ruangan,1,1)=lingkup_awal OR Substring(kode_ruangan,1,1)=lingkup_tujuan;

open cur1; open cur2;

fetch cur1 into jumlah; set jumlah=jumlah+1;

while x < jumlah do

fetch cur2 into titik_lingkup;

insert into titik values(x,titik_lingkup,1); set x =x+1;

4.1.1.4Iterasi algoritma dijkstra

Pada tahap ini ada beberapa tahap yang harus dilakukan untuk mendapatkan jarak dan jalur terpendek dari pintu masuk sampai ke ruangan yang ingin di kunjungi oleh penguna program bantu ini, berikut ini adalah tahap-tahap iterasi algoritma dijkstra :

(63)

47

set titik_terpilih=kode_asal;

update titik set status1 = 0 where kode_titik=titik_terpilih;

select count(*) into jumlah from titik; set jumlah=jumlah+1;

while x<jumlah do

select kode_titik into in_kode_titik from titik where nomor=x;

select status1 into status_titik from titik where nomor=x;

if status_titik=1 then

CALL ambil_jarak (kode_asal, in_kode_titik, @jarak);

select @jarak into in_jarak;

insert into iterasi_jarak values(in_iterasiku,x, kode_asal,in_kode_titik,in_jarak);

set x=x+1; else

insert into iterasi_jarak values (in_iterasiku, x,kode_asal,in_kode_titik,999);

set x=x+1; end if;

end while;

set kode_asalku=kode_asal;

b. Pengecekan apakah titik tujuan telah masuk kedalam himpunan titik terpilih. Selama hasil pengecekan bernilai salah, berarti titik tujuan belum masuk ke dalam himpunan titik terpilih dalam jalur terpendek. Sehingga akan dilakukan 2 langkah yaitu :

b1. Pilih titik terpilih yang termasuk dalam dalam ruang lingkup ( iterasi terakhir ) dengan jarak terkecil. Berikut listing store prosedurnya :

if z>1 then

select kode_titik into kode_asalku from titik_terpilih where iterasi=in_iterasi;

end if;

call pilih_jaral_terpendek (in_iterasiku, @jarak, @titik);

select @jarak into in_jarak;

set jarak_sementara=in_jarak; select @titik into in_titik;

set titik_terpilih=in_titik;

insert into titik_terpilih values (in_iterasiku, in_titik,in_jarak);

(64)

set waktu_iterasi = timediff (waktu_akhir_iterasi, waktu_awal_iterasi);

insert into detail_waktu_iterasi values (kode_asalku, in_titik,waktu_awal_iterasi,waktu_akhir_iterasi); set waktu_awal_iterasi=curtime();

if in_iterasiku=1 then

set total_waktu_iterasi=waktu_iterasi;

else

set total_waktu_iterasi1=waktu_iterasi;

set total_waktu_iterasi = addtime (total_waktu_iterasi, total_waktu_iterasi1);

end if;

insert into waktu_iterasi values (in_iterasiku, kode_asalku,in_titik,waktu_iterasi);

set in_iterasi=in_iterasiku; set in_iterasiku=in_iterasiku+1;

update titik set status1 = 0 where kode_titik = titik_terpilih;

b2. Ruang lingkup titik – titik yang harus di cek akan dikurangi dengan titik terpilih hasil dari langkah c1. Selanjutnya akan dilakukan lagi pengecekan jarak dari titik terpilih hasil dari langkah c1 dengan semua titik yang masih termasuk dalam ruang lingkup. Setelah di dapatkan data jarak, maka semua data pada iterasi ini disimpan pada tabel bantuan yaitu tabel iterasi_jarak. Berikut listing program pengecekan jarak tersebut :

declare cur1 cursor for select count(*) from titik; declare cur2 cursor for select kode_titik from titik; open cur1;

open cur2;

fetch cur1 into jumlah; set x=1;

set jumlah=jumlah+1; while x < jumlah

do

fetch cur2 into in_kode_titik;

select status1 into status_titik from titik where nomor=x;

if status_titik=1 then

(65)

49

if in_jarak2>in_jarak then

insert into iterasi_jarak values (in_iterasiku, x,titik_terpilih, in_kode_titik,in_jarak);

else

insert into iterasi_jarak values (in_iterasiku,x,titik_terpilih, in_kode_titik,in_jarak2);

end if;

set x =x+1; else

insert into iterasi_jarak values (in_iterasiku,x,titik_terpilih,

Langkah c1 dan c2 akan terus dilakukan selama titik tujuan tidak sama dengan titik terpilih.

c. Jika iterasi telah dihentikan maka akan di telesuri jalur terpendek dari pintu masuk sampai dengan ke ruangan yang ingin dikunjungi oleh pengguna program bantu ini. Dalam penelusuran jalur terpendek ini digunakan listing program sebagai berikut :

select count(*) into jumlah_jalur from titik_terpilih; select jarak into jarak_akhir from titik_terpilih where iterasi=jumlah_jalur;

select kode_titik into jalur_tujuan from titik_terpilih where iterasi=jumlah_jalur;

set kode_awal_jalur=jalur_tujuan;

insert into sementara values(a,jalur_tujuan); set z=1;

while jumlah_jalur>1 do

set iterasi_sebelum=jumlah_jalur-1; if a=1 then

set in_iterasi_sebelum=jumlah_jalur-2; select kode_titik into jalur_asal from

titik_terpilih where iterasi=in_iterasi_sebelum; else

set in_iterasi_sebelum=jumlah_jalur-2; select kode_titik into jalur_asal from

(66)

select jarak into jarak_jalur from iterasi_jarak where iterasi=iterasi_sebelum and kode_ruangan_asal =

jalur_asal and kode_ruangan_tujuan=jalur_tujuan; set jumlah_jalur=jumlah_jalur-1;

if jarak_jalur <> jarak_akhir then

set waktu_akhir_jalur=curtime();

set waktu_jalur =timediff (waktu_akhir_jalur, waktu_awal_jalur);

set waktu_awal_jalur=curtime(); set a=a+1;

select iterasi into iterasi_titik from titik_terpilih where kode_titik=jalur_asal; set iterasi_titik=iterasi_titik+1;

select kode_titik into jalur_tujuan_sementara from titik_terpilih where iterasi=iterasi_titik; set kode_akhir_jalur=jalur_tujuan_sementara;

insert into sementara values (a,jalur_tujuan_sementara);

select jarak into jarak_jalur_sementara from titik_terpilih where kode_titik =

jalur_tujuan_sementara;

set jarak_akhir=jarak_jalur_sementara; set jalur_tujuan=jalur_tujuan_sementara;

if kode_akhir_jalur <> kode_tujuan then

insert into waktu_penentuan_jalur values (k,kode_awal_jalur,kode_akhir_jalur,waktu_ jalur);

insert into waktu_iterasi_titik

values(kode_awal_jalur,kode_akhir_jalur,wa ktu_awal_jalur,waktu_akhir_jalur);

end if; if k=1 then

set total_jalur=waktu_jalur; else

set total_jalur1=waktu_jalur; set total_jalur = addtime (total_jalur, total_jalur1);

end if; set k=k+1;

set kode_awal_jalur=kode_akhir_jalur; end if;

end while;

4.1.2 Implementasi Pembuatan Output

(67)

51

ke ruangan yang ingin di kunjungi oleh pengguna program bantu ini, yang di tampilkan dalam bentuk kalimat dan output visualisasi yang berupa gambar denah RS. Bethesda yang disertai dengan jalur terpendek dari pintu masuk sampai ke ruangan yang ingin di kunjungi oleh pengguna program bantu ini, yang merupakan hasil dari implementasi algoritma dijkstra.

4.1.2.1Output Berupa Kode Ruangan dan Nama Ruangan Jalur Terpendek

Untuk menampilkan kode ruangan dan nama ruangan dari jalur terpendek yang telah di hasilkan dari implementasi algoritma dijkstra maka digunakan function penentuan jalur() untuk memecah array jalur() yang penampung jalur terpendek hasil dari implementasi algoritma dijkstra. Berikut listing program function penentuan jalur():

Public Function penentu_jalur() c = 1

e = 1

Set rs = New ADODB.Recordset

rs.Open " select count(*) as jumlahku from sementara", conn If Not rs.EOF Then & jalurterpilih & "'", conn

If Not rs.EOF Then

ruang = rs("nama_ruangan")

jalurterpendek = c & ". " & jalurterpilih & " ( " & ruang & " )"

(68)

End If

Set rs = Nothing Else

Set rs = New ADODB.Recordset

rs.Open " select * from sementara where nomor='" & jumlah & "'", conn

If Not rs.EOF Then & jalurterpilih & "'", conn

If Not rs.EOF Then

ruang = rs("nama_ruangan")

'jalur_terpilih1(c) = jalurterpilih

jalurterpendek = jalurterpendek & vbCrLf & c & ". " & jalurterpilih & " ( " & ruang & " )"

jumlah = jumlah - 1 jumlah1 & "'", conn

If Not rs.EOF Then jalur_awal & "', '" & jalur_akhir & "') "

e = e + 1 End If

c = c + 1 Wend

hasil_akhir = "Jalur yang terpendek yang bisa dilewati adalah " & vbCrLf & jalurterpendek

(69)

53

Keterangan :

a) Untuk memecah data titik terpilih pada tabel bantu sementara maka digunakan perulangan selama semua titik terpilih belum selesai di cek. Dalam perulangan ini, pada iterasi awal dibuat query untuk mengambil data dari tabel ruangan dengan kode_ruangannya adalah titik terpilih pada jalur terpendek yang sedang di cek dalam perulangan ini. Dan variabel jalur terpendek ( penampung hasil yang akan ditampilkan pada output ) akan di isi dengan jumlah titik yang telah di cek di ikuti kode ruangan dan nama ruangan dari titik yang sedang di cek dalam perulangan ini.

b) Kemudian dilanjutkan ke perulangan berikutnya untuk mengecek titik berikutnya, dimana pada perulangan ini dibuat juga query yang sama seperti pada query sebelumnya. Pada perulangan ini variabel jalur terpendek ( penampung hasil yang akan ditampilkan pada output ) akan di isi dengan isi dari variabel jalur terpendek hasil dari perulangan sebelumnya ditambah dengan jumlah titik yang telah di cek di ikuti kode ruangan dan nama ruangan dari titik yang sedang di cek dalam perulangan ini.

c) Dilakukan pemanggilan store prosedur spinjalur() untuk memasukan data jalur dari titik yang di cek pada perulangan sebelumnya ke titik yang sedang di cek pada perulangan saat ini ke dalam tabel bantu jalur yang akan digunakan untuk membuat output berupa gambar denah RS. Bethesda yang di sertai dengan jalur terpendeknya.

(70)

Hasil dari langkah diatas adalah urutan data jalur terpendek ( kode ruangan dan nama ruangan) dari titik awal sampai dengan titik tujuan.

4.1.2.2Output Berupa Denah RS. Bethesda Disertai Jalur Terpendek

Untuk mengimplementasikan visualisasi jalur terpendek hasil dari implementasi algoritma dijkstra ke dalam bentuk gambar, dibutuhkan kontrol line yang akan menunjukan jalur dari pintu masuk sampai ke ruangan yang ingin dikunjungi oleh pengguna program bantu ini. untuk mengerakkan kontrol line tersebut maka dibutukan kontrol timer. Berikut adalah langkah-langkah pengimplementasian jalur terpendek ke bentuk gambar jalur terpendek pada denah RS. Bethesda :

• Memecah tabel jalur yang menyimpan urutan jalur dari titik awal ke titik tujuan. Data pada tabel jalur diambil per record untuk diambil data titik asal dan titik tujuan jalur pertama, kontrol line titik asal dan titik koordinat ke 2 titik tersebut.

• Setelah di peroleh data tersebut maka kontrol line ini digerakan dari koordinat titik asal sampai ke titik tujuan. Berikut listing program untuk menggerakkan kontrol line tersebut :

If nama_line = "L69" Then

Line69.BorderColor = vbRed Line69.BorderStyle = 1 Line69.BorderWidth = 3 If y1 < y2 Then

If Line69.y2 <> y2 Then

If Line69.y2 < y2 Then

Line69.y2 = Line69.y2 + 5 Else

Line69.y2 = Line69.y2 - 5 End If

(71)

55

(72)

5, akan tetapi jika tidak lebih besar maka koordinat y2 kontrol line ini akan di kurangi 5.

Kemudian jika koordinat y1 titik tujuan telah tercapai maka akan dilakukan pengecekan untuk menggerakkan koordianat x2 kontrol line ini. Sama seperti saat menggerakan koordinat y2 kontrol line untuk sampai ke koordinat x1 titik tujuan maka jika koordinat x1 titik tujuan lebih besar dari koordinat x2 kontrol line ini, koordinat x2 kontrol line ini akan ditambah 5 akan tetapi jika tidak lebih besar dari dari x1 koordinat titik tujuan maka koordinat x2 kontrol line ini akan ditambah 5.

Jika koordinat x2 kontrol line ini telah mencapai koordinat x1 titik tujuan maka perulangan untuk memecah tabel jalur yang menyimpan urutan jalur dari titik awal ke titik tujuan dilanjutkan lagi sampai sudah tidak ditemukan record lagi yang harus di cek.

4.2 Hasil Implementasi

Hasil dari implementasi pada sub bab 4.1 tersebut dapat di gambarkan melalui capture – capture langkah-langkah penggunaan program bantu ini.

4.2.1 Menu Utama

(73)

57

Gambar 4.1 Tampilan Menu Utama

Pada menu utama ini pengguna program bantu ini akan di beri informasi tentang bagaimana langkah-langkah penggunaan program bantu ini sehinggga dapat membantu menghindarkan pengguna program ini untuk melakukan kesalahan saat menggunakan program bantu ini. Pada form ini juga ditawarkan menu kategori ruangan yang di sediakan oleh program bantu ini. Jika pengguna tidak mengetahui kategori ruangan mana yang sesuai dengan ruangan yang ingin dikunjungi maka pengguna dapat memilih menu informasi untuk mendapatkan kategori ruangan yang tepat untuk ruangan yang ingin dikunjunginya.

4.2.2 Menu Input Titik Awal dan Titik Tujuan

(74)

Gambar 4.2 Tampilan Menu Untuk Kategori Fasilitas Umum

Pada form ini pengguna program bantu harus menentukan nama ruangan yang ingin dikunjungi dengan memilih satu nama ruangan dari semua nama ruangan yang telah di sediakan pada kontrol combobox. Selanjutnya pengguna program bantu harus menentukan dari pintu masuk mana pengguna program bantu tersebut masuk ke RS. Bethesda. Jika pengguna telah menentukan nama ruangan yang ingin di kunjungi dan pintu masuk mana pengguna program bantu tersebut masuk ke RS. Bethesda maka pilih tombol ”Cari” untuk diproses untuk menghasilkan jarak terpendek dan jalur terpendek dari pintu masuk sampai dengan ke ruangan yang ingin dikunjungi.

4.2.3 Tampilan Output

(75)

59

pengguna program bantu ini tinggal memilih button cari sehingga akan muncul output berupa jalur terpendek seperti yang ditujnjukan pada gambar 4.3 di bawah ini.

Gambar 4.3 Tampilan Output Yang Berupa Gambar Denah RS. Bethesda

Dilengkapi dengan Jalur Terpendek

(76)

Gambar 4.4 Tampilan Output Jalur Terpendek Yang Berupa Kode Ruangan

dan Nama Ruangan

(77)

61

Gambar 4.5 Tampilan Menu Ketika Output pada Gambar 4.3 Ditutup

4.3 Analisa hasil

4.3.1 Pengaruh Pembagian Ruang Lingkup

(78)

No Titik dibagi menjadi 9

ruang lingkup

Waktu Iterasi Dijkstra setelah dibagi menjadi 9

(79)

63

27 C1 I23 00:04:10 00:02:03 49,20 %

Rata-Rata penghematan waktu dengan pembagian ruang lingkup

15,55 %

Tabel 4.1 Tabel Percobaan Pengaruh Pembagian Ruang Lingkup

Dari percobaan di atas dapat di dilihat bahwa perbedaan waktu iterasi dijkstra sebelum dan sesudah dibagi menjadi 9 ruang lingkup sangat besar yaitu, 15,55%. Hal tersebut disebabkan karena pada pembagian ruang lingkup RS.Bethesda telah ditentukan titik-titik mana saja yang harus di cek jaraknya pada perhitungan iterasi algoritma dijkstra, sehingga dapat memperpendek waktu yang di gunakan dalam iterasi algoritma djikstra.

4.3.2 Waktu Iterasi Algoritma Dijkstra

Untuk mengetahui faktor yang mempengaruhi waktu yang di perlukan dalam pengimplementasian iterasi dijkstra, maka dilakukan percobaan yang dapat di lihat pada tabel 4.2, dimana pada percobaan ini faktor yang diperhatikan ada 3 yaitu jumlah ruang lingkup, jumlah titik dan jarak titik asal ke titik tujuan.

No Titik Asal

Titik Tujuan

Jumlah Ruang Lingkup

Jumlah Titik Waktu Jarak

1 A1 A12 1 31 00:00:27 106.6 m

2 C1 C13 1 38 00:00:47 53.1 m

3 B1 G2 2 33 00:00:08 25.6 m

4 A1 A5 1 31 00:00:06 34.9 m

5 B1 B5 1 31 00:00:04 14.8 m

6 B1 B26 1 31 00:00:26 73.4 m

Tabel 4.2 Tabel Percobaan Faktor Yang Mempengaruhi Waktu Iterasi

(80)

Penjelasan Percobaan :

• Pada percobaan 1 dan 2 dapat dilihat bahwa jika jumlah ruang lingkup sama akan tetapi jumlah titik berbeda maka dapat terlihat bahwa selisih waktu yang diperlukan dalam iterasi dijkstra cukup besar yaitu 20 detik pada contoh kasus ini.

• Pada percobaan 3 dan 4 dapat dilihat bahwa jika jumlah ruang lingkup berbeda akan tetapi jumlah titik kurang lebih sama maka dapat terlihat bahwa selisih waktu yang diperlukan dalam iterasi dijkstra sangat kecil, yaitu 2 detik pada contoh kasus ini.

• Pada percobaan 5 dan 6 dapat dilihat bahwa jika titik asal dan titik tujuan berada pada ruang lingkup yang sama akan tetapi jarak dari titik asal ke titik tujuan berbeda cukup jauh, maka dapat terlihat bahwa selisih waktu yang diperlukan dalam iterasi dijkstra cukup besar, yaitu 24 detik pada contoh kasus ini.

Dari percobaan diatas, dapat disimpulkan bahwa, faktor yang mempengaruhi waktu yang di perlukan dalam pengimplementasian iterasi algoritma dijkstra adalah :

1. jumlah titik

2. jarak titik asal ke titik tujuan.

(81)

BAB V

KESIMPULAN DAN SARAN

5.1 KESIMPULAN

Dari hasil penelitian yang telah dilakukan di RS. Bethesda Yogyakarta untuk menemukan jalur terpendek dengan mengunakan algoritma Dijkstra, maka dapat di ambil kesimpulan sebagai berikut ini :

1. Pada program bantu ini, pembagian graf menjadi beberapa ruang lingkup sangat penting, untuk menentukan titik mana saja yang harus di cek jaraknya dalam iterasi algoritma djikstra.

2. Penghematan waktu iterasi dijkstra sesudah dibagi menjadi 9 ruang lingkup adalah 15,55 %.

3. Ada 2 faktor penting yang mempengaruhi waktu pengimplementasian iterasi algoritma dijkstra pada program bantu ini, yaitu : jumlah titik dan jarak titik asal ke titik tujuan.

4. Semakin banyak jumlah titik, maka waktu pengimplementasian iterasi algoritma dijkstra semakin banyak.

5. Pada program bantu ini jumlah ruang lingkup tidak mempengaruhi waktu pengimplementasian algoritma dijkstra.

5.2 SARAN

(82)

1. Sebaiknya digunakan bahasa pemrograman lain untuk membuat tampilan lebih user friendly.

2. Tampilan Output sebaiknya dibuat lebih menarik agar pengguna program bantu merasa lebih nyaman saat menggunakan program bantu ini.

(83)

DAFTAR PUSTAKA

-, Pengembangan Sistem Pakar Menggunakan Visul Basic, Andi Offset, 2003 Agnes Maria Polina, Jong Jek Siang, Kiat Jitu Menyusun Skripsi Jurusan

Informatika/Komputer, Andi Offset, 2005

Agus, M., Alam, J., MySQL Server dan Aplikasinya dalam Visual Basic 6 dan Delphi versi 5, PT Elex Media Komputindo, 2005

Bayu Adhitya Pradhana, Makalah Studi Dan Implementasi Persoalan Lintasan Terpendek Suatu Graf Dengan Algoritma Dijkstra Dan Algoritma Bellman-Ford

J.Bismoko., A.Supraktiknya., Pedoman Penulisan Skripsi, Universitas Sanata Dharma, 2004

Jong Jek Siang, Matematika Diskret Dan Aplikasinya Pada Ilmu Komputer, Andi Offset, 2002

Jeffery, Whitten, L., Lonnie, Bentley, D., dan Kevin, C.Ditman., Metode Desain dan Analisis Sistem, Andi Offset, 2004

(84)

LAMPIRAN A

(85)

1

Lampiran A : Tabel Ruangan Keterangan Kategori Ruangan :

A = ATM

PB = Ruangan Pasien Rawat Inap PV = Paviliun Pasien Rawat Inap S = Staff Bethesda

U = Fasilitas Umum

X = Lain-lain

Kode Ruangan

Nama Ruangan Kategori

Ruangan

A6 Pertigaan Pav.Bakung 7410 10350 0 L22

A7 Pertigaan Pav.Anggrek 8040 7710 0 L23

A8 Paviliun Anggrek PV 8595 7605 0 L24

A9 Pertigaan Pav.Gardena 10140 7710 0 L25

A10 Paviliun Gardena PV 10140 7395 0 L26

A11 Pertigaan Pav.Flamboyan 11715 7680 0 L27

A12 Paviliun Flamboyan PV 14265 7800 0 L28

A19 Pertigaan Selasa Utama Pav.Hibiscus 11715 10185 0 L35

A20 Ruang VI PB 11625 11400 0 L36

(86)

A23 Pertigaan Pav.Shinta 6900 12120 0 L39

A30 Pertigaan Pav.Dahlia1 11715 10800 0 L47

A31 Pertigaan Pav.Dahlia2 8040 10800 0 L46

B1 Pintu Masuk Pengunjung 21225 4350 0 L48

B2 Pos Satpam Pintu Masuk Pengunjung Rawat Inap

B29 Pertigaan Selasar Utama Ruang Pertemuan I 19605 10125 0 L76

B30 Pertigaan Ruang Pertemuan I 19605 8940 0 L77

B31 Ruang Pertemuan I O 19245 8940 0 L78

C1 Pintu Masuk Instansi Rawat Jalan 28395 4395 0 L79 C2 Pintu Masuk Instansi Gawat Darurat I 25365 4545 0 L80

(87)

3

Laboratorium Patologi Klinik Gedung IRJ Lantai 1

Toilet Umum Samping Klinik Penyakit Dalam Gedung I

(88)

D10 Ruang B PB 28620 11475 0 L126

D11 Unit Jahit O 24360 13020 0 L127

D12 Perempatan Ruang H 25515 12825 0 L128

D13 Liner Bersih O 24360 15345 0 L129

D14 Ruang H PB 26310 12720 0 L130

D15 Pertigaan Ruang Penyuluhan 25515 14730 0 L131

D16 Ruang Tunggu Daerah D U 25200 14730 0 L132

D25 Pertigaan Lab Patologi & Anatomi 27225 17790 0 L142

D26 Ruang G PB 29760 18435 0 L141

D27 Laboratorium Patologi & Anatomi L 26730 18615 0 L144

D28 Pintu Masuk Parkir Ambulans 24480 17790 0 L145

D29 Liner Kotor O 24360 17340 0 L148

Pertigaan Selasar Utama Ruang Pengawas

Perawat

F4 Perempatan Galilea 15945 10170 0 L161

(89)

5

Satelit Farmasi Rawat Jalan Gedung IRJ Lantai 2

(90)
(91)

LAMPIRAN B

(92)

Lampiran B : Tabel Jarak Titik Asal Titik Tujuan Jarak

(93)
(94)
(95)
(96)
(97)
(98)
(99)
(100)
(101)
(102)
(103)
(104)

Gambar

Gambar 2.1 Gambar graf kasus implementasi algoritma dijkstra
Tabel 2.1 Perhitungan Algoritma Dijkstra
Gambar 3.1 Denah Rumah Sakit Bethesda Yogyakarta
Tabel 3.1  Tabel Couses dan Effects
+7

Referensi

Dokumen terkait

Tabel 3.3.1.5 memperlihatkan realisasi kinerja terhadap target kinerja jangka menengah seperti yang tertuang dalam dokumen Renstra SKPD. Tingkat capaiannya juga

Bermacam-macam gelas digunakan untuk menyediakan cocktail dan mencampur minuman.Gelas yang khusus dibuat untuk cocktails (gelas Martini dan Manhattan) diberi

Kabupaten Gorontalo Utara terletak di wilayah pesisir pantai utara Provinsi Gorontalo, disahkan menjadi daerah otonom berdasarkan Undang-Undang Nomor 11 tahun 2006 tanggal 8

Sepanjang bisnis mampu bertahan, konsumen telah mencoba untuk melindungi sendiri keinginan mereka ketika mereka berkunjung ke pasar untuk, membeli barang dan jasa yaitu dengan

untuk bersedia mengisi angket sesuai dengan keadaan yang dialami dan2. dirasakan.Saya menjamin kerahasiaan informasi yang

Temuan penelitian menunjukan bahwa pelaksanaan program keterampilan menjahit Kesimpulan yang dapat ditarik dari penelitian ini bahwa pelaksanaan program keterampilan menjahit di

Konsekuensi komitmen beragama berlainan dari keempat dimensi yang sudah dibicarakan diatas. Pengalaman ini mengacu pada identifikasi akibat-akibat keyakinan keagamaan,

Dewasa ini pendidikan Islam dihadapkan pada tantangan kehidupan manusia modern yang penuh dengan berbagai persoalan yang cukup kompleks, antara lain bagaimana pendidikan Islam