BAB 1 KONSEP DASAR...

dokumen-dokumen yang mirip
Oleh : Uus Rusmawan Hal - 1 -






FUNGSI PENCABANGAN DAN PERULANGAN








Universitas Sumatera Utara

1. Rancangan Input Program Form Menu Utama Form Data Barang [ Input Barang ]



Tutorial, Source code, Request Program Visual Basic


Oleh : Uus Rusmawan Hal - 1 -


Program absen dengan menggunakan visual basic 6.0

Gambar 1 Table Petugas. Gambar 2 Penambahan Komonen Pada Form


Pertemuan III MENYIMPAN REKAMAN (RECORD) KE DALAM BASIS DATA


E-Trick Visual Basic 6.0



MEMBUAT LAPORAN (DATA REPORT)

Oleh : Uus Rusmawan Hal - 1 -

Field Tipe Data Size Keterangan userid Text 12 Primary key namauser Text 30 - password Text 8 - akses Text 10 -






PERANCANGAN DATABASE 04/07/ :53

ANALISA RANCANGAN DATABASE

Praktekum VB 6.0 I. KOTAK PESAN. Contoh syntax kotak pesan

BAB IV PERANCANGAN SISTEM INFORMASI AKUNTANSI BELANJA

Coding : Coding : Oleh : Uus Rusmawan Hal - 1

Pertemuan V Menggabungkan Form dengan Menu daan Membuat Laporan Menggunakan Crystal Report

Basic Programing Visual Basic

Excel Sebagai Output VB 3.1 Excel Sebagai Output VB


MODUL D :// Mahasiswa memahami konsep pembuatan database. Mahasiswa memahami konsep pembuatan program dasar aplikasi database

KONEKSI VB DENGAN MYSQL (Wajib, S.Pd.)


BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

UNIVERSITAS GUNADARMA

Krisna D. Octovhiana. 1.1 Mengenal Struktur Kontrol.

MODUL IV PERULANGAN ( LOOPING )

bergantung pada keberadaan entitas lainnya[9]. relasi yang merekatkan dua entitas adalah bersifat



KARTU BIMBINGAN TUGAS AKHIR MAHASISWA

Listing Program a. Form Login. Public LoginSucceeded As Boolean

IMPLEMENTASI ERD KE PROGRAM DATABASE DENGAN DELPHI MENGGUNAKAN DB ACCESS

Praktikum 6 SubForm dan Kode VBA


STRUKTUR KENDALI PERULANGAN

Koneksi Visual Basic 6.0 dengan SQL SERVER 2000

OPERASI FILE Operasi File Dalam Visual Basic Membuka File


SISTEM BASIS DATA. Pertemuan 3. Nizar Rabbi Radliya 3 SKS Semester 2 S1 Sistem Informasi

Koneksi Visual Basic, MySQL (ODBC) dan Crystal Report

Struktur kontrol terbagi dalam dua jenis yaitu : Struktur pengambilan keputusan Struktur pengulangan (Loooping)

Oleh : Uus Rusmawan


BAB IV PERANCANGAN SISTEM


ANALISA RANCANGAN NORMALISASI & DATABASE

Rancangan Database. Database. File. Record. Data item atau field. Characters

DAFTAR PUSTAKA. pada PT. Restu Mahkota Karya. Sekolah Tinggi Manajemen Informatika dan

Bab 7 Komponen Dasar Visual Basic 29 BAB VII KOMPONEN DASAR VISUAL BASIC TUJUAN PRAKTIKUM

Struktur Data II. Bekerja Dengan Form.

Bahasa Pemrograman-1 (Visual Basic)

MEMBACA RECORD DENGAN ADODC

FORM LOGIN. Option Explicit. Private Sub cmdexit_click() End End Sub

BAB IV PERANCANGAN. Gambar diatas adalah tampilang awal ketika ingin memulai project baru. Pilih Standart EXE untuk memulai project.


BAB IV PENGUJIAN DAN ANALISIS

LAMPIRAN A : LISTING PROGRAM

MODUL 2 Variabel, Val, If tunggal dan If bersarang + case


Me.Picture = LoadPicture(App.Path & "\pakar.jpg") App.HelpFile = App.Path & "\Help.hlp" End Sub

Materi : Koneksi database & Operasi dasar table di Visual Basic 6.0.

Otodidak VBA MS Excel untuk Pemula

STMIK AMIKOM YOGYAKARTA

PERTEMUAN KE-6 STRUKTUR PERULANGAN (menggunakan Loop dan Timer)




Langkah ke 2 yaitu buat database form bukunya seperti gambar dibawah ini

Oleh : Uus Rusmawan

PRAKTIKUM 4 ARRAY DAN SUB ROUTINE

Penggunaan Struktur Kontrol Pengulangan. Adi Rachmanto,S.Kom Prodi Akuntansi - UNIKOM

Modul Database dan Pengaksesannya dari FORM #Lanjutan

Transkripsi:

