Anda di halaman 1dari 27

Daftar Isi

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

2.7 2.8 BAB 3 3.1 3.2 3.3 3.4 3.5 3.6 BAB 4 4.1 4.2 4.3 4.4 4.5 BAB 5 5.1 5.2 5.3 5.4 5.5 5.6

Pengolahan Data Model InputBox...................................... 50 Pengolahan Data Model Grid ............................................. 53 PROGRAM PASSWORD DATABASE ......................... 63 Program Cek Password File Database ................................. 63 Membuat Password Database.............................................. 66 Mengubah Password Database ............................................ 67 Menghapus Password Database........................................... 68 Password Tiga Kali Kesempatan........................................ 69 Password Berlapis............................................................... 72 PROGRAM REKAM MEDIS .......................................... 77 Program Rekam Medis....................................................... 79 Pencarian Berdasarkan Nomor Rekam Medis...................... 86 Pencarian Berdasarkan Nama Pasien................................... 88 Hasil Pencarian Data Pasien ............................................... 90 Normalisasi File ................................................................. 92 4.5.1 Bentuk-Bentuk Normalisasi .................................. 93 PROGRAM PENJUALAN ............................................ 101 Program Password............................................................ 104 Program Cek Format Tanggal .......................................... 106 Program Penjualan Model Pertama................................... 108 Program Penjualan Model Kedua ..................................... 120 Program Rincian Penjualan .............................................. 130 Laporan Penjualan ............................................................ 132 5.6.1 Laporan Harian.................................................... 135 5.6.2 Laporan Mingguan .............................................. 137 5.6.3 Laporan Bulanan.................................................. 138 Normalisasi File ............................................................... 140 PROGRAM AKADEMIK ............................................. 145 Proses Kegiatan Akademik............................................... 146 Pendaftaran Mahasiswa Baru ............................................ 148 Data Mata kuliah ............................................................. 157 6.3.1 Pencetakan Data Mata Kuliah ............................. 158 6.3.2 Hasil Pencetakan Data Mata Kuliah .................... 161

5.7 BAB 6 6.1 6.2 6.3

6.4 6.5

6.6 6.7 6.8 6.9

6.10 6.11

6.12

Updating Data Master...................................................... 161 Pencetakan Absen Kelas ................................................... 163 6.5.1 Pencetakan KTM ................................................ 163 6.5.2 Pencetakan KRS.................................................. 164 Pencetakan Absen UTS .................................................... 165 Transfer Data dari Excel ke Access dan Update Data......... 166 Menyalin Isi Tabel dan Updating Data............................. 173 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 Updating Nilai Transkrip ................................................ 193 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 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 PROGRAM PELENGKAP ............................................ 213 Program Trial .................................................................. 213 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

BAB 7 7.1 7.2

7.3 7.4 7.5 7.6 7.7

7.2.7 Program OLE ...................................................... 220 7.2.8 Program Pesan Baris............................................ 222 Membuka Dua Tabel Berbeda Database............................ 222 Menampilkan Struktur Tabel ........................................... 224 Membuat Program Backup............................................... 226 Menampilkan Sejumlah Data............................................ 228 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 KodePsn NamaPsn Umur Jnskelamin AlamatPsn TeleponPsn PekerjaanPsn Pasiendex Tabel 2. Tabel Dokter Nama Field KodeDkt NamaDkt AlamatDkt TeleponDkt Spesialisasi Tabel 3. Tabel Obat Nama Field KodeObt NamaObt JenisObt JumlahObt ObatDex Type Text Text Text Text Lebar 5 35 15 4 File index Keterangan Field index Type Text Text Text Text Text Lebar 5 35 35 15 30 Keterangan Field Index Type Text Text Text Text Text Text Text Lebar 5 35 3 10 35 15 30 File Index Keterangan Field Index

78

Tabel 4. Tabel Resep Nama Field NomorRkm KodeObt Dosis Type Text Text Text Lebar 5 5 3 Keterangan

Tabel 5. Tabel Rekam Medis Nama Field NomorRkm TglPeriksa KodePsn KodeDkt Diagnosis Keterangan Rekamdex Type Text Date Text Text Text Text Lebar 5 8 5 5 50 25 File Index Keterangan Field 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

