1 BAB III PERANCANGAN DAN PEMBUATAN SISTEM Pada bab berikut ini akan dijelaskan mengenai desain sistem aplikasi,perancangan database dan pembuatan apl...
Pada bab berikut ini akan dijelaskan mengenai desain sistem aplikasi,perancangan database dan pembuatan aplikasi. Desain aplikasi itu sendiri ditujukan untuk memberikan gambaran secara umum terhadap aplikasi yang akan dibuat. Dengan desain aplikasi juga akan mempermudah untuk pengembangan lebih lanjut terhadap aplikasi yang dibuat. Web untuk Proyek Akhir ini menggunakan database MySQL yang berfungsi sebagai media penyimpanan data atau informasi yang terkumpul dimana antara tabel tersebut saling berhubungan atau berelasi. Oleh karena Web ini bertujuan untuk memberikan informasi yang dinamis maka digunakan JSP (Java Server Pages) sebagai jembatan antara informasi yang akan dibuat dengan basis data yang ada. Untuk membuat aplikasi pada Proyek Akhir ini terlebih dahulu dilakukan pembuatan desain data, desain proses, serta desain antar muka. Desain data berguna untuk mengetahui data apa saja yang dibutuhkan dalam proses tersebut. Desain proses berguna untuk mengintegrasikan semua proses yang terjadi dalam aplikasi yang akan dibuat. Sedangkan desain antarmuka bertujuan untuk digunakan sebagai jembatan antara pengguna dengan sistem aplikasi yang dibuat, sehingga pengguna dapat mengoperasikan aplikasi yang dibuat. Implementasi dari desain aplikasi tersebut berupa implementasi struktur data, implementasi proses – proses keseluruhan dan implementasi antarmuka. Program yang digunakan untuk mengimplementasikan struktur data pada masing-masing proses menggunakan Netbeans, dan XAMPP sebagai tool untuk memanipulasi database.
3.1
DESKRIPSI UMUM SISTEM
Deskripsi dari sistem informasi reservasi online Fisioterapi ini adalah sebagai berikut :
31
Pada website ini terdapat seorang member selaku pasien yang telah terdaftar dalam website. Dengan menjadi member pada website ini, pasien dapat melakukan pemesanan pada satu atau lebih Rumah Sakit yang tergabung dalam web ini. Jika belum mendaftar maka pasien tersebut hanya mendapatkan hak sebagai seorang guest yang hanya dapat melihat – lihat content yang tersedia pada website ini. Untuk dapat terdaftar sebagai member pada website ini, pasien diwajibkan melakukan registrasi terlebih dahulu dengan menginpukan email serta jenis kelaminnya pada halaman Register. Setelah melakukan registrasi, admin web ini yang akan melakukan approve terhadap guest tersebut. Sehingga jika admin telah melakukan approve pada guest itu, maka secara resmi guest tersebut menjadi member pada website ini. Pada halaman pemesanan / reservasi RS, member dapat memilih dokter menurut spesialisasinya, kemudian akan muncul perawatan menurut spesialisasi dokter itu, member dapat memilih jenis tindakan/perawatan yang dikehendaki dan akan ada total harga dari setiap jenis perawatan yang dipilih. Selain itu akan muncul jadwal jam kerja dari dokter tersebut, member dapat memilih jam beserta tanggal perawatan yang dikehendaki. Jika member salah menginputkan jam atau telah ada member lain yang melakukan boking pada dokter itu pada jam yang sama, maka akan muncul peringatan, sehingga member tersebut dapat memilih perawatan pada jam lainnya. Member juga dapat membatalkan perawatan dengan mendelete boking yang dilakukannya. Untuk rumah sakit yang ingin bergabung pada website ini, dapat menghubungi admin web ini untuk dibuatkan account. Setelah melakukan perjanjian dengan admin web ini maka admin web akan membuat sebuah account untuk rumah sakit tersebut. Account yang dibuat untuk Rumah Sakit terdiri dari tiga jenis yaitu : RS Umum, RS Internasional, dan klinik medis. Penggolongan jenis RS ini hanya untuk memudahkan pasien dalam memilih RS mana yang paling diminati, untuk kualitas yang bagus dapat memilih RS internasional misalnya, tetapi dalam segi harga akan lebih mahal pula. Sebaliknya pasien dapat memilih klinik medis untuk penanganan fisioterapi yang lebih murah. Dan RS Umum untuk fasilitas yang standar. Setelah acount RS dibuatkan oleh admin, maka pihak RS tersebut dapat melakukan pengisian profil RS beserta fasilitasnya, menambahkan data dokter beserta jam kerjanya, melakukan approve pada boking
32
pasien serta penambahan pada medical report pasien, dan dapat melihat data boking pasien maupun yang telah ditangani secara keseluruhan Sebagai admin website, dapat melakukan post berita – berita mengenai fisioterapi pada web ini, membuat account RS, melakukan approve/menerima pasien, menghapus member/pasien dari account web, serta menambah ataupun menghapus kategori/spesialisasi dan medikasi/sub kategori penyakit beserta jumlah harganya.
3.2
DESKRIPSI KEBUTUHAN SISTEM
Pada deskripsi kebutuhan sistem akan dijelaskan tentang masukan dan keluaran dari sistem yang ada dan pembagian pengguna dari sistem, termasuk akses-akses yang di perlukan oleh masing-masing level pengguna. Pada aplikasi ini yang menjadi data masukan adalah data – data seperti fasilitas rumah sakit, data dokter beserta spesialisasinya, data jenis penyakit, data pasien, dan lain-lain, dimana informasi ini akan dimasukkan oleh administrator RS dan beberapa diantaranya akan dimasukan oleh admin web itu sendiri ke dalam database. Data-data ini akan diproses sehingga menghasilkan keluaran berupa informasi yang sudah diolah berdasarkan permintaan umum dari pengguna aplikasi ini. Pengguna dari aplikasi akan dibagi menjadi 4 (empat) level yaitu : Administrator Web, Administrator RS, Pasien/Member, dan Guest. Masing-masing pengguna mempunyai hak akses yang berbeda sesuai dengan fungsinya masing-masing.
3.2.1
Administrator Web
Master Administator adalah pengguna yang mempunyai hak penuh dalam mengakses aplikasi web ini, sehingga diperlukan login terlebih dahulu sebelum mendapatkan fasilitas-fasilitas Master administrator ini. Hal yang dapat dilakukan oleh Master administrator web pada aplikasi ini adalah memanage data informasi yang berkaitan dengan kebutuhan dari pengguna aplikasi ini, seperti post berita mengenai fisioterapi, membuat account Rumah Sakit yang ingin bergabung, approve guest yang ingin bergabung menjadi member di website ini, serta menambahkan kategori fisioterapi beserta jenis penyakit dan harga yang tergolong di dalamnya.
33
3.2.2
Administrator RS
Administrator RS adalah wakil dari Rumah Sakit yang telah disetujui dan bergabung dengan system fisioterapi online ini. Admin RS mempunyai hak dalam mengakses aplikasi ini, sehingga diperlukan login terlebih dahulu sebelum mendapatkan fasilitasnya. Hal-hal yang dapat dilakukan oleh Administrator RS dalam aplikasi ini adalah melakukan update profil Rumah Sakit, insert, update, delete terhadap data dokter dan jadwal jam kerjanya, serta dapat melakukan konfirmasi boking yang dilakukan oleh pasien. Tidak lupa pihak RS dapat melakukan penambahan diagnosa pada medical report pasien.
3.2.3
Pasien / Member
Pasien adalah Guest yang telah mendaftar di website fisioterapi ini, setelah berhasil registrasi pada website ini, admin web akan melakukan approve. Setelah itu pasien resmi menjadi member di web ini dan akan mendapatkan sebuah account sehingga pasien dapat melakukaan reservasi di salah satu ataupun lebih rumah sakit yang tergabung dengan website ini. Pasien yang telah terdaftar kedalam account web ini dapat memiliki beberapa fasilitas yaitu dapat melakukan pendaftaran fisioterapi secara online, dapat melakukan input diagnosa awal terhadap penyakit yang diderita, memilih dokter spesialis yang ada, serta melakukan input tanggal dan jam terapi fisioterapi.
3.2.4
Guest
Guest adalah semua pengguna yang membuka aplikasi website ini, tetapi hanya memiliki hak untuk mendapatkan informasi terbatas disediakan oleh web ini, sehingga tidak perlu melakukan pendaftaran atau login untuk mengakses aplikasi. Hal-hal yang dapat dilakukan oleh pengguna biasa pada aplikasi ini adalah mendapatkan informasi yang telah disediakan oleh aplikasi ini,
34
seperti: informasi fisioterapi, rumah sakit yang tergabung, dan lain – lain.
3.3
PERANCANGAN APLIKASI Pada perancangan aplikasi ini terdiri atas tiga macam rancangan, yaitu: perancangan data untuk mengintegrasikan struktur basis data dalam rancangan aplikasi web. Perancangan proses untuk mengintegrasikan semua proses yang terjadi dalam rancangan aplikasi yang akan dibuat dan perancangan antarmuka yang dibangun berdasarkan kebutuhan aplikasi yang digunakan. 3.3.1 Perancangan Data Pada aplikasi ini dirancang diagram relasi entitas, model data fisik serta tabel yang akan digunakan dalam aplikasi. Desain data ini akan diimplementasikan pada aplikasi yang akan dibuat.
3.3.1.1 Desain Data konseptual Diagram Relasi Entitas ini berguna untuk memberikan gambaran hubungan antara relasi sehingga dapat diimplementasikan dalam aplikasi yang akan dibuat. Pada gambar 3.1 ditunjukan relasi yang nantinya menjadi tabel tertentu. Relasi yang menjadi tabel adalah : Entitas Doctor (D_ID, D_NO, D_NAME, D_ADDRESS, D_TELP, D_PIC, D_STAT) Entitas Schedule (D_ID, Mon, Tue, Wed, Thu, Fri, Sat, Sun) Entitas Hospital (H_ID, H_USER, H_PASS, H_NAME, H_DESC, H_ADDRESS, H_TELP ) Entitas Member (M_ID, M_USR, M_EMAIL, M_PASS, M_SEX, M_TELP, M_ADDRESS, M_PIC, M_PRIV ) Entitas Medical Report (MR_ID, MR_KEY, MR_DATE, MR_TIME, MR_NOTE, MR_PRC, MR_DONE) Entitas Speciality (S_ID, S_NAME)
Entitas Medication (MED_ID, MED_PRC,
MED_NAME)
35
Entitas medical_detail (MR_KEY, MED_ID)
Entitas News (N_ID, N_HEAD, N_MSG, N_DATE)
Gambar 3.1 Desain Data Konseptual
Setelah dibuat desain Data Konseptual, selanjutnya dibuat Physical Data Model untuk membantu dalam pembuatan tabel seperti yang terlihat pada gambar 3.2 dibawah ini:
36
Gambar 3.2 Physical Data Model 3.3.1.2 Desain Data Fisik Dari Desain Data Konseptual dan Physical Data Model di atas, selanjutnya dibuat beberapa tabel dan tipe data yang akan digunakan. Tabel yang akan dibuat tersebut diantaranya adalah: a) Tabel doctor Tabel ini berisi data – data dokter yang berada di tiap RS, tidak lupa setiap dokter memiliki satu spesialisasi. Tabel 3.1 Tabel doctor No
Nama
Tipe Data
Keterangan
1
D_ID
int(11)
Id dokter (primary)
2
D_NO
Varchar(25)
NIP dokter
3
D_NAME
Varchar(25)
Nama dokter
4
D_ADDRESS
Varchar(25)
Alamat dokter
5
D_TELP
Varchar(25)
Telepon dokter
6
D_PIC
Varchar(25)
Foto dokter
7
D_STAT
tinyint(4)
Status aktif dokter
37
b) Tabel hospital Tabel ini berisi data – data mengenai RS yang telah bergabung di website ini. Tabel 3.2 Tabel hospital No
Nama
Tipe Data
Keterangan
1
H_ID
int(11)
Id RS (primary)
2
H_USER
Varchar(25)
User name RS
3
H_PASS
Varchar(25)
Password RS
4
H_NAME
Varchar(25)
Nama RS
5
H_DESC
text
Deskripsi RS
6
H_ADDRESS
Varchar(50)
Alamat RS
7
H_TELP
Varchar(15)
Telepon RS
c) Tabel medical_report Tabel ini berisikan data hasil boking / reservasi dari pasien di web ini, di dalamnya berisikan data mengenai kode boking, tanggal dan jam boking, data diagnosa pasien, harga total reservasi, dll. Tabel 3.3 Tabel medical_report No
Nama
Tipe Data
Keterangan
1
MR_ID
int(11)
Id Medical Report / Boking
2
MR_KEY
Varchar(12)
Kode Boking
3
MR_DATE
date
Tanggal Boking
4
MR_TIME
time
Jam Boking
5
MR_NOTE
text
Deskripsi Diagnosa Pasien
6
MR_PRC
int(11)
Total Harga Reservasi
7
MR_DONE
tinyint(4)
Status Boking atau tidak
d) Tabel member Tabel ini berisikan data mengenai seluruh pasien maupun guest yang belum masuk ke dalam member di web ini. Membedakan antara pasien/member dengan guest biasa adalah dengan melihat status di field M_PRIV.
38
Tabel 3.4 Tabel member No
Nama
Tipe Data
Keterangan
1
M_ID
int(11)
Id Pasien / Member
2
M_USR
Varchar(25)
User name Member
3
M_EMAIL
Varchar(35)
Email Member
4
M_PASS
Varchar(25)
Password Member
5
M_SEX
char(1)
Jenis Kelamin Member
6
M_TELP
Varchar(15)
Telepon Member
7
M_ADDRESS
Varchar(50)
Alamat Member
8
M_PIC
Varchar(20)
Foto Pasien
9
M_PRIV
tinyint(1)
Hak Privasi Member
e) Tabel speciality Pada tabel ini berisi mengenai kategori / spesialisasi fisioterapi secara garis besar. Tabel 3.5 Tabel speciality No
Nama
Tipe Data
Keterangan
1
S_ID
int(11)
Id Kategori Fisioterapi
2
S_NAME
Varchar(30)
Nama Kategori Fisioterapi
f) Tabel medication Pada tabel ini berisi mengenai sub bagian dari spesialisasi/kategori dari penyakit fisioterapi beserta keterangan nama dan harganya. Tabel 3.6 Tabel medication No
Nama
Tipe Data
Keterangan
1
MED_ID
int(11)
ID Sub Kategori Fisioterapi
2
MED_PRC
int(11)
Harga Penyakit / Terapi
3
MED_NAME
Varchar(35)
Nama Penyakit / Terapi
39
g) Tabel medical_detail Tabel ini merupakan hasil gabungan dari kode boking pada medical record dan foreign key dari field med_id. Tabel 3.7 Tabel medical_detail No
Nama
Tipe Data
Keterangan
1
MR_KEY
Varchar(12)
Kode Boking
2
MED_ID
int(11)
ID Sub Kategori Fisioterapi
h) Tabel schedule Tabel ini berisikan jadwal jam kerja para dokter yang bekerja dari hari senin hingga hari minggu. Tabel 3.8 Tabel schedule No
Nama
Tipe Data
Keterangan
1
MON
Varchar(5)
Hari Senin
2
TUE
Varchar(5)
Hari Selasa
3
WED
Varchar(5)
Hari Rabu
4
THU
Varchar(5)
Hari Kamis
5
FRI
Varchar(5)
Hari Jumat
6
SAT
Varchar(5)
Hari Sabtu
7
SUN
Varchar(5)
Hari Minggu
i) Tabel News Tabel ini hanya berupa informasi yang akan ditampilkan pada website ini Tabel 3.9 Tabel news No
40
Nama
Tipe Data
Keterangan
1
N_ID
int(11)
ID berita
2
N_HEAD
Varchar(45)
Judul berita
3
N_MSG
text
Berita yang ditampilkan
4
N_DATE
date
Tanggal Post berita
3.3.2
Desain Proses
Dalam membuat desain aplikasi reservasi online fisioterapi ini, diperlukan suatu desain sistem yang dibuat dengan pemodelan. Model dari sistem informasi fisioterapi ini, dibuat dalam bentuk diagram alir data (DAD). DAD menunjukkan bagaimana kerja sistem informasi secara fisik.
3.3.2.1 DAD Level 0 Secara umum sistem yang akan dibuat akan tampak pada gambar 3.4. proses pengelolaan data yang dilakukan oleh Web “Reservasi Online Fisioterapi“ yang diwakili oleh administrator diperlukan demi kelancaran pelayanan informasi bagi penggunanya.
Gambar 3.3 DAD Level 0
41
3.3.2.2 DAD Level 1 Untuk memperjelas proses pada DAD level 0 di atas maka perlu dilakukan pemecahan ke level berikutnya. proses yang lebih rinci dapat Anda lihat pada gambar 3.5 dibawah ini:
Gambar 3.4 DAD Level 1
3.3.3
Desain Antarmuka
Dalam pembuatan Sistem Informasi Reservasi Online Fisioterapi dibutuhkan desain antar muka untuk memberikan gambaran terhadap sistem informasi yang dibuat. Desain antar muka ini menjadi dasar untuk membuat tampilan pada web yang dibuat. Dalam desain antar muka ini dibagi atas empat bagian, yakni untuk pengguna biasa/Guest, member, Administrator RS, dan Administrator Web.
42
3.3.3.1 Desain Antarmuka Guest Desain antarmuka guest merupakan antarmuka yang akan ditampilkan bagi pengguna internet pada umumnya yang akan masuk ke dalam web. Tampilan pada halaman situs web untuk pengguna ini adalah seperti yang terlihat pada gambar berikut, yaitu memiliki menu Login dan Register.
Gambar 3.5 Desain antarmuka Guest
Pada bagian atas web berupa header dengan logo HealthCare.Net dan pada sebelah kanan bagian web terdapat berita yang di post oleh admin web. Halaman utama ini hanya berisi link – link yang digunakan untuk menampilkan data preview informasi, dan halaman Rumah sakit biasa. Tidak ditampilkan halaman pemesanan pada rumah sakit karena dibutuhkan registrasi menjadi member pada website ini.
43
3.3.3.2 Desain Antarmuka Member Secara keseluruhan antara user interface untuk member hampir sama dengan user interface yang dimiliki oleh user biasa, hanya saja pada member akan memperoleh fasilitas lebih dari pada user biasa. Yaitu dengan adanya menu MY PROFILE. Jadi member akan dapat reservasi RS secara online, sedangkan user biasa tentu saja tidak akan dapat melakukan hal tersebut. Member dapat melakukan login. Dan logout digunakan bila user ingin keluar dari level member menjadi user biasa.
Gambar 3.6 Desain antarmuka member
3.3.3.3 Desain Antarmuka administrator RS Berikut contoh dari desain antarmuka administrator RS, admin RS dapat melakukan login pada website ini, dan kemudian akan dilihat menu RS. Admin RS dapat melakukan logout untuk keluar dari web ini.
44
Gambar 3.7 Desain antarmuka administrator RS
3. 3.3.4 Desain Antarmuka administrator Web Administrator web dapat melakukan login dan logout, ketika melakukan login, akan muncul menu pada sebelah kiri halaman seperti berikut :
45
Gambar 3.8 Desain antarmuka administrator web
3.4 PEMBUATAN APLIKASI Berikut ini adalah implementasi dari desain aplikasi berupa implementasi struktur data dari masing-masing proses. Program bantu untuk mengimplementasikan struktur data pada masing-masing proses menggunakan XAMPP, sebagai tool untuk memanipulasi database.
3.4.1 Lingkungan Implementasi Pada sub bab ini akan dibahas mengenai kebutuhan untuk mengimplementasikan aplikasi, sehingga nantinya aplikasi ini bisa dijalankan dan dimanfaatkan. Pembuatan aplikasi ini membutuhkan komponen-komponen aplikasi yang sudah ditentukan terlebih dahulu, antara lain:
46
a)
b)
c)
Web Server Web server yang akan dipakai pada pembuatan aplikasi ini adalah Apache Tomcat versi 6.0 yang diinstall pada platform Windows XP. Untuk pembuatan aplikasi web, digunakan bahasa pemrograman Java berbasis web yaitu Java Server Pages. Program bantu yang akan digunakan adalah Gel dan Netbeans yang dapat menggabungkan kode HTML dan JSP untuk pembuatan user interface aplikasi ini. Kebutuhan minimum server database ini adalah komputer sekelas pentium III dengan minimum memori sebesar 256 Mb. Server Database Server Database yang akan digunakan pada pembuatan aplikasi ini adalah MySQL yang diinstall pada platform Windows XP. Kebutuhan minimum server database ini adalah komputer sekelas pentium III dengan minimum memori sebesar 256 Mb. Client Komputer client yang digunakan untuk mengimplementasikan aplikasi ini adalah komputer yang sudah terinstall Windows dengan Internet Explorer 5.0. Sedangkan kebutuhan minimum dari komputer client adalah komputer sekelas pentium II dengan memori 64 Mb.
3.4.2 Implementasi Data Setelah rancangan data konseptual dibuat, maka dilanjutkan dengan pengimplementasian rancangan data konseptual kedalam bentuk tabel beserta tipe datanya. Pada aplikasi ini, pengimplementasian kedalam bentuk tabel dilakukan di lingkungan MySQL, sehingga tipe data yang akan digunakan adalah menggunakan tipe data dari database MySQL. Script yang akan digunakan untuk membentuk tabel-tabel di dalam database MySQL adalah sebagai berikut : -- phpMyAdmin SQL Dump -- version 3.1.3.1 -- http://www.phpmyadmin.net --
47
-- Host: localhost -- Generation Time: Jul 20, 2009 at 02:05 PM -- Server version: 5.1.33 -- PHP Version: 5.2.9 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; --- Database: `hospital_final` --- ---------------------------------------------------------- Table structure for table `doctor` -CREATE TABLE IF NOT EXISTS `doctor` ( `D_ID` int(11) NOT NULL AUTO_INCREMENT, `H_ID` int(11) DEFAULT NULL, `S_ID` int(11) DEFAULT NULL, `D_NO` varchar(25) NOT NULL, `D_NAME` varchar(25) NOT NULL, `D_ADDRESS` varchar(50) NOT NULL, `D_TELP` varchar(15) NOT NULL, `D_PIC` varchar(15) NOT NULL DEFAULT 'doc.png', `D_STAT` tinyint(4) NOT NULL DEFAULT '1', PRIMARY KEY (`D_ID`), KEY `RELATIONSHIP_2_FK` (`H_ID`), KEY `RELATIONSHIP_4_FK` (`S_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; -- ---------------------------------------------------------- Table structure for table `hospital` -CREATE TABLE IF NOT EXISTS `hospital` ( `H_ID` int(11) NOT NULL AUTO_INCREMENT, `H_USER` varchar(25) NOT NULL, `H_PASS` varchar(25) NOT NULL, `H_NAME` varchar(25) NOT NULL,
48
`H_DESC` text NOT NULL, `H_ADDRESS` varchar(50) NOT NULL, `H_TELP` varchar(15) NOT NULL, PRIMARY KEY (`H_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; -- ---------------------------------------------------------- Table structure for table `medical_detail` -CREATE TABLE IF NOT EXISTS `medical_detail` ( `MR_KEY` varchar(12) NOT NULL, `MED_ID` int(11) NOT NULL, KEY `MR_ID` (`MR_KEY`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------------------------------------- Table structure for table `medical_record` -CREATE TABLE IF NOT EXISTS `medical_record` ( `MR_ID` int(11) NOT NULL AUTO_INCREMENT, `H_ID` int(11) NOT NULL, `D_ID` int(11) DEFAULT NULL, `M_ID` int(11) DEFAULT NULL, `MR_KEY` varchar(12) NOT NULL, `MR_DATE` date NOT NULL, `MR_TIME` time DEFAULT NULL, `MR_NOTE` text, `MR_PRC` int(11) NOT NULL, `MR_DONE` tinyint(4) DEFAULT '0', PRIMARY KEY (`MR_ID`), KEY `RELATIONSHIP_1_FK` (`M_ID`), KEY `RELATIONSHIP_3_FK` (`D_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ; -- ---------------------------------------------------------- Table structure for table `medication` -CREATE TABLE IF NOT EXISTS `medication` (
49
`MED_ID` int(11) NOT NULL AUTO_INCREMENT, `S_ID` int(11) NOT NULL, `MED_PRC` int(11) NOT NULL, `MED_NAME` varchar(35) NOT NULL, PRIMARY KEY (`MED_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ; -- ---------------------------------------------------------- Table structure for table `member` -CREATE TABLE IF NOT EXISTS `member` ( `M_ID` int(11) NOT NULL AUTO_INCREMENT, `M_USR` varchar(25) DEFAULT ' ', `M_EMAIL` varchar(35) NOT NULL DEFAULT '[email protected]', `M_PASS` varchar(25) DEFAULT NULL, `M_SEX` char(1) NOT NULL DEFAULT 'M', `M_TELP` varchar(15) DEFAULT ' ', `M_ADDRESS` varchar(50) DEFAULT ' ', `M_PIC` varchar(20) NOT NULL DEFAULT 'no.jpg', `M_PRIV` tinyint(1) NOT NULL, PRIMARY KEY (`M_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; -- ---------------------------------------------------------- Table structure for table `news` -CREATE TABLE IF NOT EXISTS `news` ( `N_ID` int(11) NOT NULL AUTO_INCREMENT, `N_HEAD` varchar(45) NOT NULL, `N_MSG` text NOT NULL, `N_DATE` date NOT NULL, PRIMARY KEY (`N_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ; -- ---------------------------------------------------------- Table structure for table `schedule` -CREATE TABLE IF NOT EXISTS `schedule` (
50
`D_ID` int(11) NOT NULL AUTO_INCREMENT, `MON` varchar(5) NOT NULL DEFAULT '8.15', `TUE` varchar(5) NOT NULL DEFAULT '8.15', `WED` varchar(5) NOT NULL DEFAULT '8.15', `THU` varchar(5) NOT NULL DEFAULT '8.15', `FRI` varchar(5) NOT NULL DEFAULT '8.11', `SAT` varchar(5) NOT NULL DEFAULT '-1', `SUN` varchar(5) NOT NULL DEFAULT '-1', PRIMARY KEY (`D_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; -- ---------------------------------------------------------- Table structure for table `speciality` -CREATE TABLE IF NOT EXISTS `speciality` ( `S_ID` int(11) NOT NULL AUTO_INCREMENT, `S_NAME` varchar(28) NOT NULL, PRIMARY KEY (`S_ID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
3.4.3
Implementasi Proses
Pada implementasi proses akan dijelaskan proses-proses yang terjadi pada aplikasi ini berdasarkan rancangan proses yang telah sebelumnya. Implementasi proses ini menggunakan aplikasi Netbeans menggabungkan script HTML dan JSP. Secara umum proses-proses yang terjadi pada aplikasi ini terdapat beberapa proses utama. Masing-masing proses akan dijelaskan sebagai berikut :
51
3.4.3.1 Proses Register Proses register dilakukan oleh pengunjung / guest yang ingin mendaftarkan diri pada website ini. Untuk melakukan register guest diminta untuk mengisi email dan jenis kelamin pada field yang tersedia. Jika email telah ada yang sama ataupun terdapat penulisan yang salah pada email, maka proses register gagal. Silahkan mengulangi untuk mengisi data email anda dengan benar. Berikut adalah form yang digunakan pada halaman register :
Daftar User
Kemudian hasil post dari form tersebut akan diproses oleh signup_submit.jsp.
52
<%@page import="trf.conn.DBaseSet"%> <% String m_email=request.getParameter("mail"); String m_sex=request.getParameter("sex"); // -- dbase update --// DBaseSet db=new DBaseSet(1); String query="select m_id from member where m_email='"+m_email+"'"; String[]res=db.getData(query,1); if(res[0]!=null){ %> <jsp:forward page="signup.jsp?err=user+sudah+ada"> <% }else{ String insert="insert into member "+ "(m_pass,m_email, m_sex, m_priv)"+ "values" + "('','"+m_email+"','"+m_sex+"',-1)"; //
Akan dilakukan pengecekan pada database apakah email yang digunakan oleh guest tersebut telah digunakan atau belum, jika sudah digunakan maka akan muncul pesan warning “user sudah ada”. Jika email yang diinputkan belum ada pada table member, maka akan dilakukan insert data guest tersebut pada tabel member dengan ketentuan tidak ada password dan hak priv mereka diset “-1”, sehingga diperlukan approve oleh admin web terlebih dahulu.
53
3.4.3.2 Proses Login Proses login berfungsi untuk membedakan level pengguna yang sedang aktif pada aplikasi ini, sehingga dapat ditentukan hak aksesnya. Pada proses login dibedakan menjadi 3 proses yaitu login member/pasien, login Rumah Sakit, dan login admin web. a. Proses login member / pasien Pada form login member ini akan memanggil loguser.jsp dan mengirimkan variabel email dan password untuk diproses validasinya. Form login member :
Login Pasien
Kode dari loguser.jsp : <%@ page import="trf.conn.DBaseSet" %> <% String name=request.getParameter("usr"); String pass=request.getParameter("pass"); String query="select m_id from member where m_priv<>-1 and m_email='"+name+"' and m_pass='"+pass+"'"; DBaseSet db = new DBaseSet(1); String[]res=db.getData(query,1); if(res.length==1 && res[0]!=null){ session.setAttribute("user",res[0].split("Xx_xX")[0]); session.setAttribute("priv","user"); %>
Jika parameter inputan member sama dengan email dan pass yang ada pada database member, maka login berhasil dan akan langsung melakukan load pada halaman profile.jsp b. Proses login Rumah Sakit Berikut form dari login RS :
Login Rumah Sakit
Berikut kode logmember.jsp yang akan melakukan pengecekan terhadap parameter input dari RS : <%@ page import="trf.conn.DBaseSet" %> <% String name=request.getParameter("usr"); String pass=request.getParameter("pass"); String query="select * from hospital where h_user='"+name+"' and h_pass='"+pass+"'"; DBaseSet db = new DBaseSet(1); String[]res=db.getData(query,1); if(res.length==1 && res[0]!=null){
c. Proses login admin web Pada form login admin ini akan memanggil logadmin.jsp dan mengirimkan variabel username dan password untuk diproses validasinya.
Admin Page
login here
Berikut logadmin.jsp yang akan memproses parameter inputan dari admin : <%@ page import="trf.conn.DBaseSet" %> <% String name=request.getParameter("usr"); String pass=request.getParameter("pass"); String query="select * from member where m_usr='"+name+"' and m_pass='"+pass+"' and m_priv=1";
Sedangkan pada proses logout, member, Rumah Sakit, maupun admin akan keluar dari halaman utama mereka. Sehingga setelah logout akan mempunyai hak akses setara dengan guest / pengunjung biasa. Berikut adalah kode untuk melakukan logout : <% session.setAttribute("user",null); session.setAttribute("priv",null); %> <jsp:forward page="index.jsp">
3.4.3.3 Proses Admin Post Berita Berikut adalah form admin dalam melakukan post berita, yang akan diteruskan pada file admin_post_submit.jsp sehingga data hasil post dapat tersimpan kedalam database.
Post Berita
Berikut adalah kode dari admin_post_submit.jsp yang akan melakukan insert pada database news : <%@page import="trf.conn.DBaseSet, java.util.Date, java.text.NumberFormat"%> <% String n_head=request.getParameter("head"); String n_msg=request.getParameter("mssg"); // -- dbase update --// DBaseSet db=new DBaseSet(1); Date dt=new Date(); NumberFormat nf=NumberFormat.getInstance(); nf.setMinimumIntegerDigits(2); String date=1900+dt.getYear()+nf.format(dt.getMonth()+1)+nf.format(dt.getDate()); String insert= "insert into news "+ "(n_head, n_msg, n_date)"+ "values" + "('"+n_head+"','"+n_msg+"',"+date+")"; //
Pada proses ini akan digunakan form yang akan melakukan pengiriman parameter pada admin_create_submit.jsp yang akan membuat account RS yang baru. Berikut form admin_create_rs.jsp :
Berikut kode dari admin_create_submit.jsp : <%@page import="trf.conn.DBaseSet"%> <% String h_user=request.getParameter("user"); String h_name=request.getParameter("name"); String h_pass=request.getParameter("pass");
// -- dbase update --// DBaseSet db=new DBaseSet(1); String query="select h_id from hospital where h_user='"+h_user+"'"; String[]res=db.getData(query,1);
Proses ini berguna untuk melakukan approve terhadap permintaan guest yang register. Dan proses ban member berfungsi untuk menghapus keaanggotaan member itu. Dibawah ini adalah proses approve member : Ini adalah form untuk menampilkan seluruh member yang baru melakukan regsiter, dimana memiliki keterangan m_priv = -1.
Setelah itu akan diteruskan pada file adm_act.jsp yang akan melakukan setting m_priv guest itu menjadi apa yang dikirimkan dari parameter form tersebut. Sehingga guest itu resmi menjadi member pada website ini. <% String val=request.getParameter("val"); DBaseSet db=new DBaseSet(1); String[]a=request.getParameterValues("boxes[]"); String zz="("; for(int x=0; x
61
%> <jsp:forward page="admin.jsp">
Dibawah ini adalah form yang akan melakukan proses ban member : Ini adalah form untuk menampilkan seluruh member yang telah bergabung kedalam web, dimana memiliki keterangan m_priv = 0.
3.4.3.6 Proses RS tambah dan Edit Dokter
62
name=\"boxes[]\"
Dibawah ini adalah kode untuk RS tambah data dokter :
Setelah melakukan input pada form diatas, maka akan diproses oleh doc_new_submit.jsp yang akan melakukan insert baru pada database dokter dan schedule’nya <%@page import="trf.conn.DBaseSet"%> <% String h_id=(String)session.getAttribute("user"); String d_no=request.getParameter("d_no"); String d_name=request.getParameter("d_name"); String s_id=request.getParameter("s_id"); String d_address=request.getParameter("d_address"); String d_telp=request.getParameter("d_telp");
Dibawah ini adalah kode untuk melakukan edit pada data dokter dan schedule’nya : <select onchange="$('#form').load('doc_edit_form.jsp?docid='+this.value);"> <% String id=(String)session.getAttribute("user"); DBaseSet db=new DBaseSet(1); String[]res=db.getData("select d_id, d_name from doctor d where d_stat=1 and d.h_id="+id,2); String[]res1=res[0].split("Xx_xX"); String[]res2=res[1].split("Xx_xX"); for(int x=0;x"+res2[x]+""); } %>
64
Jika kita melakukan pemilihan pada salah satu dokter yang ada maka akan didapat form untuk melakukan edit pada data dokter dan schedule jam kerja dokter. Berikut kode dari doc_edit_form.jsp : <% String docid=request.getParameter("docid"); DBaseSet db; db = new DBaseSet(1); String result; String query="select d_name, d_no, d_address, d_telp, d_pic "; String from="doctor d "; String where="d.d_id="+docid; query=query+"from "+from+"where "+where; String[]res; // -- print profile -- // res=db.getData(query,5); String[]res1=res[0].split("Xx_xX"); String[]res2=res[1].split("Xx_xX"); String[]res3=res[2].split("Xx_xX"); String[]res4=res[3].split("Xx_xX"); String[]res5=res[4].split("Xx_xX");
out.println( "
"+ "
Profile
"+ "
"+ "
"+ ""+ "
" + "" + "
" + "
"); %>
Dan berikut kode untuk menampilkan data schedule dokter : <% String[]days={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"}; DBaseSet sch=new DBaseSet(1); String id=request.getParameter("docid"); String queryX="select Mon,Tue,Wed,Thu,Fri,Sat,Sun from schedule where d_id="+id; String[]time=sch.getData(queryX,7); %>
Jadwal Kerja
3.4.3.7 Proses RS pada edit Boking pasien
67
Pada proses ini RS akan melakukan konfirmasi pada pemesanan / boking pasien, sehingga pasien/member tsb resmi terdaftar untuk melakukan perawatan di RS yang bersangkutan. Berikut kode nya :
Kode cp_bookie_detail.jsp : <% DBaseSet db; db = new DBaseSet(1); String result; String query; String from; String where; String[]res; String[]res1,res2,res3,res4,res5,res6,res7,resx; query = "select d_name, h_name, mr_key, mr_date, mr_note, mr_done, mr_id, m_usr "; from = "medical_record mr, doctor d, hospital h, member m "; where = "m.m_id=mr.m_id and d.d_id=mr.d_id and h.h_id=mr.h_id h.h_id="+id+" and (mr_key like '%"+key+"' or mr_key like '"+key+"%')" ; query=query+"from "+from+"where "+where; res=db.getData(query,8); out.println( "
3.4.3.8 Proses Member Reservasi Saat member memilih salah satu RS yang ada, maka akan dipanggil view_content.jsp yangmana didalamnya terdapat form untuk melakukan reservasi online : <script> var sum=0; function setHarga(newValue,lmn){ if(lmn.checked){ sum=newValue+sum document.forms[0].prc.value= sum ; document.forms[0].price.value= sum ; }else{ sum=sum-newValue document.forms[0].prc.value= sum ; document.forms[0].price.value= sum ; } }
"); out.println( " Diagnosa awal penyakit anda : "+ " "+ "" + "" + ""); out.println("
"); } out.println("
"); %>
73
Setelah itu pasien melakukan inputan dan pemilihan pada form ini maka parameter dari form ini akan diteruskan pada file book.jsp. Didalam kode book.jsp ini terdapat pengecekan terhadap tabel medical report pasien, sehingga pada saat reservasi tidak akan terjadi kesamaan pada hari dan jam terapi antara member, karena di dalam file ini terdapat pengecekan terhadap tanggal dan jam kerja dokter. <% String id=(String)session.getAttribute("user"); String h_id=request.getParameter("h_id"); String date=request.getParameter("date"); String time=request.getParameter("hour"); String d_id=request.getParameter("doctor"); String note=request.getParameter("note"); String price=request.getParameter("prc"); String[]detail=request.getParameterValues("detail"); DBaseSet db=new DBaseSet(1); String query="SELECT mr_id FROM medical_record WHERE mr_date="+date.replace("/","")+" and mr_time='"+time+":00' and d_id="+d_id; //out.println(db.getData(query,1)[0].length()+" "); if(db.getData(query,1)[0]!=null){ %> <script type="text/javascript"> alert('Tanggal dan Jam Terapi sudah dipesan. Silahkan memilih yang lain.');
String day=null; switch(dt.getDay()+1){ case 1: day="sun";break; case 2: day="mon";break; case 3: day="tue";break; case 4: day="wed";break; case 5: day="thu";break; case 6: day="fri";break; case 7: day="sat";break; } query="select "+day+" from schedule where d_id="+d_id; String timedb=db.getData(query,1)[0].replace("Xx_xX",""); timedb=timedb.replace('.','_'); /*
if(timedb.compareTo("-1")==0 || !( Integer.parseInt(timedb.split("_")[0])<= Integer.parseInt(time) && Integer.parseInt(timedb.split("_")[1])> Integer.parseInt(time))){ %> <script type="text/javascript"> alert('hari & jam yang anda pilih tidak tersedia\natau telah dipesan');