Daftar Isi Kata Pengantar... v Daftar Isi...ix BAB 1 KONSEP DASAR...1 1.1 Type Data...3 1.2 Membuat Primary Key dan Foreign Key...4 1.3 Mengubah Posisi Field...4 1.4 Menyalin Tabel...6 1.5 Menghapus dan Mengganti Nama Tabel...8 1.6 Menghapus Isi Tabel...9 1.7 Membuat Tabel Hasil Query...9 1.8 Menyalin Form dan Listing Program...11 1.9 Mencari dan Mengganti Kata...13 1.10 Merancang Tabel dari Bentuk Output...14 1.11 Penyebutan Nama Tabel, Data Control, dan Tabel Definitif...18 BAB 2 PROGRAM DASAR...21 2.1 Program Pengolahan Data Barang...23 2.2 Program Pengolahan Data Kasir...31 2.3 Program Pengolahan Data Pemasok...37 2.4 Program Pengolahan Data Pelanggan...42 2.5 Membuat Database...47 2.6 Membuat Tabel dan Index...48 ix

2.7 Pengolahan Data Model InputBox...50 2.8 Pengolahan Data Model Grid...53 BAB 3 PROGRAM PASSWORD DATABASE...63 3.1 Program Cek Password File Database...63 3.2 Membuat Password Database...66 3.3 Mengubah Password Database...67 3.4 Menghapus Password Database...68 3.5 Password Tiga Kali Kesempatan...69 3.6 Password Berlapis...72 BAB 4 PROGRAM REKAM MEDIS...77 4.1 Program Rekam Medis...79 4.2 Pencarian Berdasarkan Nomor Rekam Medis...86 4.3 Pencarian Berdasarkan Nama Pasien...88 4.4 Hasil Pencarian Data Pasien...90 4.5 Normalisasi File...92 4.5.1 Bentuk-Bentuk Normalisasi...93 BAB 5 PROGRAM PENJUALAN...101 5.1 Program Password...104 5.2 Program Cek Format Tanggal...106 5.3 Program Penjualan Model Pertama...108 5.4 Program Penjualan Model Kedua...120 5.5 Program Rincian Penjualan...130 5.6 Laporan Penjualan...132 5.6.1 Laporan Harian...135 5.6.2 Laporan Mingguan...137 5.6.3 Laporan Bulanan...138 5.7 Normalisasi File...140 BAB 6 PROGRAM AKADEMIK...145 6.1 Proses Kegiatan Akademik...146 6.2 Pendaftaran Mahasiswa Baru...148 6.3 Data Mata kuliah...157 6.3.1 Pencetakan Data Mata Kuliah...158 6.3.2 Hasil Pencetakan Data Mata Kuliah...161 x

6.4 Updating Data Master...161 6.5 Pencetakan Absen Kelas...163 6.5.1 Pencetakan KTM...163 6.5.2 Pencetakan KRS...164 6.6 Pencetakan Absen UTS...165 6.7 Transfer Data dari Excel ke Access dan Update Data...166 6.8 Menyalin Isi Tabel dan Updating Data...173 6.9 Pendaftaran Her...175 6.9.1 Pencetakan Data Her...181 6.9.2 Pencetakan KPU Her...185 6.9.3 Pencetakan Absen Ujian Her...185 6.9.4 Entri Nilai Her...186 6.9.5 Pencetakan Nilai Her...191 6.10 Updating Nilai Transkrip...193 6.11 Pencetakan Nilai...194 6.11.1 Membuat Laporan dengan Posisi NIM Terurut...200 6.11.2 Membuat Laporan dengan Posisi Mata Kuliah Terurut...206 6.11.3 Pencetakan Nilai Urut NIM...206 6.11.4 Pencetakan Nilai Urut Mata Kuliah...206 6.11.5 Pencetakan Nilai Semester...207 6.11.6 Pencetakan Transkrip Nilai...207 6.12 Membuat Formula di Transkrip Nilai...208 6.12.1 Mutu...208 6.12.2 Total SKS dan Total Mutu...209 6.12.3 IPS...210 6.12.4 Predikat...211 BAB 7 PROGRAM PELENGKAP...213 7.1 Program Trial...213 7.2 Program Animasi Sederhana...214 7.2.1 Form Datang dari Bawah...215 7.2.2 Form Terbuka Melebar...216 7.2.3 Form Ditutup Bergerak ke Bawah...217 7.2.4 Form Ditutup Bergerak ke Kanan...217 7.2.5 Objek Berkedip...218 7.2.6 Teks Berjalan...219 xi

7.2.7 Program OLE...220 7.2.8 Program Pesan Baris...222 7.3 Membuka Dua Tabel Berbeda Database...222 7.4 Menampilkan Struktur Tabel...224 7.5 Membuat Program Backup...226 7.6 Menampilkan Sejumlah Data...228 7.7 Memanggil Mail Merge dengan Visual Basic...230 Daftar Pustaka...239 xii

