Metode Penelitian dan Perancangan Aplikasi

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