• Tidak ada hasil yang ditemukan

BAB 1 KONSEP DASAR...

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 1 KONSEP DASAR..."

Copied!
27
0
0

Teks penuh

(1)

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)

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

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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.

(8)

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

(9)

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)))

(10)

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

(11)

'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

(12)

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 =

(13)

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")

(14)

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.

(15)

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

(16)

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

(17)

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

(18)

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.

(19)

Gambar 4.4 Laporan hasil rekam medis

(20)

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.

(21)

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).

(22)

ƒ 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

(23)

ƒ 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.

(24)

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

(25)

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

(26)

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

(27)

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 didi-buat 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

Tabel 1. Tabel Pasien
Tabel 5. Tabel Rekam Medis
Gambar 4.1 Form rekam medis
Gambar 4.2 Pencarian berdasarkan nomor rekam medis
+7

Referensi

Dokumen terkait

Utang atas surat berharga yang dijual dengan janji dibeli kembali (repo) -9. Selisih restrukturisasi entitas sepengendali

Jakarta: PT Raja Grafindo Persada.. Meningkatkan Hasil Belajar Matematika Siswa Kelas II

Gaya silinder sebesar 27489 N ini pada hakekatnya akan sangat bias memenuhi gaya pembendingan material sengkang yang dibutuhkan, jadi silinder dengan diameter

Menyatakan bahwa skripsi yang berjudul “Uji Kualitas Fisikokimiawi dan Mikrobiologi pada Wine Kombinasi Buah Tropis Apel Malang ( Malus pumila ), Belimbing Manis (

Berbeda dengan penelitian Caccialanza et al (2010) bahwa pasien yang meninggal di rumah sakit cenderung memiliki rawat inap lebih panjang (≥3 hari) akibat IMT rendah, mengalami

Jadi, dilihat dari hasil pengujian one sample t-test dan melihat dari grafik rata-rata return diatas didapatkan bahwa walaupun nilai rata-rata return pada bulan januari

2004 Darul Ulum Juara 1 Provinsi Olimpiade MIPA (Matematika, Fisika, Biologi) Beregu di SMA Darul Ulum - BPPT Jombang 2004

Notaris dihadapkan pada kenyataan untuk tidak sekedar mencatat dan melegalisasi serta membuat Akta bagi kepentingan para pihak yang menghendakinya, melainkan juga