BAB 4 PROGRAM REKAM MEDIS Pendahuluan: Dalam program ini digambarkan proses diagnosa pasien oleh dokter, dimana datanya akan disajikan berupa informasi rekam medis. Fokus program ini adalah laporan rekam medis pasien, bukan masalah pembayaran dan keuangan dari proses rekam medisnya. Catatan: Database yang diakses adalah Medical.Mdb yang berada di lokasi C:\Program Rekam Medis. Rancangan database: Nama Objek Medical Pasien Dokter Obat RekamMedis Resep TRResep Keterangan File Database Tabel Tabel Tabel Tabel Tabel Tabel Temporer 77

Tabel 1. Tabel Pasien Nama Field Type Lebar Keterangan KodePsn Text 5 Field Index NamaPsn Text 35 Umur Text 3 Jnskelamin Text 10 AlamatPsn Text 35 TeleponPsn Text 15 PekerjaanPsn Text 30 Pasiendex File Index Tabel 2. Tabel Dokter Nama Field Type Lebar Keterangan KodeDkt Text 5 Field Index NamaDkt Text 35 AlamatDkt Text 35 TeleponDkt Text 15 Spesialisasi Text 30 Tabel 3. Tabel Obat Nama Field Type Lebar Keterangan KodeObt Text 5 Field index NamaObt Text 35 JenisObt Text 15 JumlahObt Text 4 ObatDex File index 78

Tabel 4. Tabel Resep Nama Field Type Lebar Keterangan NomorRkm Text 5 KodeObt Text 5 Dosis Text 3 Tabel 5. Tabel Rekam Medis Nama Field Type Lebar Keterangan NomorRkm Text 5 Field Index TglPeriksa Date 8 KodePsn Text 5 KodeDkt Text 5 Diagnosis Text 50 Keterangan Text 25 Rekamdex File Index Untuk menghemat ruang dan waktu, pembuatan program untuk data pasien, obat dan dokter tidak disajikan di sini, silakan dibuat sendiri dengan merujuk pada Bab 2 (program dasar) dengan panduan struktur tabel yang telah dijelaskan di atas, atau Anda dapat membuka CD program pendukung buku ini, lalu melihat programnya satu per satu. 4.1 Program Rekam Medis Program berikut ini berisi relasi seluruh tabel yang ada dalam database. Bentuk normalisasi dibuat hingga level ketiga dengan tujuan menghindari redudansi dan anomali lainnya. Anda dapat mengubah atau menambah keterangan lain yang diperlukan. Misalnya, data pasien ditampilkan umur dan alamatnya, data dokter ditampilkan spesialisasinya. 79

Listing program: 'definsikan database dan tabel Dim DB As Database Dim RSObat As Recordset 80 Gambar 4.1 Form rekam medis Private Sub Form_load() 'batasi jumlah karakter yg dientri TxtDiagnosa.MaxLength = 50 TxtKeterangan.MaxLength = 25 'buka database dan tabel Set DB = OpenDatabase("C:\Program Rekam Medis\Medical.mdb") Set RSObat = DB.OpenRecordset("Select * from Obat") List1.Clear 'tampilkan kode dan nama obat di list (sebelah kanan) Do Until RSObat.EOF List1.AddItem RSObat!KodeObt & vbtab & RSObat!NamaObt RSObat.MoveNext Loop Private Sub Form_activate() 'panggil nomor rekam medis otomatis Call Auto 'panggil tabel transaksi Call Tabel_Kosong DTTransaksi.Recordset.MoveFirst 'tampilkan tanggal sistem kompter TxtTanggal = Date CmdSimpan.Enabled = False

Private Sub TxtDiagnosa_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then TxtKeterangan.SetFocus Private Sub TxtKeterangan_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then DBGrid1.SetFocus DBGrid1.Col = 1 'nomor rekam medis muncul otomatis 'akan membaca nomor terbesar lalu ditambah 1 Private Sub Auto() Dim Urutan As String * 5 Dim Hitung As Byte With DTRekamMedis.Recordset If.RecordCount = 0 Then Urutan = "00001" Else.MoveLast Hitung = Val(Right(.Fields("NomorRkm"), 5)) + 1 Urutan = Right("00000" & Hitung, 5) TxtNomorRkm = Urutan End With 'menyiapkan tabel kosong untuk transaksi 'akan dihapus datanya jika masih ada yg tersisa Function Tabel_Kosong() If Not DTTransaksi.Recordset.RecordCount = 0 Then DTTransaksi.Recordset.MoveFirst Do While Not DTTransaksi.Recordset.EOF DTTransaksi.Recordset.Delete DTTransaksi.Recordset.MoveNext Loop For i = 1 To 10 DTTransaksi.Recordset.AddNew DTTransaksi.Recordset!Nomor = i DTTransaksi.Recordset.Update Next i End Function Private Sub CboPasien_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 81

