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
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
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.
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.
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.
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
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
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
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
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
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.
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
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
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
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).
• 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
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)
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
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
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
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}
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 –
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
independent terhadap suatu produk. ODBC bekerja dalam lingkup system operasi
windows. Konektor ODBC adalah program dan driver yang bisa mengaitkan suatu
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
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
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
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
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
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
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
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
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
25
0 ---PROGRAM BANTU
PENCARIAN LOKASI RUANGAN
DI RS.BETHESDA
27
---
---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
29
status ruangan baru
status ruangan baru data ruangan baru
status ruangan baru
status ruangan baru
3.6.2 Pemodelan Data
Pemodelan data untuk sistem yang dibuat nampak pada gambar 3.10 dan
3.11 dibawah ini.
Ruangan
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,
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,
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
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
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,
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
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
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
39
H1
Gambar 3.13 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 2
41
R uang Lingkup I
I33
Gambar 3.14 Graf Gedung IGD & IRJ Rumah Sakit Bethesda Lantai 3
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
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.
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
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
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 :
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);
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
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
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
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 & " )"
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
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.
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
55
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
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
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
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
Gambar 4.4 Tampilan Output Jalur Terpendek Yang Berupa Kode Ruangan
dan Nama Ruangan
61
Gambar 4.5 Tampilan Menu Ketika Output pada Gambar 4.3 Ditutup
4.3 Analisa hasil
4.3.1 Pengaruh Pembagian Ruang Lingkup
No Titik dibagi menjadi 9
ruang lingkup
Waktu Iterasi Dijkstra setelah dibagi menjadi 9
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
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.
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
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.
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
LAMPIRAN A
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
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
3
Laboratorium Patologi Klinik Gedung IRJ Lantai 1
Toilet Umum Samping Klinik Penyakit Dalam Gedung I
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
5
Satelit Farmasi Rawat Jalan Gedung IRJ Lantai 2
LAMPIRAN B
Lampiran B : Tabel Jarak Titik Asal Titik Tujuan Jarak