13
Hasil perhitungan jarak menggunakan rumus 2 masih dalam satuan decimal degree. sehingga untuk menyesuaikannya perlu dikalikan dengan 111,319 km 1
derajat bumi = 69 mil ~= 111,319 km [14]
3. Metode Penelitian dan Perancangan Aplikasi
Penelitian yang dilakukan dilakukan melalui tahapan penelitian yang terbagi dalam 5 tahapan, yaitu: 1 Analisis kebutuhan dan pengumpulan data, 2 Perancangan
sistem, 3 Perancangan aplikasiprogram, 4 Implementasi dan pengujian sistem, serta analisis hasil pengujian, 5 Penulisan laporan hasil penelitian [15].
Tahap pertama adalah analisis kebutuhan dan pengumpulan data. Analisis kebutuhan dilakukan melalui observasi dan wawancara kepada
penduduk yang berasal dari Kota Salatiga maupun dari luar Kota Salatiga mengenai cara
mendapatkan informasi layanan kesehatan di Kota Salatiga. Hasil observasi yang di dapat adalah bila penduduk mendapatkan musibah sakit atau hendak berobat baik itu
ringan ataupun sedang, penduduk terutama yang berasal dari luar Kota Salatiga kesulitan mendapatkan informasi layanan kesehatan terutama layanan kesehatan
tingkat pertama yang ada disekitarnya. Selain itu bila penduduk hendak berobat ke dokter praktik mandiri terkadang dokter tersebut tidak praktik ketika penduduk
membutuhkan pengobatan. Untuk tahapan pengumpulan data layanan kesehatan didapatkan dari Dinas Kesehatan Kota Salatiga dan melakukan penandaan langsung
ke lokasi layanan kesehatan di Kota Salatiga menggunaan GPS sedangkan untuk jadwal layanan kesehatan dan jadwal dokter didapat melalui website resmi layanan
kesehatan tersebut ataupun pencatatan langsung ke lokasi layanan kesehatan.
Gambar 2. Tahapan Penelitian [15]
Tahap kedua adalah perancangan sistem berdasarkan hasil analisis kebutuhan menggunakan UML Unified Modelling Language yang terdiri dari use case
diagram, activity diagram dan class diagram. Tambahan perancangan yang lain yaitu perancangan database meliputi tabel-tabel yang digunakan dalam menyimpan data
serta penentuan hubungan relasinya dan perancangan antarmuka aplikasi yang akan dibuat.
Analisis Kebutuhan dan Pengumpulan Data Perancangan Sistem Meliputi Perancangan Proses UML, Perancangan
Arsitektur, Perancangan Database, Perancangan Antarmuka Perancangan AplikasiProgram
Implementasi dan Pengujian Sistem, serta Analisis Hasil Pengujian Penulisan Laporan Hasil Penelitian
14
Tahap ketiga adalah perancangan aplikasiprogram, yaitu merancang aplikasi sesuai dengan kebutuhan sistem berdasarkan perancangan yang sudah dilakukan.
Bahasa pemrograman yang dipakai adalah PHP dengan Laravel Framework, Bootstrap dan Materialize framework sebagai kerangka tampilan dan MySQL sebagai
basis data.
Tahap keempat adalah implementasi dan pengujian sistem serta analisis hasil pengujian, yaitu mengimplementasikan aplikasi yang sudah dirancang ke hosting agar
dapat diakses secara online, kemudian dilakukan pengujian. Analisis hasil pengujian dilakukan untuk mengetahui apakah aplikasi telah sesuai dengan yang diharapkan.
Tahap kelima adalah penulisan laporan hasil penelitian. Tahap ini dilakukan dokumentasi proses dari tahap awal sampai tahap akhir dalam bentuk tulisan. Adapun
metode pengembangan sistem yang digunakan yakni metode waterfall yang ditunjukkan pada gambar 3.
Tahapan dalam pengembangan sistem dengan metode waterfall model yakni analisis kebutuhan, desain sistem, pengkodean dan testing. Tahapan pertama yakni
analisis. Pada tahap ini dilakukan identifikasi kebutuhan data yang dibutuhkan sistem yakni data spasial. Data tersebut diperoleh melalui tahap pengumpulan data dari
tahapan penelitian yang dilakukan.
Tahapan kedua setelah analisis yakni desain aplikasi. Desain aplikasi pada penelitian ini menggunakan UML yang terdiri dari use case diagram, activity
diagram dan class diagram.
Gambar 3 Waterfall Model [16]
Use case diagram berguna untuk mendeskripsikan tindakan sistem dari sudut pandang pengguna, sebagai deskripsi fungsional dari sebuah sistem dan proses
utamanya, serta menjelaskan siapa saja yang terlibat sebagai aktor dalam menggunakan sistem berikut interaksinya.
Use case pada Gambar 4 menunjukkan bahwa Aplikasi Pencarian Layanan Kesehatan memiliki dua pengguna yang memiliki akses yang berbeda
– beda, yaitu Tamu dan Administrator. Pengguna tamu hanya memiliki akses melihat informasi
layanan kesehatan yang ada disekitarnya dan mendapatkan rute menuju layanan kesehatan terdekat yang buka. Administrator memiliki akses untuk mengelola
layanan kesehatan, jam layanan kesehatan serta dokter dan jadwal dokter yang praktik pada layanan kesehatan.
15
uc Use Case Mo...
ApplHealth
administrator
tamu Tampilkan layanan
kesehatan terdekta
tambahkan j adw al praktek dokter
tambah j adw al praktek layanan
kesehatan Jadw al layanan
kesehatan ubah j adw al praktek
layanan kesehatan hapus j adw al praktek
layanan kesehatan ihat j adw al praktek
layanan kesehatan
j adw al praktek dokter
ubah j adw al praktek dokter
lihat j adw al praktek dokter
hapus j adw al praktek dokter
Tampilkan rute
«extend» «include»
«extend» «extend»
«extend» «include»
«extend» «extend»
«extend»
Gambar 4. Use Case Diagram Aplikasi Pencarian Layanan Kesehatan
Gambar 5 merupakan activity diagram untuk pengguna biasa yang mengakses aplikasi, untuk melakukan pencarian layanan kesehatan di sekitar pengguna.
Pengguna, harus memasukkan lokasi posisinya terlebih dahulu baik secara manual atau menggunakan geolocation apabila pengguna tidak mengetahui lokasinya saat ini.
Setelah sistem mendapatkan lokasi pengguna, sistem melakukan pencarian lokasi layanan kesehatan yang ada disekitar pengguna yang masih buka atau praktek pada
saat pengguna mengakses aplikasi. Apabila pengguna telah menemukan lokasi layanan kesehatan disekitarnya yang dibutuhkan, aplikasi juga dapat memberikan rute
ke tujuan layanan kesehatan apabila dibutuhkan pengguna.
Gambar 5 . Activity diagram pencarian layanan kesehatan terdekat
Class diagram menggambarkan struktur objek, deskripsi objek, class package, serta relasinya satu sama lain. Class diagram digambarkan dalam beberapa kelas
serta paket yang ada dalam sistem. Gambar 6 merupakan class diagram dari aplikasi pencarian layanan kesehatan. Class adalah sebuah spesifikasi yang jika diinstansiasi
akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain
16
berorientasi objek Class menggambarkan keadaan atributproperti suatu sistem, sekaligus menawarkan layanan untuk memanipulasikeadaan tersebut metodafungsi.
Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-
lain. Class diagram terdiri dari model, view dan controller. Model adalah penghubung antara fungsi dengan database. View adalah tampilan user interface dari aplikasi.
Controller adalah penggerak yang berfungsi menerima perintah dari view lalu meneruskan ke model.
class Class Mo... Faskes
- id_faskes: int
- nama_faskes: string
- id_tipe: int
- alamat: string
- no_telpon: int
- foto: string
- bpjs: int
- id_user: int
- latitude: float
- longitude: float
+ getFaskes : array + deleteFaskesint : boolean
+ getFaskesint : array + addFaskesarray : void
+ editFaskesarray : void
Tipe
- id_tipe: int
- deskripsi: string
+ getTipe : array + deleteTipeint : array
+ getTipeint : array + addTipearray : void
+ editTipearray : void
Dokter
- id_dokter: int
- id_faskes: int
- nama_dokter: string
- alamat: string
+ getDokter : array + deleteDokterint : boolean
+ getDokterint : array + addDokterarray : void
+ editDokterarray : void
FaskesOpen
- id_faskes: int
- hari: int
- jam_buka: TIME
- jam_tutup: TIME
- jam_mulai_istirahat: TIME
- jam_selesai_istirahat: TIME
+ addJamKerjaarray : void + ubahJamKerjaarray : void
+ getJamKerjaint : array + hapusJamKerjaint : array
FaskesDokter
- hari: int
- jam_buka: TIME
- jam_tutup: TIME
- jam_mulai_istirahat: TIME
- jam_selesai_istirahat: TIME
- id_dokter: int
- id_faskes: int
+ addJamPraktekarray : void + editJamPraktekarray : void
+ deleteJamPraktekint : boolean + getJamPraktekint : array
Gambar 6 . Class DiagramAplikasi
Setelah selesai melakukan desain sistem dan perancangan UML, tahap berikutnya yakni penulisan kode program. Pada tahap ini dilakukan implementasi
pada perancangan yang telah dibuat. Implementasi dilakukan dengan menulis kode program menggunakan PHP dengan Laravel Framework, Bootstrap dan Materialize
framework sebagai kerangka tampilan, MySQL sebagai basis data.
Tahapan berikutnya dalam perancangan sistem menggunakan Waterfall yakni pengujian aplikasi. Pengujian aplikasi dilakukan dengan dua cara yakni dengan
pengujian teori dan pengujian aplikasi. Untuk menguji aplikasi langsung untuk menguji keakuratan data dan HTML5 Geolocation sedangkan untuk pengujian teori
dilakukan perbandingan pengukuran dengan Euclidean dan Jarak dengan Google Map. Hasil dari pengujian akan digunakan dalam tahap penyimpulan hasil sebagai
kesimpulan dari penelitian.
Tahapan terakhir dari mode Waterfall adalah perawatan program. Pada tahap ini dilakukan pemeliharaan terhadap aplikasi yang dibuat. Bentuk pemeliharaan
dengan memperbarui aplikasi atau membuat versi yang lebih baru dengan teknologi atau metode yang lebih cepat dan efisien.
4.
Hasil dan Pembahasan
Dalam sistem ini terdapat dua pengguna dalam sistem ini yakni pengguna biasa dan pengelola. Pengguna biasa dapat melakukan pencarian layanan kesehatan yang
ada baik yang masih melayani ataupun yang tidak melayani. Ketika pengguna
17
melakukan permintaan pencarian layanan kesehatan yang ada disekitarnya. Pengguna juga dapat meminta rute dari lokasi pengguna menuju layanan kesehatan yang
dibutuhkan menggunakan Google Direction API. Pengelola mampu melakukan penambahan, pengubahan dan menghapus layanan kesehatan, jadwal layanan
kesehatan, dokter pada layanan kesehatan serta jadwal dokter pada layanan kesehatan.
Gambar 7 adalah Halaman awal aplikasi. Di sistem ini terdapat menu untuk mencari lokasi layanan kesehatan yang ada disekitar pengguna berdasarkan lokasi
pengguna menggunakan HTML5 Geolocation atau melakukan input secara manual lokasi pada field form yang disediakan.
Gambar 7. Halaman awal aplikasi
Untuk memudahkan pencarian lokasi pengguna selain menggunakan HTML5 Geolocation, sistem juga memberikan kemudahan yakni autocomplete yang
memberikan daftar lokasi yang mungkin merupakan lokasi pengguna. Tabel 1 adalah tabel browser yang mendukung HTML5 Geolocation.
Tabel 1. Browser yang mendukung Geolocation API [17]
API IE
Google Chrome
Firefox Safari
Opera
Geolocation 9.0
5.0 3.5
5.0 16.0
Setelah sistem mendapatkan lokasi pengguna, sistem melakukan pencarian layanan kesehatan yang ada disekitar pengguna dalam radius 1 KM. apabila dalam 1
KM pengguna tidak menemukan layanan kesehatan yang dibutuhkan, pengguna dapat memperlebar pencarian hingga radius 3 KM. setelah pengguna memiliih layanan
kesehatan yang dibutuhkan, pengguna dapat melihat jadwal layanan kesehatan, jadwal dokter pada layanan kesehatan yang terpilih.
Kode Program 1. Kode Program pelacakan lokasi HTML5 Geolocation API
1. if navigator.geolocation { 2. navigator.geolocation.getCurrentPositionfunction showPositionposition{
3. koordinat = position.coords.latitude + , + position.coords.longitude; 4. akurasi = position.coords.accuracy;
5. } else { 6. console.lognot supported;
7. }
18
8. function showPositionposition { 9. x.innerHTML = Latitude: + position.coords.latitude +
10. brLongitude: + position.coords.longitude;
11. }
12. 13.
function showErrorerror { 14.
switcherror.code { 15.
case error.PERMISSION_DENIED: 16.
alertPengguna tidak mengijinkan mengakses layanan lokasi; 17.
break; 18.
case error.POSITION_UNAVAILABLE: 19.
alertLayanan informasi Lokasi tidak tersedia; 20.
break; 21.
case error.TIMEOUT: 22.
alertPermintaan akses lokasi telah habis 23.
break; 24.
case error.UNKNOWN_ERROR: 25.
alertSepertinya terjadi kesalahan; 26.
break; 27.
} 28.
}
Kode program 1 adalah kode program untuk menerapkan API HTML5 Geolocation. Baris ke-1 pada kode program 2 untuk melakukan pengecekan apakah
browser yang digunakan untuk mengakses aplikasi mendukung fitur HTML5 geolocation. Baris ke-3 dan baris ke-4 berfungsi untuk mendapatkan lokasi pengguna
dan akurasi HTML5 geolocation. Baris ke 12 – 27 berfungsi untuk penanganan
kesalahan yang terjadi dalam pelacakan lokasi menggunakan HTML5 Geolocation.
Tabel 2. Dataset Layanan Kesehatan Tiap Kecamatan
No Kecamatan
Rumah Sakit Dokter
Puskesmas
1 Sidorejo
1 30
2 2
Sidomukti 2
31 2
3 Argomulyo
1 9
2 4
Tingkir 2
14 1
Tabel 2 merupakan dataset jumlah layanan yang kesehatan pada aplikasi di tiap kecamatan di kota Salatiga meliputi Rumah Sakit, Dokter, dan Puskesmas.
Dataset tersebut nantinya digunakan untuk melakukan pencarian layanan kesehatan yang ada disekitarnya berdasarkan lokasi pengguna.
a b
Gambar 8. Hasil pencarian layanan kesehatan
19
Gambar 8a terlihat bahwa secara default aplikasi menampilkan layanan kesehatan yang ada disekitar pengguna pada jarak 1 KM yang masih melayani ketika
pengguna menjalankan aplikasi. Bila pengguna meminta aplikasi menunjukkan semua layanan kesehatan yang ada disekitar pengguna baik yang aktif maupun tidak
aktif pengguna dapat melakukan penyarigan data dengan mengubah tombol switch dari buka menjadi semua seperti yang ditunjukkan pada gambar 8b.
Kode Program 2
. Mencari layanan kesehatan aktif dalam radius 1 km
1. public function activeHaversinelatitude,longitude,jarak=1 2. {
3. start = microtimetrue; 4. data = DB::selectSelect fo.hari, fo.jam_buka, fo.jam_tutup,
5. f.faskes_id, f.nama_faskes, f.alamat,
6. f.latitude, f.longitude,f.tipe_id, 63712ASINSQRTPOWERSINabsf.latitude 7. -abslatitude pi180 2, 2 + COSabslongitude pi180
8. COSabsf.latitude pi180 POWERSINf.longitude - longitude pi180 9. 2, 2 as jarak from faskes f join faskes_open fo on fo.faskes_id
10. f.faskes_id where fo.hari = WEEKDAYnow AND TIMENOW BETWEEN fo.jam_buka 11. AND fo.jam_tutup AND TIMENOW NOT BETWEEN fo.jam_mulai_istirahat and
12. fo.jam_selesai_istirahat having jarak 1 ORDER BY jarak ASC
’; 13. time_elapsed = microtimetrue - start;
14. return response-json[distance = jarak, waktu = time_elapsed , 15. data = data];
16. }
Kode Program 2 adalah kode program untuk melakukan pencarian layanan kesehatan yang ada disektiar pengguna dalam radius 1 KM yang masih melayani
ketika pengguna melakukan permintaan pencarian layanan kesehatan. Pencarian layanan kesehatan yang aktif dilakukan dengan menggunakan Haversine formula dan
untuk mencari layanan kesehatan yang aktif dilakukan penyeleksian pada tabel yang berelasi dengan tabel layanan kesehatan yakni tabel faskes_open yang merupakan
tabel yang menyimpan jadwal layanan kesehatan. Sistem melakukan pencocokan antara waktu sistem dengan waktu pengguna saat mengakses aplikasi. Fungsi ini
mengembalikan data dalam bentuk JSON berupa data layanan kesehatan waktu eksekusi dan radius pencarian.
Kode Program 3. Query SQL mencari layanan kesehatan dalam radius 1 km
1. public function haversinelatitude,longitude,jarak=1{ 2.
start = microtimetrue; 3.
data = DB::selectselect faskes_id, nama_faskes, latitude, longitude, 4.
tipe_id, alamat,63712ASINSQRTPOWERSINabslatitude - abs-7.3304 5.
pi180 2, 2 +COSabs110.5 pi180 COSabslatitude 6.
pi180 POWERSINlongitude - 110.5 pi180 2, 2 as jarak 7.
from faskes f having jarak 1 ORDER BY jarak ASC ’;
8. time_elapsed = microtimetrue - start;
9. return response-json[distance = jarak, waktu = time_elapsed
10. ,data = data];
11. }
Kode program 3 adalah method untuk melakukan seleksi data pada database untuk mencari semua layanan kesehatan yang ada disekitar pengguna baik yang aktif
mapun tidak aktif dalam radius 1 KM. Fungsi ini mengembalikan data dalam bentuk JSON berupa data layanan kesehatan waktu eksekusi dan radius pencarian.
20
Gambar 9 Rute Menuju layanan kesehatan
Gambar 9 sistem menunjukkan rute menuju layanan kesehatan yang dipilih oleh pengguna dari lokasi pengguna menuju lokasi layanan kesehatan yang telah
dipilih pengguna sebelumnya menggunakan Google Direction API.
Kode Program 4 . Mendapatkan rute dengan Google Direction API
1. function routingawal,tujuan 2. {
3. var directionsService = new google.maps.DirectionsService; 4. var directionsDisplay = new google.maps.DirectionsRenderer;
5. document.getElementByIdpanel.innerHTML = ; 6. var map = new google.maps.Mapdocument.getElementByIdmap, {
7. zoom:7, 8. mapTypeId: google.maps.MapTypeId.ROADMAP
9. }; 10.
directionsDisplay.setMapmap; 11.
directionsDisplay.setPaneldocument.getElementByIdpanel; 12.
var request = { 13.
origin: awal, 14.
destination: tujuan, 15.
travelMode: google.maps.DirectionsTravelMode.DRIVING 16.
}; 17.
directionsService.routerequest, functionresponse, status { 18.
if status == google.maps.DirectionsStatus.OK { 19.
directionsDisplay.setDirectionsresponse; 20.
21. var point = response.routes[ 0 ].legs[ 0 ];
22. }
23. };
24. }
Kode program 4 adalah kode untuk mendapatkan rute menuju layanan kesehatan dari lokasi pengguna. Baris 3 -9 merupakan konfigurasi untuk pengaturan
peta Google Map. Baris 10-15 merupakan konfigurasi untuk menampilkan turn-by- turn navigation dari Google Direction API. Baris 17 -23 merupakan fungsi untuk
mendapatkan rute dari lokasi awal ke tujuan.
21
a b
Gambar 10. Tampilan aplikasi pada perangkat yang berbeda
Gambar 10 adalah tampilan aplikasi menggunakan framework Materialize yang responsive yaitu tampilan aplikasi secara otomatis menyesuaikan browser dan
perangkat yang digunakan, bila resolusi layar berubah ukuran tampilan aplikasi tidak akan rusak tetapi akan menyesuaikan ukuran resolusi layar. Fitur ini dibuat agar
memudahkan pengguna untuk mengakses aplikasi tidak hanya melalui browser pada komputer tapi perangkat yang berbeda yang memiliki resolusi layar yang berbeda.
Setelah tahapan pembuatan program aplikasi tahap berikutnya adalah pengujian. Pengujian metode dilakukan dengan melakukan perbandingan dengan
metode Euclidean dan untuk akurasi panjang jarak dibandingkan dengan jarak menggunakan Google Map.
Pengujian dilakukan langsung ke lapangan di kecamatan sidomukti, tepatnya di sekitar lapangan pancasila -7.3304,110.5 pada pukul 9.00 pagi.
Tabel 3. Hasil Pengukuran Jarak dalam radius 1 KM dari lokasi -7.3304,110.5
No Nama Faskes Euclideankm
Haversinekm
Google Map km
1 Klinik Aura Medika 0,085396
0,085073 0,085
2 RSUD Salatiga 0,466161
0,463422 0,463
3 RS Mutiara Bunda 0,471987
0,467651 0,468
4 Puskesmas Margosari 0,501231
0,500535 0,501
5 BKPM Salatiga 0,531009
0,530033 0,531
6 Puskesmas Kalicacing 0,549208
0,548183 0,547
8 drg. Kristine 0,613266
0,608783 0,609
9 Puskesmas Mangunsari 0,85316
0,845561 0,847
Waktu Eksekusi query
0,0032 0,0034
-
Tabel 3 menunjukkan aplikasi berhasil menemukan sembilan layanan kesehatan yang ada disekitar pengguna pada radius maksimum 1 km dan yang aktif ketika
pengguna mengakses aplikasi. Terlihat bahwa metode Haversine memiliki akurasi yang mendekati Google Map daripada metode Euclidean.
22
Tabel 4. Rata rata eksekusi waktu query
Lokasi Haversine
Euclidean rata -rata
standar deviasi rata-rata
standar deviasi
1 0,00316
8,43274E-05 0,00303
0,000216282 2
0,0031 0,000166333
0,00307 0,000266875
3 0,00294
0,00011547 0,00277
0,0003335 4
0,00291 0,000347051
0,00277 0,000170294
Tabel 4 adalah tabel pengujian lama waktu pencarian lokasi layanan kesehatan yang aktif di sekitar pengguna menggunakan Haversine dan Euclidean. Pengujian
dilakukan sebanyak 10 kali pada masing masing lokasi kemudian dicari rata – rata
waktu eksekusi dan standar deviasi dari masing masing pengukuran. Terlihat bahwa untuk eksekusi query, Euclidean memiliki kecepatan yang lebih baik daripada
Haversine.
Tabel 5 adalah akurasi API HTML5 Geolocation. Untuk mendapatkan lokasi lintang dan bujur pengguna dapat menggunakan position.coords.latitude dan
position.coords.longitude, sedangkan
untuk mendapatkan
akurasi HTML5
Geolocation dapat menggunakan position.coords.accuracy
Tabel 5. Akurasi HTML5 Geolocation Berdasarkan Operator seluler
Lokasi Provider
Akurasi meter
1 indosatooreedo
6 telkomsel
1415 xl
12 2
indosatooreedo 26
telkomsel 1411
xl 28
3 indosatooreedo
23 telkomsel
26 xl
40 4
indosatooreedo 15
telkomsel 6
xl 33
5. Kesimpulan