'mencari data pasien Private Sub CboPasien_Change() If Len(CboPasien.Text) < 5 Then Exit Sub With DTPasien.Recordset.Index = "Pasiendex".Seek "=", CboPasien If Not.NoMatch Then TxtNamaPsn =!NamaPsn CboDokter.SetFocus End With Private Sub CboDokter_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 'mencari data dokter Private Sub CboDokter_Change() If Len(CboDokter.Text) < 5 Then Exit Sub With DTDokter.Recordset.Index = "Dokterdex".Seek "=", CboDokter If Not.NoMatch Then TxtNamaDkt =!NamaDkt TxtDiagnosa.SetFocus End With 'jika menekan tombol Escape 'data di baris tersebut akan dikosongkan Private Sub DBGrid1_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbkeyescape DTTransaksi.Recordset.Edit DTTransaksi.Recordset!Kode = Null DTTransaksi.Recordset!Nama = Null DTTransaksi.Recordset!Jenis = Null DTTransaksi.Recordset!Jumlah = Null DTTransaksi.Recordset.Update End Select 'semua huruf diubah jadi besar Private Sub DBGrid1_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) 82

'menampilkan data obat di Grid 'jika kodenya benar Private Sub DBGrid1_AfterColEdit(ByVal ColIndex As Integer) On Error GoTo salah If DBGrid1.Col = 1 Then If KeyAscii = 13 Then If Len(DBGrid1) < 5 Then MsgBox "Kode Harus 5 digit" DBGrid1.Col = 1 Exit Sub DTObat.Recordset.Index = "Obatdex" DTObat.Recordset.Seek "=", DBGrid1.SelText If Not DTObat.Recordset.NoMatch Then DTTransaksi.Recordset.Edit DTTransaksi.Recordset!Kode = DTObat.Recordset!KodeObt DTTransaksi.Recordset!Nama = DTObat.Recordset!NamaObt DTTransaksi.Recordset!Jenis = DTObat.Recordset!jenisObt DTTransaksi.Recordset.Update DBGrid1.Col = 4 DBGrid1.Refresh Exit Sub If DBGrid1.Col = 4 Then DTTransaksi.Recordset.Edit DTTransaksi.Recordset!Jumlah = DTTransaksi.Recordset!Jumlah DTTransaksi.Recordset.Update DTTransaksi.Recordset.MoveNext DBGrid1.Col = 1 On Error GoTo 0 Exit Sub salah: MsgBox "Cek Isian Data" Private Sub DBGrid1_LostFocus() CmdSimpan.Enabled = True CmdSimpan.SetFocus 'kode obat dapat dientri ke dalam DBgrid 'dengan memilih dari list sebelah kanan Private Sub List1_Click() DTTransaksi.Recordset.Edit DTTransaksi.Recordset!Kode = Left(List1, 5) DTObat.Recordset.Index = "Obatdex" DTObat.Recordset.Seek "=", DTTransaksi.Recordset!Kode DTTransaksi.Recordset!Nama = DTObat.Recordset!NamaObt DTTransaksi.Recordset!Jenis = DTObat.Recordset!jenisObt 83

DTTransaksi.Recordset.Update DBGrid1.SetFocus DBGrid1.Col = 4 Private Sub Bersihkan() CboPasien = "": CboDokter = "" TxtDiagnosa = "": TxtNamaPsn = "" TxtNamaDkt = "": TxtKeterangan = "" Private Sub CmdSimpan_Click() 'mencegah data kosong If CboPasien = "" Or CboDokter = "" Or TxtDiagnosa = "" Or TxtKeterangan = "" Then MsgBox "Cek Isi Data :" & Chr(13) & _ "Kode Pasien, Kode Dokter" & Chr(13) & _ "Diagnosa dan Keterangan...!" Exit Sub 'simpan ke tabel RekamMedis DTRekamMedis.Recordset.AddNew DTRekamMedis.Recordset!NomorRkm = TxtNomorRkm DTRekamMedis.Recordset!TglPeriksa = TxtTanggal DTRekamMedis.Recordset!Kodepsn = CboPasien.Text DTRekamMedis.Recordset!KodeDkt = CboDokter.Text DTRekamMedis.Recordset!Diagnosis = TxtDiagnosa DTRekamMedis.Recordset!Keterangan = TxtKeterangan DTRekamMedis.Recordset.Update 'simpan ke tabel DetailRekamMedis DTTransaksi.Recordset.MoveFirst Do While Not DTTransaksi.Recordset.EOF If DTTransaksi.Recordset!Kode <> vbnullstring Then DTResep.Recordset.AddNew DTResep.Recordset!NomorRkm = TxtNomorRkm + DTTransaksi.Recordset!Nomor DTResep.Recordset!KodeObt = DTTransaksi.Recordset!Kode DTResep.Recordset!Dosis = DTTransaksi.Recordset!Jumlah DTResep.Recordset.Update DTTransaksi.Recordset.MoveNext Loop 'Pengurangan Jumlah Obat DTTransaksi.Recordset.MoveFirst Do While Not DTTransaksi.Recordset.EOF If DTTransaksi.Recordset!Kode <> vbnullstring Then DTObat.Recordset.Index = "Obatdex" DTObat.Recordset.Seek "=", DTTransaksi.Recordset!Kode DTObat.Recordset.Edit DTObat.Recordset!JumlahStok = DTObat.Recordset!JumlahStok - DTTransaksi.Recordset!Jumlah 84

