You are on page 1of 27

ix

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
x
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
xi
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
xii
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

77
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 pem-
bayaran 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 Keterangan
Medical File Database
Pasien Tabel
Dokter Tabel
Obat Tabel
RekamMedis Tabel
Resep Tabel
TRResep Tabel Temporer
78
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

79
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 menghin-
dari redudansi dan anomali lainnya. Anda dapat mengubah atau menam-
bah keterangan lain yang diperlukan. Misalnya, data pasien ditampilkan
umur dan alamatnya, data dokter ditampilkan spesialisasinya.
80

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
81

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


82
'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




83
'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
84
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
85
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, "DD-
MMMM-YYYY")
86
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 di-
tampilkan spesialisasinya.
87

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

88
'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
89
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




90
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 ran-
cangannya dengan Crystal Report dengan bentuk seperti Gambar 4.5.
91

Gambar 4.4 Laporan hasil rekam medis

Gambar 4.5 Rancangan laporan rekam medis
92
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 ter-
kecil. 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 di-
perlukan 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 kan-
didat 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.
93
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 biasa-
nya 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
Rini
Santi
D2 Andarini Kulit
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).


94
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 meme-
nuhi 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 Nama Pasien
D1 Rini
D1 Santi
D2 Shanti
D2 Anwar
D3 Wijaya
95
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 NamaObt
OB01 Refagan
OB02 Panadol
OB03 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.
96
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





























Gambar 4.6 Unnormal dan Normal 1





Normal 1
KodeDkt*
NamaDkt
AlamatDkt
TeleponDkt
Spesialisasi
KodeObt*
NamaObt
JenisObt
JumlahStok
KodePsn*
NamaPsn
Umur
Jnskelamn
AlamatPsn
TeleponPsn
Pekerjaan
NomorRkm*
TglPeriksa
Diagnosis
Keterangan
Dosis
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
97
Gambar Normal 2

























Gambar 4.7 Normal 2
Keterangan:
* = Kunci Primer = One To One
** = Kunci Tamu = One To Many








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
98

Gambar Normal 3
























Gambar 4.8 Normal 3
Keterangan:
* = Kunci Primer = One To One
** = Kunci Tamu = One To Many







Dokter

KodeDkt*
NamaDkt
AlamatDkt
TeleponDkt
Spesialisasi
Pasien

KodePsn*
NamaPsn
Umur
Jnskelamn
AlamatPsn
TeleponPsn
Pekerjaan
RekamMedis

NomorRkm*
TglPeriksa
Diagnosis
Keterangan

KodeDkt**
KodePsn**
Resep

NomorRkm*
KodeObt**
Dosis
Obat

KodeObt*
NamaObt
jenisObt
JumlahStok
99
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 di-
buat 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

You might also like