Gambar 4.1 Form rekam medis

Listing program:
'definsikan database dan tabel Dim DB As Database Dim RSObat As Recordset 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 End Sub 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 End Sub

80

Private Sub TxtDiagnosa_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then TxtKeterangan.SetFocus End Sub Private Sub TxtKeterangan_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) If KeyAscii = 13 Then DBGrid1.SetFocus DBGrid1.Col = 1 End If End Sub '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) End If TxtNomorRkm = Urutan End With End Sub '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 If End Function Private Sub CboPasien_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub

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 If End With End Sub Private Sub CboDokter_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub '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 If End With End Sub '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 End Sub 'semua huruf diubah jadi besar Private Sub DBGrid1_Keypress(KeyAscii As Integer) KeyAscii = Asc(UCase(Chr(KeyAscii))) End Sub

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 End If End If 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 End If End If If DBGrid1.Col = 4 Then DTTransaksi.Recordset.Edit DTTransaksi.Recordset!Jumlah = DTTransaksi.Recordset!Jumlah DTTransaksi.Recordset.Update DTTransaksi.Recordset.MoveNext DBGrid1.Col = 1 End If On Error GoTo 0 Exit Sub salah: MsgBox "Cek Isian Data" End Sub Private Sub DBGrid1_LostFocus() CmdSimpan.Enabled = True CmdSimpan.SetFocus End Sub '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 End Sub Private Sub Bersihkan() CboPasien = "": CboDokter = "" TxtDiagnosa = "": TxtNamaPsn = "" TxtNamaDkt = "": TxtKeterangan = "" End Sub 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 End If '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 End If 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 End If DTTransaksi.Recordset.MoveNext Loop Bersihkan Form_activate CboPasien.SetFocus Call Cetak End Sub Private Sub CmdBatal_Click() Bersihkan Form_activate DBGrid1.Enabled = False CboPasien.SetFocus End Sub Private Sub CmdTutup_Click() Unload Me End Sub 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, "DDMMMM-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 End Sub 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

Gambar 4.2 Pencarian berdasarkan nomor rekam medis

Listing program:
'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 End Sub 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 End Sub Private Sub CmdTutup_Click() Unload Me End Sub

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.

Gambar 4.3 Pencarian berdasarkan nama pasien

88

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") End Sub Private Sub Form_activate() Text2.Enabled = False Command1.Default = True End Sub 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 End If End If End Sub

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 End If End Sub 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 End Sub

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 D1 D2 D3 Nama Dokter Bashri Andarini Irawan Spesialisasi Kandungan Kulit Mata Nama Pasien Rini Santi Shanti Anwar 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 D1 D1 D2 D2 D3 Nama Dokter Bashri Bashri Andarini Andarini Irawan Spesialisasi Kandungan Kandungan Kulit Kulit Mata Nama Pasien Rini Santi Shanti Anwar 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 D1 D2 D3 Kode Dokter D1 D1 D2 D2 D3 Nama Dokter Bashri Andarini Irawan Nama Pasien Rini Santi Shanti Anwar Wijaya Spesialisasi Kandungan Kulit Mata

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 D1 D1 D1 D2 D2 D3 D3 KodeObt OB01 OB02 OB03 NamaDkt Bashri Bashri Bashri Andarini Andarini Irawan Irawan NamaObt Refagan Panadol Balpirix KodePsn P1 P1 P1 P2 P2 P3 P3 NamaPsn Shanti Shanti Shanti Anwar Anwar Wijaya Wijaya No 1 2 3 1 2 1 2 KodeObt OB01 OB02 OB03 OB02 OB01 OB02 OB03 NamaObt Refagan Panadol Balpirix Panadol Balpirix 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 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 Normal 1

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 RekamMedis NomorRkm* TglPeriksa Diagnosis Keterangan Dosis KodeDkt** KodePsn** KodeObt** Obat Kodeobt* Namaobt Jenisobt Jumlahstok

Pasien KodePsn* NamaPsn Umur Jnskelamn AlamatPsn TeleponPsn Pekerjaan

Gambar 4.7 Normal 2

Keterangan: * = Kunci Primer ** = Kunci Tamu = One To One = 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 ** = Kunci Tamu = One To One = 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

Anda mungkin juga menyukai