DTObat.Recordset.Update DTTransaksi.Recordset.MoveNext Loop Bersihkan Form_activate CboPasien.SetFocus Call Cetak Private Sub CmdBatal_Click() Bersihkan Form_activate DBGrid1.Enabled = False CboPasien.SetFocus Private Sub CmdTutup_Click() Unload Me Sub Cetak() Tampilkan.Show Dim MGrs As String Tampilkan.Font = "Courier New" 'memilih nomor terakhir di tabel rekam medis DTResep.RecordSource = "select * from Resep Where left(nomorrkm,5) In(Select max(left(nomorrkm,5)) From Resep)" DTResep.Refresh 'memilih nomor terakhir di tabel resep DTRekamMedis.RecordSource = "select * from rekammedis Where NomorRkm In(Select Max(NomorRkm)From rekammedis)order By NomorRkm Desc" ', Nomor Asc" DTRekamMedis.Refresh 'mencari kode pasien di tabel rekam medis DTPasien.Recordset.Index = "Pasiendex" DTPasien.Recordset.Seek "=", DTRekamMedis.Recordset!Kodepsn 'mencari kode dokter di tabel rekam medis DTDokter.Recordset.Index = "Dokterdex" DTDokter.Recordset.Seek "=", DTRekamMedis.Recordset!KodeDkt Tampilkan.Print Tampilkan.FontBold = True Tampilkan.Print Tampilkan.FontBold = False Tampilkan.Print Tab(5); "NomorRkm : "; DTRekamMedis.Recordset!NomorRkm Tampilkan.Print Tab(5); "Tanggal : "; Format(Date, "DD- MMMM-YYYY") 85

Tampilkan.Print Tab(5); "Dokter : "; DTDokter.Recordset!NamaDkt Tampilkan.Print Tab(5); "Pasien : "; DTPasien.Recordset!NamaPsn MGrs = String$(33, "-") Tampilkan.Print Tab(5); MGrs 'menampilkan obat dari tabel resep DTResep.Recordset.MoveFirst Do While Not DTResep.Recordset.EOF DTObat.Recordset.Index = "Obatdex" DTObat.Recordset.Seek "=", DTResep.Recordset!KodeObt Tampilkan.Print Tab(5); Mid(DTResep.Recordset!NomorRkm, 6, 2); Tampilkan.Print Tab(10); DTObat.Recordset!NamaObt; Tampilkan.Print Tab(30); RKanan(DTResep.Recordset!Dosis, "##"); DTResep.Recordset.MoveNext Loop Tampilkan.Print Tab(5); MGrs Tampilkan.Print Tampilkan.Print Private Function RKanan(NData, CFormat) As String RKanan = Format(NData, CFormat) RKanan = Space(Len(CFormat) - Len(RKanan)) + RKanan End Function 4.2 Pencarian Berdasarkan Nomor Rekam Medis Program pencarian data ini dilakukan dengan memilih nomor rekam medis yang akan menghasilkan informasi tentang nama pasien, dokter yang melakukan diagnosa, tanggal diagnosa dan obat yang diberikan oleh dokter. Anda dapat menambahkan keterangan lain untuk ditampilkan, misalnya pasien ditampilkan pula alamat dan umurnya, atau dokter ditampilkan spesialisasinya. 86

Listing program: Gambar 4.2 Pencarian berdasarkan nomor rekam medis 'definisikan file database dan tabel dengan variabel Dim DB As Database Dim RSRekam As Recordset Dim RSpasien As Recordset Private Sub Form_load() 'panggil file database Set DB = OpenDatabase("C:\Program Rekam Medis\Medical.mdb") Combo1.Clear 'pilih field nomor rekam medis dalam tabel Set RSRekam = DB.OpenRecordset("Select Distinct NomorRkm from RekamMedis") RSRekam.Requery 'tambahkan item data nomor rekam medis di combo1 Do Until RSRekam.EOF Combo1.AddItem RSRekam!NomorRkm RSRekam.MoveNext Loop Private Sub Combo1_Click() 'cari data yang nomor rekam medisnya dipilih di combo1 Set RSRekam = DB.OpenRecordset("select * from RekamMedis where nomorrkm='" & Combo1.Text & "'") RSRekam.Requery 'tampilkan tanggal di label5 If Not RSRekam.EOF Then Label5.Caption = Space(1) & RSRekam!TglPeriksa 87

