BAB 3 ANALISIS DAN PERANCANGAN 3.1 …thesis.binus.ac.id/doc/bab3/2011-1-00190-if 3.pdf54 a. Bidang...
Transcript of BAB 3 ANALISIS DAN PERANCANGAN 3.1 …thesis.binus.ac.id/doc/bab3/2011-1-00190-if 3.pdf54 a. Bidang...
49
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis
Berikut ini merupakan analisis pada Klinik Medikarya yang meliputi:
3.1.1 Riwayat Klinik
Klinik Medikarya terletak di Jalan Summagung III Blok PB Unit 1 Kelapa Gading,
Jakarta Utara 14240. Pada awal keberadaannya, Klinik Medikarya didirikan atas
keinginan seorang kerabat dekat dari Dr. Lucy Irliani selaku Direktur Utama yang
menginginkan adanya kesejahteraan kesehatan untuk dirinya serta masyarakat di
lingkungan sekitar. Berdasarkan keinginan Beliau, Dr. Lucy beserta tujuh rekan sesama
profesinya sepakat untuk mendirikan sebuah yayasan independent sebagai pusat
kesehatan masyarakat yang diberi nama Klinik Medikarya. Klinik Medikarya resmi
disahkan oleh Gubernur Kepala Daerah Khusus Ibu Kota Jakarta, Bapak R. Soeprapto
pada tanggal 22 Desember 1984 dengan hak izin No. PBDS.038/2.41.12.09 dan pada
waktu itu hanya memiliki pelayanan medis dokter umum dan dokter jaga.
Seiring dengan berjalannya waktu, kebutuhan masyarakat akan pelayanan medis pun
semakin meningkat sehingga menyebabkan Klinik Medikarya pada akhirnya menambah
bagian pelayanannya, tidak hanya dalam hal Bagian Medis melainkan dalam Bagian
Keperawatan serta subbagian lainnya yang saling terkait dalam melakukan kegiatan
operasional. Penambahan pelayanan medis yang dilakukan adalah seperti penambahan
dokter spesialis dan rumah apotek yang bekerja sama dengan Pedagang Besar Farmasi
(PBF) sebagai pemasok obat.
50
Dalam menjalankan fungsinya sebagai pusat kesehatan masyarakat, diharapkan agar
semua bagian dan sub bagian yang ada di Klinik Medikarya mampu bekerja dengan
maksimal dan dituntut untuk menjadi profesional. Sesuai dengan fungsinya, maka Klinik
Medikarya berada di bawah Departemen Kesehatan Republik Indonesia yang fungsinya
diatur dalam peraturan perundang-undangan yang berlaku.
3.1.1.a Visi
Memiliki penanganan medis yang berkualitas dan profesional, serta mampu bersaing
secara global.
3.1.1.b Misi
1. Memberikan pelayanan kesehatan kepada masyarakat sekitar dengan pelayanan yang
profesional.
2. Meningkatkan kualitas pelayanan kesehatan yang bermutu dengan ditunjang sarana
dan prasarana yang memadai dan sumber daya manusia yang berkualitas.
3. Turut serta dalam meningkatkan taraf kesehatan masyarakat sekitar dengan melayani
sepenuh hati.
3.1.1.c Tujuan
1. Mengembangkan dan memberikan pelayanan dalam bidang kesehatan masyarakat
sekitar.
2. Mendorong masyarakat sekitar untuk meningkatkan derajat kesehatan mereka.
51
3.1.2 Struktur Organisasi
Stuktur organisasi Klinik Medikarya disusun berdasarkan tugas dan tanggung jawab tiap
bagian dan sub bagian yang ada agar dapat memudahkan pencarian data yang diperlukan
dan transparansi laporan maupun informasi sehingga dapat dipertanggungjawabkan dan
akurat. Semuanya difokuskan untuk produktivitas dan kesejahteraan Klinik Medikarya,
serta kepuasaan pengguna jasa.
Gambar 3.1 Struktur Organisasi
52
3.1.3 Pembagian Tugas dan Tanggung Jawab
Berdasarkan struktur organisasi di atas, setiap bagian dan subbagian telah memiliki
tugas dan tanggung jawabnya masing-masing dengan rincian sebagai berikut:
1. Direktur Utama
Memimpin, menyusun kebijaksanaan, membina, mengoordinasi, dan mengawasi
pelaksanaan keseluruhan tugas-tugas pada tiap bagian dan sub bagian yang berada di
Klinik Medikarya.
2. Rumah Apotek
Sarana farmasi yang melaksanakan peracikan, pengubahan bentuk, dan pencampuran
dan penyerahan obat atau bahan obat dengan dibantu tenaga Bagian
Apotek/Apoteker.
3. Wakil Direktur Umum
Membantu tugas direktur utama dalam hal mengoordinasi kegiatan urusan umum
dan perlengkapan kebutuhan klinik yang terbagi menjadi beberapa bagian-bagian
sebagai berikut:
a. Bagian Administrasi / Tata Usaha
Memberikan pelayanan admistrasi kepada seluruh unit di lingkungan klinik,
menghimpun data karyawan, dokter dan pasien, melakukan audit dan
ketatausahaan.
b. Bagian Perencanaan dan Evaluasi
Menyusun rencana anggaran pendapatan yang diperoleh pasien, menyusun
rencana anggaran belanja sesuai kebutuhan klinik, menyusun program kegiatan
53
klinik, dan mengevaluasi keseluruhan anggaran yang sudah berjalan dari
perencanaan.
c. Bagian Kepegawaian
Mempunyai tugas melaksanakan urusan kepegawaian, seperti mengoordinasi dan
melakukan pencatatan jadwal praktek dokter, jadwal kerja karyawan, absensi
dokter dan karyawan.
4. Wakil Direktur Keuangan
Membantu tugas direktur utama dalam hal mengoordinasi kegiatan urusan anggaran
serta laporan keuangan klinik yang terbagi menjadi beberapa bagian-bagian sebagai
berikut:
a. Bagian Anggaran dan Belanja
Melaksanakan penyusunan rencana pelaksanaan anggaran pendapatan dan
belanja, revisi rencana anggaran dan belanja, pemantauan rencana anggaran dan
belanja, penilaian dan penyusunan laporan pelaksaan anggaran dan belanja.
b. Bagian Akutansi
Melakukan audit meliputi pembukuan keuangan dan menilai pendapatan dan
belanja dari klinik.
c. Bagian Kasir
Menangani pendapatan dari hasil pembayaran pasien dan bertanggung jawab atas
pencatatan pendapatan ke wakil direktur keuangan.
5. Wakil Direktur Pelayanan
Membantu tugas direktur utama dalam hal pelaksanaan, mengoordinasikan dan
mengawasi pelaksanaan tugas pada bidang-bidang berikut:
54
a. Bidang Medis
Pelayanan medis yang diberikan dalam bentuk jasa, berikut adalah rincian
Bidang Medis pada Klinik Medikarya:
1. Dokter Umum
Memberikan pelayanan jasa medis kepada pasien tidak dibatasi golongan
usia, jenis kelamin, sistem organ, jenis penyakit, dan status sosial.
2. Dokter Jaga
Memberikan pelayanan jasa sebagai pertolongan pertama apabila ada tanda-
tanda kegawatan medis pada pasien, serta melakukan tindakan pencatatan
sebelum ada penanganan lebih lanjut oleh dokter ahli.
3. Dokter Gigi
Mempunyai tugas untuk mengidentifikasi, merencanakan, dan memecahkan
masalah serta mengevaluasi program kesehatan gigi dan mulut, serta
bertanggung jawab dalam pencatatan dan pelaporan pelaksanaan program
dan pelayanan kesehatan gigi.
4. Dokter Ahli
Mempunyai tugas untuk mengobati masyarakat sesuai dengan keahlian yang
dimiliki oleh dokter seperti dokter spesialis THT, dokter spesialis gizi, dokter
spesialis mata, fisioterapi, dan konsultasi psikologi.
b. Bidang Keperawatan
Perawat mempunyai tugas pelayanan tindakan medis yang hanya dapat dilakukan
berdasarkan permintaan tertulis dari dokter.
55
3.1.4 Gambaran Umum Sistem yang Sedang Berjalan
Prosedur sistem yang sedang berjalan pada Klinik Medikarya masih diakses secara
manual dan sistem basis datanya belum terintegrasi satu sama lain karena Klinik
Medikarya masih menggunakan Microsoft Office Excel 2003 untuk memasukkan data
dan juga dalam penyimpanan data administrasinya masih disimpan di rak pembukuan.
Kegiatan operasional terbentuk karena adanya proses bisnis dalam suatu organisasi itu
sendiri seperti yang terjadi pada Klinik Medikarya, dimana proses bisnis tersebut
menjelaskan prosedur sistem yang sedang berjalan.
3.1.4.a Proses Bisnis dan Diagram Aliran Dokumen
Kegiatan operasional terbentuk karena adanya proses bisnis dalam suatu organisasi itu
sendiri seperti yang terjadi pada Klinik Medikarya, dimana proses bisnis tersebut
menjelaskan sistem operasional yang sedang berjalan dan digambarkan melalui sebuah
Diagram Aliran Dokumen sebagai berikut:
1. Prosedur Pendaftaran Pasien
Pasien yang akan berobat pada Klinik Medikarya harus mendaftar terlebih dahulu ke
Bagian Adminisrasi/Tata Usaha. Bagian Administrasi/Tata Usaha menanyakan kepada
pasien, Bagian Medis apa yang dibutuhkan pasien.
Jika pasien belum terdaftar, Bagian Administrasi/Tata Usaha akan memberikan form
pendaftaran yang harus diisi pasien. Jika pasien tidak bisa mengisi form pendaftaran
tersebut, maka form pendaftaran dapat diisi oleh pihak keluarga atau siapa saja yang
mengantar pasien ke klinik. Setelah diisi, form selanjutnya diberikan pada Bagian
Administrasi/Tata Usaha. Bagian Administrasi/Tata Usaha memeriksa kelengkapan isi
56
form pendaftaran. Setelah semua telah diisi dengan lengkap, Bagian Administrasi/Tata
Usaha membuat kartu berobat dan memberikan kartu berobat kepada pasien. Lalu pasien
menunggu giliran untuk berobat setelah mendapat kartu berobat pasien, kemudian
Bagian Adminstrasi/Tata Usaha membuat rekam medis.
Jika pasien sudah terdaftar, Bagian Administrasi/Tata Usaha akan menanyakan kepada
pasien membawa kartu berobat atau tidak. Apabila pasien membawa kartu berobat,
maka pasien memberikan kartu berobat pada Bagian Administrasi/Tata Usaha untuk
dicarikan rekam medis pasien berdasarkan abjad nama pasien. Jika rekam medis sudah
ditemukan, maka Bagian Administrasi/Tata Usaha akan mencocokkan nomor induk
pasien (NIP) yang ada di rekam medis dengan kartu berobat pasien. Namun apabila
pasien tidak membawa kartu berobat, maka Bagian Administrasi/Tata Usaha akan
menanyakan nama dan alamat pasien lalu mencari rekam medis berdasarkan identitas
pasien pada rak buku penyimpanan rekam medis.
Bagian Administrasi/Tata Usaha mencatat data pasien dan data dokter yang dituju pada
buku daftar hadir pasien. Kemudian rekam medis dibawa oleh Bagian Administrasi/Tata
Usaha untuk diletakkan di meja dokter yang dituju sementara pasien menunggu giliran
untuk berobat.
2. Prosedur Pengobatan Pasien
Pasien yang sudah mendapatkan giliran untuk berobat memasuki ruang pemeriksaan.
Dokter akan menanyakan keluhan yang dirasakan oleh pasien sebelum dilakukan
pemeriksaan fisik terhadap pasien. Setelah melakukan pemeriksaan fisik, dokter
57
menuliskan hasil pemeriksaan fisik pasien pada rekam medis pasien dan menuliskan
resep obat sesuai dengan keluhan pasien dan hasil analisa dokter.
Setelah itu, dokter memberikan resep obat tersebut kepada pasien dan mencatat keluhan,
hasil pemeriksaan, tindakan, dan resep obat pasien di rekam medis pasien dan
memberikan rekam medis pasien tersebut kepada Bagian Keperawatan untuk diserahkan
kepada Bagian Kasir agar pasien dapat mengetahui jumlah yang harus dibayar.
3. Prosedur Penjualan Obat
Pasien yang hendak menebus obat membawa resep obat dari dokter ke Bagian
Apotek/Apoteker. Kemudian Bagian Apotek/Apoteker yang bertugas akan memeriksa
resep tersebut dengan kelengkapan obat yang tersedia di Rumah Apotek Klinik
Medikarya. Bila obat tidak tersedia di Rumah Apotek maka Bagian Apotek/Apoteker
akan mengembalikan resep dengan menganjurkan pasien untuk menebus obat di apotek
lain. Ketidaktersediaan obat akan dicatat Bagian Apotek/Apoteker pada buku catatan
persediaan obat, dimana buku tersebut akan diberikan kepada Bagian Anggaran dan
Belanja yang akan menentukan berapa besar anggaran yang diperlukan untuk membeli
obat yang habis.
Bila obat tersedia seluruhnya, maka Bagian Apotek/Apoteker akan memberikan obat
yang sesuai dengan resep obat lalu mencatat obat-obat yang ditebus pasien dalam buku
catatan persediaan Rumah Apotek. Kemudian Bagian Apotek/Apoteker memberikan
resep obat beserta obat ke Bagian Kasir. Lalu Bagian Kasir memanggil pasien untuk
membayar obat yang ditebus dan memberikan struk pembayaran kepada pasien dan
58
menyerahkan copy struk pembayaran tersebut kepada Bagian Akutansi untuk dilakukan
pencatatan dalam bentuk laporan yang diserahkan kepada Wakil Direktur Keuangan.
4. Prosedur Pembayaran Pasien
Bagian Kasir menerima rekam medis pasien dari Bagian Keperawatan untuk dihitung
total yang harus dibayar pasien. Setelah dihitung total biaya tersebut, rekam medis
pasien dikembalikan ke Bagian Administrasi/Tata Usaha. Kemudian pasien dipanggil
oleh Bagian Kasir untuk melunasi pembayaran. Setelah pasien melunasi pembayaran ke
Bagian Kasir, pasien diberikan obat beserta struk pembayaran sebagai tanda terima
pelunasan. Kemudian Bagian Kasir menyerahkan copy struk pembayaran tersebut ke
Bagian Akutansi untuk dicatat sebagai pemasukan dalam buku catatan pemasukan
keuangan untuk dijadikan laporan yang harus diserahkan nantinya kepada Wakil
Direktur Keuangan.
5. Prosedur Pembelian Obat
Bagian Apotek/Apoteker membuat daftar persediaan obat yang telah habis dan akan
dibeli. Kemudian daftar tersebut diberikan ke Bagian Anggaran dan Belanja untuk
diolah agar dapat diketahui jumlah anggaran yang perlu dikeluarkan untuk membeli
obat. Setelah mengetahui anggaran yang perlu dikeluarkan, maka Bagian Anggaran dan
Belanja akan membelikan semua kebutuhan obat yang dibutuhkan klinik ke Pedagang
Besar Farmasi (PBF) sebagai pemasok obat. Kemudian PBF membuatkan sebuah Faktur
Pembelian dalam bentuk dua slip, satu slip asli pembayaran untuk PBF dan satu slip
copy Faktur Pembelian yang diberikan pada Bagian Anggaran dan Belanja. Kemudian,
Pemasok menerima pembayaran atas Faktur Pembelian tersebut dari Bagian Anggaran
dan Belanja, dan pemasok memberikan tanda lunas kepada Bagian Anggaran dan
59
Belanja. Kemudian Bagian Anggaran dan Belanja menyerahkan slip copy faktur
pembelian dan tanda lunas tersebut kepada Bagian Akutansi untuk dicatat dan disimpan
sebagai pengeluaran anggaran dalam bentuk pembukuan keuangan untuk dijadikan
laporan keuangan Klinik Medikarya yang akan diberikan kepada Wakil Direktur
Keuangan. Lalu, Bagian Apotek/Apoteker menerima obat dari pemasok yang telah
dibayar oleh Bagian Anggaran dan Belanja.
6. Retur Pembelian Obat
Bagian Apotek/Apoteker mengecek dan mencatat seluruh obat yang rusak untuk
dikembalikan kepada pemasok. Kemudian Bagian Apotek/Apoteker membuat daftar
obat yang akan dikembalikan dan meminta faktur pembelian dari Bagian Akutansi
sebagai bukti pembelian. Setelah itu, Bagian Akutansi memberikan berkas yang
diperlukan kepada Bagian Apotek/Apoteker. Bagian Apotek/Apoteker mengembalikan
obat kepada pemasok beserta faktur pembelian sebagai tanda pelunasan. Lalu pemasok
mencatat dan mengganti obat kepada Bagian Apotek/Apoteker. Kemudian Bagian
Apotek/Apoteker mencatat obat yang telah ditukar ke buku catatan persediaan obat.
7. Penjadwalan Praktek Dokter
Bagian Kepegawaian klinik membuat jadwal untuk para dokter berdasarkan shift kerja
dalam satu minggu. Kemudian Bagian Kepegawaian menyerahkan rancangan jadwal
praktek kepada dokter. Bila jadwal tersebut disetujui oleh para dokter, maka jadwal itu
yang akan dipergunakan klinik. Tetapi bila jadwal tersebut tidak disetujui oleh dokter,
maka Bagian Kepegawaian dengan para dokter membuat kesepakatan jadwal. J ika ada
dokter berhalangan hadir, maka dokter harus menghubungi Bagian Administrasi/Tata
Usaha untuk dibuatkan laporan di buku catatan ketidakhadiran bahwa dokter yang
60
bersangkutan berhalangan hadir dan mempertanyakan ketidakhadiran dokter tersebut.
Kemudian Bagian Kepegawaian bertugas mencari pengganti dokter dengan dokter
pengganti dalam shift dan jam kerja yang sama.
8. Penjadwalan Karyawan
Bagian Kepegawaian klinik membuat jadwal karyawan berdasarkan shift kerja dalam
satu minggu. Kemudian Bagian Kepegawaian menyerahkan perancangan jadwal kerja
kepada karyawan. Jika ada karyawan yang berhalangan hadir, maka karyawan tersebut
harus menghubungi Bagian Administrasi/Tata Usaha untuk dibuatkan laporan di buku
catatan ketidakhadiran bahwa karyawan yang bersangkutan berhalangan hadir dan
mempertanyakan ketidakhadiran karyawan tersebut.
9. Pembuatan Laporan
Setiap bagian dan subbagian diwajibkan untuk membuat laporan kepada Direktur Utama
secara berkala, baik per bulan maupun per tahun melalui wakil direktur bagian masing-
masing. Laporan yang dibuat berupa laporan obat, laporan keuangan, laporan pasien,
laporan jadwal praktek dokter, laporan absensi dokter, laporan jadwal kerja karyawan,
dan laporan absensi karyawan.
61
10. Diagram Konteks
Berikut ini merupakan diagram konteks dari prosedur sistem yang sedang berjalan pada
Klinik Medikarya:
Gambar 3.2 Diagram Konteks
62
11. Diagram Nol
Berikut merupakan diagram nol dari prosedur sistem yang sedang berjalan pada Klinik
Medikarya:
Gambar 3.3 Diagram Nol
63
12. Diagram Aliran Dokumen Prosedur Pendaftaran Pasien
Meliputi Proses Pendaftaran Pasien Pelayanan Bagian Medis
Gambar 3.4 Diagram Aliran Dokumen Pendaftaran Pasien
64
13. Diagram Aliran Dokumen Pengobatan Pasien
Meliputi Proses Pencatatan Rekam Medis dan Tindakan Dokter
Gambar 3.5 Diagram Aliran Dokumen Proses Pengobatan Pasien
65
14. Diagram Aliran Dokumen Penjualan Obat
Meliputi Proses Pencatatan dan Penjualan Obat
Gambar 3.6 Diagram Aliran Dokumen Penjualan Obat
66
15. Diagram Aliran Dokumen Prosedur Pembayaran Pasien
Meliputi Proses Pembayaran Pasien
Gambar 3.7 Diagram Aliran Dokumen Pembayaran Pasien
67
16. Diagram Aliran Dokumen Prosedur Pembelian Obat
Meliputi Proses Pembelian Obat ke Pemasok
Gambar 3.8 Diagram Aliran Dokumen Pembelian Obat
68
17. Diagram Aliran Dokumen Retur Pembelian Obat
Meliputi Proses Retur Pembelian Obat
Gambar 3.9 Diagram Aliran Dokumen Retur Pembelian Obat
69
18. Diagram Aliran Dokumen Penjadwalan Dokter
Meliputi Proses Penjadwalan Dokter
Gambar 3.10 Diagram Aliran Dokumen Penjadwalan Dokter
70
19. Diagram Aliran Dokumen Penjadwalan Karyawan
Meliputi Proses Penjadwalan Karyawan
Gambar 3.11 Diagram Aliran Dokumen Penjadwalan Karyawan
71
20. Diagram Aliran Dokumen Pembuatan Laporan
Meliputi Proses Pembuatan Laporan
Gambar 3.12 Diagram Aliran Dokumen Pembuatan Laporan
72
3.1.4.b Kebutuhan Pengguna
Berikut ini merupakan kebutuhan pengguna pada Klinik Medikarya, sebagai berikut:
1. Kebutuhan Informasi
Data dan informasi yang dibutuhkan oleh Klinik Medikarya, yaitu:
a. Pasien
Pasien yang terdaftar pada Klinik Medikarya harus memiliki kelengkapan identitas
seperti kode yang unik, nama, alamat, dan lain-lain. Setelah identitas yang dimiliki
lengkap, pasien dapat mendaftar pada beberapa pelayanan medis yang terdapat pada
Klinik Medikarya seperti dokter umum, dokter ahli, dan dokter gizi. Jika pasien
belum terdaftar, maka Bagian Administrasi/Tata Usaha akan mendata identitas dari
pasien tersebut.
b. Dokter
Dokter pada Klinik Medikarya memiliki kode yang unik, nama, alamat, dan lain-
lain. Dokter yang terdapat pada Klinik Medikarya dispesialisasikan berdasarkan
Bagian Medis. Urutan pemeriksaan sudah disesuaikan dengan jadwal dan jam
praktek setiap dokter oleh Bagian Kepegawaian berdasarkan kesepakatan yang telah
dibuat sebelumnya.
c. Karyawan
Karyawan yang terdapat pada Klinik Medikarya harus memiliki kode yang unik,
nama, alamat, dan lain-lain. Karyawan terdiri beberapa bagian dan sub bagian yang
memiliki tugas dan wewenangnya masing-masing.
73
d. Obat
Obat yang terdapat di rumah apotek Klinik Medikarya memiliki kode yang unik
pada setiap item, nama, dan lain-lain. Obat yang terdapat di klinik didapatkan
dengan cara pembelian pada Pedagang Besar Farmasi (PBF) selaku pemasok obat
yang pertama disetujui oleh Bagian Anggaran dan Belanja serta dilakukan
pencatatan oleh Bagian Akutansi. Apabila ada kerusakan pada obat tersebut akan
diretur pada pemasok.
e. Resep
Setiap resep di klinik memiliki kode yang unik, tanggal, dan lain-lain. Resep hanya
dikeluarkan dokter untuk pasien yang dapat ditebus di rumah apotek dan melunasi
pembayaran pada Bagian Administrasi/Tata Usaha. Apabila tidak ada ketersediaan
obat yang terdapat pada daftar resep, maka pasien dapat menebusnya di apotek lain.
f. Pasien Berobat
Setiap pasien yang akan berobat didata oleh Bagian Administrasi/Tata Usaha baik itu
data identitas pasien sewaktu melakukan pendaftaran dan tindakan medis yang
pernah dilakukan pasien di klinik ke dalam data pasien berobat, data pasien berobat
masing-masing memiliki kode yang unik.
g. Rekam Medis
Setiap pasien memilik satu rekam medis dan setiap rekam medis tersebut memiliki
kode unik, tanggal rekam, hasil periksa, penyakit, dan lain-lain. Data pada rekam
medis pasien digunakan sebagai catatan kesehatan pasien setelah malakukan
pelayanan medis pada klinik.
74
h. Pemasok
Pemasok adalah selaku pihak yang mensuplai obat ke klinik yang memiliki kode
unik, nama, alamat, dan lain-lain.
i. Pembelian Obat
Setiap pembelian obat yang terjadi di klinik memiliki kode unik, nama obat, tanggal
pembelian, harga beli obat, jumlah pembelian, dan lain-lain. Pembelian tersebut
berfungsi untuk mengetahui dan merekam transaksi pembelian obat yang terjadi di
klinik.
j. Penjualan Obat
Setiap penjualan obat yang terjadi di klinik memiliki kode yang unik, nama obat,
tanggal penjualan, harga jual obat, jumlah penjualan, dan lain-lain. Penjualan obat
berfungsi untuk mengetahui dan merekam transaksi penjualan obat yang terjadi di
klinik.
k. Retur Pembelian Obat
Retur pembelian obat yang terjadi di klinik dikarenakan ada keterangan obat dalam
keadaan rusak pada saat transaksi pembelian obat. Masing-masing memiliki kode
unik, nama obat, tanggal retur, jumlah retur, dan lain-lain. Retur berfungsi untuk
mengetahui dan merekam transaksi retur pembelian obat yang terjadi di klinik.
l. Pembayaran Pasien
Pembayaran pasien terjadi di klinik sebagai memiliki kode unik, tanggal
pembayaran, total biaya dari baik dari segi pelayanan medis yang dilakukan ataupun
75
transaksi biaya lainnya. Pembayaran pasien berfungsi untuk mengetahui dan
merekam transaksi pembayaran yang dilakukan oleh pasien.
m. Jadwal Praktek Dokter
Setiap dokter di klinik memiliki jadwal prakteknya masing-masing, berdasarkan
kode unik. Fungsi jadwal praktek dokter tersebut untuk mengetahui hari dan jam
praktek dokter.
n. Jadwal Kerja Karyawan
Setiap karyawan di klinik memiliki jadwal kerja masing-masing, berdasarkan kode
unik. Fungsi jadwal kerja karyawan tersebut untuk mengetahui hari dan jam kerja
karyawan.
o. Absensi Dokter
Setiap dokter klinik memiliki absensi untuk melihat daftar kehadiran dokter, absensi
dokter dihitung berdasarkan jadwal praktek dokter dan memiliki kode unik.
p. Absensi Karyawan
Setiap karyawan klinik memiliki absensi untuk melihat daftar kehadiran karyawan,
absensi karyawan dihitung berdasarkan jadwal kerja karyawan dan memiliki kode
unik.
q. Laporan
Laporan adalah daftar kumpulan dari data-data transaksi maupun data master yang
berfungsi untuk menganalisis kebutuhan informasi untuk mendukung kegiatan
operasional klinik.
76
2. Kebutuhan Keamanan Data
Kemanan data merupakan hal yang sangat penting keberadaannya, terlebih diharapkan
agar nantinya dapat terbentuk sebuah sistem keamanan data yang memadai baik dari dari
segi pencegahan kehilangan data dan hak kewenangan akses yang bersifat autentifikasi
dimana hanya pihak-pihak tertentu yang dapat mengakses data tersebut. Hal tersebut
dikarenakan data pada Klinik Medikarya masih tersimpan dalam rak-rak pembukuan
dimana siapa saja dapat mengaksesnya. Dengan terbentuknya suatu sistem keamanan
data tersebut menjadikan data yang terdapat pada Klinik Medikarya terjaga
kerahasiaannya.
3. Kebutuhan Integrasi Data
Klinik Medikarya membutuhkan sebuah sistem basis data manajemen rumah sakit
berbasiskan aplikasi agar data yang ada dapat terintegrasi dengan baik, sehingga
mempermudah dalam mendapatkan data dan informasi yang dibutuhkan. Integrasi data
juga merupakan hal yang penting untuk menghasilkan dokumen-dokumen yang
dibutuhkan klinik menjadi lebih efektif dan akurat, seperti laporan obat, laporan
keuangan, laporan pasien, laporan jadwal praktek dokter, laporan absensi dokter, laporan
jadwal kerja karyawan dan laporan absensi karyawan.
4. Kebutuhan Kecepatan Akses Data
Semua bagian pada Klinik Medikarya memerlukan informasi dan data yang dapat
diakses secara cepat, efektif, dan efisien. Bagian-bagian tersebut juga diharapkan untuk
membuat suatu arsip data dalam bentuk yang ringkas dan mudah dicari sehingga tidak
perlu bergelut dengan lemari-lemari penyimpanan berisi tumpukan kertas dan
memudahkan pencarian data-data yang diperlukan.
77
5. Kebutuhan Transaksi
Klinik membutuhkan suatu sistem basis data manajemen berbentuk aplikasi yang dapat
mendukung proses transaksi untuk memasukkan, mengubah, memperoleh, menghapus
data dan informasi dengan cepat dan mudah, dan menganalisis kebutuhan informasi
untuk mendukung kegiatan operasional klinik.
3.1.5 Permasalahan yang Dihadapi
Adapun permasalahan yang dihadapi oleh Klinik Medikarya saat ini, antara lain sebagai
berikut:
1. Penyimpanan data pasien, dokter, karyawan, obat pada rumah apotek, transaksi serta
kartu berobat pasien yang berisi rekam medis dari dokter ataupun Bagian
Administrasi/Tata Usaha masih menggunakan rak-rak pembukuan sehingga dalam
pencarian kartu berobat pasien membutuhkan waktu yang cukup lama.
2. Pengolahan data tiap bagian belum terintegrasi sehingga memperlambat proses
penyusunan laporan.
3. Belum terdapatnya sistem keamanan data yang memadai dikarenakan penyimpanan
data masih tersimpan dalam rak-rak pembukuan sehingga menyebabkan hilangnya
data, kerusakan data, dan tidak terjaminnya kerahasiaan hak akses.
3.1.6 Usulan Pemecahan Masalah
Berdasarkan permasalahan yang ada, pemecahan masalah yang dapat dilakukan saat ini
adalah dengan membangun rancangan sistem basis data di Klinik Medikarya. Rancangan
sistem basis data yang diajukan harus memenuhi kebutuhan manajemen Klinik
Medikarya sebagai berikut:
78
1. Proses pencarian data pasien, dokter, karyawan, obat pada rumah apotek, transaksi
serta kartu berobat pasien tidak akan membutuhkan waktu yang lama dengan
dibuatnya sebuah sistem basis data manajemen rumah sakit yang berbasiskan
aplikasi.
2. Dibuat sistem komputerisasi yang dapat mengelola data transaksi, membuat laporan
keuangan secara terperinci seperti laporan penjualan obat, laporan pembelian obat,
laporan penggajian dokter dan karyawan, laporan pembayaran pasien, dan kegiatan
operasional di klinik sehingga waktu pemrosesan akan berjalan cepat.
3. Dibuat sistem basis data dan aplikasi dengan tingkat keamanan yang lebih baik
sehingga mengurangi kerusakan serta kehilangan data dan menjamin kerahasiaan
data dengan adanya hak akses bagi pengguna.
3.2 Perancangan
Dalam perancangan basis data terdapat tiga fase utama, yaitu: Perancangan Basis Data
Konseptual, Perancangan Basis Data Logikal, dan Perancangan Basis Data Fisikal.
3.2.1 Perancangan Basis Data Konseptual
Berikut ini merupakan langkah-langkah dalam perancangan basis data konseptual, yaitu
sebagai berikut:
3.2.1.a Membangun Model Data Konseptual
Berikut ini merupakan langkah-langkah membangun model data konseptual, yaitu
sebagai berikut:
79
1. Mengidentifikasi Tipe-Tipe Entitas
Tabel 3.1 Entitas Kebutuhan Informasi
Nama Entitas Deskripsi Alias Kejadian
MsLogin Berisi informasi mengenai
IdLogin dan Password
- Setiap pengguna
memiliki IdLogin dan
Password
MsPasien Berisi informasi mengenai
pasien yang berobat
- Pasien yang berobat
pada dokter
MsDokter Berisi informasi mengenai
dokter yang praktek
- Dokter yang praktek
MsSpesialis Berisi informasi mengenai
spesialisasi dokter
- Spesialisasi dokter
MsKaryawan Berisi informasi mengenai
karyawan yang bekerja
- Karyawan yang bekerja
MsJabatan Berisi informasi mengenai
jabatan
- Jabatan dokter dan
karyawan
MsObat Berisi informasi mengenai
obat di rumah apotek
- Obat di rumah apotek
MsJenisObat Berisi informasi mengenai
jenis obat di rumah apotek
- Jenis obat di rumah
apotek
MsPemasok Berisi informasi mengenai
pemasok obat
- Pemasok obat
Resep Berisi informasi mengenai - Resep obat pasien yang
80
resep obat pasien yang
diberikan dokter
diberikan dokter
RekamMedis Berisi informasi mengenai
rekam medis pasien
- Rekam medis pasien
PasienBerobat Berisi informasi mengenai
daftar pasien yang berobat
- Daftar pasien yang
berobat
Pembelian Berisi informasi mengenai
transaksi pembelian obat
- Setiap transaksi
pembelian obat
Penjualan Berisi informasi mengenai
transaksi penjualan obat
- Setiap transaksi
penjualan obat
PembayaranPasien Berisi informasi mengenai
transaksi pembayaran pasien
- Setiap pasien,
melakukan pembayaran
setelah selesai berobat
FakturBeli Berisi mengenai faktur
pembelian obat
- Setiap transaksi
pembelian obat, klinik
mendapat faktur
pembelian obat
ReturPembelian Berisi informasi mengenai
retur pembelian obat kepada
pemasok
- Transaksi ketika
melakukan retur
pembelian obat
81
MsJdwlDokter Berisi informasi mengenai
jadwal praktek dokter
- Setiap dokter memiliki
jadwal praktek yang
berbeda
MsJdwlKaryawan Berisi informasi mengenai
jadwal kerja karyawan
- Setiap karyawan
memiliki jadwal kerja
yang berbeda
AbsensiDokter Berisi informasi mengenai
absensi dokter
- Absensi dokter
AbsensiKaryawan Berisi informasi mengenai
absensi karyawan
- Absensi karyawan
2. Mengidentifikasi Tipe-Tipe Relasi
Tabel 3.2 Kamus Data Relasi
Nama Entitas Multiplicity Hubungan Multiplicity Nama Entitas
MsPasien 1..* Memiliki 0..* Resep
1..1 Mempunyai 1..* RekamMedis
1..1 Melakukan 1..* PasienBerobat
1..1 Melunasi 1..* PembayaranPasien
MsDokter 1..1 Memasukkan 1..1 MsLogin
1..* Mempunyai 1..1 MsSpesialis
1..* Menerima 1..1 MsJabatan
1..1 Menulis 0..* Resep
1..1 Dimiliki 1..* RekamMedis
82
1..1 Menangani 1..* PasienBerobat
1..1 Mendapatkan 1..* PembayaranPasien
1..* Diberikan 1..1 MsJdwlDokter
1..1 Memiliki 1..* AbsensiDokter
MsKaryawan 1..1 Melakukan 1..1 MsLogin
1..* Menerima 1..1 MsJabatan
1..1 Mencatat 1..* RekamMedis
1..1 Mengelola 1..* Pembelian
1..1 Menangani 1..* Penjualan
1..1 Mendapat 1..* FakturBeli
1..1 Membuat 1..* PembayaranPasien
1..1 Memiliki 1..* AbsensiKaryawan
1..* Memberikan 1..1 MsJdwlKaryawan
MsObat 1..* Memiliki 1..1 MsJenisObat
1..* Dicatat 1..* RekamMedis
1..* Ditebus 0..* Resep
1..* Dibeli 0..* Pembelian
1..* Dijual 0..* Penjualan
1..1 Diberikan 1..* PembayaranPasien
1..* Mendapat 1..* FakturBeli
1..* Diretur 0..* ReturPembelian
MsPemasok 1..1 Memberikan 1..* FakturBeli
1..1 Menangani 1..* ReturPembelian
83
Resep 1..1 Dicatat 0..1 RekamMedis
1..* Melakukan 1..* Penjualan
Pembelian 1..1 Memiliki 1..1 FakturBeli
1..1 Melakukan 0..* ReturPembelian
Penjualan 1..1 Menjual 1..* MsObat
PembayaranPasien 1..1 Menebus 1..1 Resep
1..1 Dilakukan 1..1 PasienBerobat
84
Gambar 3.13 ER Diagram
85
3. Mengidentifikasi dan Menghubungkan Atribut dengan Tipe-Tipe Entitas,
Domain Atribut, Primary Key, dan Candidate Key
Berikut ini merupakan nama-nama entitas yang ada pada Klinik Medikarya, yaitu
sebagai berikut:
Tabel 3.3 Kamus Data Atribut
1. Nama Entitas : MsLogin
Atribut Deskripsi Data Types
& Length Nulls Multivalue
IdLogin Berisi IdLogin yang
digunakan pengguna
Char (8) No No
Password Berisi mengenai password
yang digunakan pengguna
Varchar (10) No No
Status Status pengguna Varchar (15) No No
2. Nama Entitas: MsPasien
Atribut Deskripsi Data Types
& Length Nulls Multivalue
NIP Secara unik mengidentifikasi
pasien
Char (10) No No
Nama Nama pasien Varchar (30) No No
NoIdentitas Nomor identitas pasien Varchar (20) Yes No
TmptLhr Tempat lahir pasien Varchar (20) No No
TglLhr Tanggal lahir pasien Datetime No No
JnsKlmn Jenis kelamin pasien Char (1) No No
Agama Agama pasien Varchar (10) No No
GolDarah Golongan darah pasien Varchar (2) No No
StatKawin Status perkawinan pasien Varchar (15) No No
Alamat Alamat pasien Varchar (50) No No
86
KodePos Kode pos pasien Char (5) No No
Kota Kota pasien Varchar (20) No No
TelpPasien Telepon pasien Varchar (15) No Yes
Pekerjaan Pekerjaan pasien Varchar (15) No No
3. Nama Entitas: MsDokter
Atribut Deskripsi Data Types
& Length
Nulls Multivalue
KdDokter Secara unik mengidentifikasi
dokter
Char (5) No No
NamaDok Nama dokter Varchar (30) No No
TmptLhrDok Tempat lahir dokter Varchar (20) No No
TglLhrDok Tanggal lahir dokter Datetime No No
JnsKlmnDok Jenis kelamin dokter Char (1) No No
AgamaDok Agama dokter Varchar (10) No No
StatKawinDok Status perkawinan dokter Varchar (15) No No
AlamatDok Alamat dokter Varchar (50) No No
KodePos Kode pos dokter Char (5) No No
Kota Kota dokter Varchar (20) No No
TelpDok Telepon dokter Varchar (15) No Yes
BiayaDok Biaya dokter Numeric No No
GajiDok Gaji dokter Numeric No No
4. Nama Entitas: MsSpesialis
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdSpesialis Secara unik mengidentifikasi
spesialis
Char (5) No No
Spesialis Spesialisasi dokter Varchar (20) No No
87
5. Nama Entitas: MsKaryawan
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdKary Secara unik mengidentifikasi
karyawan
Char (5) No No
NamaKary Nama karyawan Varchar (30) No No
TmptLhrKary Tempat lahir karyawan Varchar (20) No No
TglLhrKary Tanggal lahir karyawan Datetime No No
JnsKlmnKary Jenis kelamin karyawan Char (1) No No
AgamaKary Agama karyawan Varchar (10) No No
StatKawinKary Status perkawinan karyawan Varchar (15) No No
StatPendiKary Status pendidikan karyawan Varchar (10) No No
AlamatKary Alamat karyawan Varchar (50) No No
KodePos Kode pos karyawan Char (5) No No
Kota Kota karyawan Varchar (20) No No
TelpKary Telepon karyawan Varchar (15) No Yes
GajiKary Gaji karyawan Numeric No No
6. Nama Entitas: MsJabatan
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdJabatan Secara unik mengidentifikasi
jabatan
Char (5) No No
Jabatan Jabatan dokter dan karyawan Varchar (30) No No
88
7. Nama Entitas: MsObat
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdObat Secara unik mengidentifikasi
obat
Char (8) No No
NamaObat Nama obat Varchar (30) No No
Kemasan Kemasan obat Varchar (10) No No
Isi Banyak obat dalam kemasan Int No No
QtyObatS Total obat yang tersedia Int Yes No
HargaObat Harga satuan obat Numeric No No
8. Nama Entitas: MsJenisObat
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdJenisObat Secara unik mengidentifikasi
jenis obat
Char (8) No No
JenisObat Jenis obat Varchar (30) No No
9. Nama Entitas: MsPemasok
Atribut Deskripsi Data Types
& Length Nulls Multivalue
KdPemasok Secara unik mengidentifikasi
pemasok
Char (8) No No
NamaPemasok Nama pemasok Varchar (30) No No
Alamat Alamat pemasok Varchar (50) No No
KodePos Kode pos pemasok Char (5) No No
Kota Kota pemasok Varchar (20) No No
TelpPemasok Telepon Pemasok Varchar (15) No Yes
89
10. Nama Entitas: Resep
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
KdResep Secara unik mengidentifikasi
resep
Char (8) No No
TglResep Tanggal resep Datetime No No
QtyObatResep Total obat yang ditebus Int No No
DosisObat Dosis pemakaian obat Varchar (15) No No
BiayaResep Biaya resep Numeric No No
11. Nama Entitas : RekamMedis
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoRekam Secara unik mengidentifikasi
rekam medis pasien
Char (8) No No
TglRekam Tanggal pencatatan rekam
medis berdasarkan kunjungan
Datetime No No
JamRekam Jam rekam medis pasien Datetime No No
UmurPasien Umur pasien Int No No
Keluhan Keluhan pasien Varchar (100) No No
Penyakit Penyakit pasien Varchar(30) No No
Tindakan Tindakan yang diberikan Varchar(50) No No
12. Nama Entitas: PasienBerobat
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoBerobat Secara unik mengidentifikasi
nomor pasien berobat
Char (8) No No
90
TglBerobat Tanggal melakukan
pengobatan
Datetime No No
JamBerobat Jam melakukan pengobatan Datetime No No
UmurPasien Umur pasien Int No No
Pelayanan Pelayanan Medis yang
dilakukan pada pasien
Varchar (15) No No
13. Nama Entitas: Pembelian
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoPembelian Secara unik mengidentifikasi
nomor pembelian
Char (8) No No
TglPembelian Tanggal pembelian Datetime No No
Status Status pembayaran Varchar (15) No No
14. Nama Entitas: Penjualan
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoPenjualan Secara unik mengidentifikasi
nomor penjualan
Char (8) No No
TglPenjualan Tanggal penjualan Datetime No No
QtyObatK Total obat yang keluar Int Yes No
15. Nama Entitas : PembayaranPasien
Atribut Deskripsi Data Types
& Length
Nulls Multivalue
NoPembayaran Berisi mengenai nomor
pembayaran
Char (8) No No
91
Tanggal Berisi mengenai tanggal
pembayaran
Datetime No No
Jam Berisi mengenai jam pada saat
melakukan pembayaran
Datetime No No
BiayaAdmin Berisi mengenai biaya
pembayaran administrasi yang
dilakukan
Numeric No No
TotalBiaya Berisi mengenai total biaya
pengobatan yang dilakukan
Numeric No No
16. Nama Entitas: FakturBeli
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoFaktur Nomor faktur pembelian
obat
Char(8) No No
TglFaktur Tanggal faktur pembelian
obat
Datetime No No
QtyObatB Total obat yang dibeli Int Yes No
HargaObatB Harga beli obat Numeric No No
TtlHargaObat Total harga obat Numeric No No
PPN Pajak Varchar(5) No No
JthTempo Tanggal jatuh tempo
pembayaran
Datetime No No
17. Nama Entitas: ReturPembelian
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
NoRetur Secara unik mengidentifikasi
nomor retur pembelian
Char (8) No No
92
TglRetur Tanggal pembelian Datetime No No
QtyObatR Total obat yang diretur Int Yes No
KetR Keterangan retur Varchar (20) No No
18. Nama Entitas : MsJdwlDokter
Atribut Deskripsi Data Types
& Length
Nulls Multivalue
KdJdwlDokter Berisi mengenai kode jadwal
praktek dokter
Char (5) No No
HariPraktek Berisi mengenai hari praktek
dokter
Varchar (20) No No
JamPraktek Berisi mengenai jam praktek
dokter
Varchar (11) No No
19. Nama Entitas : MsJdwlKaryawan
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
KdJdwlKary Berisi mengenai kode jadwal
kerja karyawan
Char (5) No No
HariKerja Berisi mengenai hari kerja
karyawan
Varchar (20) No No
JamKerja Berisi mengenai jam kerja
karyawan
Datetime No No
20. Nama Entitas: AbsensiDokter
Atribut Deskripsi Data Types &
Length
Nulls Multivalue
KdAbsenDok Secara unik mengidentifikasi
absensi dokter
Char (8) No No
93
TglAbsenDok Tanggal absensi dokter Datetime No No
JamPraktek Jam praktek dokter Datetime No No
KehadiranDok Kehadiran dokter Varchar (10) No No
KetAbsenDok Keterangan absen dokter Varchar (20) No No
21. Nama Entitas: AbsensiKaryawan
Atribut Deskripsi Data Types &
Length Nulls Multivalue
KdAbsenKary Secara unik mengidentifikasi
absensi karyawan
Char (8) No No
TglAbsenKary Tanggal absensi karyawan Datetime No No
JamKerja Jam kerja karyawan Datetime No No
KehadiranKary Kehadiran karyawan Varchar (10) No No
KetAbsenKary Keterangan absen karyawan Varchar (20) No No
Dari hasil penentuan atribut maka ditentukan domain atribut sebagai berikut:
Tabel 3.4 Domain Atribut
Atribut Domain Atribut
NIP Digit 1 sampai 3 diisi dengan NIP dan digit lainnya diisi
dengan angka.
NoIdentitas Digit 1 sampai 20 diisi dengan digit angka.
KdDokter Digit 1 sampai 2 diisi dengan KD dan digit lainnya diisi
dengan angka.
KdSpesialis Digit 1 sampai 3 diisi dengan KDS dan digit lainnya diisi
dengan angka.
KdKary Digit 1 sampai 2 diisi dengan KK dan digit lainnya diisi
dengan angka.
94
KdJabatan Digit 1 sampai 3 diisi dengan KKJ dan digit lainnya diisi
dengan angka.
KdObat Digit 1 sampai 3 diisi dengan KOB dan digit lainnya diisi
dengan angka.
KdJenisObat Digit 1 sampai 3 diisi dengan KJB dan digit lainnya diisi
dengan angka.
KdPemasok Digit 1 sampai 3 diisi dengan KPM dan digit lainnya diisi
dengan angka.
KdResep Digit 1 sampai 2 diisi dengan KP dan digit lainnya diisi
dengan angka.
NoRekam Digit 1 sampai 3 diisi dengan NRM dan digit lainnya diisi
dengan angka.
NoBerobat Digit 1 sampai 2 diisi dengan NB dan digit lainnya diisi
dengan angka.
NoPembelian Digit 1 sampai 3 diisi dengan NPB dan digit lainnya diisi
dengan angka.
NoPenjualan Digit 1 sampai 3 diisi dengan NPJ dan digit lainnya diisi
dengan angka.
NoPembayaran Digit 1 sampai 2 diisi dengan NP dan digit lainnya diisi
dengan angka.
NoFaktur Digit 1 sampai 2 diisi dengan NF dan digit lainnya diisi
dengan angka.
NoRetur Digit 1 sampai 2 diisi dengan NR dan digit lainnya diisi
dengan angka.
KdJdwlDokter Digit 1 sampai 3 diisi dengan KJD dan digit lainnya diisi
dengan angka.
KdJdwlKary Digit 1 sampai 3 diisi dengan KJK dan digit lainnya diisi
dengan angka.
95
KdAbsensiKary Digit 1 sampai 3 diisi dengan KAK dan digit lainnya diisi
dengan angka.
KdAbsensiDok Digit 1 sampai 3 diisi dengan KAD dan digit lainnya diisi
dengan angka.
Mengidentifikasi candidate key dan primary key dapat dilihat pada tabel sebagai berikut:
Tabel 3.5 Penentuan Atribut Candidate Key, Primary Key dan Alternate Key
Nama Entitas Candidate Key Primary Key
MsLogin IdLogin IdLogin
MsPasien NIP, NoIdentitas, TelpPasien NIP
MsDokter KdDokter, TelpDok KdDokter
MsSpesialis KdSpesialis KdSpesialis
MsKaryawan KdKary, TelpKary KdKary
MsJabatan KdJabatan KdJabatan
MsObat KdObat KdObat
MsJenisObat KdJenisObat KdJenisObat
MsPemasok KdPemasok, TelpPemasok KdPemasok
MsResep KdResep KdResep
RekamMedis NoRekam NoRekam
PasienBerobat NoBerobat NoBerobat
Pembelian NoPembelian NoPembelian
Penjualan NoPenjualan NoPenjualan
PembayaranPasien NoPembayaran NoPembayaran
96
FakturBeli NoFaktur NoFaktur
ReturPembelian NoRetur NoRetur
MsJdwlDokter KdJdwlDokter KdJdwlDokter
MsJdwlKaryawan KdJdwlKary KdJdwlKary
AbsensiDokter KdAbsenDok KdAbsenDok
AbsensiKaryawan KdAbsenKary KdAbsenKary
4. Mengecek Redudansi pada Model
Bertujuan untuk memeriksa adanya redudansi pada model. Ada beberapa langkah yang
perlu dipertimbangkan yaitu:
a. Re-examine one-to-one (1:1) relations
Setelah diperiksa, kami menemukan entitas dengan relasi one-to-one, yaitu:
Gambar 3.14 Relasi 1:1 antara MsDokter dengan MsLogin
Gambar 3.15 Relasi 1:1 antara MsKaryawan dengan MsLogin
97
Gambar 3.16 Relasi 1:1 antara Resep dengan RekamMedis
Gambar 3.17 Relasi 1:1 antara Pembelian dengan FakturBeli
Gambar 3.18 Relasi 1:1 antara PembayaranPasien dengan Resep
Gambar 3.19 Relasi 1:1 antara PembayaranPasien dengan PasienBerobat
98
b. Hilangkan relasi redudansi
Setelah diperiksa, kami menemukan relasi redundansi yang bermasalah sehingga harus
dihilangkan, yaitu:
Gambar 3.20 Relasi 1:1 antara Pembelian dengan FakturBeli
5. Menvalidasi Model Konseptual Lokal dengan Transaksi Pengguna
Model konseptual lokal harus diuji apakah dapat menjalankan transaksi yang diinginkan
oleh pengguna. Berikut adalah contoh-contoh transaksi yang dapat divalidasikan
terhadap model konseptual lokal:
a. Memasukkan/ubah data MsLogin
b. Memasukkan/ubah data MsPasien
c. Memasukkan/ubah data MsDokter
d. Memasukkan/ubah data MsSpesialis
e. Memasukkan/ubah data MsKaryawan
f. Memasukkan/ubah data MsJabatan
g. Memasukkan/ubah data MsObat
99
h. Memasukkan/ubah data MsJenisObat
i. Memasukkan/ubah data MsPemasok
j. Memasukkan/ubah data Resep
k. Tampilkan rincian data Resep
l. Memasukkan/ubah data RekamMedis
m. Tampilkan rincian data RekamMedis
n. Memasukkan/ubah data PasienBerobat
o. Memasukkan/ubah data Pembelian
p. Tampilkan rincian data Pembelian
q. Memasukkan/ubah data Penjualan
r. Tampilkan rincian data Penjualan
s. Memasukkan/ubah data PembayaranPasien
t. Memasukkan/ubah data FakturBeli
u. Tampilkan rincian data FakturBeli
v. Memasukkan/ubah data ReturPembelian
w. Tampilkan rincian data ReturPembelian
x. Memasukkan/ubah data AbsensiDokter
y. Memasukkan/ubah data AbsensiKaryawan
z. Memasukkan/ubah data MsJdwlDokter
aa. Memasukkan/ubah data MsJdwlKaryawan
Query yang dibutuhkan:
• Pembuatan Laporan Obat
• Pembuatan Laporan Pasien
100
• Pembuatan Laporan Keuangan
• Pembuatan Laporan Absensi Dokter
• Pembuatan Laporan Absensi Karyawan
• Pembuatan Laporan Jadwal Praktek Dokter
• Pembuatan Laporan Jadwal Kerja Karyawan
• Tampilkan data pasien
• Tampilkan data dokter
• Tampilkan data karyawan
• Tampilkan data obat
• Tampilkan data pemasok
• Tampilkan data resep
• Tampilkan data rekam medis
• Tampilkan data pembelian
• Tampilkan data penjualan
• Tampilkan data faktur beli
• Tampilkan data retur pembelian
• Tampilakan data jadwal praktek dokter
• Tampilkan data jadwal kerja karyawan
• Tampilkan data absensi dokter
• Tampilkan data absensi karyawan
101
Gambar 3.21 Model Konseptual yang Mendukung Transaksi Pengguna dengan Menggunakan Pathways
102
3.2.2 Perancangan Basis Data Logikal
Berikut ini merupakan langkah-langkah dalam perancangan basis data logikal, yaitu
sebagai berikut:
3.2.2.a Membangun dan Memvalidasi Model Data Logikal
Berikut ini merupakan langkah-langkah membangun dan memvalidasi model data
logikal, yaitu sebagai berikut:
1. Menghilangkan Fitur-Fitur yang Tidak Sesuai dengan Model Relational
Berikut ini merupakan tahap penyesuaian dari model data konseptual lokal agar bisa
digunakan dengan lebih mudah oleh sistem, dengan melakukan aktivitas:
a. Menghilangkan many to many (*:*) binary relationship types
1. Relasi antara MsPasien dan MsResep membentuk entitas baru, yaitu
DetailResep.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.22 Relasi many to many MsPasien dan Resep
103
2. Relasi antara MsObat dan RekamMedis membentuk entitas baru, yaitu
DetailRekamMedis.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.23 Relasi many to many MsObat dan RekamMedis
3. Relasi antara MsObat dan Resep membentuk entitas baru, yaitu DetailResep.
i
104
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.24 Relasi many to many MsObat dan Resep
4. Relasi antara MsObat dan Pembelian membentuk entitas baru, yaitu
DetailPembelian.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.25 Relasi many to many MsObat dan Pembelian
105
5. Relasi antara MsObat dan Penjualan membentuk entitas baru, yaitu
DetailPenjualan.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.26 Relasi many to many MsObat dan Penjualan
6. Relasi antara MsObat dan FakturBeli membentuk entitas baru, yaitu
DetailFakturBeli.
i
106
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.27 Relasi many to many MsObat dan FakturBeli
7. Relasi antara MsObat dan ReturPembelian membentuk entitas baru, yaitu
DetailReturPembelian.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.28 Relasi many to many MsObat dan ReturPembelian
107
8. Relasi antara Resep dan Penjualan membentuk entitas baru, yaitu
DetailPenjualan.
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.29 Relasi many to many Resep dan Penjualan
b. Menghilangkan atribut multi-valued
MsPasien (NIP, Nama, NoIdentitas, TmptLhr, TglLhr, JnsKlmn, Agama,
GolDarah, StatKawin, Alamat, KodePos, Kota, TelpPasien, Pekerjaan)
Primary Key (NIP)
108
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.30 Atribut Multi-valued pada MsPasien
MsDokter (KdDokter, NamaDok, TmptLhrDok, TglLhrDok, JnsKlmnDok,
AgamaDok, StatKwinDok, AlamatDok, KodePos, Kota, TelpDok, BiayaDok,
GajiDok)
Primary Key (KdDokter)
i
109
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.31 Atribut Multi-valued pada MsDokter
MsKaryawan (KdKary, NamaKary, TmptLhrKary, TglLhrKary, JnsKlmnKary,
AgamaKary, StatKawinKary, StatPendiKary, AlamatKary, KodePos, Kota,
TelpKary, GajiKary)
Primary Key (KdKary)
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.32 Atribut Multi-Valued pada MsKaryawan
110
MsPemasok (KdPemasok, NamaPemasok, Alamat, KodePos, Kota, TelpPemasok)
Primary Key (KdPemasok)
i
ii
Keterangan: (i) Kondisi awal, (ii) Kondisi akhir
Gambar 3.33 Atribut Multi-Valued pada MsPemasok
2. Menurunkan Relasi untuk Model Data Logikal
a. Identifikasi Strong Entity
MsLogin (IdLogin, Password, Status)
Primary Key (IdLogin)
MsPasien (NIP, Nama, NoIdentitas, TmptLhr, TglLhr, JnsKlmn, Agama,
GolDarah, StatKawin, Alamat, KodePos, Kota, Pekerjaan)
Primary Key (NIP)
111
MsDokter (KdDokter, NamaDok, TmptLhrDok, TglLhrDok, JnsKlmnDok,
AgamaDok, StatKawinDok, AlamatDok, KodePos, Kota, BiayaDok, GajiDok)
Primary Key (KdDokter)
MsSpesialis (KdSpesialis, Spesialis)
Primary Key (KdSpesialis)
MsKaryawan (KdKary, NamaKary, TmptLhrKary, TglLhrKary, JnsKlmnKary,
AgamaKary, StatKawinKary, StatPendiKary, AlamatKary, KodePos, Kota,
GajiKary)
Primary Key (KdKary)
MsJabatan (KdJabatan, Jabatan)
Primary Key (KdJabatan)
MsObat (KdObat, NamaObat, Kemasan, Isi, QtyObatS, HargaObat)
Primary Key (KdObat)
MsJenisObat (KdJenisObat, JenisObat)
Primary Key (KdJenisObat)
MsPemasok (KdPemasok, NamaPemasok, Alamat, KodePos, Kota)
Primary Key (KdPemasok)
112
Resep (KdResep, TglResep, BiayaResep)
Primary Key (KdResep)
RekamMedis (NoRekam, TglRekam, JamRekam, UmurPasien)
Primary Key (NoRekam)
PasienBerobat (NoBerobat, TglBerobat, JamBerobat, UmurPasien, Pelayanan)
Primary Key (NoBerobat)
Pembelian (NoPembelian, T glPembelian)
Primary Key (NoPembelian)
Penjualan (NoPenjualan, TglPenjualan)
Primary Key (NoPenjualan)
PembayaranPasien (NoPembayaran, Tanggal, Jam, BiayaAdmin, TotalBiaya)
Primary Key (NoPembayaran)
FakturBeli (NoFaktur, TglFaktur, HargaObatB, TtlHargaObat, PPN, JthTempo)
Primary Key (NoFObat)
ReturPembelian (NoRetur, TglRetur, KetR)
Primary Key (NoRetur)
113
MsJdwlDokter (KdJdwlDokter, HariPraktek, JamPraktek)
Primary Key (KdJdwlDokter)
MsJdwlKaryawan (KdJdwlKary, HariKerja, JamKerja)
Primary Key (KdJdwlKary)
AbsensiDokter (KdAbsenDok, TglAbsenDok, JamPraktek, KehadiranDok,
KetAbsenDok)
Primary Key (KdAbsenDok)
AbsensiKaryawan (KdAbsenKary, TglAbsenKary, JamKerja, KehadiranKary,
KetAbsenKary)
Primary Key (KdAbsenKary)
b. Identifikasi Weak Entity
DetailResep (DosisObat, QtyObatResep)
Primary Key belum ada (untuk saat ini)
DetailPembelian (Status)
Primary Key belum ada (untuk saat ini)
DetailPenjualan (QtyObatK)
Primary Key belum ada (untuk saat ini)
114
DetailFakturBeli (QtyObatB)
Primary Key belum ada (untuk saat ini)
DetailReturPembelian (QtyObatR)
Primary Key belum ada (untuk saat ini)
DetailRekamMedis (Keluhan, Penyakit, Tindakan)
Primary Key belum ada (untuk saat ini)
TelpPasien (TelpPasien)
Primary Key (TelpPasien)
TelpDok (TelpDok)
Primary Key (TelpDok)
TelpKary (TelpKary)
Primary Key (TelpKary)
TelpPemasok (TelpPemasok)
Primary Key (TelpPemasok)
115
c. One-to-Many (1:*) binary relationship types
1. Hubungan MsPasien dengan RekamMedis
2. Hubungan MsPasien dengan PasienBerobat
3. Hubungan MsPasien dengan PembayaranPasien
116
4. Hubungan MsPasien dengan TelpPasien
5. Hubungan MsDokter dengan MsSpesialis
6. Hubungan MsDokter dengan MsJabatan
117
7. Hubungan MsDokter dengan Resep
8. Hubungan MsDokter dengan RekamMedis
9. Hubungan MsDokter dengan PasienBerobat
118
10. Hubungan MsDokter dengan PembayaranPasien
11. Hubungan MsDokter dengan MsJdwlDokter
12. Hubungan MsDokter dengan AbsensiDokter
119
13. Hubungan MsDokter dengan TelpDok
14. Hubungan MsKaryawan dengan MsJabatan
15. Hubungan MsKaryawan dengan RekamMedis
120
16. Hubungan MsKaryawan dengan Pembelian
17. Hubungan MsKaryawan dengan Penjualan
18. Hubungan MsKaryawan dengan FakturBeli
121
19. Hubungan MsKaryawan dengan PembayaranPasien
20. Hubungan MsKaryawan dengan AbsensiKaryawan
21. Hubungan MsKaryawan dengan MsJdwlKaryawan
122
22. Hubungan MsKaryawan dengan TelpKary
23. Hubungan MsObat dengan MsJenisObat
24. Hubungan MsObat dengan PembayaranPasien
123
25. Hubungan MsPemasok dengan FakturBeli
26. Hubungan MsPemasok dengan ReturPembelian
27. Hubungan MsPemasok dengan TelpPemasok
124
28. Hubungan Pembelian dengan ReturPembelian
29. Hubungan Penjualan dengan MsObat
d. One-to-One (1:1) binary relationship types
1. Hubungan MsDokter dengan MsLogin
125
2. Hubungan MsKaryawan dengan MsLogin
3. Hubungan Resep dengan RekamMedis
4. Hubungan PembayaranPasien dengan Resep
126
5. Hubungan PembayaranPasien dengan PasienBerobat
6. Hubungan Pembelian dengan FakturBeli
e. Many-to-Many (*:*) binary relationship types
1. Relasi antara MsPasien dengan Resep menghasilkan entitas baru, yaitu DetailResep
yang menerima posting NIP dan KdResep.
127
MsPasien (NIP, Nama,
NoIdentitas, TmptLhr, TglLhr,
JnsKlmn, Agama, GolDarah,
StatKawin, Alamat, KodePos,
Kota, Pekerjaan)
Primary Key (NIP)
Resep (KdResep, TglResep, BiayaResep,
KdDokter)
Primary Key (KdResep)
Foreign Key (KdDokter) references MsDokter
DetailResep (NIP, KdResep, DosisObat)
Primary Key (NIP, KdResep)
Foreign Key (NIP) references MsPasien
Foreign Key (KdResep) references Resep
2. Relasi antara MsObat dengan RekamMedis menghasilkan entitas baru, yaitu
DetailRekamMedis yang menerima posting KdObat dan NoRekam.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS,
HargaObat, KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat)
references MsJenisObat
RekamMedis (NoRekam, TglRekam,
JamRekam, UmurPasien, NIP, KdDokter,
KdKary, KdResep)
Primary Key (NoRekam)
Foreign Key (NIP) references MsPasien
Foreign Key (KdDokter) references MsDokter
Foreign Key (KdKary) references MsKaryawan
Foreign Key (KdResep) references Resep
DetailRekamMedis (KdObat, NoRekam, Keluhan, Penyakit, Tindakan)
Primary Key (KdObat, NoRekam)
Foreign Key (KdObat) references MsObat
Foreign Key (NoRekam) references RekamMedis
128
3. Relasi antara MsObat dengan Resep menghasilkan entitas baru, yaitu DetailResep
yang menerima posting KdObat dan KdResep.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS, HargaObat,
KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat) references
MsJenisObat
Resep (KdResep, TglResep, BiayaResep,
KdDokter)
Primary Key (KdResep)
Foreign Key (KdDokter) references
MsDokter
DetailResep (NIP, KdResep, KdObat, DosisObat, QtyObatResep)
Primary Key (NIP, KdResep, KdObat)
Foreign Key (NIP) references MsPasien
Foreign Key (KdResep) references Resep
Foreign Key (KdObat) references MsObat
4. Relasi antara MsObat dengan Pembelian menghasilkan entitas baru, yaitu
DetailPembelian yang menerima posting posting KdObat dan NoPembelian.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS, HargaObat,
KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat) references
MsJenisObat
Pembelian (NoPembelian,
TglPembelian, KdKary, NoFaktur)
Primary Key (NoPembelian)
Foreign Key (KdKary) references
MsKaryawan
Foreign Key (NoFaktur) references
FakturBeli
DetailPembelian (KdObat, NoPembelian, Status)
Primary Key (KdObat, NoPembelian)
Foreign Key (KdObat) references MsObat
Foreign Key (NoPembelian) references Pembelian
129
5. Relasi antara MsObat dengan Penjualan menghasilkan entitas baru, yaitu
DetailPenjualan yang menerima posting KdObat dan NoPenjualan.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS, HargaObat,
KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat) references
MsJenisObat
Penjualan (NoPenjualan, TglPenjualan,
KdKary)
Primary Key (NoFaktur)
Foreign Key (KdKary) references
MsKaryawan
DetailPenjualan (KdObat, NoPenjualan, QtyObatK)
Primary Key (KdObat, NoPenjualan)
Foreign Key (KdObat) references MsObat
Foreign Key (NoPenjualan) references Penjualan
6. Relasi antara MsObat dengan FakturBeli menghasilkan entitas baru, yaitu
DetailFakturBeli yang menerima posting KdObat dan NoFaktur.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS, HargaObat,
KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat) references
MsJenisObat
FakturBeli (NoFaktur, TglFaktur,
HargaObatB, TtlHargaObat, PPN,
JthTempo, KdKary, KdPemasok)
Primary Key (NoFaktur)
Foreign Key (KdKary) references
MsKaryawan
Foreign Key (KdPemasok) references
MsPemasok
DetailFakturBeli (KdObat, NoFaktur, QtyObatB)
Primary Key (KdObat, NoFaktur)
Foreign Key (KdObat) references MsObat
Foreign Key (NoFaktur) references FakturBeli
130
7. Relasi antara MsObat dengan ReturPembelian menghasilkan entitas baru, yaitu
DetailReturPembelian yang menerima posting KdObat dan NoRetur.
MsObat (KdObat, NamaObat,
Kemasan, Isi, QtyObatS, HargaObat,
KdJenisObat)
Primary Key (KdObat)
Foreign Key (KdJenisObat) references
MsJenisObat
ReturPembelian (NoRetur, TglRetur,
KetR, KdPemasok, NoPembelian)
Primary Key (NoRetur)
Foreign Key (KdPemasok) references
MsPemasok
Foreign Key (NoPembelian) references
Pembelian
DetailReturPembelian (KdObat, NoRetur, QtyObatR)
Primary Key (KdObat, NoRetur)
Foreign Key (KdObat) references MsObat
Foreign Key (NoRetur) references ReturPembelian
8. Relasi antara Resep dengan Penjualan menghasilkan entitas baru, yaitu
DetailPenjualan yang menerima posting KdResep dan NoPenjualan.
Resep (KdResep, TglResep,
BiayaResep, KdDokter)
Primary Key (KdResep)
Foreign Key (KdDokter) references
MsDokter
Penjualan (NoPenjualan, TglPenjualan,
KdKary)
Primary Key (NoFaktur)
Foreign Key (KdKary) references
MsKaryawan
Foreign Key (KdPemasok) references
MsPemasok
DetailPenjualan (KdObat, KdResep, NoPenjualan, QtyObatK)
Primary Key (KdObat, KdResep, NoPenjualan)
Foreign Key (KdObat) references MsObat
Foreign Key (KdResep) references Resep
Foreign Key (NoPenjualan) references Penjualan
131
3. Validasi Relasi dengan Normalisai
MsLogin
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsLogin (IdLogin, Password, Status)
MsPasien
Validasi 1NF dan 2NF: sudah memenuhi 1NF dan 2NF karena sudah mempunyai primary key, tidak ditemukan repeating
groups dan tidak ada hubungan partial dependency.
132
Validasi 3NF: tidak memenuhi 3NF karena ada hubungan transitive dependency pada KodePos yang ditunjukan oleh fd2.
• MsPasien (NIP, Nama, NoIdentitas, TmptLhr, TglLhr, JnsKlmn, Agama, GolDarah, StatKawin, Alamat, KodePos,
Pekerjaan)
• KodePos (KodePos, Kota)
TelpPasien
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• TelpPasien (TelpPasien, NIP)
133
MsDokter
Validasi 1NF dan 2NF: sudah memenuhi 1NF dan 2NF karena sudah mempunyai primary key, tidak ditemukan repeating
groups dan tidak ada hubungannya dengan partial dependency.
Validasi 3NF: tidak memenuhi 3NF karena ada hubungan transitive dependency pada KodePos yang ditunjukan oleh fd2.
• MsDokter (KdDokter, NamaDok, TmptLhrDok, TglLhrDok, JnsKlmnDok, AgamaDok, StatKawinDok, AlamatDok,
KodePos, BiayaDok, GajiDok, KdSpesialis, KdJabatan, KdJdwlDokter, IdLogin)
• KodePos (KodePos, Kota)
134
TelpDok
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• TelpDok (TelpDok, KdDokter)
MsSpesialis
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsSpesialis (KdSpesialis, Spesialis)
135
MsKaryawan
Validasi 1NF dan 2NF : sudah memenuhi 1NF dan 2NF karena sudah mempunyai primary key, tidak ditemukan repeating
groups dan tidak ada hubungannya dengan partial dependency.
Validasi 3NF: tidak memenuhi 3NF karena ada hubungan transitive dependency pada KodePos yang ditunjukan oleh fd2.
• MsKaryawan (KdKary, NamaKary, TmptLhrKary, TglLhrKary JnsKlmnKary, AgamaKary, StatKawinKary,
StatPendiKary, AlamatKary, KodePos, GajiKary, KdJabatan, KdJdwlKary, IdLogin)
• KodePos (KodePos, Kota)
TelpKary
136
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• TelpKary (TelpKary, KdKary)
MsJabatan
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsJabatan (KdJabatan, Jabatan)
MsObat
137
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsObat (KdObat, NamaObat, Kemasan, Isi, QtyObatS, HargaObat KdJenisObat)
MsJenisObat
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsJenisObat (KdJenisObat, JenisObat)
MsPemasok
138
Validasi 1NF dan 2NF: sudah memenuhi 1NF dan 2NF karena sudah mempunyai primary key, tidak ditemukan repeating
groups dan tidak ada hubungan partial dependency.
Validasi 3NF: tidak memenuhi 3NF karena ada hubungan transitive dependency pada KodePos yang ditunjukan oleh fd2.
• MsPemasok (KdPemasok, NamaPemasok, Alamat, KodePos)
• KodePos (KodePos, Kota)
TelpPemasok
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• TelpPemasok (TelpPemasok, KdPemasok)
139
Resep
Validasi 1NF: tidak memenuhi 1NF karena masih ada atribut yang didapat dari hasil perhitungan, yaitu BiayaResep.
• Resep (KdResep, TglResep, KdDokter)
Validasi 2NF dan 3NF: sudah memenuhi persyaratan validasi 2NF dan 3NF, karena tidak ada hubungan partial dependency
dan tidak ada hubungan transitive dependency.
• Resep (KdResep, TglResep, KdDokter)
DetailResep
140
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailResep (NIP, KdResep, KdObat, DosisObat, QtyObatResep)
RekamMedis
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• RekamMedis (NoRekam, TglRekam, JamRekam, UmurPasien, NIP, KdDokter, KdKary, KdResep)
141
DetailRekamMedis
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailRekamMedis (KdObat, NoRekam, Keluhan, Penyakit, Tindakan)
PasienBerobat
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• PasienBerobat (NoBerobat, TglBerobat, JamBerobat, UmurPasien, Pelayanan, NIP, KdDokter)
142
Pembelian
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• Pembelian (NoPembelian, TglPembelian, KdKary, NoFaktur)
DetailPembelian
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailPembelian (KdObat, NoPembelian, Status)
143
Penjualan
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• Penjualan (NoPenjualan, T glPenjualan, KdKary)
DetailPenjualan
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailPenjualan (KdObat, KdResep, NoPenjualan, QtyObatK)
144
PembayaranPasien
Validasi 1NF: tidak memenuhi 1NF karena masih ada atribut yang didapat dari hasil perhitungan, yaitu TotalBiaya.
• PembayaranPasien (NoPembayaran, Tanggal, Jam, BiayaAdmin, NIP, KdDokter, KdKary, KdObat, KdResep, NoBerobat)
Validasi 2NF dan 3NF: sudah memenuhi persyaratan validasi 2NF dan 3NF, karena tidak ada hubungan partial dependency
dan tidak ada hubungan transitive dependency.
• PembayaranPasien (NoPembayaran, Tanggal, Jam, BiayaAdmin, NIP, KdDokter, KdKary, KdObat, KdResep, NoBerobat)
FakturBeli
Validasi 1NF: tidak memenuhi 1NF karena masih ada atribut yang didapat dari hasil perhitungan, yaitu TtlHargaObat, PPN.
• FakturBeli (NoFaktur, TglFaktur, HargaObatB, JthTempo, KdKary, KdPemasok)
145
Validasi 2NF dan 3NF: sudah memenuhi persyaratan validasi 2NF dan 3NF, karena tidak ada hubungan partial dependency
dan tidak ada hubungan transitive dependency.
• FakturBeli (NoFaktur, TglFaktur, HargaObatB, JthTempo, KdKary, KdPemasok)
DetailFakturBeli
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailFakturBeli (KdObat, NoFaktur, QtyObatB)
ReturPembelian
146
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• ReturPembelian (NoRetur, TglRetur, KetR, KdPemasok, NoPembelian)
DetailReturPembelian
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• DetailReturPembelian (KdObat, NoRetur, QtyObatR)
147
MsJdwlDokter
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsJdwlDokter (KdJdwlDokter, HariPraktek, JamPraktek)
MsJdwlKaryawan
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• MsJdwlKaryawan (KdJdwlKary, HariKerja, JamKerja)
148
AbsensiDokter
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• AbsensiDokter (KdAbsenDok, TglAbsenDok, JamPraktek, KehadiranDok, KetAbsenDok, KdDokter)
AbsensiKaryawan
Semua sudah memenuhi 1NF, 2NF dan 3NF. Karena sudah mempunyai primary key, tidak ditemukan repeating groups, tidak
ada hubungan partial dependency dan tidak ada hubungan transitive dependency.
• AbsensiKaryawan (KdAbsenKary, TglAbsenKary, JamKerja, KehadiranKary, KetAbsenKary, KdKary)
149
Gambar 3.34 ERD Normalisasi
150
4. Definisi Integrity Constraint
MsLogin (IdLogin, Password, Status)
Primary Key IdLogin
KodePos (KodePos, Kota)
Primary Key KodePos
MsPasien (NIP, Nama, NoIdentitas, TmptLhr, TglLhr, JnsKlmn, Agama, GolDarah,
StatKawin, Alamat, KodePos, Pekerjaan)
Primary Key NIP
Foreign Key KodePos references KodePos (KodePos) ON UPDATE CASCADE ON
DELETE NO ACTION
TelpPasien (TelpPasien, NIP)
Primary Key TelpPasien
Foreign Key NIP references MsPasien (NIP) ON UPDATE CASCADE ON DELETE
NO ACTION
MsDokter (KdDokter, NamaDok, TmptLhrDok, TglLhrDok, JnsKlmnDok, AgamaDok,
StatKawinDok, AlamatDok, KodePos, BiayaDok, GajiDok, KdSpesialis, KdJabatan,
KdJdwlDokter, IdLogin)
Primary Key KdDokter
Foreign Key KodePos references KodePos (KodePos) ON UPDATE CASCADE ON
DELETE NO ACTION
151
Foreign Key KdSpesialis references MsSpesialis (KdSpesialis) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key KdJabatan references MsJabatan (KdJabatan) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdJdwlDokter references MsJdwlDokter (KdJdwlDokter) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key IdLogin references MsLogin (IdLogin) ON UPDATE CASCADE ON
DELETE NO ACTION
TelpDok (TelpDok, KdDokter)
Primary Key TelpDok
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
MsSpesialis (KdSpesialis, Spesialis)
Primary Key KdSpesialis
MsKaryawan (KdKary, NamaKary, TmptLhrKary, TglLhrKary JnsKlmnKary,
AgamaKary, StatKawinKary, StatPendiKary, AlamatKary, KodePos, GajiKary,
KdJabatan, KdJdwlKary, IdLogin)
Primary Key KdKary
Foreign Key KodePos references KodePos (KodePos) ON UPDATE CASCADE ON
DELETE NO ACTION
152
Foreign Key KdJabatan references MsJabatan (KdJabatan) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdJdwlKary references MsJdwlKaryawan (KdJdwlKary) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key IdLogin references MsLogin (IdLogin) ON UPDATE CASCADE ON
DELETE NO ACTION
TelpKary (TelpKary, KdKary)
Primary Key TelpKary
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
MsJabatan (KdJabatan, Jabatan)
Primary Key KdJabatan
MsObat (KdObat, NamaObat, Kemasan, Isi, QtyObatS, HargaObat KdJenisObat)
Primary Key KdObat
Foreign Key KdJenisObat references MsJenisObat (KdJenisObat) ON UPDATE
CASCADE ON DELETE NO ACTION
MsJenisObat (KdJenisObat, JenisObat)
Primary Key KdJenisObat
153
MsPemasok (KdPemasok, NamaPemasok, Alamat, KodePos)
Primary Key KdPemasok
Foreign Key KodePos references KodePos (KodePos) ON UPDATE CASCADE ON
DELETE NO ACTION
TelpPemasok (TelpPemasok, KdPemasok)
Primary Key TelpPemasok
Foreign Key KdPemasok references MsPemasok (KdPemasok) ON UPDATE
CASCADE ON DELETE NO ACTION
Resep (KdResep, TglResep, KdDokter)
Primary Key KdResep
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
DetailResep (NIP, KdResep, KdObat, DosisObat, QtyObatResep)
Primary Key NIP, KdResep, KdObat
Foreign Key NIP references MsPasien (NIP) ON UPDATE CASCADE ON DELETE
NO ACTION
Foreign Key KdResep references MsResep (KdResep) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
154
RekamMedis (NoRekam, TglRekam, JamRekam, UmurPasien, NIP, KdDokter,
KdKary, KdResep)
Primary Key NoRekam
Foreign Key NIP references MsPasien (NIP) ON UPDATE CASCADE ON DELETE
NO ACTION
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdResep references MsResep (KdResep) ON UPDATE CASCADE ON
DELETE NO ACTION
DetailRekamMedis (KdObat, NoRekam, Keluhan, Penyakit, Tindakan)
Primary Key KdObat, NoRekam
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoRekam references RekamMedis (NoRekam) ON UPDATE CASCADE
ON DELETE NO ACTION
PasienBerobat (NoBerobat, TglBerobat, JamBerobat, UmurPasien, Pelayanan, NIP,
KdDokter)
Primary Key NoBerobat
Foreign Key NIP references MsPasien (NIP) ON UPDATE CASCADE ON DELETE
NO ACTION
155
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
Pembelian (NoPembelian, T glPembelian, KdKary, NoFaktur)
Primary Key NoPembelian
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key NoFaktur references FakturBeli (NoFaktur) ON UPDATE CASCADE
ON DELETE NO ACTION
DetailPembelian (KdObat, NoPembelian, Status)
Primary Key KdObat, NoPembelian
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE
CASCADE ON DELETE NO ACTION
Penjualan (NoPenjualan, TglPenjualan, KdKary)
Primary Key NoPenjualan
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
DetailPenjualan (KdObat, KdResep, NoPenjualan, QtyObatK)
Primary Key KdObat, KdResep, NoPenjualan
156
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key KdResep references Resep (KdResep) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoPenjualan references Penjualan (NoPenjualan) ON UPDATE
CASCADE ON DELETE NO ACTION
PembayaranPasien (NoPembayaran, Tanggal, Jam, BiayaAdmin, NIP, KdDokter,
KdKary, KdObat, KdResep, Noberobat)
Primary Key NoPembayaran
Foreign Key NIP references MsPasien (NIP) ON UPDATE CASCADE ON DELETE
NO ACTION
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key KdResep references Resep (KdResep) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoBerobat references PasienBerobat (NoBerobat) ON UPDATE
CASCADE ON DELETE NO ACTION
157
FakturBeli (NoFaktur, TglFaktur, HargaObatB, JthTempo, KdKary, KdPemasok)
Primary Key NoFaktur
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
Foreign Key KdPemasok references MsPemasok (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
DetailFakturBeli (KdObat, NoFaktur, QtyObatB)
Primary Key KdObat, NoFaktur
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoFaktur references FakturBeli (NoFaktur) ON UPDATE CASCADE
ON DELETE NO ACTION
ReturPembelian (NoRetur, TglRetur, KetR, KdPemasok, NoPembelian)
Primary Key NoRetur
Foreign Key KdPemasok references MsPemasok (KdPemasok) ON UPDATE
CASCADE ON DELETE NO ACTION
Foreign Key NoPembelian references Pembelian (NoPembelian) ON UPDATE
CASCADE ON DELETE NO ACTION
DetailReturPembelian (KdObat, NoRetur, QtyObatR)
Primary Key KdObat, NoRetur
158
Foreign Key KdObat references MsObat (KdObat) ON UPDATE CASCADE ON
DELETE NO ACTION
Foreign Key NoRetur references ReturPembelian (NoRetur) ON UPDATE CASCADE
ON DELETE NO ACTION
MsJdwlDokter (KdJdwlDokter, HariPraktek, JamPraktek)
Primary Key KdJdwlDokter
MsJdwlKaryawan (KdJdwlKary, HariKerjak, JamKerja)
Primary Key KdJdwlDokter
AbsensiDokter (KdAbsenDok, TglAbsenDok, JamPraktek, KehadiranDok,
KetAbsenDok, KdDokter)
Primary Key KdAbsenDok
Foreign Key KdDokter references MsDokter (KdDokter) ON UPDATE CASCADE
ON DELETE NO ACTION
AbsensiKaryawan (KdAbsenKary, TglAbsenKary, JamKerja, KehadiranKary,
KetAbsenKary, KdKary)
Primary Key KdAbsenKary
Foreign Key KdKary references MsKaryawan (KdKary) ON UPDATE CASCADE
ON DELETE NO ACTION
159
3.2.2.b Membangun dan Memvalidasi Model Data Logikal Global
Disini tidak dibahas mengenai model data logikal karena klinik hanya memiliki satu
view data logikal sehingga model data logikal global itu sama dengan view data logikal
itu sendiri.
3.2.3 Pemilihan DBMS
Pemilihan DBMS yang akan digunakan oleh Klinik Medikarya untuk membantu
pengelolaan dalam menjalankan proses bisnisnya agar mendapatkan data dan
informasinya menjadi lebih cepat serta mudah yaitu dengan menggunakan Microsoft
SQL Server 2005 Express Edition sebagai alat penyimpanan basis data manajemen
rumah sakit pada Klinik Medikarya dan Visual Basic.Net 2005 sebagai aplikasi desktop
bagi pengguna. Berikut adalah spesifikasi perangkat lunak DMBS dengan menggunakan
Microsoft SQL Server 2005 Express Edition:
Tabel 3.6 Spesifikasi Microsoft SQL Server 2005 Express Edition
Microsoft SQL Server 2005 Express Edition
Tipe DBMS Sistem manajemen basis data relasional (RDBMS) dengan bahasa
kueri utamanya adalah Transact-SQL yang merupakan
implementasi dari SQL standar ANSI/ISO yang digunakan oleh
Microsoft. Transact-SQL adalah alat utama pemrograman dan
mengelola SQL Server.
Kelebihan • Download dan instal cepat. Merupakan perangkat lunak
download yang cepat dan dapat memulai dan menjalankannya
setidaknya 20 menit.
• Pelaksanaannya sederhana. Otomatis menjalankan basis data
dengan tampilan yang optimal. Agar lebih menyenangkan,
gunakan Microsoft Update untuk menerima update terbaru
160
secara otomatis, keamanan level tinggi dan fitur terbaru.
• Alat pengelolaan gratis. Studio pengelolaan SQL Server:
dapat melakukan download SQL Server Management Studio
Express, sebuah alat pengelolaan yang mudah dan efisien untuk
SQL Server Express. Dengan SQL Server Management Studio
dapat menikmati sebuah pengalaman pengelolaan yang
konsisten melampaui semua SQL Server 2005 Express Edition.
• Integrasi langsung dengan Visual Studio Express edition
• Mudah disebarkan. Dapat dengan mudah memindahkan atau
menyalin basis data SQL Server Express pada komputer atau
host server lain menggunakan xCopy dan ClickOnce
Deployment.
Kehandalan • Menyediakan pengelolaan views secara dinamis, yaitu dengan
adanya catalog views, karena digantikannya sistem tabel
menjadi sistem katalog. Pengelolaan secara dinamis ini
memudahkan DBA untuk melakukan pengelolaan dalam DBMS
dan memecahkan permasalahan dengan adanya Dedicated
Administrative Console dan melakukan tuning.
• Mampu menyimpan dan memelihara mirror salinan basis data
dari server lain.
• Mengurangi beban kerja DBA.
• Upgrading dari versi sebelumnya tidak memerlukan migrasi
basis data.
• Availability dan recovery.
Keamanan Otentifikasi account system admin secara default dilakukan dengan
menggunakan metode Windows Authentication.
Kekurangan • Sangat mudah untuk melihat hubungan tabel, kendala, indeks,
prosedur yang tersimpan dalam basis data namun memicu sulit
untuk melihat.
• Pemicu mengeksekusi terlihat untuk aplikasi klien. Mereka
tidak terlihat atau dapat ditelusuri dalam kode debug.
161
• Sulit untuk mengikuti logika mereka karena mereka dapat
dipecat sebelum atau setelah memasukkan basis data/update
terjadi.
• Sangat mudah untuk melupakan tentang memicu dan jika tidak
ada dokumentasi akan sulit untuk mengetahui untuk
pengembang baru untuk eksistensi mereka.
• Pemicu dijalankan setiap kali ketika bidang basis data
diperbarui dan itu adalah overhead pada sistem. Itu membuat
sistem berjalan lebih lambat.
Keterbatasan Karena berlisensi gratis maka terdapat keterbatasan, seperti:
• Fasilitas: tidak disertakan server agent dan data transformation
tools. Namun hal tersebut bisa teratasi dengan menambah
database tools dengan mengunduhnya di:
http://go.microsoft.com/fwlink/?LinkId=65111
• Pengunaan: hanya mendukung satu prosesor, memori untuk
buffer pool dibatasi hingga 1GB dan ukuran maksimal basis
data dibatasi sampai 4GB saja berlaku untuk file penyimpanan
data, dan tidak berlaku untuk ukuran file log basis data.
Kemudian, jumlah basis data yang bisa dihubungkan ke satu
server yang menjalankan SQL Server 2005 Express Edition
juga tidak dibatasi. Yang dibatasi adalah pada jumlah instance
SQL Server 2005 Express Edition yang bisa berjalan di atas
satu server yaitu 16 instance.
Biaya Bebas biaya/gratis.
Berikut ini merupakan perbandingan antara Microsoft SQL Server 2005 Express Edition
dengan Oracle 10g dan MySQL, yaitu sebagai berikut:
162
Tabel 3.7 Perbandingan antara Microsoft SQL Server 2005 Express Edition dengan
Oracle 10g dan MySQL
1. Perbandingan: Fitur
Fitur SQL Server 2005
Express Edition Oracle 10g MySQL
Mendukung T-SQL PL SQL MySQL dialect
Indexes B Tree Indexes B Tree Indexes, bitmap
indexes, patinioned
indexes, function based
indexes, domain
indexes
Tidak mendukung
Tabel Tabel relasional,
temporary table
tabel relational, object
table, temporary table
Tidak mendukung
Trigger After trigger instead of
triger
Before triggers, after
triggers, INSTEAD OF
Procedure T-SQL statement PL/SQL Statement,
Java methods, third
Generation language
(3GL routines)
MySQL dialect
Array Tidak mendukung Mendukung Tidak mendukung
2. Perbandingan: Platform
SQL Sever 2005 Express Edition Oracle 10g MYSQL
Berbasis Windows,
seperti:
• Windows 9x
• Windows NT
• Windows 2000
Berbasis Windows, seperti:
• Sistem berbasis AIX
• Compaq Tru 64 UNIX
• HP LINUX Intel
• Sun-Solaris
Berbasis Windows, seperti:
• Sistem berbasis AIX
• Sistem HP-UX, Linux
Intel
• Sun-Solaris
163
3. Perbandingan: Perangkat Lunak
SQL Sever 2005 Express Edition Oracle 10g MYSQL
• OS minimal Windows
2000 SP4, XP SP1,
2003 SP1 atau Windows
Vista
• Windows Installer 3.1
untuk 2000 dan XP
• Microsoft .NET 2.0
Untuk platform berbasis
Windows, menggunakan:
• Windows 2000
• Windows NT 4.0
service pack 5
• Windows XP
Untuk platform berbasis
Windows, menggunakan:
• Windows 95
• Windows 98
• Windows NT
• Windows 2000
• Windows 2003
4. Perbandingan: Perangkat Keras
Aspek SQL Sever 2005 Express Edition Oracle 10g MySQL
Prosesor Komputer dengan Intel atau
kompatibel Pentium III
600MHz atau prosesor yang
lebih cepat
Komputer dengan
Intel Pentium III
1,66MHz prosesor
atau lebih tinggi
Komputer dengan
Intel Pentium
1,66MHz atau
lebih tinggi
Memori
Minimal RAM 192MB Minimal RAM
128MB
Minimal RAM
128MB
Hard disk
Ruang hard disk yang
tersedia sebesar 525MB
4,7GB untuk
Oracle Home
Drive, FAT
Ruang hard disk
yang tersedia
sebesar 100MB
5. Perbandingan: Harga
SQL Sever 2005 Express Edition Oracle 10g MySQL
Gratis untuk download,
mendistribusikan, dan
menyimpan
S15.000-$40.000 Open source/free software, di
bawah persetujuan General
Public License
164
Kesimpulan dari perbandingan di atas adalah ketiga DBMS tersebut memiliki kelebihan
dan kekurangan masing-masing dan dapat digunakan untuk membangun sistem yang
efisien. Namun, alasan penulis menggunakan SQL Server 2005 Express Edition adalah:
a. SQL Server 2005 Express Edition mendukung store procedured.
b. SQL Server 2005 Express Edition merupakan tools pengelolaan gratis dan lebih
mudah diinstal, digunakan, dan diatur penggunaannya.
3.2.4 Perancangan Basis Data Fisikal
Berikut ini merupakan langkah-langkah dalam perancangan basis data fisikal, yaitu
sebagai berikut:
3.2.4.a Penerjemah Model Data Logikal Global Untuk DBMS Target
Berikut ini merupakan langkah-langkah penerjemah model data logikal untuk DBMS
target, yaitu sebagai berikut:
1. Perancangan Relasi Dasar
a. MsLogin
Domain IdLogin: fixed length character string, length 8
Domain Password: variable length character string, length 10
Domain Status: variable length character string, length 15
MsLogin (
IdLogin IdLogin NOT NULL,
Password Password NOT NULL,
Status Status NOT NULL,
PRIMARY KEY (IdLogin));
165
b. KodePos
Domain KodePos: fixed length character string, length 5
Domain Kota: variable length character string, length 20
KodePos (
KodePos KodePos NOT NULL,
Kota Kota NOT NULL,
PRIMARY KEY (KodePos));
c. MsPasien
Domain NIP: fixed length character string, length 10
Domain Nama: variable length character string, length 30
Domain NoIdentitas: variable length character string, length 20
Domain TmptLhr: variable length character string, length 20
Domain TglLhr: datetime
Domain JnsKlmn: single character, must be one of ‘L’, ‘P’
Domain Agama: variable length character string, length 10
Domain GolDarah: variable length character string, length 3
Domain StatKawin: variable length character string, length 15
Domain Alamat: variable length character string, length 50
Domain KodePos: fixed length character string, length 5
Domain Pekerjaan: variable length character string, length 10
MsPasien (
NIP NIP NOT NULL,
Nama Nama NOT NULL,
166
NoIdentitas NoIdentitas
TmptLhr TmptLhr NOT NULL,
TglLhr TglLhr NOT NULL,
JnsKlmn JnsKlmn NOT NULL DEFAULT ‘L’,
Agama Agama NOT NULL,
GolDarah GolDarah NOT NULL,
StatKawin StatKawin NOT NULL,
Alamat Alamat NOT NULL,
KodePos KodePos NOT NULL,
Pekerjaan Pekerjaan NOT NULL,
PRIMARY KEY (NIP),
FOREIGN KEY (KodePos) REFERENCES KodePos (KodePos) ON UPDATE
CASCADE ON DELETE NO ACTION);
d. TelpPasien
Domain TelpPasien: variable length character string, length 15
Domain NIP: fixed length character string, length 10
TelpPasien (
TelpPasien TelpPasien NOT NULL,
NIP NIP NOT NULL,
PRIMARY KEY (TelpPasien),
FOREIGN KEY (NIP) REFERENCES MsPasien (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION);
167
e. MsDokter
Domain KdDokter: fixed length character string, length 5
Domain NamaDok: variable length character string, length 30
Domain TmptLhrDok: variable length character string, length 20
Domain TglLhrDok: datetime
Domain JnsKlmnDok: single character, must be one of ‘L’, ‘P’
Domain AgamaDok: variable length character string, length 10
Domain StatKawinDok: variable length character string, length 15
Domain AlamatDok: variable length character string, length 50
Domain KodePos: fixed length character string, length 5
Domain BiayaDok: numeric
Domain GajiDok: numeric
Domain KdSpesialis: fixed length character string, length 5
Domain KdJabatan: fixed length character string, length 5
Domain KdJdwlDokter: fixed length character string, length 5
Domain IdLogin: fixed length character string, length 8
MsDokter (
KdDokter KdDokter NOT NULL,
NamaDok NamaDok NOT NULL,
TmptLhrDok TmptLhrDok NOT NULL,
TglLhrDok TglLhrDok NOT NULL,
JnsKlmnDok JnsKlmnDok NOT NULL DEFAULT ‘L’,
AgamaDok AgamaDok NOT NULL,
StatKawinDok StatKawinDok NOT NULL,
168
AlamatDok AlamatDok NOT NULL,
KodePos KodePos NOT NULL,
BiayaDok BiayaDok NOT NULL,
GajiDok GajiDok NOT NULL,
KdSpesialis KdSpesialis NOT NULL,
KdJabatan KdJabatan NOT NULL,
KdJdwlKary: KdJdwlKary NOT NULL,
IdLogin IdLogin NOT NULL,
PRIMARY KEY (KdDokter),
FOREIGN KEY (KodePos) REFERENCES KodePos (KodePos) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdSpesialis) REFERENCES MsSpesialis (KdSpesialis) ON
UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdJabatan) REFERENCES MsJabatan (KdJabatan) ON
UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdJdwlDokter) REFERENCES MsJdwlDokter (KdJdwlDokter)
ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (IdLogin) REFERENCES MsLogin (IdLogin) ON UPDATE
CASCADE ON DELETE NO ACTION);
f. TelpDok
Domain TelpDok variable length character string, length 15
Domain KdDokter: fixed length character string, length 5
TelpDok (
169
TelpDok TelpDok NOT NULL,
KdDokter KdDokter NOT NULL,
PRIMARY KEY (TelpDok),
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION);
g. MsSpesialis
Domain KdSpesialis: fixed length character string, length 5
Domain Spesialis: variable length character string, length 20
KdSpesialis (
KdSpesialis KdSpesialis NOT NULL,
Spesialis Spesialis NOT NULL,
PRIMARY KEY (KdSpesialis));
h. MsKaryawan
Domain KdKary: fixed length character string, length 5
Domain NamaKary: variable length character string, length 30
Domain TmptLhrKary: variable length character string, length 20
Domain TglLhrKary: datetime
Domain JnsKlmnKary: single character, must be one of ‘L’, ‘P’
Domain AgamaKary: variable length character string, length 10
Domain StatKawinKary: variable length character string, length 15
Domain StatPendiKary: variable length character string, length 10
Domain AlamatKary: variable length character string, length 50
170
Domain KodePos: fixed length character string, length 5
Domain GajiKary: numeric
Domain KdJabatan: fixed length character string, length 5
Domain KdJdwlKary: fixed length character string, length 5
Domain IdLogin: fixed length character string, length 8
MsKaryawan (
KdKary KdKary NOT NULL,
NamaKary NamaKary NOT NULL,
TmptLhrKary TmptLhrKary NOT NULL,
JnsKlmnKary JnsKlmnKary NOT NULL DEFAULT ‘L’,
AgamaKary AgamaKary NOT NULL,
StatKawinKary StatKawinKary NOT NULL,
StatPendiKary StatPendiKary NOT NULL,
AlamatKary AlamatKary NOT NULL,
KodePos KodePos NOT NULL,
GajiKary GajiKary NOT NULL,
KdJabatan KdJabatan NOT NULL,
KdJdwlKary KdJdwlKary NOT NULL,
IdLogin IdLogin NOT NULL,
PRIMARY KEY (KdKary),
FOREIGN KEY (KodePos) REFERENCES KodePos (KodePos) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdJabatan) REFERENCES MsJabatan (KdJabatan) ON
UPDATE CASCADE ON DELETE NO ACTION,
171
FOREIGN KEY (KdJdwlKary) REFERENCES MsJdwlKary (KdJdwlKary) ON
UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (IdLogin) REFERENCES MsLogin (IdLogin) ON UPDATE
CASCADE ON DELETE NO ACTION);
i. TelpKary
Domain TelpKary variable length character string, length 15
Domain KdKary: fixed length character string, length 5
TelpKary (
TelpKary TelpKary NOT NULL,
KdKary KdKary NOT NULL,
PRIMARY KEY (TelpKary),
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION);
j. MsJabatan
Domain KdJabatan: fixed length character string, length 5
Domain NamaJabatan: variable length character string, length 30
KdJabatan (
KdJabatan KdJabatan NOT NULL,
NamaJabatan NamaJabatan NOT NULL,
PRIMARY KEY (KdJabatan));
172
k. MsObat
Domain KdObat: fixed length character string, length 8
Domain NamaObat: variable length character string, length 30
Domain Kemasan: variable length character string, length 10
Domain Isi: integer
Domain QtyObatS: integer
Domain HargaObat: numeric
Domain KdJenisObat: fixed length character string, length 8
MsObat (
KdObat KdObat NOT NULL,
NamaObat NamaObat NOT NULL,
Kemasan Kemasan NOT NULL,
Isi Isi NOT NULL,
QtyObatS QtyObatS
HargaObat HargaObat NOT NULL,
KdJenisObat KdJenisObat NOT NULL,
PRIMARY KEY (KdObat),
FOREIGN KEY (KdJenisObat) REFERENCES MsJenisObat (KdJenisObat) ON
UPDATE CASCADE ON DELETE NO ACTION);
l. MsJenisObat
Domain KdJenisObat: fixed length character string, length 8
Domain JenisObat: variable length character string, length 30
KdJenisObat (
173
KdJenisObat KdJenisObat NOT NULL,
JenisObat JenisObat NOT NULL,
PRIMARY KEY (KdJenisObat));
m. MsPemasok
Domain KdPemasok: fixed length character string, length 8
Domain NamaPemasok: variable length character string, length 30
Domain Alamat: variable length character string, length 50
Domain KodePos: fixed length character string, length 5
MsPemasok (
KdPemasok KdPemasok NOT NULL,
NamaPemasok NamaPemasok NOT NULL,
Alamat Alamat NOT NULL,
KodePos KodePos NOT NULL,
PRIMARY KEY (KdPemasok),
FOREIGN KEY (KodePos) REFERENCES KodePos (KodePos) ON UPDATE
CASCADE ON DELETE NO ACTION);
n. TelpPemasok
Domain TelpPemasok variable length character string, length 15
Domain KdPemasok: fixed length character string, length 5
TelpPemasok (
TelpPemasok TelpPemasok NOT NULL,
KdPemasok KdPemasok NOT NULL,
174
PRIMARY KEY (TelpPemasok),
FOREIGN KEY (KdPemasok) REFERENCES MsPemasok (KdPemasok) ON
UPDATE CASCADE ON DELETE NO ACTION);
o. Resep
Domain KdResep: fixed length character string, length 8
Domain TglResep: datetime
Domain KdDokter: fixed length character string, length 5
MsResep (
KdResep KdResep NOT NULL,
TglResep TglResep NOT NULL,
KdDokter KdDokter NOT NULL,
PRIMARY KEY (KdResep),
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION);
p. DetailResep
Domain NIP: fixed length character string, length 10
Domain KdResep: fixed length character string, length 8
Domain KdObat: fixed length character string, length 8
Domain DosisObat: variable length character string, length 15
Domain QtyObatResep: integer
DetailResep (
NIP NIP NOT NULL,
175
KdResep KdResep NOT NULL,
KdObat KdObat NOT NULL,
DosisObat DosisObat NOT NULL,
QtyObatResep QtyObatResep NOT NULL,
PRIMARY KEY (NIP, KdResep, KdObat),
FOREIGN KEY (NIP) REFERENCES MsPasien (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (KdResep) REFERENCES MsResep (KdResep) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION);
q. RekamMedis
Domain NoRekam: fixed length character string, length 8
Domain TglRekam: datetime
Domain JamRekam: datetime
Domain UmurPasien: integer
Domain NIP: fixed length character string, length 10
Domain KdDokter: fixed length character string, length 5
Domain KdKary: fixed length character string, length 5
Domain KdResep: fixed length character string, length 8
RekamMedis (
NoRekam NoRekam NOT NULL,
TglRekam TglRekam NOT NULL,
176
JamRekam JamRekam NOT NULL,
UmurPasien UmurPasien NOT NULL,
NIP NIP NOT NULL,
KdDokter KdDokter NOT NULL,
KdKary KdKary NOT NULL,
KdResep KdResep NOT NULL,
PRIMARY KEY (NoRekam)
FOREIGN KEY (NIP) REFERENCES MsPasien (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdResep) REFERENCES MsResep (KdResep) ON UPDATE
CASCADE ON DELETE NO ACTION);
r. DetailRekamMedis
Domain KdObat: fixed length character string, length 8
Domain NoRekam: fixed length character string, length 8
Domain Keluhan: variable length character string, length 100
Domain Penyakit: variable length character string, length 30
Domain Tindakan: variable length character string, length 50
DetailRekamMedis (
KdObat KdObat NOT NULL,
177
NoRekam NoRekam NOT NULL,
Keluhan Keluhan NOT NULL,
Penyakit Penyakit NOT NULL,
Tindakan Tindakan NOT NULL,
PRIMARY KEY (KdObat, NoRekam),
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NoRekam) REFERENCES RekamMedis (NoRekam) ON
UPDATE CASCADE ON DELETE NO ACTION);
s. PasienBerobat
Domain NoBerobat: fixed length character string, length 8
Domain TglBerobat: datetime
Domain JamBerobat: datetime
Domain UmurPasien: integer
Domain Pelayanan: variable length character string, length 15
Domain NIP: fixed length character string, length 10
Domain KdDokter: fixed length character string, length 5
PasienBerobat (
NoBerobat NoBerobat NOT NULL,
TglBerobat TglBerobat NOT NULL,
JamBerobat JamBerobat NOT NULL,
UmurPasien UmurPasien NOT NULL,
Pelayanan Pelayanan NOT NULL,
178
NIP NIP NOT NULL,
KdDokter KdDokter NOT NULL,
PRIMARY KEY (NoBerobat),
FOREIGN KEY (NIP) REFERENCES MsPasien (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION);
t. Pembelian
Domain NoPembelian: fixed length character string, length 8
Domain TglPembelian: datetime
Domain KdKary: fixed length character string, length 5
Domain NoFaktur: fixed length character string, length 8
Pembelian (
NoPembelian NoPembelian NOT NULL,
TglPembelian TglPembelian NOT NULL,
KdKary KdKary NOT NULL,
NoFaktur NoFObat NOT NULL,
PRIMARY KEY (NoPembelian),
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NoFaktur) REFERENCES FakturBeli (NoFaktur) ON UPDATE
CASCADE ON DELETE NO ACTION);
179
u. DetailPembelian
Domain KdObat: fixed length character string, length 8
Domain NoPembelian: fixed length character string, length 8
Domain Status: variable length character string, length 15
DetailPembelian (
KdObat KdObat NOT NULL,
NoPembelian NoPembelian NOT NULL,
Status Status NOT NULL,
PRIMARY KEY (KdObat, NoPembelian),
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NoPembelian) REFERENCES Pembelian (NoPembelian) ON
UPDATE CASCADE ON DELETE NO ACTION);
v. Penjualan
Domain NoPenjualan: fixed length character string, length 8
Domain TglPenjualan: datetime
Domain KdKary: fixed length character string, length 5
Penjualan (
NoPenjualan NoPenjualan NOT NULL,
TglPenjualan TglPenjualan NOT NULL,
KdKary KdKary NOT NULL,
PRIMARY KEY (NoPenjualan),
180
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION);
w. DetailPenjualan
Domain KdObat: fixed length character string, length 8
Domain KdResep: fixed length character string, length 8
Domain NoPenjualan: fixed length character string, length 8
Domain QtyObatK: integer
DetailPenjualan (
KdObat KdObat NOT NULL,
KdResep KdResep NOT NULL,
NoPenjualan NoPenjualan NOT NULL,
QtyObatk QtyObatK
PRIMARY KEY (KdObat, KdResep, NoPenjualan),
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdResep) REFERENCES Resep (KdResep) ON UPDATE
CASCADE ON DELETE NO ACTION
FOREIGN KEY (NoPenjualan) REFERENCES Penjualan (NoPenjualan) ON
UPDATE CASCADE ON DELETE NO ACTION);
x. PembayaranPasien
Domain NoPembayaran: fixed length character string, length 8
Domain Tanggal: datetime
181
Domain Jam: datetime
Domain BiayaAdmin: numeric
Domain NIP: fixed length character string, length 10
Domain KdDokter: fixed length character string, length 5
Domain KdKary: fixed length character string, length 5
Domain KdObat: fixed length character string, length 8
Domain KdResep: fixed length character string, length 8
Domain NoBerobat: fixed length character string, length 8
PembayaranPasien (
NoPembayaran NoPembayaran NOT NULL,
Tanggal Tanggal NOT NULL,
Jam Jam NOT NULL,
BiayaAdmin BiayaAdmin NOT NULL,
NIP NIP NOT NULL,
KdDokter KdKary NOT NULL,
KdKary KdKary NOT NULL,
KdObat KdObat NOT NULL,
KdResep KdResep NOT NULL,
NoBerobat NoBerobat NOT NULL,
PRIMARY KEY (NoPembayaran),
FOREIGN KEY (NIP) REFERENCES MsPasien (NIP) ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION,
182
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdResep) REFERENCES Resep (KdResep) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NoBerobat) REFERENCES PasienBerobat (NoBerobat) ON
UPDATE CASCADE ON DELETE NO ACTION);
y. FakturBeli
Domain NoFaktur: fixed length character string, length 8
Domain TglFaktur: datetime
Domain HargaObatB: numeric
Domain JthTempo: datetime
Domain KdKary: fixed length character string, length 5
Domain KdPemasok: fixed length character string, length 8
FakturBeli (
NoFaktur NoFaktur NOT NULL,
TglFaktur TglFaktur NOT NULL,
HargaObatB HargaObatB NOT NULL,
JthTempo JthTempo NOT NULL,
KdKary KdKary NOT NULL,
KdPemasok KdPemasok NOT NULL,
PRIMARY KEY (NoFObat),
183
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION,
FOREIGN KEY (KdPemasok) REFERENCES MsPemasok (KdPemasok) ON
UPDATE CASCADE ON DELETE NO ACTION);
z. DetailFakturBeli
Domain KdObat: fixed length character string, length 8
Domain NoFaktur: fixed length character string, length 8
Domain QtyObatB: integer
DetailFakturBeli (
KdObat KdObat NOT NULL,
NoFObat NoFObat NOT NULL,
QtyObatB QtyObatB
PRIMARY KEY (KdObat),
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION);
FOREIGN KEY (NoFaktur) REFERENCES FakturBeli (NoFaktur) ON UPDATE
CASCADE ON DELETE NO ACTION);
aa. ReturPembelian
Domain NoRetur: fixed length character string, length 8
Domain TglRetur: datetime
Domain KetR: variable length character string, length 15
Domain KdPemasok: fixed length character string, length 8
184
Domain NoPembelian: fixed length character string, length 8
ReturPembelian (
NoRetur NoRetur NOT NULL,
TglRetur TglRetur NOT NULL,
KetR KetR NOT NULL,
KdPemasok KdPemasok NOT NULL,
NoPembelian NoPembelian NOT NULL,
PRIMARY KEY (NoRetur),
FOREIGN KEY (KdPemasok) REFERENCES MsPemasok (KdPemasok) ON
UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NoPembelian) REFERENCES Pembelian (NoPembelian) ON
UPDATE CASCADE ON DELETE NO ACTION);
bb. DetailReturPembelian
Domain KdObat: fixed length character string, length 8
Domain NoRetur: fixed length character string, length 8
Domain QtyObatR: integer
DetailReturPembelian (
KdObat KdObat NOT NULL,
NoRetur NoRetur NOT NULL,
QtyObatR QtyObatR
PRIMARY KEY (KdObat, NoRetur),
FOREIGN KEY (KdObat) REFERENCES MsObat (KdObat) ON UPDATE
CASCADE ON DELETE NO ACTION,
185
FOREIGN KEY (NoRetur) REFERENCES ReturPembelian (NoRetur) ON
UPDATE CASCADE ON DELETE NO ACTION);
cc. MsJdwlDokter
Domain KdJdwlDokter: fixed length character string, length 5
Domain HariPraktek: fixed length character string, length 6
Domain JamPraktek: datetime
MsJdwlDokter (
KdJdwlDokter KdJdwlDokter NOT NULL,
HariPraktek HariPraktek NOT NULL,
JamPraktek JamPraktek NOT NULL,
PRIMARY KEY (KdJdwlDokter));
dd. MsJdwlKaryawan
Domain KdJdwlKary: fixed length character string, length 5
Domain HariKerja: fixed length character string, length 6
Domain JamKerja: datetime
MsJdwlKaryawan (
KdJdwlKary KdJdwlKary NOT NULL,
HariKerja HariKerja NOT NULL,
JamKerja JamKerja NOT NULL,
PRIMARY KEY (KdJdwlKary));
186
ee. AbsensiDokter
Domain KdAbsenDok: fixed length character string, length 8
Domain TglAbsenDok: datetime
Domain JamPraktek: datetime
Domain KehadiranDok: variable length character string, length 10
Domain KetAbsenDok: variable length character string, length 20
Domain KdDokter: fixed length character string, length 5
AbsensiDokter (
KdAbsenDok KdAbsenDok NOT NULL,
TglAbsenDok TglAbsenDok NOT NULL,
JamPraktek JamPraktek NOT NULL,
KehadiranDok KehadiranDok NOT NULL,
KetAbsenDok KetAbsenDok NOT NULL,
KdDokter KdDokter NOT NULL,
PRIMARY KEY (KdAbsenDok),
FOREIGN KEY (KdDokter) REFERENCES MsDokter (KdDokter) ON UPDATE
CASCADE ON DELETE NO ACTION);
ff. AbsensiKaryawan
Domain KdAbsenKary: fixed length character string, length 8
Domain TglAbsenKary: datetime
Domain JamKerja: datetime
Domain KehadiranKary: variable length character string, length 10
187
Domain KetAbsenKary: variable length character string, length 20
Domain KdKary: fixed length character string, length 5
AbsensiKaryawan (
KdAbsenKary KdAbsenKary NOT NULL,
TglAbsenKary TglAbsenKary NOT NULL,
JamKerja JamKerja NOT NULL,
KehadiranKary KehadiranKary NOT NULL,
KetAbsenKary KetAbsenKary NOT NULL,
KdKary KdKary NOTNULL,
PRIMARY KEY (KdAbsenKary),
FOREIGN KEY (KdKary) REFERENCES MsKaryawan (KdKary) ON UPDATE
CASCADE ON DELETE NO ACTION);
2. Merancangan Representasi dari Data yang Diturunkan
Data Turunan adalah atribut yang nilai datanya diketahui dengan mengetahui nilai dari
atribut lain. Data turunan antara lain sebagai berikut:
a. BiayaResep didapat dari hasil perkalian antara QtyObatResep dengan HargaObat
pada tabel MsObat dan DetailResep.
b. TotalBiaya didapat dari hasil penjumlahan BiayaDok, BiayaResep, BiayaAdmin
pada tabel PembayaranPasien.
c. TtlHargaObat didapat dari hasil perkalian QtyObatB dengan HargaObatB pada tabel
FakturBeli.
d. PPN, merupakan hasil perkalian 10% dengan hasil penjumlahan TtlHargaObat pada
tabel FakturBeli.
188
3. Merancang Enterprise Constraint
Setelah melakukan analisis, tidak ditemukan derived data pada model data logikal yang
ada.
3.2.4.b Perancangan Representasi Fisikal
Berikut ini merupakan langkah-langkah dalam perancangan representasi fisikal, yaitu
sebagai berikut:
1. Menganalisis Transaksi
Berikut analisa transaksi-transaksi yang penting, yaitu:
a. Memasukkan/Ubah data Login yang ada di klinik
b. Memasukkan/Ubah data Pasien yang ada di klinik
c. Memasukkan/Ubah data Kode Pos yang ada di klinik
d. Memasukkan/Ubah data Dokter yang praktek di klinik
e. Memasukkan/Ubah data Spesialis dari dokter di klinik
f. Memasukkan/Ubah data Karyawan yang bekerja di klinik
g. Memasukkan/Ubah data Jabatan yang ada di klinik
h. Memasukkan/Ubah data Obat yang ada di klinik
i. Memasukkan/Ubah data Jenis Obat yang ada di klinik
j. Memasukkan/Ubah data Pemasok yang mensuplai obat dan alat medis
k. Memasukkan/Ubah data Resep yang ada di klinik
l. Tampilkan rincian Resep
m. Memasukkan/Ubah data Rekam Medis yang ada di klinik
n. Tampilkan rincian Rekam Medis
189
o. Memasukkan/Ubah data Pasien Berobat yang ada di klinik
p. Memasukkan/Ubah data Pembelian yang berlangsung di klinik
q. Tampilkan rincian Pembelian
r. Memasukkan/Ubah data Penjualan yang berlangsung di klinik
s. Tampilkan rincian Penjualan
t. Memasukkan/Ubah data Pembayaran Pasien yang berlangsung di klinik
u. Memasukkan/Ubah data Faktur Beli yang diterima klinik
v. Tampilkan rincian Faktur Beli
w. Memasukkan/Ubah data Retur Pembelian yang berlangsung di klinik
x. Tampilkan rincian Retur Pembelian
y. Memasukkan/Ubah data Jadwal Praktek Dokter di klinik
z. Memasukkan/Ubah data Jadwal Kerja Karyawan yang bekerja di klinik
aa. Memasukkan/Ubah data Absensi Dokter yang praktek di klinik
bb. Memasukkan/Ubah data Absensi Karyawan yang bekerja di klinik
Tabel 3.8 Referensi Silang Analisa Transaksi
Transaksi/Relasi A B C D
I R U D I R U D I R U D I R U D
MsLogin X X X X
MsPasien X X X
KodePos X X X X X
MsDokter X X X X
MsKaryawan X
190
RekamMedis X
MsSpesialis X
MsJabatan X
a. Memasukkan/Ubah data Login yang ada di klinik
b. Memasukkan/Ubah data Pasien yang ada di klinik
c. Memasukkan/Ubah data Kode Pos yang ada di klinik
d. Memasukkan/Ubah data Dokter yang praktek di klinik
Transaksi/Relasi E F G H
I R U D I R U D I R U D I R U D
MsLogin X
KodePos X
MsKaryawan X X X
MsObat X X X
MsJenisObat X
MsSpesialis X X X
MsJabatan X X X X
e. Memasukkan/Ubah data Spesialis dari dokter di klinik
f. Memasukkan/Ubah data Karyawan yang bekerja di klinik
g. Memasukkan/Ubah data Jabatan yang ada di klinik
h. Memasukkan/Ubah data Obat yang ada di klinik
191
Transaksi/Relasi I J K L
I R U D I R U D I R U D I R U D
MsPasien X
KodePos X
MsDokter X
Resep X X X X
DetailResep X X X X
MsObat X
MsPemasok X X X
MsJenisObat X X X
i. Memasukkan/Ubah data Jenis Obat yang ada di klinik
j. Memasukkan/Ubah data Pemasok yang mensuplai obat dan alat medis
k. Memasukkan/Ubah data Resep yang ada di klinik
l. Tampilkan rincian Resep
Transaksi/Relasi M N O P
I R U D I R U D I R U D I R U D
MsKaryawan X X X
MsPasien X X
MsDokter X X
PasienBerobat X X X
Resep X
RekamMedis X X X X
192
DetailRekamMedis X X X
MsObat X
Pembelian X X X
m. Memasukkan/Ubah data Rekam Medis yang ada di klinik
n. Tampilkan rincian Rekam Medis
o. Memasukkan/Ubah data Pasien Berobat yang ada di klinik
p. Memasukkan/Ubah data Pembelian yang berlangsung di klinik
Transaksi/Relasi Q R S T
I R U D I R U D I R U D I R U D
MsKaryawan X X
MsPasien X
Penjualan X X X X
DetailPenjualan X X X
MsObat X X
MsJenisObat X
Resep X
DetailResep X
Pembelian X
DetailPembelian X X X
FakturBeli X
DetailFakturBeli X
PembayaranPasien X X X
193
q. Tampilkan rincian Pembelian
r. Memasukkan/Ubah data Penjualan yang berlangsung di klinik
s. Tampilkan rincian Penjualan
t. Memasukkan/Ubah data Pembayaran Pasien yang berlangsung di klinik
Transaksi/Relasi U V W X
I R U D I R U D I R U D I R U D
MsObat X X
MsJenisObat X X
DetailFakturBeli X X X
MsKaryawan X X
MsPemasok X X
FakturBeli X X X X
Pembelian X
ReturPembelian X X X X
DetailReturPembelian X X X
u. Memasukkan/Ubah data Faktur Beli yang diterima klinik
v. Tampilkan rincian Faktur Beli
w. Memasukkan/Ubah data Retur Pembelian yang berlangsung di klinik
x. Tampilkan rincian Retur Pembelian
Transaksi/Relasi Y Z AA BB
I R U D I R U D I R U D I R U D
MsKaryawan X X
194
MsJdwlKaryawan X X X
MsDokter X X
MsJdwlDokter X X X
AbsensiDokter X X X
AbsensiKaryawan X X X
y. Memasukkan/Ubah data Jadwal Praktek Dokter di klinik
z. Memasukkan/Ubah data Jadwal Kerja Karyawan yang bekerja di klinik
aa. Memasukkan/Ubah data Absensi Dokter yang praktek di klinik
bb. Memasukkan/Ubah data Absensi Karyawan yang bekerja di klinik
2. Memilih Organisasi File
Saat ini Microsoft SQL SERVER 2005 Express Edition sudah memiliki fasilitas
organisasi file secara otomatis menggunakan organisasi file dengan (Balanced Tree) B-
Tree.
195
3. Pemilihan Index
Berikut adalah index yang digunakan:
Tabel 3.9 Index
Entity Key Index Nama Index Jenis Index
MsLogin IdLogin IdLoginIdx C
KodePos KodePos KodePosIdx C
MsPasien NIP NIPIdx NC
KodePos KodePosMsPasienIdx
TelpPasien TelpPasien TelpPasienIdx NC
NIP NIPTelpPasienIdx
MsDokter KdDokter KdDokterIdx NC
KodePos KodePosMsDokterIdx
KdSpesialis KdSpesialisMsDokterIdx
KdJabatan KdJabatanMsDokterIdx
KdJdwlDokter KdJdwlDokterMsDokterIdx
IdLogin IdLoginMsDokterIdx
TelpDok TelpDok TelpDokIdx NC
KdDokter KdDokterTelpDokIdx
196
MsSpesialis KdSpesialis KdSpesialisIdx C
MsKaryawan KdKary KdKaryIdx NC
KodePos KodePosMsKaryIdx
KdJabatan KdJabatanMsKaryIdx
KdJdwlKary KdJdwlKaryMsDokterIdx
IdLogin IdLoginMsKaryIdx
TelpKary TelpKary TelpKaryIdx NC
KdKary KdKaryTelpKaryIdx
MsJabatan KdJabatan KdJabatanIdx C
MsObat KdObat KdObatIdx NC
KdJenisObat KdJenisObatMsObatIdx
MsJenisObat KdJenisObat KdJenisObatIdx C
MsPemasok KdPemasok KdPemasokIdx NC
KodePos KodePosMsPemasokIdx
TelpPemasok TelpPemasok TelpPemasokIdx NC
KdPemasok KdPemasokTelpPemasokIdx
Resep KdResep KdResepIdx NC
KdDokter KdDokterResepIdx
DetailResep NIP NIPDetailResepIdx NC
197
KdResep KdResepDetailResepIdx
KdObat KdObatDetailResepIdx
RekamMedis NoRekam NoRekamIdx NC
NIP NIPRekamMedisIdx
KdDokter KdDokterRekamMedisIdx
KdKary KdKaryRekamMedisIdx
KdResep KdResepRekamMedisIdx
DetailRekamMedis KdObat KdObatDetailRekamMedisIdx NC
NoRekam NoRekamDetailRekamMedisIdx
PasienBerobat NoBerobat NoBerobatIdx NC
NIP NIPPasienBerobatIdx
KdDokter KdDokterPasienBerobatIdx
Pembelian NoPembelian NoPembelianIdx NC
KdKary KdKaryPembelianIdx
NoFaktur NoFakturPembelianIdx
DetailPembelian KdObat KdObatDetailPembelianIdx NC
NoPembelian NoPembelianDetailPembelianIdx
Penjualan NoPenjualan NoPenjualanIdx NC
198
KdKary KdKaryPenjualanIdx
DetailPenjualan KdObat KdObatDetailPenjualanIdx NC
KdResep KdResepDetailPenjualanIdx
NoPenjualan NoPenjualanDetailPenjualanIdx
PembayaranPasien NoPembayaran NoPembayaranIdx NC
NIP NIPPembayaranPasienIdx
KdDokter KdDokterPembayaranPasienIdx
KdKary KdKaryPembayaranPasienIdx
KdObat KdObatPembayaranPasienIdx
KdResep KdResepPembayaranPasienIdx
NoBerobat NoBerobatPembayaranPasienIdx
FakturBeli NoFaktur NoFakturIdx NC
KdKary KdKaryFakturBeliIdx
KdPemasok KdPemasokFakturBeliIdx
DetailFakturBeli KdObat KdObat DetailFakturBeliIdx NC
NoFaktur NoFakturDetailFakturBeliIdx
ReturPembelian NoRetur NoReturIdx NC
KdPemasok KdPemasokReturPembelianIdx
NoPembelian NoPembelianReturPembelianIdx
199
DetailReturPembelian KdObat KdObat DetailReturPembelianIdx NC
NoRetur NoRetur DetailReturPembelianIdx
MsJdwlDokter KdJdwlDokter KdJdwlDokterIdx C
MsJdwlKaryawan KdJdwlKary KdJdwlKaryIdx C
AbsensiDokter KdAbsenDok KdAbsenDokIdx NC
KdDokter KdDokterAbsensiDokterIdx
AbsensiKaryawan KdAbsenKary KdAbsenKaryIdx NC
KdKary KdKaryAbsensiDokterIdx
Keterangan:
a. C = Clustered
b. NC = Non Clustered
200
1. MsLogin
CREATE UNIQUE INDEX IdLoginIdx ON MsLogin (IdLogin)
2. KodePos
CREATE UNIQUE INDEX KodePosIdx ON KodePos (KodePos)
3. MsPasien
CREATE UNIQUE INDEX NIPIdx ON MsPasien (NIP)
CREATE UNIQUE INDEX KodePosMsPasienIdx ON MsPasien (KodePos)
4. TelpPasien
CREATE UNIQUE INDEX TelpPasienIdx ON TelpPasien (TelpPasien)
CREATE UNIQUE INDEX NIPTelpPasienIdx ON TelpPasien (NIP)
5. MsDokter
CREATE UNIQUE INDEX KdDokterIdx ON MsDokter (KdDokter)
CREATE UNIQUE INDEX KodePosMsDokterIdx ON MsDokter (KodePos)
CREATE UNIQUE INDEX KdSpesialisMsDokterIdx ON MsDokter
(KdSpesialis)
CREATE UNIQUE INDEX KdJabatanMsDokterIdx ON MsDokter (KdJabatan)
CREATE UNIQUE INDEX KdJdwlDokterMsDokterIdx ON MsDokter
(KdJdwlDokter)
CREATE UNIQUE INDEX IdLoginMsDokterIdx ON MsDokter (IdLogin)
201
6. TelpDok
CREATE UNIQUE INDEX TelpDokIdx ON TelpDok (TelpDok)
CREATE UNIQUE INDEX KdDokterTelpDokIdx ON TelpDok (KdDokter)
7. MsSpesialis
CREATE UNIQUE INDEX KdSpesialisIdx ON MsSpesialis (KdSpesialis)
8. MsKaryawan
CREATE UNIQUE INDEX KdKaryIdx ON MsKaryawan (KdKary)
CREATE UNIQUE INDEX KodePosMsKaryawanIdx ON MsKaryawan
(KodePos)
CREATE UNIQUE INDEX KdJabatanMsKaryawanIdx ON MsKaryawan
(KdJabatan)
CREATE UNIQUE INDEX KdJdwlKaryMsKaryawanIdx ON MsKaryawan
(KdJdwlKary)
CREATE UNIQUE INDEX IdLoginMsKaryawanIdx ON MsKaryawan (IdLogin)
9. TelpKary
CREATE UNIQUE INDEX TelpKaryIdx ON TelpKary (NIP)
CREATE UNIQUE INDEX KdKaryTelpKaryIdx ON TelpKary (KdKary)
10. MsJabatan
CREATE UNIQUE INDEX KdKaryawanIdx ON MsKaryawan (KdKaryawan)
202
11. MsObat
CREATE UNIQUE INDEX KdObatIdx ON MsObat (KdObat)
CREATE UNIQUE INDEX KdJenisObatMsObatIdx ON MsObat (KdJenisObat)
12. MsJenisObat
CREATE UNIQUE INDEX KdJenisObatIdx ON MsJenisObat (KdJenisObat)
13. MsPemasok
CREATE UNIQUE INDEX KdPemasokIdx ON MsPemasok (KdPemasok)
CREATE UNIQUE INDEX KodePosMsPemasokIdx ON MsPemasok (KodePos)
14. TelpPemasok
CREATE UNIQUE INDEX TelpPemasokIdx ON TelpPemasok (TelpPemasok)
CREATE UNIQUE INDEX KdPemasokTelpPemasokIdx ON TelpPemasok
(KdPemasok)
15. Resep
CREATE UNIQUE INDEX KdResepIdx ON Resep (KdResep)
CREATE UNIQUE INDEX KdDokterResepIdx ON Resep (KdDokter)
16. DetailResep
CREATE UNIQUE INDEX NIPDetailResepIdx ON DetailResep (NIP)
CREATE UNIQUE INDEX KdResepDetailResepIdx ON DetailResep (KdResep)
CREATE UNIQUE INDEX KdObatDetailResepIdx ON DetailResep (KdObat)
203
17. RekamMedis
CREATE UNIQUE INDEX NoRekamIdx ON RekamMedis (NoRekam)
CREATE UNIQUE INDEX NIPRekamMedisIdx ON RekamMedis (NIP)
CREATE UNIQUE INDEX KdDokterRekamMedis Idx ON RekamMedis
(KdDokter)
CREATE UNIQUE INDEX KdKaryRekamMedisIdx ON RekamMedis (KdKary)
CREATE UNIQUE INDEX KdResepRekamMedisIdx ON RekamMedis
(KdResep)
18. DetailRekamMedis
CREATE UNIQUE INDEX KdObatDetailRekamMedisIdx ON
DetailRekamMedis (KdObat)
CREATE UNIQUE INDEX NoRekamDetailRekamMedisIdx ON
DetailRekamMedis (NoRekam)
19. PasienBerobat
CREATE UNIQUE INDEX NoBerobatIdx ON PasienBerobat (NoBerobat)
CREATE UNIQUE INDEX NIPPasienBerobatIdx ON PasienBerobat (NIP)
CREATE UNIQUE INDEX KdDokterPasienBerobatIdx ON PasienBerobat
(KdDokter)
20. Pembelian
CREATE UNIQUE INDEX NoPembelianIdx ON Pembelian (NoPembelian)
CREATE UNIQUE INDEX KdKaryPembelianIdx ON Pembelian (KdKary)
204
CREATE UNIQUE INDEX NoFakturPembelianIdx ON Pembelian (NoFaktur)
21. DetailPembelian
CREATE UNIQUE INDEX KdObatDetailPembelianIdx ON DetailPembelian
(KdObat)
CREATE UNIQUE INDEX NoPembelianDetailPembelianIdx ON
DetailPembelian (NoPembelian)
22. Penjualan
CREATE UNIQUE INDEX NoPenjualanIdx ON Penjualan (NoPenjualan)
CREATE UNIQUE INDEX KdKaryPenjualanIdx ON Penjualan (KdKary)
23. DetailPenjualan
CREATE UNIQUE INDEX KdObatDetailPenjualanIdx ON DetailPenjualan
(KdObat)
CREATE UNIQUE INDEX KdResepDetailPenjualanIdx ON DetailPenjualan
(KdResep)
CREATE UNIQUE INDEX NoPenjualanDetailPenjualanIdx ON DetailPenjualan
(NoPenjualan)
24. PembayaranPasien
CREATE UNIQUE INDEX NoPembayaranIdx ON PembayaranPasien
(NoPembayaran)
205
CREATE UNIQUE INDEX NIPPembayaranPasienIdx ON PembayaranPasien
(NIP)
CREATE UNIQUE INDEX KdDokterPembayaranPasienIdx ON
PembayaranPasien (KdDokter)
CREATE$ UNIQUE INDEX KdKaryPembayaranPasienIdx ON
PembayaranPasien (KdKary)
CREATE$ UNIQUE INDEX KdObatPembayaranPasienIdx ON
PembayaranPasien (KdObat)
CREATE$ UNIQUE INDEX KdResepPembayaranPasienIdx ON
PembayaranPasien (KdResep)
CREATE UNIQUE INDEX NoBerobatPembayaranPasienIdx ON
PembayaranPasien (NoBerobat)
25. FakturBeli
CREATE UNIQUE INDEX NoFakturIdx ON FakturBeli (NoFaktur)
CREATE UNIQUE INDEX KdKaryFakturBeliIdx ON FakturBeli (KdKary)
CREATE UNIQUE INDEX KdPemasokFakturBeliIdx ON FakturBeli
(KdPemasok)
26. DetailFakturBeli
CREATE UNIQUE INDEX KdObatDetailFakturBeliIdx ON DetailFakturBeli
(KdObat)
CREATE UNIQUE INDEX NoFakturtDetailFakturBeliIdx ON DetailFakturBeli
(NoFaktur)
206
27. ReturPembelian
CREATE UNIQUE INDEX NoReturIdx ON ReturPembelian (NoRetur)
CREATE UNIQUE INDEX KdPemasokReturPembelianIdx ON ReturPembelian
(KdPemasok)
CREATE UNIQUE INDEX NoPembelianReturPembelianIdx ON ReturPembelian
(NoPembelian)
28. DetailReturPembelian
CREATE UNIQUE INDEX KdObatDetailReturPembelianIdx ON
DetailReturPembelian (KdObat)
CREATE UNIQUE INDEX NoReturDetailReturPembelianIdx ON
DetailReturPembelian (NoRetur)
29. MsJdwlDokter
CREATE UNIQUE INDEX KdJdwlDokterIdx ON MsJdwlDokter
(KdJdwlDokter)
30. MsJdwlKaryawan
CREATE UNIQUE INDEX KdJdwlKaryawanIdx ON MsJdwlKaryawan
(KdJdwlKaryawan)
31. AbsensiDokter
CREATE UNIQUE INDEX KdAbsenDokIdx ON AbsensiDokter (KdAbsenDok)
207
CREATE UNIQUE INDEX KdDokterAbsensiDokterIdx ON AbsensiDokter
(KdDokter)
32. AbsensiKaryawan
CREATE UNIQUE INDEX KdAbsenKaryIdx ON AbsensiKaryawan
(KdAbsenKary)
CREATE UNIQUE INDEX KdKaryAbsensiKaryawanIdx ON AbsensiKaryawan
(KdKary)
4. Estimasi Kebutuhan Penyimpanan
Berikut ini adalah perkiraan kebutuhan ruang penyimpanan yang dibutuhkan di Klinik
Medikarya:
Tabel 3.10 Estimasi Media Penyimpanan MsLogin
Field Tipe Ukuran
IdLogin Char 8
Password Varchar 10
Status Varchar 15
Kapasitas dari tabel MsLogin adalah 23 bytes
Diperkirakan dalam satu tahun terjadi 3 penambahan MsLogin
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*23 = 828 bytes
Tabel 3.11 Estimasi Media Penyimpanan KodePos
Field Tipe Ukuran
KodePos Char 5
Kota Varchar 20
208
Kapasitas dari tabel KodePos adalah 25 bytes
Diperkirakan dalam satu bulan terjadi 3 penambahan KodePos
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*25 = 900 bytes
Tabel 3.12 Estimasi Media Penyimpanan MsPasien
Field Tipe Ukuran
NIP Char 10
Nama Varchar 30
NoIdentitas Varchar 20
TmptLhr Varchar 20
TglLhr Datetime 10
JnsKlmn Char 1
Agama Varchar 10
GolDarah Varchar 3
StatKawin Varchar 15
Alamat Varchar 50
KodePos Char 5
Pekerjaan Varchar 10
Kapasitas dari tabel MsPasien adalah 184 bytes
Diperkirakan dalam satu bulan terjadi 30 penambahan MsPasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 30*12*184 = 66240 bytes
Tabel 3.13 Estimasi Media Penyimpanan TelpPasien
Field Tipe Ukuran
TelpPasien Varchar 15
NIP Char 10
Kapasitas dari tabel TelpPasien adalah 25 bytes
Diperkirakan dalam satu bulan terjadi 6 penambahan TelpPasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 6*12*25 = 1800 bytes
209
Tabel 3.14 Estimasi Media Penyimpanan MsDokter
Field Tipe Ukuran
KdDokter Char 5
NamaDok Varchar 30
TmptLhrDok Varchar 20
TglLhrDok Datetime 10
JnsKlmnDok Char 1
AgamaDok Varchar 10
StatKawinDok Varchar 15
AlamatDok Varchar 50
KodePos Int 5
BiayaDok Numeric 8
GajiDok Bigint 8
KdSpesialis Char 5
KdJabatan Char 5
KdJdwlDokter Char 5
IdLogin Char 8
Kapasitas dari tabel MsDokter adalah 185 bytes
Diperkirakan dalam satu tahun terjadi 3 penambahan MsDokter
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*185 = 6660 bytes
Tabel 3.15 Estimasi Media Penyimpanan TelpDok
Field Tipe Ukuran
TelpDok Varchar 15
KdDokter Char 5
Kapasitas dari tabel TelpDok adalah 20 bytes
Diperkirakan dalam satu bulan terjadi 5 penambahan TelpDok
Dalam satu tahun pertumbuhan dari tabel ini adalah 5*12*20 = 1200 bytes
210
Tabel 3.16 Estimasi Media Penyimpanan MsSpesialis
Field Tipe Ukuran
KdSpesialis Char 5
Spesialis Varchar 20
Kapasitas dari tabel MsSpesialis adalah 25 bytes
Diperkirakan dalam satu tahun terjadi 1 penambahan MsSpesialis
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*25 = 300 bytes
Tabel 3.17 Estimasi Media Penyimpanan MsKaryawan
Field Tipe Ukuran
KdKary Char 5
NamaKary Varchar 30
TmptLhrKary Varchar 20
TglLhrKary Datetime 10
JnsKlmnKary Char 1
AgamaKary Varchar 10
StatKawinKary Varchar 15
StatPendiKary Varchar 10
AlamatKary Varchar 50
KodePos Char 5
GajiKary Numeric 8
KdJabatan Char 5
KdJdwlKary Char 5
IdLogin Char 8
Kapasitas dari tabel MsKaryawan adalah 182 bytes
Diperkirakan dalam satu tahun terjadi 3 penambahan MsKaryawan
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*182 = 6552 bytes
211
Tabel 3.18 Estimasi Media Penyimpanan TelpKary
Field Tipe Ukuran
TelpKary Varchar 15
KdKary Char 5
Kapasitas dari tabel TelpKary adalah 20 bytes
Diperkirakan dalam satu bulan terjadi 3 penambahan TelpKary
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*20 = 720 bytes
Tabel 3.19 Estimasi Media Penyimpanan MsJabatan
Field Tipe Ukuran
KdJabatan Char 5
Jabatan Varchar 30
Kapasitas dari tabel MsJabatan adalah 30 bytes
Diperkirakan dalam satu tahun terjadi 0 penambahan MsJabatan
Dalam satu tahun pertumbuhan dari tabel ini adalah 0*12*30 = 0 bytes
Tabel 3.20 Estimasi Media Penyimpanan MsObat
Field Tipe Ukuran
KdObat Char 8
NamaObat Varchar 30
Kemasan Varchar 10
Isi Int 4
QtyObatS Int 4
HargaObat Numeric 8
KdJenisObat Char 8
Kapasitas dari tabel MsObat adalah 72 bytes
Diperkirakan dalam satu bulan terjadi 10 penambahan MsObat
Dalam satu tahun pertumbuhan dari tabel ini adalah 10*12*98 = 8640 bytes
212
Tabel 3.21 Estimasi Media Penyimpanan MsJenisObat
Field Tipe Ukuran
KdJenisObat Char 8
JenisObat Varchar 30
Kapasitas dari tabel MsJenisObat adalah 38 bytes
Diperkirakan dalam satu bulan terjadi 3 penambahan MsJenisObat
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*12*38 = 1368 bytes
Tabel 3.22 Estimasi Media Penyimpanan MsPemasok
Field Tipe Ukuran
KdPemasok Char 8
NamaPemasok Varchar 30
AlamatPemasok Varchar 50
KodePos Char 5
Kapasitas dari tabel MsPemasok adalah 93 bytes
Diperkirakan dalam satu bulan terjadi 1 penambahan MsPemasok
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*93 = 1116 bytes
Tabel 3.23 Estimasi Media Penyimpanan TelpPemasok
Field Tipe Ukuran
TelpPemasok Varchar 15
KdPemasok Char 8
Kapasitas dari tabel TelpPemasok adalah 23 bytes
Diperkirakan dalam satu bulan terjadi 6 penambahan TelpPemasok
Dalam satu tahun pertumbuhan dari tabel ini adalah 6*12*23 = 1656 bytes
213
Tabel 3.24 Estimasi Media Penyimpanan MsResep
Field Tipe Ukuran
KdResep Char 8
TglResep Datetime 10
KdDokter Char 15
Kapasitas dari tabel MsResep adalah 33 bytes
Diperkirakan dalam satu bulan terjadi 15 penambahan MsResep
Dalam satu tahun pertumbuhan dari tabel ini adalah 15*12*33 = 5940 bytes
Tabel 3.25 Estimasi Media Penyimpanan DetailResep
Field Tipe Ukuran
NIP Char 10
KdResep Char 8
KdObat Char 8
DosisObat Varchar 15
QtyObatResep Int 4
Kapasitas dari tabel DetailResep adalah 45 bytes
Diperkirakan dalam satu bulan terjadi 15 penambahan DetailResep
Diperkirakan dalam satu hari terdapat 15 orang pasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 15*15*12*45 = 121500 bytes
Tabel 3.26 Estimasi Media Penyimpanan RekamMedis
Field Tipe Ukuran
NoRekam Char 8
TglRekam Datetime 10
JamRekam Datetime 5
UmurPasien Int 3
NIP Char 10
KdDokter Char 5
214
KdKary Char 5
KdResep Char 8
Kapasitas dari tabel RekamMedis adalah 54 bytes
Diperkirakan dalam satu bulan terjadi 25 penambahan RekamMedis
Diperkirakan dalam satu hari ada 7 orang pasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 7*25*12*54 = 113400 bytes
Tabel 3.27 Estimasi Media Penyimpanan DetailRekamMedis
Field Tipe Ukuran
KdObat Char 8
NoRekam Char 8
Keluhan Varchar 100
Penyakit Varchar 30
Tindakan Varchar 50
Kapasitas dari tabel DetailRekamMedis adalah 196 bytes
Diperkirakan dalam satu bulan terjadi 25 penambahan DetailRekamMedis
Diperkirakan dalam satu hari ada 7 orang pasien
Diperkirakan dalam satu kali ada 3 jenis tindakan pasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 3*7*25*12*196 = 1234800 bytes
Tabel 3.28 Estimasi Media Penyimpanan PasienBerobat
Field Tipe Ukuran
NoBerobat Char 8
TglBerobat Datetime 10
JamBerobat Datetime 10
UmurPasien Int 3
Pelayanan Varchar 15
NIP Char 10
KdDokter Char 5
215
Kapasitas dari tabel PasienBerobat adalah 61 bytes
Diperkirakan dalam satu bulan terjadi 25 penambahan PasienBerobat
Diperkirakan dalam satu hari ada 15 orang pasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 15*25*12*61 = 274500 bytes
Tabel 3.29 Estimasi Media Penyimpanan Pembelian
Field Tipe Ukuran
NoPembelian Char 8
TglPembelian Datetime 10
KdKary Char 5
NoFaktur Char 8
Kapasitas dari tabel Pembelian adalah 31 bytes
Diperkirakan dalam satu bulan terjadi 10 penambahan Pembelian
Dalam satu tahun pertumbuhan dari tabel ini adalah 10*12*39 = 3720 bytes
Tabel 3.30 Estimasi Media Penyimpanan DetailPembelian
Field Tipe Ukuran
KdObat Char 8
NoPembelian Char 8
Status Varchar 15
Kapasitas dari tabel DetailPembelian adalah 31 bytes
Diperkirakan dalam satu bulan terjadi 10 penambahan DetailPembelian
Dalam satu tahun pertumbuhan dari tabel ini adalah 10*12*31 = 3720 bytes
Tabel 3.31 Estimasi Media Penyimpanan Penjualan
Field Tipe Ukuran
NoPenjualan Char 8
TglPenjualan Datetime 10
216
KdKary Char 5
Kapasitas dari tabel Penjualan adalah 23 bytes
Diperkirakan dalam satu bulan terjadi 10 penambahan Penjualan
Dalam satu tahun pertumbuhan dari tabel ini adalah 10*12*23 = 27600 bytes
Tabel 3.32 Estimasi Media Penyimpanan DetailPenjualan
Field Tipe Ukuran
KdObat Char 8
NoPenjualan Char 8
KdResep Char 8
QtyObatK Int 4
Kapasitas dari tabel DetailPenjualan adalah 28 bytes
Diperkirakan dalam satu bulan terjadi 10 penambahan DetailPenjualan
Dalam satu tahun pertumbuhan dari tabel ini adalah 10*12*28 = 3360 bytes
Tabel 3.33 Estimasi Media Penyimpanan PembayaranPasien
Field Tipe Ukuran
NoPembayaran Char 8
Tanggal Datetime 10
Jam Datetime 5
BiayaAdmin Numeric 8
KdDokter Char 5
NIP Char 10
KdKary Char 5
KdObat Char 8
KdResep Char 8
NoBerobat Char 8
Kapasitas dari tabel PembayaranPasien adalah 75 bytes
Diperkirakan dalam satu bulan terjadi 25 penambahan PembayaranPasien
217
Diperkirakan dalam satu hari ada 15 orang pasien
Dalam satu tahun pertumbuhan dari tabel ini adalah 15*25*12*75 = 337500 bytes
Tabel 3.34 Estimasi Media Penyimpanan FakturBeli
Field Tipe Ukuran
NoFaktur Char 8
TglFaktur Datetime 10
HargaObatB Numeric 8
JthTempo Datetime 10
KdKary Char 5
KdPemasok Char 8
Kapasitas dari tabel FakturBeli adalah 49 bytes
Diperkirakan dalam satu bulan terjadi 7 penambahan FakturBeli
Dalam satu tahun pertumbuhan dari tabel ini adalah 7*12*49 = 4116 bytes
Tabel 3.35 Estimasi Media Penyimpanan DetailFakturBeli
Field Tipe Ukuran
KdObat Char 8
NoFaktur Char 8
QtyObatB Int 4
Kapasitas dari tabel DetailFakturBeli adalah 20 bytes
Diperkirakan dalam satu bulan terjadi 7 penambahan DetailFakturBeli
Dalam satu tahun pertumbuhan dari tabel ini adalah 7*12*20 = 1680 bytes
Tabel 3.36 Estimasi Media Penyimpanan ReturPembelian
Field Tipe Ukuran
NoRetur Char 8
TglRetur Datetime 10
KetR Varchar 15
218
KdPemasok Char 8
NoPembelian Char 8
Kapasitas dari tabel ReturPembelian adalah 49 bytes
Diperkirakan dalam satu bulan terjadi 1 penambahan ReturPembelian
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*49 = 588 bytes
Tabel 3.37 Estimasi Media Penyimpanan DetailReturPembelian
Field Tipe Ukuran
KdObat Char 8
NoRetur Char 8
QtyObatR Int 4
Kapasitas dari tabel DetailReturPembelian adalah 20 bytes
Diperkirakan dalam satu bulan terjadi 1 penambahan DetailReturPembelian
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*32 = 240 bytes
Tabel 3.38 Estimasi Media Penyimpanan MsJdwlDokter
Field Tipe Ukuran
KdJdwlDokter Char 5
HariPraktek Char 6
JamPraktek Datetime 11
Kapasitas dari tabel MsJdwlDokter adalah 22 bytes
Diperkirakan dalam satu bulan terjadi 1 penambahan MsJdwlDokter
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*22 = 264 bytes
Tabel 3.39 Estimasi Media Penyimpanan MsJdwlKaryawan
Field Tipe Ukuran
KdJdwlKary Char 5
HariKerja Char 6
219
JamKerja Datetime 11
Kapasitas dari tabel MsJdwlKaryawan adalah 22 bytes
Diperkirakan dalam satu bulan terjadi 1 penambahan MsJdwlKaryawan
Dalam satu tahun pertumbuhan dari tabel ini adalah 1*12*22 = 264 bytes
Tabel 3.40 Estimasi Media Penyimpanan AbsensiDokter
Field Tipe Ukuran
KdAbsenDok Char 8
TglAbsenDok Datetime 10
JamPraktek Datetime 11
KehadiranDok Varchar 10
KetAbsenDok Varchar 20
KdDokter Char 5
Kapasitas dari tabel AbsensiDokter adalah 64 bytes
Diperkirakan dalam satu bulan terjadi 5 penambahan AbsensiDokter
Dalam satu tahun pertumbuhan dari tabel ini adalah 5*12*64 = 3840 bytes
Tabel 3.41 Estimasi Media Penyimpanan AbsensiKaryawan
Field Tipe Ukuran
KdAbsenKary Char 8
TglAbsenKary Datetime 10
JamKerja Datetime 11
KehadiranKary Varchar 10
KetAbsenKary Varchar 20
KdKary Char 5
Kapasitas dari tabel AbsensiKaryawan adalah 64 bytes
Diperkirakan dalam satu bulan terjadi 5 penambahan AbsensiKaryawan
Dalam satu tahun pertumbuhan dari tabel ini adalah 5*12*64 = 3840 bytes
220
Tabel 3.42 Estimasi Ukuran Entitas yang tidak Berubah
Entitas Kapasitas Awal (bytes)
MsJabatan 30
JUMLAH 30
Sedangkan pada entitas lain, setiap bulan/tahun terjadi penambahan data.
Tabel 3.43 Estimasi Ukuran Entitas yang Berubah setiap Bulan/Tahun
Entitas Kapasitas Awal
(bytes)
Kapasitas yang Diperlukan
Satu Tahun Pertama (bytes)
MsLogin 23 828
KodePos 25 900
MsPasien 184 66240
TelpPasien 25 1800
MsDokter 185 6660
TelpDok 20 1200
MsSpesialis 25 300
MsKaryawan 182 6552
TelpKary 20 720
MsObat 72 8640
MsJenisObat 38 1368
MsPemasok 93 1116
TelpPemasok 23 1656
221
MsResep 33 5940
DetailResep 45 121500
RekamMedis 54 113400
DetailRekamMedis 196 1238400
PasienBerobat 61 274500
Pembelian 31 3720
DetailPembelian 28 3720
Penjualan 23 27600
DetailPenjualan 28 3360
PembayaranPasien 75 337500
FakturBeli 49 4116
DetailFakturBeli 20 1680
ReturPembelian 49 588
DetailReturPembelian 20 240
MsJdwlDokter 22 264
MsJdwlKaryawan 22 264
AbsensiDokter 64 3840
AbsensiKaryawan 64 3840
JUMLAH 2242452
1. Jumlah space yang dibutuhkan untuk entitas yang tidak terjadi penambahan data
adalah 30 bytes atau 0,03 KiloBytes.
222
2. Jumlah space yang dibutuhkan untuk entitas yang terjadi penambahan data dalam 1
tahun adalah 2.242.452 bytes atau 2.242,452 KiloBytes.
3. Perkiraan space dalam 1 tahun pertama adalah 30 bytes + 2.242.452 bytes =
2.242.482 bytes atau 2.242,452 KiloBytes.
4. Ditambah dengan faktor keamanan 50%, jadi 2.242,452 KiloBytes + 1.121,226
KiloBytes = 3.363,678 KiloBytes.
Bila diperkirakan pertumbuhan data tiap tahunnya adalah 10%, maka kapasitas disk
yang dibutuhkan dalam 5 tahun berdasarkan rumus di bawah ini adalah:
Tahun ke-n = Jumlah disk tahun ke-n-1 + kapasitas tahun ke n-1 + (kapasitas disk
transaksi ke n-1 * 10%)
Tabel 3.44 Kebutuhan Kapasitas Disk dalam 5 tahun
Tahun
ke n-1
Jumlah
disk tahun
ke n-1
Kapasitas
disk
transaksi
tahun ke
n-1
Kapasitas
disk
transaksi
tahun ke
n-1 * 10%
Subtotal
kebutuhan
disk
Kebutuha
n disk
tetap
Kebutuhan
disk total
II 3.363,678
KiloBytes
2.242,452
KiloBytes
224,245
KiloBytes
5.830,375
KiloBytes
0,03
KiloBytes
5.830,405
KiloBytes
III 5.830,375
KiloBytes
2.466,697
KiloBytes
246,670
KiloBytes
8.543,742
KiloBytes
0,03 KiloBytes
8.543,772
KiloBytes
IV 8.543,742
KiloBytes
2.713,367
KiloBytes
271,337
KiloBytes
11.528,446
KiloBytes
0,03 KiloBytes
11.528,476
KiloBytes
V 11.528,446
KiloBytes
2.984,704
KiloBytes
298,470
KiloBytes
14.811,620
KiloBytes
0,03 KiloBytes
14.811,650
KiloBytes
223
3.2.4.c Perancangan Mekanisme Pengamanan Data
Tabel 3.45 Mekanisme Keamanan Data
Entitas
Pengguna
Admin Administrasi Dokter Kasir Anggaran
Belanja Kepegawaian Apoteker
Direktur
Utama
MsLogin I, U, R, D U, R U, R U, R U, R U, R U, R U, R
KodePos I, U, R, D I, U, R R R R R R R
MsPasien I, U, R, D I, U, R R R - - - R
TelpPasien I, U, R, D I, U, R R R - - - R
MsDokter I, U, R, D I, U, R R R - R - R
TelpDok I, U, R, D I, U, R R R - R - R
MsSpesialis I, U, R, D I, U, R R R - R - R
MsKaryawan I, U, R, D I, U, R - R R R R R
TelpKary I, U, R, D I, U, R - R R R R R
MsJabatan I, U, R, D I, U, R R R R R R R
MsObat I, U, R, D R - R R - I, U, R R
224
Entitas Pengguna
Admin Administrasi Dokter Kasir Anggaran
Belanja Kepegawaian Apoteker
Direktur
Umum
MsJenisObat I, U, R, D R - R R - R R
MsPemasok I, U, R, D I, U, R - - R - - R
TelpPemasok I, U, R, D I, U, R - - R - - R
Resep I, R, D I, R R R - - R R
DetailResep I, R, D I, R R R - - R R
RekamMedis I, R, D I, R R R - - - R
DetailRekamMedis I, R, D I, R R R - - - R
PasienBerobat I, R, D I, R R R - - - R
Pembelian I, R, D R - R I, R - R R
DetailPembelian I, R, D R - R I, R - R R
Penjualan I, R, D R - I, R I, R - R R
DetailPenjualan I, R, D R - I, R I, R - R R
PembayaranPasien I, R, D R - I, R - - - R
FakturBeli I, R, D R - - I, R - R R
225
Entitas
Pengguna
Admin Administrasi Dokter Kasir Anggaran
Belanja Kepegawaian Apoteker
Direktur
Umum
DetailFakturBeli I, R, D R - - I, R - R R
ReturPembelian I, R, D R - - I, R - R R
DetailReturPembelian I, R, D R - - I, R - R R
MsJdwlDokter I, U, R, D R R - - I, U, R - R
MsJdwlKaryawan I, U, R, D R - R R I, U, R R R
AbsensiDokter I, R, D R R - - I, R - R
AbsensiKaryawan I, R, D R - R R I, R R R
Keterangan: I = Insert; R = Read; U = Update; D = Delete
226
Hak akses yang diberikan antara lain:
a. Bagian Admin/Administrator
GRANT ALL PREVILEGES ON MsLogin TO Admin
GRANT ALL PREVILEGES ON KodePos TO Admin
GRANT ALL PREVILEGES ON MsPasien TO Admin
GRANT ALL PREVILEGES ON TelpPasien TO Admin
GRANT ALL PREVILEGES ON MsDokter TO Admin
GRANT ALL PREVILEGES ON TelpDok TO Admin
GRANT ALL PREVILEGES ON MsSpesialis TO Admin
GRANT ALL PREVILEGES ON MsKaryawan TO Admin
GRANT ALL PREVILEGES ON TelpKary TO Admin
GRANT ALL PREVILEGES ON MsJabatan TO Admin
GRANT ALL PREVILEGES ON MsObat TO Admin
GRANT ALL PREVILEGES ON MsJenisObat TO Admin
GRANT ALL PREVILEGES ON MsPemasok TO Admin
GRANT ALL PREVILEGES ON TelpPemasok TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON Resep TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailResep TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON RekamMedis TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailRekamMedis TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON PasienBerobat TO
Admin
227
GRANT SELECT, INSERT, DELETE PREVILEGES ON Pembelian TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailPembelian TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON Penjualan TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailPenjualan TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON PembayaranPasien TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON FakturBeli TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailFakturBeli TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON ReturPembelian TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON DetailReturPembelian
TO Admin
GRANT ALL PREVILEGES ON MsJdwlDokter TO Admin
GRANT ALL PREVILEGES ON MsJdwlKaryawan TO Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON AbsensiDokter TO
Admin
GRANT SELECT, INSERT, DELETE PREVILEGES ON AbsensiKaryawan TO
Admin
b. Bagian Administrasi
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO Administrasi
228
GRANT SELECT, INSERT, UPDATE PREVILEGES ON KodePos TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsPasien TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON TelpPasien TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsDokter TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON TelpDok TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsSpesialis TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsKaryawan TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON TelpKary TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsJabatan TO
Administrasi
GRANT SELECT PREVILEGES ON MsObat TO Administrasi
GRANT SELECT PREVILEGES ON MsJenisObat TO Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsPemasok TO
Administrasi
GRANT SELECT, INSERT, UPDATE PREVILEGES ON TelpPemasok TO
Administrasi
229
GRANT SELECT PREVILEGES ON Resep TO Administrasi
GRANT SELECT PREVILEGES ON DetailResep TO Administrasi
GRANT SELECT, INSERT PREVILEGES ON RekamMedis TO Administrasi
GRANT SELECT, INSERT PREVILEGES ON DetailRekamMedis TO
Administrasi
GRANT SELECT, INSERT PREVILEGES ON PasienBerobat TO Administrasi
GRANT SELECT PREVILEGES ON Pembelian TO Administrasi
GRANT SELECT PREVILEGES ON DetailPembelian TO Administrasi
GRANT SELECT PREVILEGES ON Penjualan TO Administrasi
GRANT SELECT PREVILEGES ON DetailPenjualan TO Administrasi
GRANT SELECT PREVILEGES ON PembayaranPasien TO Administrasi
GRANT SELECT PREVILEGES ON FakturBeli TO Administrasi
GRANT SELECT PREVILEGES ON Detail FakturBeli TO Administrasi
GRANT SELECT PREVILEGES ON ReturPembelian TO Administrasi
GRANT SELECT PREVILEGES ON DetailReturPembelian TO Administrasi
GRANT SELECT PREVILEGES ON MsJdwlDokter TO Administrasi
GRANT SELECT PREVILEGES ON MsJdwlKaryawan TO Administrasi
GRANT SELECT PREVILEGES ON AbsensiDokter TO Administrasi
GRANT SELECT PREVILEGES ON AbsensiKaryawan TO Administrasi
c. Dokter
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO Dokter
GRANT SELECT PREVILEGES ON KodePos TO Dokter
GRANT SELECT PREVILEGES ON MsPasien TO Dokter
230
GRANT SELECT PREVILEGES ON TelpPasien TO Dokter
GRANT SELECT PREVILEGES ON MsDokter TO Dokter
GRANT SELECT PREVILEGES ON TelpDok TO Dokter
GRANT SELECT PREVILEGES ON MsSpesialis TO Dokter
GRANT SELECT PREVILEGES ON MsJabatan TO Dokter
GRANT SELECT PREVILEGES ON Resep TO Dokter
GRANT SELECT PREVILEGES ON DetailResep TO Dokter
GRANT SELECT PREVILEGES ON RekamMedis TO Dokter
GRANT SELECT PREVILEGES ON DetailRekamMedis TO Dokter
GRANT SELECT PREVILEGES ON PasienBerobat TO Dokter
GRANT SELECT PREVILEGES ON MsJdwlDokter TO Dokter
GRANT SELECT PREVILEGES ON AbsensiDokter TO Dokter
d. Bagian Kasir
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO Kasir
GRANT SELECT PREVILEGES ON KodePos TO Kasir
GRANT SELECT PREVILEGES ON MsPasien TO Kasir
GRANT SELECT PREVILEGES ON TelpPasien TO Kasir
GRANT SELECT PREVILEGES ON MsDokter TO Kasir
GRANT SELECT PREVILEGES ON TelpDok TO Kasir
GRANT SELECT PREVILEGES ON MsSpesialis TO Kasir
GRANT SELECT PREVILEGES ON MsKaryawan TO Kasir
GRANT SELECT PREVILEGES ON TelpKary TO Kasir
GRANT SELECT PREVILEGES ON MsJabatan TO Kasir
231
GRANT SELECT PREVILEGES ON MsObat TO Kasir
GRANT SELECT PREVILEGES ON MsJenisObat TO Kasir
GRANT SELECT PREVILEGES ON Resep TO Kasir
GRANT SELECT PREVILEGES ON DetailResep TO Kasir
GRANT SELECT PREVILEGES ON Pembelian TO Kasir
GRANT SELECT PREVILEGES ON DetailPembelian TO Kasir
GRANT SELECT, INSERT PREVILEGES ON Penjualan TO Kasir
GRANT SELECT, INSERT PREVILEGES ON DetailPenjualan TO Kasir
GRANT SELECT, INSERT PREVILEGES ON PembayaranPasien TO Kasir
GRANT SELECT PREVILEGES ON MsJdwlKaryawan TO Kasir
GRANT SELECT PREVILEGES ON AbsensiKaryawan TO Kasir
e. Bagian Anggaran dan Belanja
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO AnggaranBelanja
GRANT SELECT PREVILEGES ON KodePos TO AnggaranBelanja
GRANT SELECT PREVILEGES ON MsKaryawan TO AnggaranBelanja
GRANT SELECT PREVILEGES ON TelpKary TO AnggaranBelanja
GRANT SELECT PREVILEGES ON MsJabatan TO AnggaranBelanja
GRANT SELECT PREVILEGES ON MsObat TO AnggaranBelanja
GRANT SELECT PREVILEGES ON MsJenisObat TO AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON Pembelian TO AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON DetailPembelian TO
AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON Penjualan TO AnggaranBelanja
232
GRANT SELECT, INSERT PREVILEGES ON DetailPenjualan TO
AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON FakturBeli TO AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON Detail FakturBeli TO
AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON ReturPembelian TO
AnggaranBelanja
GRANT SELECT, INSERT PREVILEGES ON DetailReturPembelian TO
AnggaranBelanja
GRANT SELECT PREVILEGES ON MsJdwlKaryawan TO AnggaranBelanja
GRANT SELECT PREVILEGES ON AbsensiKaryawan TO AnggaranBelanja
f. Bagian Kepegawaian
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO Kepegawaian
GRANT SELECT PREVILEGES ON KodePos TO Kepegawaian
GRANT SELECT PREVILEGES ON MsDokter TO Kepegawaian
GRANT SELECT PREVILEGES ON TelpDokter TO Kepegawaian
GRANT SELECT PREVILEGES ON MsSpesialis TO Kepegawaian
GRANT SELECT PREVILEGES ON MsKaryawan TO Kepegawaian
GRANT SELECT PREVILEGES ON TelpKary TO Kepegawaian
GRANT SELECT PREVILEGES ON MsJabatan TO Kepegawaian
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsJdwlDokter TO
Kepegawaian
233
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsJdwlKaryawan TO
Kepegawaian
GRANT SELECT, INSERT PREVILEGES ON AbsensiDokter TO Kepegawaian
GRANT SELECT, INSERT PREVILEGES ON AbsensiKaryawan TO
Kepegawaian
g. Bagian Apotek/Apoteker
GRANT SELECT, UPDATE PREVILEGES ON MsLogin TO Apoteker
GRANT SELECT PREVILEGES ON KodePos TO Apoteker
GRANT SELECT PREVILEGES ON MsKaryawan TO Apoteker
GRANT SELECT PREVILEGES ON TelpKary TO Kepegawaian
GRANT SELECT PREVILEGES ON MsJabatan TO Apoteker
GRANT SELECT, INSERT, UPDATE PREVILEGES ON MsObat TO Apoteker
GRANT SELECT PREVILEGES ON MsJenisObat TO Apoteker
GRANT SELECT PREVILEGES ON Resep TO Apoteker
GRANT SELECT PREVILEGES ON DetailResep TO Apoteker
GRANT SELECT PREVILEGES ON Pembelian TO Apoteker
GRANT SELECT PREVILEGES ON DetailPembelian TO Apoteker
GRANT SELECT PREVILEGES ON Penjualan TO Apoteker
GRANT SELECT PREVILEGES ON DetailPenjualan TO Apoteker
GRANT SELECT PREVILEGES ON FakturBeli TO Apoteker
GRANT SELECT PREVILEGES ON DetailFakturBeli TO Apoteker
GRANT SELECT PREVILEGES ON ReturPembelian TO Apoteker
GRANT SELECT PREVILEGES ON DetailReturPembelian TO Apoteker
234
GRANT SELECT PREVILEGES ON MsJdwlKaryawan TO Apoteker
GRANT SELECT PREVILEGES ON AbsensiKaryawan TO Apoteker
h. Direktur Utama
GRANT SELECT PREVILEGES ON MsLogin TO DirekturUtama
GRANT SELECT PREVILEGES ON KodePos TO DirekturUtama
GRANT SELECT PREVILEGES ON MsPasien TO DirekturUtama
GRANT SELECT PREVILEGES ON TelpPasien TO Kepegawaian
GRANT SELECT PREVILEGES ON MsDokter TO DirekturUtama
GRANT SELECT PREVILEGES ON TelpDok TO Kepegawaian
GRANT SELECTPREVILEGES ON MsSpesialis TO DirekturUtama
GRANT SELECT PREVILEGES ON MsKaryawan TO DirekturUtama
GRANT SELECT PREVILEGES ON TelpKary TO Kepegawaian
GRANT SELECT PREVILEGES ON MsJabatan TO DirekturUtama
GRANT SELECT PREVILEGES ON MsObat TO DirekturUtama
GRANT SELECT PREVILEGES ON MsJenisObat TO DirekturUtama
GRANT SELECT PREVILEGES ON MsPemasok TO DirekturUtama
GRANT SELECT PREVILEGES ON TelpPemasok TO Kepegawaian
GRANT SELECT PREVILEGES ON Resep TO DirekturUtama
GRANT SELECT PREVILEGES ON DetailResep TO DirekturUtama
GRANT SELECT PREVILEGES ON RekamMedis TO DirekturUtama
GRANT SELECT PREVILEGES ON DetailRekamMedis TO DirekturUtama
GRANT SELECT PREVILEGES ON PasienBerobat TO DirekturUtama
GRANT SELECT PREVILEGES ON Pembelian TO DirekturUtama
235
GRANT SELECT PREVILEGES ON DetailPembelian TO DirekturUtama
GRANT SELECT PREVILEGES ON Penjualan TO DirekturUtama
GRANT SELECT PREVILEGES ON DetailPenjualan TO DirekturUtama
GRANT SELECT PREVILEGES ON PembayaranPasien TO DirekturUtama
GRANT SELECT PREVILEGES ON FakturBeli TO DirekturUtama
GRANT SELECT PREVILEGES ON DetailFakturBeli TO DirekturUtama
GRANT SELECT PREVILEGES ON ReturPembelian TO DirekturUtama
GRANT SELECT PREVILEGES ON DetailReturPembelian TO DirekturUtama
GRANT SELECT PREVILEGES ON MsJdwlDokter TO DirekturUtama
GRANT SELECT PREVILEGES ON MsJdwlKaryawan TO DirekturUtama
GRANT SELECT PREVILEGES ON AbsensiDokter TO DirekturUtama
GRANT SELECT PREVILEGES ON AbsensiKaryawan TO DirekturUtama
236
3.2.5 Perancangan Program Aplikasi
Berikut ini merupakan perancangan program aplikasi di Klinik Medikarya:
3.2.5.a Perancangan Struktur Menu
Berikut ini merupakan gambar dari Perancangan Struktur Menu pada Klinik Medikarya:
Gambar 3.35 Struktur Menu
237
3.2.5.b State Transition Diagram (STD)
Berikut ini merupakan State Transition Diagram (STD):
Gambar 3.36 STD Login
Gambar 3.37 STD Main Menu
238
Gambar 3.38 STD User
Gambar 3.39 STD Jadwal
239
Gambar 3.40 STD Master
Gambar 3.41 STD Pendaftaran
240
Gambar 3.42 STD Dokumentasi
Gambar 3.43 STD Transaksi
241
Gambar 3.44 STD Laporan
Gambar 3.45 STD Change Password
242
Gambar 3.46 STD Logout
Gambar 3.47 STD Input Data Jadwal Praktek Dokter
243
Gambar 3.48 STD View Data Jadwal Praktek Dokter
Gambar 3.49 STD Input Data Jadwal Kerja Karyawan
244
Gambar 3.50 STD View Data Jadwal Kerja Karyawan
Gambar 3.51 STD Absensi Dokter
245
Gambar 3.52 STD Absensi Karyawan
Gambar 3.53 STD Data Pasien
246
Gambar 3.54 STD Data Dokter
Gambar 3.55 STD Data Karyawan
247
Gambar 3.56 STD Data Obat
Gambar 3.57 STD Data Pemasok
248
Gambar 3.58 STD Pasien Baru
Gambar 3.59 STD Pasien Berobat
Gambar 3.60 STD Antrian Pasien
249
Gambar 3.61 STD Input Data Resep
Gambar 3.62 STD View Resep
250
Gambar 3.63 STD Input Data Rekam Medis
Gambar 3.64 STD View Data Rekam Medis
251
Gambar 3.65 STD Administrasi
Gambar 3.66 STD Input Data Penjualan Obat
252
Gambar 3.67 STD View Data Penjualan Obat
Gambar 3.68 STD Input Data Pembelian Obat
Gambar 3.69 STD View Pembelian Obat
253
Gambar 3.70 STD Input Data Faktur Beli Obat
Gambar 3.71 STD View Data Faktur Beli Obat
254
Gambar 3.72 STD Input Data Retur Pembelian Obat
Gambar 3.73 STD View Retur Pembelian Obat
255
Gambar 3.74 STD Pembayaran Pasien
Gambar 3.75 STD Laporan Obat
Gambar 3.76 STD Laporan Keuangan
256
Gambar 3.77 STD Laporan Pasien
Gambar 3.78 STD Laporan Absensi Dokter
Gambar 3.79 STD Laporan Jadwal Praktek Dokter
257
Gambar 3.80 STD Laporan Absensi Karyawan
Gambar 3.81 STD Laporan Jadwal Kerja Karyawan
3.2.5.c Perancangan Layar
Berikut ini merupakan perancangan layar:
Gambar 3.82 Perancangan Layar Login
258
Gambar 3.83 Perancangan Layar Main Menu
259
Gambar 3.84 Perancangan Layar Change Password
Gambar 3.85 Perancangan Layar Input Data Jadwal Praktek Dokter
260
Gambar 3.86 Perancangan Layar View Jadwal Praktek Dokter
Gambar 3.87 Perancangan Layar Input Jadwal Kerja Karyawan
261
Gambar 3.88 Perancangan Layar View Jadwal Kerja Karyawan
Gambar 3.89 Perancangan Layar Absensi Dokter
262
Gambar 3.90 Perancangan Layar Absensi Karyawan
Gambar 3.91 Perancangan Layar Data Pasien
263
Gambar 3.92 Perancangan Layar Data Dokter
Gambar 3.93 Perancangan Layar Data Karyawan
264
Gambar 3.94 Perancangan Layar Data Obat
Gambar 3.95 Perancangan Layar Data Pemasok
265
Gambar 3.96 Perancangan Layar Pendaftaran Pasien Baru
Gambar 3.97 Perancangan Layar Pendaftaran Pasien Berobat
266
Gambar 3.98 Perancangan Layar Antrian Pasien
Gambar 3.99 Perancangan Layar Input Data Resep
267
Gambar 3.100 Perancangan Layar View Data Resep
Gambar 3.101 Perancangan Layar Input Data Rekam Medis
268
Gambar 3.102 Perancangan Layar View Data Rekam Medis
Gambar 3.103 Perancangan Layar Administrasi
269
Gambar 3.104 Perancangan Layar Input Data Penjualan Obat
Gambar 3.105 Perancangan Layar View Data Penjualan Obat
270
Gambar 3.106 Perancangan Layar Input Data Pembelian Obat
Gambar 3.107 Perancangan Layar View Data Pembelian Obat
271
Gambar 3.108 Perancangan Layar Input Data Faktur Pembelian Obat
Gambar 3.109 Perancangan Layar View Data Faktur Pembelian Obat
272
Gambar 3.110 Perancangan Layar Input Data Retur Pembelian Obat
Gambar 3.111 Perancangan Layar View Data Retur Pembelian Obat
273
Gambar 3.112 Perancangan Layar Pembayaran Pasien
274
Gambar 3.113 Perancangan Layar Laporan Obat
Gambar 3.114 Perancangan Layar Laporan Keuangan
Gambar 3.115 Perancangan Layar Laporan Pasien
275
Gambar 3.116 Perancangan Layar Laporan Absensi Dokter
Gambar 3.117 Perancangan Layar Laporan Jadwal Praktek Dokter
Gambar 3.118 Perancangan Layar Laporan Jadwal Absensi Karyawan
276
Gambar 3.119 Perancangan Layar Laporan Jadwal Kerja Karyawan
3.2.5.d Perancangan Laporan
Berikut ini merupakan perancangan laporan:
Gambar 3.120 Perancangan Layar Laporan Obat
277
Gambar 3.121 Perancangan Layar Laporan Keuangan
Gambar 3.122 Perancangan Layar Laporan Pasien
278
Gambar 3.123 Perancangan Layar Laporan Absensi Dokter
Gambar 3.124 Perancangan Laporan Jadwal Praktek Dokter
279
Gambar 3.125 Perancangan Laporan Absensi Karyawan
Gambar 3.126 Perancangan Layar Laporan Jadwal Kerja Karyawan
280
3.2.5.e Spesifikasi Proses
Berikut ini merupakan spesifikasi proses:
Modul Login
Mulai
Tampilkan form Login
Lakukan
Jika tombol Login ditekan maka
Jika input Username kosong maka
Tampilkan pesan “Username harus diisi”
Jika input Password kosong maka
Tampilkan pesan “Password harus diisi”
Selain itu
Buka koneksi ke database dbMedikaryaKlinik.db
Cek Username dan Password
Jika Username dan Password dan Status cocok maka
Buka form Main Menu
Selain itu
Tampilkan pesan “Username dan Password anda salah!”
Akhir jika
Akhir jika
Akhir jika
Selain itu
Keluar dari program aplikasi
281
Akhir Jika
Akhir Lakukan
Selesai
Modul Change Password
Mulai
Tampilkan form Change Password
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Change Password dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika input New Password kosong maka
Tampilkan pesan “Password harus diisi”
Jika input Confirm New Password kosong maka
Tampilkan pesan “Confirm New Password harus diisi”
Jika input New Password atau Confirm New Password tidak sama maka
Tampilkan pesan “Password tidak sama”
Selain itu
Gunakan perintah Stored Procedure yang ada di SQL
yaitu prosedur “SubmitPassword”
Akhir jika
Jika ingin keluar maka
Tutup koneksi
Akhir jika
282
Akhir lakukan
Selesai
Modul Input Data Jadwal Praktek Dokter
Mulai
Tampilkan form Input Data Jadwal Praktek Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Jadwal Praktek Dokter dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Jadwal Dokter kosong maka
Tampilkan pesan “Kd Jadwal Dokter harus diisi”
Jika input Hari Praktek kosong maka
Tampilkan pesan “Hari Praktek harus diisi”
Jika input Jam Praktek kosong maka
Tampilkan pesan “Jam Praktek harus diisi”
Selain itu
Insert MsJdwlDokter
Akhir jika
283
Akhir jika
Jika pengisian data dibatalkan
Reset MsJdwlDokter
Akhir jika
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Jadwal Dokter kosong maka
Tampilkan pesan “Kd Jadwal Dokter harus diisi”
Jika input Hari Praktek kosong maka
Tampilkan pesan “Hari Praktek harus diisi”
Jika input Jam Praktek kosong maka
Tampilkan pesan “Jam Praktek harus diisi”
Selain itu
Update MsJdwlDokter
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsJdwlDokter
Akhir jika
Jika ingin menghapus data
Delete MsJdwlDokter
Akhir jika
Jika ingin keluar maka
Tutup koneksi
284
Akhir Jika
Akhir lakukan
Selesai
Modul View Data Jadwal Praktek Dokter
Mulai
Tampilkan form View Data Jadwal Praktek Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Jadwal Praktek Dokter dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Jadwal Kerja Karyawan
Mulai
Tampilkan form Input Data Jadwal Praktek Karyawan
Buka koneksi ke database dbMedikaryaKlinik.db
285
Tampilkan data Jadwal Praktek Karyawan dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Jadwal Karyawan kosong maka
Tampilkan pesan “Kd Jadwal Karyawan harus diisi”
Jika input Hari Kerja kosong maka
Tampilkan pesan “Hari Kerja harus diisi”
Jika input Jam Kerja kosong maka
Tampilkan pesan “Jam Kerja harus diisi”
Selain itu
Insert MsJdwlKaryawan
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsJdwlKaryawan
Akhir jika
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Jadwal Karyawan kosong maka
286
Tampilkan pesan “Kd Jadwal Karyawan harus diisi”
Jika input Hari Kerja kosong maka
Tampilkan pesan “Hari Kerja harus diisi”
Jika input Jam Kerja kosong maka
Tampilkan pesan “Jam Kerja harus diisi”
Selain itu
Update MsJdwlKaryawan
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsJdwlKaryawan
Akhir jika
Jika ingin menghapus data
Delete MsJdwlDokter”
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul View Data Jadwal Kerja Karyawan
Mulai
Tampilkan form View Data Jadwal Kerja Karyawan
287
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Jadwal Kerja Karyawan dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Absensi Dokter
Mulai
Tampilkan form Absensi Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Absensi Dokter dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database KlinikMedikarya.db
Akhir jika
Jika ingin membuat data baru maka
288
Cek semua field
Jika input Kd Absensi Dokter kosong maka
Tampilkan pesan “Kd Absensi Dokter harus diisi”
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Jika input Tanggal Absensi Dokter kosong maka
Tampilkan pesan “Tanggal Absensi harus diisi”
Jika input Jam Praktek kosong maka
Tampilkan pesan “Jam Praktek harus diisi”
Jika input Kehadiran Dokter kosong maka
Tampilkan pesan “Kehadiran Dokter harus diisi”
Jika input Keterangan Absen Dokter kosong maka
Tampilkan pesan “Keterangan Absen Dokter harus diisi”
Selain itu
Insert AbsensiDokter
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset AbsensiDokter
Akhir jika
Jika ingin menghapus data
Delete AbsensiDokter
289
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Absensi Karyawan
Mulai
Tampilkan form Absensi Karyawan
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Absensi Karyawan dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Absensi Karyawan kosong maka
Tampilkan pesan “Kd Absensi Karyawan harus diisi”
Jika input Kd Karyawan osong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Karyawan kosong maka
290
Tampilkan pesan “Nama Karyawan harus diisi”
Jika input Tanggal Absensi Karyawan kosong maka
Tampilkan pesan “Tanggal Absensi harus diisi”
Jika input Jam Kerja kosong maka
Tampilkan pesan “Jam Kerja harus diisi”
Jika input Kehadiran Karyawan kosong maka
Tampilkan pesan “Kehadiran Karyawan harus diisi”
Jika input Keterangan Absen Karyawan kosong maka
Tampilkan pesan “Keterangan Absen Karyawan harus
diisi”
Selain itu
Insert AbsensiKaryawan
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset AbsensiKaryawan
Akhir jika
Jika ingin menghapus data
Delete AbsensiKaryawan
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
291
Selesai
Modul Data Pasien
Mulai
Tampilkan form Data Pasien
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pasien dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input Nomor Identitas kosong maka
Tampilkan pesan “Nomor Identitas harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
292
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Golongan Darah kosong maka
Tampilkan pesan “Golongan Darah harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input No.Tel Pasien kosong maka
Tampilkan pesan “No. Telp Pasien harus diisi”
Jika input Pekerjaan kosong maka
Tampilkan pesan “Pekerjaan harus diisi”
Selain itu
Insert MsPasien
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsPasien
Akhir jika
Jika ingin mengubah data maka
Cek semua field
293
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input Nomor Identitas kosong maka
Tampilkan pesan “Nomor Identitas harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Golongan Darah kosong maka
Tampilkan pesan “Golongan Darah harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input No.Tel Pasien kosong maka
Tampilkan pesan “No. Telp Pasien harus diisi”
294
Jika input Pekerjaan kosong maka
Tampilkan pesan “Pekerjaan harus diisi”
Selain itu
Update MsPasien
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsPasien
Akhir jika
Jika ingin menghapus data
Delete MsPasien
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Data Dokter
Mulai
Tampilkan form Data Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Dokter dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
295
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input Biaya Dokter kosong maka
296
Tampilkan pesan “Biaya Dokter harus diisi”
Jika input Gaji Dokter kosong maka
Tampilkan pesan “Gaji Dokter harus diisi”
Jika input Kd Spesialis kosong maka
Tampilkan pesan “Kd Spesialis harus diisi”
Jika input Kd Jabatan kosong maka
Tampilkan pesan “Kd Jabatan harus diisi”
Jika input Kd Jadwal Dokter kosong maka
Tampilkan pesan “Kd Jadwal Dokter harus diisi”
Jika input Id Login kosong maka
Tampilkan pesan “Id Login harus diisi”
Jika input No. Telp Dokter kosong maka
Tampilkan pesan “No. Telp Dokter harus diisi”
Selain itu
Insert MsDokter
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsDokter
Akhir jika
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
297
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input Biaya Dokter kosong maka
Tampilkan pesan “Biaya Dokter harus diisi”
Jika input Gaji Dokter kosong maka
Tampilkan pesan “Gaji Dokter harus diisi”
Jika input Kd Spesialis kosong maka
Tampilkan pesan “Kd Spesialis harus diisi”
Jika input Kd Jabatan kosong maka
Tampilkan pesan “Kd Jabatan harus diisi”
298
Jika input Kd Jadwal Dokter kosong maka
Tampilkan pesan “Kd Jadwal Dokter harus diisi”
Jika input Id Login kosong maka
Tampilkan pesan “Id Login harus diisi”
Jika input No. Telp Dokter kosong maka
Tampilkan pesan “No. Telp Dokter harus diisi”
Selain itu
Update MsDokter
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsDokter
Akhir jika
Jika ingin menghapus data
Delete MsDokter
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
299
Modul Data Karyawan
Mulai
Tampilkan form Data Karyawan
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Karyawan dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Status Perkawinan kosong maka
300
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Status Pendidikan kosong maka
Tampilkan pesan “Status Pendidikan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input Gaji Karyawan kosong maka
Tampilkan pesan “Gaji Karyawan harus diisi”
Jika input Kd Jabatan kosong maka
Tampilkan pesan “Kd Jabatan harus diisi”
Jika input Kd Jadwal Karyawan kosong maka
Tampilkan pesan “Kd Jadwal Karyawan harus diisi”
Jika input Id Login kosong maka
Tampilkan pesan “Id Login harus diisi”
Jika input No. Telp Karyawan kosong maka
Tampilkan pesan “No. Telp Karyawan harus diisi”
Selain itu
Insert MsKaryawan
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsKaryawan
Akhir jika
301
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Status Pendidikan kosong maka
Tampilkan pesan “Status Pendidikan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input Gaji Karyawan kosong maka
Tampilkan pesan “Gaji Karyawan harus diisi”
302
Jika input Kd Jabatan kosong maka
Tampilkan pesan “Kd Jabatan harus diisi”
Jika input Kd Jadwal Karyawan kosong maka
Tampilkan pesan “Kd Jadwal Karyawan harus diisi”
Jika input Id Login kosong maka
Tampilkan pesan “Id Login harus diisi”
Jika input No. Telp Karyawan kosong maka
Tampilkan pesan “No. Telp Karyawan harus diisi”
Selain itu
Update MsKaryawan
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsKaryawan
Akhir jika
Jika ingin menghapus data
Delete MsKaryawan
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
303
Modul Data Obat
Mulai
Tampilkan form Data Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Obat dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Jika input Kd Jenis Obat kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Jenis Obat kosong maka
Tampilkan pesan “Jenis Obat harus diisi”
Jika input Kemasan kosong maka
Tampilkan pesan “Kemasan harus diisi”
Jika input Isi kosong maka
Tampilkan pesan “Isi harus diisi”
Jika input Qty Obat Tersedia kosong maka
304
Tampilkan pesan “Qty Obat Tersedia harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
Selain itu
Insert MsObat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsObat
Akhir jika
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Jika input Kd Jenis Obat kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Jenis Obat kosong maka
Tampilkan pesan “Jenis Obat harus diisi”
Jika input Kemasan kosong maka
Tampilkan pesan “Kemasan harus diisi”
Jika input Isi kosong maka
Tampilkan pesan “Isi harus diisi”
305
Jika input Qty Obat Tersedia kosong maka
Tampilkan pesan “Qty Obat Tersedia harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
Selain itu
Update MsObat
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsObat
Akhir jika
Jika ingin menghapus data
Delete MsObat
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Data Pemasok
Mulai
Tampilkan form Data Pemasok
Buka koneksi ke database dbMedikaryaKlinik.db
306
Tampilkan data Pemasok dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Pemasok kosong maka
Tampilkan pesan “Kd Pemasok harus diisi”
Jika input Nama Pemasok kosong maka
Tampilkan pesan “Nama Pemasok harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input KodePos kosong maka
Tampilkan pesan “KodePos harus diisi”
Jika input No. Telp Pemasok kosong maka
Tampilkan pesan “No. Telp Pemasok harus diisi”
Selain itu
Insert MsPemasok
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsPemasok
Akhir jika
307
Jika ingin mengubah data maka
Cek semua field
Jika input Kd Pemasok kosong maka
Tampilkan pesan “Kd Pemasok harus diisi”
Jika input Nama Pemasok kosong maka
Tampilkan pesan “Nama Pemasok harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input KodePos kosong maka
Tampilkan pesan “KodePos harus diisi”
Jika input No. Telp Pemasok kosong maka
Tampilkan pesan “No. Telp Pemasok harus diisi”
Selain itu
Update MsPemasok
Akhir jika
Akhir jika
Jika ingin menyimpan perubahan data
Save MsPemasok
Akhir jika
Jika ingin menghapus data
Delete MsPemasok
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
308
Akhir Jika
Akhir lakukan
Selesai
Modul Pendaftaran Pasien Baru
Mulai
Tampilkan form Pendaftaran Pasien Baru
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pendaftaran Pasien Baru dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin membuat data baru maka
Cek semua field
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input Nomor Identitas kosong maka
Tampilkan pesan “Nomor Identitas harus diisi”
Jika input Tempat Lahir kosong maka
Tampilkan pesan “Tempat Lahir harus diisi”
Jika input Tanggal Lahir kosong maka
Tampilkan pesan “Tanggal Lahir harus diisi”
Jika input Jenis Kelamin kosong maka
309
Tampilkan pesan “Jenis Kelamin harus diisi”
Jika input Agama kosong maka
Tampilkan pesan “Agama harus diisi”
Jika input Golongan Darah kosong maka
Tampilkan pesan “Golongan Darah harus diisi”
Jika input Status Perkawinan kosong maka
Tampilkan pesan “Status Perkawinan harus diisi”
Jika input Alamat kosong maka
Tampilkan pesan “Alamat harus diisi”
Jika input Kode Pos kosong maka
Tampilkan pesan “Kode Pos harus diisi”
Jika input No.Tel Pasien kosong maka
Tampilkan pesan “No. Telp Pasien harus diisi”
Jika input Pekerjaan kosong maka
Tampilkan pesan “Pekerjaan harus diisi”
Selain itu
Save MsPasien
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset MsPasien
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
310
Akhir Jika
Akhir lakukan
Selesai
Modul Pendaftaran Pasien Berobat
Mulai
Tampilkan form Data Pasien Berobat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pasien Berobat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Berobat kosong maka
Tampilkan pesan “No. Berobat harus diisi”
Jika input Tanggal Berobat kosong maka
Tampilkan pesan “Tanggal Berobat harus diisi”
Jika input Jam Berobat maka
Tampilkan pesan “Jam Berobat harus diisi”
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
311
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input Umur Pasien kosong maka
Tampilkan pesan “Umur Pasien harus diisi”
Jika input Pelayanan kosong maka
Tampilkan pesan “Pelayanan harus diisi”
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Selain itu
Add PasienBerobat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset PasienBerobat
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
312
Modul Antrian Pasien
Mulai
Tampilkan form Antrian Pasien
Buka koneksi ke database KlinikMedikarya.db
Tampilkan data Antrian Pasien dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database KlinikMedikarya.db
Akhir jika
Jika ingin menghapus baris data
Ok AntrianPasien
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Resep
Mulai
Tampilkan form Data Resep
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Resep dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
313
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input Kd Resep kosong maka
Tampilkan pesan “Kd Resep harus diisi”
Jika input Tanggal Resep kosong maka
Tampilkan pesan “Tanggal Resep harus diisi”
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
Jika input Dosis Obat kosong maka
Tampilkan pesan “Dosis Obat harus diisi”
Jika input Qty Obat Resep kosong maka
Tampilkan pesan “Qty Obat Resep harus diisi”
Selain itu
314
Add Resep
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset Resep
Akhir jika
Jika ingin menyimpan perubahan data
Save Resep
Akhir jika
Jika ingin menghapus data
Delete Resep
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul View Data Resep
Mulai
Tampilkan form View Data Resep
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Resep dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
315
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Rekam Medis
Mulai
Tampilkan form Data Rekam Medis
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Rekam Medis dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Rekam kosong maka
Tampilkan pesan “No. Rekam harus diisi”
Jika input Tanggal Rekam kosong maka
316
Tampilkan pesan “Tanggal Rekam harus diisi”
Jika input Jam Rekam kosong maka
Tampilkan pesan “Jam Rekam harus diisi”
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input Umur Pasien kosong maka
Tampilkan pesan “Umur Pasien harus diisi”
Jika input Keluhan kosong maka
Tampilkan pesan “Keluhan harus diisi”
Jika input Penyakit kosong maka
Tampilkan pesan “Penyakit harus diisi”
Jika input Tindakan Pasien kosong maka
Tampilkan pesan “Tindakan Pasien harus diisi”
Jika input Kd Resep kosong maka
Tampilkan pesan “Kd Resep harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Qty Obat kosong maka
Tampilkan pesan “QtyObat harus diisi”
Jika input Dosisi Obat kosong maka
Tampilkan pesan “Dosisi Obat harus diisi”
Jika input Kd Dokter kosong maka
317
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Karyawan kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Selain itu
Add RekamMedis
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset RekamMedis
Akhir jika
Jika ingin menyimpan perubahan data
Save RekamMedis
Akhir jika
Jika ingin menghapus data
Delete RekamMedis
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
318
Selesai
Modul View Data Rekam Medis
Mulai
Tampilkan form View Data Rekam Medis
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Rekam Medis dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Administrasi
Mulai
Tampilkan form Administrasi
Buka koneksi ke database KlinikMedikarya.db
Tampilkan data MsPasien dengan menggunakan perintah SQL yaitu “SELECT”
Lakukan
319
Jika ingin mencari data maka
Ambil data dari database KlinikMedikarya.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Penjualan Obat
Mulai
Tampilkan form Data Penjualan Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Penjualan Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Penjualan kosong maka
Tampilkan pesan “No. Penjualan harus diisi”
Jika input Tanggal Penjualan kosong maka
320
Tampilkan pesan “Tanggal Penjualan harus diisi”
Jika input Kd Resep kosong maka
Tampilkan pesan “Kd Resep harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Jenis Obat kosong maka
Tampilkan pesan “Jenis Obat harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
Jika input Qty Obat Keluar kosong maka
Tampilkan pesan “Qty Obat Keluar harus diisi”
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Karyawan kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Selain itu
Add PenjualanObat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset PenjualanObat
Akhir jika
321
Jika ingin menyimpan perubahan data
Save PenjualanObat
Akhir jika
Jika ingin menghapus data
Delete PenjualanObat
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul View Penjualan Obat
Mulai
Tampilkan form View Penjualan Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Penjualan Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
322
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Pembelian Obat
Mulai
Tampilkan form Data Pembelian Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pembelian Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Pembelian kosong maka
Tampilkan pesan “No. Pembelian harus diisi”
Jika input Tanggal Pembelian kosong maka
Tampilkan pesan “Tanggal Pembelian harus diisi”
Jika input Kd Resep kosong maka
Tampilkan pesan “Kd Resep harus diisi”
Jika input No. Faktur Pembelian kosong maka
Tampilkan pesan “No. Faktur Pembelian harus diisi”
323
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Jenis Obat kosong maka
Tampilkan pesan “Jenis Obat harus diisi”
Jika input Qty Obat Beli kosong maka
Tampilkan pesan “Qty Obat Beli harus diisi”
Jika input Status kosong maka
Tampilkan pesan “Status harus diisi”
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Karyawan kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Selain itu
Add PembelianObat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset PembelianObat
Akhir jika
Jika ingin menyimpan perubahan data
Save PembelianObat
Akhir jika
324
Jika ingin menghapus data
Delete PembelianObat
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul View Pembelian Obat
Mulai
Tampilkan form View Pembelian Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pembelian Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
325
Modul Input Data Faktur Pembelian Obat
Mulai
Tampilkan form Data Faktur Pembelian Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Faktur Pembelian Obat dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Faktur Pembelian kosong maka
Tampilkan pesan “No. Faktur Pembelian harus diisi”
Jika input Tanggal Faktur kosong maka
Tampilkan pesan “Tanggal Faktur harus diisi”
Jika input Tanggal Jatuh Tempo kosong maka
Tampilkan pesan “Tanggal Jatuh Tempo harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
326
Jika input Qty Obat Beli kosong maka
Tampilkan pesan “Qty Obat Beli harus diisi”
Jika input Kd Pemasok kosong maka
Tampilkan pesan “Kd Pemasok harus diisi”
Jika input Nama Pemasok kosong maka
Tampilkan pesan “Nama Pemasok harus diisi”
Jika input Kd Karyawan maka
Tampilkan pesan “Kd Karyawan harus diisi”
Jika input Nama Karyawan kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Selain itu
Add FakturPembelianObat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset FakturPembelianObat
Akhir jika
Jika ingin menyimpan perubahan data
Save FakturPembelianObat
Akhir jika
Jika ingin menghapus data
Delete FakturPembelianObat
Akhir jika
Jika ingin keluar maka
327
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul View Data Faktur Pembelian Obat
Mulai
Tampilkan form View Data Faktur Pembelian Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Faktur Pembelian Obat dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Input Data Retur Pembelian Obat
Mulai
Tampilkan form Data Retur Pembelian Obat
328
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Retur Pembelian Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Retur kosong maka
Tampilkan pesan “No. Retur harus diisi”
Jika input Tanggal Retur kosong maka
Tampilkan pesan “Tanggal Retur harus diisi”
Jika input Ket Retur kosong maka
Tampilkan pesan “Ket Retur harus diisi”
Jika input No. Pembelian kosong maka
Tampilkan pesan “No. Pembelian harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Qty Obat Retur kosong maka
Tampilkan pesan “Qty Obat Retur harus diisi”
Jika input Kd Pemasok kosong maka
329
Tampilkan pesan “Kd Pemasok harus diisi”
Jika input Nama Pemasok kosong maka
Tampilkan pesan “Nama Pemasok harus diisi”
Selain itu
Add ReturPembelianObat
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset ReturPembelianObat
Akhir jika
Jika ingin menyimpan perubahan data
Save ReturPembelianObat
Akhir jika
Jika ingin menghapus data
Delete ReturPembelianObat
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
330
Modul View Data Retur Pembelian Obat
Mulai
Tampilkan form View Data Retur Pembelian Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Retur Pembelian Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika tombol Exit ditekan maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Pembayaran Pasien
Mulai
Tampilkan form Data Pembayaran Pasien
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Pembayaran Pasien dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencari data maka
331
Ambil data dari database dbMedikaryaKlinik.db
Akhir jika
Jika ingin membuat data baru maka
Cek semua field
Jika input No. Pembayaran kosong maka
Tampilkan pesan “No. Pembayaran harus diisi”
Jika input Tanggal Pembayaran kosong maka
Tampilkan pesan “Tanggal Pembayaran harus diisi”
Jika input Jam kosong maka
Tampilkan pesan “Jam harus diisi”
Jika input NIP kosong maka
Tampilkan pesan “NIP harus diisi”
Jika input Nama Pasien kosong maka
Tampilkan pesan “Nama Pasien harus diisi”
Jika input No. Berobat kosong maka
Tampilkan pesan “No. Berobat harus diisi”
Jika input Pelayanan kosong maka
Tampilkan pesan “Pelayanan harus diisi”
Jika input Kd Dokter kosong maka
Tampilkan pesan “Kd Dokter harus diisi”
Jika input Nama Dokter kosong maka
Tampilkan pesan “Nama Dokter harus diisi”
Jika input Biaya Dokter kosong maka
Tampilkan pesan “Biaya Dokter harus diisi”
332
Jika input Biaya Admin kosong maka
Tampilkan pesan “Biaya Admin harus diisi”
Jika input Kd Resep kosong maka
Tampilkan pesan “Kd Resep harus diisi”
Jika input Kd Obat kosong maka
Tampilkan pesan “Kd Obat harus diisi”
Jika input Nama Obat kosong maka
Tampilkan pesan “Nama Obat harus diisi”
Jika input Jenis Obat kosong maka
Tampilkan pesan “Jenis Obat harus diisi”
Jika input Harga Obat kosong maka
Tampilkan pesan “Harga Obat harus diisi”
Jika input Qty Obat Keluar kosong maka
Tampilkan pesan “Qty Obat Keluar harus diisi”
Jika input Kd Karyawan kosong maka
Tampilkan pesan “Nama Karyawan harus diisi”
Selain itu
Add PembayaranPasien
Akhir jika
Akhir jika
Jika pengisian data dibatalkan
Reset PembayaranPasien
Akhir jika
Jika ingin menyimpan perubahan data
333
Save PembayaranPasien
Akhir jika
Jika ingin menghapus data
Delete PembayaranPasien
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir lakukan
Selesai
Modul Laporan Obat
Mulai
Tampilkan form Laporan Obat
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanObat
Selain itu
Cancel LaporanObat
Akhir jika
Jika ingin keluar maka
334
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
Modul Laporan Keuangan
Mulai
Tampilkan form Laporan Keuangan
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Keuangan dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanKeuangan
Selain itu
Cancel LaporanKeuangan
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
335
Modul Laporan Pasien
Mulai
Tampilkan form Laporan Pasien
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Pasien dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanPasien
Selain itu
Cancel LaporanPasien
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
Modul Laporan Absensi Dokter
Mulai
Tampilkan form Laporan Absensi Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Absensi Dokter dengan menggunakan perintah SQL
yaitu “SELECT”
336
Lakukan
Jika ingin mencetak data maka
View LaporanAbsensiDokter
Selain itu
Cancel LaporanAbsensiDokter
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
Modul Laporan Jadwal Praktek Dokter
Mulai
Tampilkan form Laporan Praktek Dokter
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Praktek Dokter dengan menggunakan perintah SQL
yaitu “SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanPraktekDokter
Selain itu
Cancel LaporanPraktekDokter
Akhir jika
337
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
Modul Laporan Absensi Karyawan
Mulai
Tampilkan form Laporan Absensi Karyawan
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Obat dengan menggunakan perintah SQL yaitu
“SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanAbsensiKaryawan
Selain itu
Cancel LaporanAbsensiKaryawan
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai
338
Modul Laporan Jadwal Kerja Karyawan
Mulai
Tampilkan form Laporan Jadwal Kerja Karyawan
Buka koneksi ke database dbMedikaryaKlinik.db
Tampilkan data Laporan Jadwal Kerja Karyawan dengan menggunakan perintah
SQL yaitu “SELECT”
Lakukan
Jika ingin mencetak data maka
View LaporanJadwalKerjaKaryawan
Selain itu
Cancel LaporanJadwalKerjaKaryawan
Akhir jika
Jika ingin keluar maka
Tutup Koneksi
Akhir Jika
Akhir Lakukan
Selesai