'tampilkan nama pasiennya Dim CariPasien As Recordset Set CariPasien = DB.OpenRecordset("select * from Pasien where KodePsn='" & RSRekam!Kodepsn & "'") CariPasien.Requery Label6.Caption = Space(1) & CariPasien!NamaPsn 'tampilkan nama dokternya Dim CariDokter As Recordset Set CariDokter = DB.OpenRecordset("select * from Dokter where KodeDkt='" & RSRekam!KodeDkt & "'") CariDokter.Requery Label7.Caption = Space(1) & CariDokter!NamaDkt 'tampilkan nama obat, jenis, dosis di dalam grid DTSQL.RecordSource = "select NamaObt as [Nama Obat], jenisobt as [Jenis Obat],Dosis from resep,obat where resep.kodeobt=obat.kodeobt and left(nomorrkm,5)='" & Combo1.Text & "'" DTSQL.Refresh Private Sub CmdTutup_Click() Unload Me 4.3 Pencarian Berdasarkan Nama Pasien Program pencarian ini akan menghasilkan informasi yang sama dengan program sebelumnya tetapi dilakukan dengan mengetik nama pasiennya dan hasilnya ditampilkan berupa laporan dari Crystal Report. 88 Gambar 4.3 Pencarian berdasarkan nama pasien

Listing program: 'definisikan file database dan tabel Dim DB As Database Dim RSpasien As Recordset Private Sub Form_load() 'buka file database dan tabel Set DB = OpenDatabase("C:\Program Rekam Medis\medical.mdb") Set RSpasien = DB.OpenRecordset("pasien") Private Sub Form_activate() Text2.Enabled = False Command1.Default = True Private Sub Text1_keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 27 Then Unload Me If KeyAscii = 13 Then 'tampilkan nama dan alamat pasien yang namanya diketik di text1 DTSQL.RecordSource = "select Distinct NamaPsn as [Nama Pasien], alamatpsn as [Alamat Tinggal] From pasien,rekammedis where pasien.kodepsn=rekammedis.kodepsn and namapsn like '*" & Text1 & "*'" DTSQL.Refresh 'jika tidak ditemukan tampilkan pesan... If DTSQL.Recordset.EOF Then x = MsgBox("Data Tidak Ditemukan") DTSQL.RecordSource = "select Distinct NamaPsn as [Nama Pasien],AlamatPsn as [Alamat Tinggal] From pasien,rekammedis where pasien.kodepsn=rekammedis.kodepsn" DTSQL.Refresh Text2 = "" Text1 = "" Text1.SetFocus Else 'jika ditemukan, pilih semua data pasien dan tampilkan nomor pasiennya di text2 Dim RSpasien As Recordset Set RSpasien = DB.OpenRecordset("select * from Pasien where namapsn like '*" & Text1 & "*'", dbopendynaset) RSpasien.Requery Text2 = RSpasien!Kodepsn 89

Private Sub Command2_Click() 'pencetakan data tidak dapat dilakukan 'jika data tidak ditemukan atau data lebih dari 1 If DTSQL.Recordset.RecordCount = 0 Or DTSQL.Recordset.RecordCount > 1 Then MsgBox "Data yang dicetak harus satu nama" DTSQL.RecordSource = "select Distinct NamaPsn as [Nama Pasien],AlamatPsn as [Alamat Tinggal] From pasien,rekammedis where pasien.kodepsn=rekammedis.kodepsn" DTSQL.Refresh Exit Sub Else CrystalReport1.SelectionFormula = "{RekamMedis.KodePsn}='" & Text2.Text & "'" CrystalReport1.ReportFileName = "C:\Program Rekam Medis\Lap Rekam.rpt" CrystalReport1.WindowState = crptmaximized CrystalReport1.RetrieveDataFiles CrystalReport1.Action = 1 Private Sub Command3_Click() 'mengembalikan daftar pasien ke kondisi semula DTSQL.RecordSource = "select Distinct NamaPsn as [Nama Pasien],AlamatPsn as [Alamat Tinggal] From pasien,rekammedis where pasien.kodepsn=rekammedis.kodepsn" DTSQL.Refresh Text1 = "" Text2 = "" Text1.SetFocus 4.4 Hasil Pencarian Data Pasien Laporan ini akan menampilkan data berulang-ulang karena tidak menutup kemungkinan seorang pasien didiagnosa oleh dokter berkali-kali. Hasil yang ditampilkan pada Gambar 4.4 hanya memperlihatkan bagian atasnya saja. Untuk menghasilkan bentuk laporan seperti Gambar 4.4, buatlah rancangannya dengan Crystal Report dengan bentuk seperti Gambar 4.5. 90

Gambar 4.4 Laporan hasil rekam medis Gambar 4.5 Rancangan laporan rekam medis 91

Catatan: Untuk menghasilkan pengelompokan data berdasarkan Nomor rekam medis, tambahkan Insert Summary dengan memilih NomorRkm di ComboBox kedua. Caranya adalah dengan melakukan klik kanan di area details, setelah section #1: NomorRkm - A muncul, kemudian atur posisi tiap field seperti Gambar 4.5. 4.5 Normalisasi File Normalisasi file adalah suatu proses pengelompokan elemen data ke dalam tabel yang menyatakan hubungan antarentitas sehingga terwujud suatu bentuk yang memudahkan adanya perubahan dengan dampak terkecil. Proses pada pengolahan data yang mengakibatkan efek samping yang tidak diharapkan sering disebut dengan istilah anomali yang dapat terjadi akibat inserting, updating, atau deleting. Oleh karena itulah diperlukan normalisasi file. Adapun teknik penyusunan normalisasi file adalah dengan menentukan hal-hal sebagai berikut: Kunci Atribut Setiap file selalu mempunyai kunci berupa satu field atau satu set field yang dapat mewakili record. Sebagai contoh, pada tabel barang terdapat field kunci berupa kode barang yang mewakili nama barang, harga barang, jumlah barang dan sebagainya. Kunci Kandidat (Candidate Key) Kunci kandidat adalah satu atribut atau satu set minimal atribut yang mengidentifikasi secara unik suatu kejadian spesifik dari entiti. Jika kunci kandidat berisi lebih dari satu atribut, maka biasanya disebut sebagai kunci gabungan (Composite Key). Kunci Primer (Primary Key) Kunci primer adalah satu atribut atau satu set minimal atribut yang tidak hanya mengidentifikasi secara unik suatu kejadian spesifik, tetapi juga dapat mewakili setiap kejadian dari suatu entiti. Setiap kunci kandidat mempunyai peluang untuk menjadi kunci primer, tetapi sebaiknya dipilih satu saja yang dapat mewakili secara menyeluruh terhadap entiti yang ada. Contohnya adalah NIM, sifatnya unik dan tidak mungkin ganda dan mewakili secara menyeluruh terhadap entiti mahasiswa dan setiap mahasiswa selalu memiliki NIM. 92

Selain itu, kita harus melihat juga fungsi No KTP, ini dapat digunakan bila sampai suatu saat mahasiswa harus memiliki Kartu Tanda Mahasiswa tetapi NIM belum keluar, maka No KTP dapat digunakan. Kunci Alternatif (Alternate Key) Kunci alternatif adalah kunci kandidat yang tidak dipakai sebagai kunci primer. Biasanya kunci ini digunakan sebagai kunci pengurutan data saja, misalnya dalam pembuatan laporan. Kunci Tamu (Foreign Key) Kunci tamu adalah satu atribut (atau satu set atribut) yang melengkapi satu hubungan yang menunjukkan ke tabel induknya. Kunci tamu biasanya ditempatkan pada entiti anak dan sama dengan kunci primer induk yang direlasikan. Hubungan antara entiti induk dengan anak adalah (biasanya) hubungan satu ke banyak (one to many). 4.5.1 Bentuk-Bentuk Normalisasi Bentuk Tidak Normal Bentuk ini merupakan kumpulan data yang akan disimpan. Tidak ada keharusan mengikuti suatu format tertentu, dapat saja data tidak lengkap atau terduplikasi dan dikumpulkan apa adanya sesuai dengan bentuk asalnya. Contohnya dapat dilihat pada Gambar 4.6. Contoh data dapat dilihat pada tabel di bawah ini: Kode Dokter Nama Dokter Spesialisasi Nama Pasien D1 Bashri Kandungan D2 Andarini Kulit Rini Santi Shanti Anwar D3 Irawan Mata Wijaya Tabel di atas memberikan gambaran bahwa satu orang dokter melakukan diagnosa pada dua orang pasien atau lebih. (Lihat lebih seksama tabel kolom keempat). 93

Bentuk Normal Kesatu Bentuk normal kesatu mempunyai ciri, yaitu setiap data dibentuk dalam flat file, data dibentuk record demi record dan nilai tiap field berupa Atomic Value. Tidak ada set atribut yang terduplikasi (multi value). Contohnya dapat dilihat pada Gambar 4.6. Contoh data dapat dilihat pada tabel di bawah ini: Kode Dokter Nama Dokter Spesialisasi Nama Pasien D1 Bashri Kandungan Rini D1 Bashri Kandungan Santi D2 Andarini Kulit Shanti D2 Andarini Kulit Anwar D3 Irawan Mata Wijaya Bentuk Normal Kedua Bentuk normal kedua mempunyai syarat, yaitu bentuk data telah memenuhi syarat normal kesatu. Atribut bukan kunci harus bergantung secara fungsional pada kunci primer, sehingga untuk membentuk normal kedua haruslah ditentukan kunci-kunci field dan kunci-kunci itu harus unik dan dapat mewakili atribut lain yang menjadi anggotanya. Contohnya dapat dilihat pada Gambar 4.7. Contoh data terlihat pada tabel di bawah ini: Kode Dokter Nama Dokter Spesialisasi D1 Bashri Kandungan D2 Andarini Kulit D3 Irawan Mata Kode Dokter D1 D1 D2 D2 D3 Nama Pasien Rini Santi Shanti Anwar Wijaya 94

Bentuk Normal Ketiga Syarat bentuk normal ketiga adalah data telah memenuhi syarat normal kedua dan semua atribut yang bukan kunci primer tidak mempunyai hubungan transitif. Dengan kata lain, setiap atribut bukan kunci harus bergantung hanya pada kunci primer secara meyeluruh. Contohnya dapat dilihat pada Gambar 4.8. Contoh data terlihat pada tabel berikut ini. KodeDkt NamaDkt KodePsn NamaPsn No KodeObt NamaObt D1 Bashri P1 Shanti 1 OB01 Refagan D1 Bashri P1 Shanti 2 OB02 Panadol D1 Bashri P1 Shanti 3 OB03 Balpirix D2 Andarini P2 Anwar 1 OB02 Panadol D2 Andarini P2 Anwar 2 OB01 Balpirix D3 Irawan P3 Wijaya 1 OB02 Panadol D3 Irawan P3 Wijaya 2 OB03 Balpirix KodeObt OB01 OB02 OB03 NamaObt Refagan Panadol Balpirix Dengan asumsi tabel pasien telah dipecah, berarti bentuk normal kedua telah terpenuhi, maka sekarang tinggal memecah tabel obat yang datanya masih terduplikasi. Jika diamati lebih seksama, nomor urut di kolom 5 tidak dapat dijadikan sebagai kunci field, karena ketika terjadi diagnosa berikutnya, nomor urut obat akan terduplikasi (kembali menjadi 1, 2, 3 dan seterusnya). Oleh karena itu, nomor rekam medis diperlukan di tabel resep (menjadi tabel detail) dengan mengambil data dari nomor rekam medis di tabel rekam medis, ditambah nomor transaksi obat. Dengan demikian, nomor rekam medis tidak akan ada yang sama, dan oleh karena itu pula, nomor rekam medis dapat dijadikan sebagai kunci primer. 95

Untuk melihat contoh sebenarnya, silakan buka CD program pendukung buku ini, kemudian jalankan program Rekam Medis lalu bukalah tabel rekammedis dan tabel resep, lalu perhatikan isi datanya. Gambar Unnormal dan Normal 1 Unnormal Normal 1 KodeDkt NamaDkt AlamatDkt TeleponDkt Spesialisasi KodeObt NamaObt JenisObt JumlahStok KodePsn NamaPsn Umur Jnskelamn AlamatPsn TeleponPsn Pekerjaan NomorRkm TglPeriksa KodePsn KodeDkt Diagnosis Keterangan NomorRkm KodeObt Dosis KodeDkt* NamaDkt AlamatDkt TeleponDkt Spesialisasi KodeObt* NamaObt JenisObt JumlahStok KodePsn* NamaPsn Umur Jnskelamn AlamatPsn TeleponPsn Pekerjaan NomorRkm* TglPeriksa Diagnosis Keterangan Dosis Gambar 4.6 Unnormal dan Normal 1 96

Gambar Normal 2 Dokter KodeDkt* NamaDkt AlamatDkt TeleponDkt Spesialisasi Pasien KodePsn* NamaPsn Umur Jnskelamn AlamatPsn TeleponPsn Pekerjaan RekamMedis NomorRkm* TglPeriksa Diagnosis Keterangan Dosis KodeDkt** KodePsn** KodeObt** Obat Kodeobt* Namaobt Jenisobt Jumlahstok Gambar 4.7 Normal 2 Keterangan: * = Kunci Primer = One To One ** = Kunci Tamu = One To Many 97

Gambar Normal 3 Dokter KodeDkt* NamaDkt AlamatDkt TeleponDkt Spesialisasi RekamMedis NomorRkm* TglPeriksa Diagnosis Keterangan KodeDkt** KodePsn** Obat KodeObt* NamaObt jenisobt JumlahStok Pasien KodePsn* NamaPsn Umur Jnskelamn AlamatPsn TeleponPsn Pekerjaan Resep NomorRkm* KodeObt** Dosis Gambar 4.8 Normal 3 Keterangan: * = Kunci Primer = One To One ** = Kunci Tamu = One To Many 98

Dalam Crystal Report, bentuk normalisasi pada Gambar 4.8 dihasilkan dari normalisasi dengan bentuk seperti Gambar 4.9. Itulah salah satu kelebihan menggunakan Crystal Report dengan segala fasilitasnya, kita tinggal menggunakannya. Dapat Anda perkirakan seandainya laporan dibuat secara manual (full programing), maka harus dibuat listing program yang memuat kira-kira dua halaman dengan konsep tampilan dan relasi data yang harus dipikirkan sendiri, sedangkan dengan menggunakan Crystal Report kita tinggal memilih tabel-tabel yang akan dibuat laporan dan relasi tabel akan dibaca (dilakukan) sendiri oleh Crystal Report, setelah itu kita pun tinggal menempatkan tiap field di posisi yang kita inginkan dengan melakukan drag. Gambar 4.9 Normal 3 dalam Crystal Report 99