Aplikasi Rawat Inap

 

Pada bab ini akan dibahas tentang aplikasi rawat inap. Aplikasi ini merupakan salah satu aplikasi yang banyak dipilih mahasiswa dalam membuat tugas akhir dan skripsi. Bahkan di dunia medis aplikasi ini bisa bernilai puluhan hingga ratusan juta rupiah. Aplikasi ini dapat diunduh pada tautan berikut ini.

4.1  Membuat Project Baru

Langkah awal dalam membuat aplikasi ini adalah membuat project.

1.       Buka Microsoft Visual Studio 2008 (silakan gunakan versi yang anda miliki)

2.       Create Project

3.       Tulis nama project, misalnya "Aplikasi Rawat Inap"

4.       Klik OK

4.2  Membuat Database Dan Tabel

Langkah selanjutnya adalah membuat database dan tabel. Nama database dalam aplikasi ini adalah "DBRawatInap.mdb", adapun tabel-tabel dalam aplikasi ini terlihat pada gambar di bawah ini. Pembuatan database disimpan dalam folder bin>debug aplikasi rawat inap.

Gambar 4.1 Database dan tabel

Catatan : Anda tidak perlu membuat database dan tabel-tabel tersebut karena sudah kami siapkan pada sebuah tautan yang telah kami persiapkan, anda cukup mengunduhnya (berikut aplikasinya)

4.3  Bentuk Relasi Tabel

Bentuk relasi tabel dalam aplikasi ini dapat dilihat pada gambar di bawah ini.

Gambar 4.2 Bentuk relasi tabel rawat inap

4.4  Membuat Module Koneksi

Langkah berikutnya adalah membuat module koneksi ke database.

1.       Klik menu Project

2.       Add Module

3.       Klik Add

4.       Kemudian tulislah coding di bawah ini

Imports System.Data.OleDb

Imports CrystalDecisions.CrystalReports.Engine

Imports CrystalDecisions.Shared

 

Module Module1

 

    Public CONN As OleDbConnection

    Public DA As OleDbDataAdapter

    Public DS As DataSet

    Public CMD As OleDbCommand

    Public DR As OleDbDataReader

 

    Public cryRpt As New ReportDocument

    Public crtableLogoninfos As New TableLogOnInfos

    Public crtableLogoninfo As New TableLogOnInfo

    Public crConnectionInfo As New ConnectionInfo

    Public CrTables As Tables

 

    Public Sub seting_laporan()

        With crConnectionInfo

            .ServerName = (Application.StartupPath.ToString & "\dbrawatinap.mdb")

            .DatabaseName = (Application.StartupPath.ToString & "\dbrawatinap.mdb")

            .UserID = ""

            .Password = ""

        End With

 

        CrTables = cryRpt.Database.Tables

        For Each CrTable In CrTables

            crtableLogoninfo = CrTable.LogOnInfo

            crtableLogoninfo.ConnectionInfo = crConnectionInfo

            CrTable.ApplyLogOnInfo(crtableLogoninfo)

        Next

    End Sub

 

 

    Public Sub Koneksi()

        Try

            CONN = New OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=dbrawatinap.mdb")

            CONN.Open()

        Catch ex As Exception

            MsgBox(ex.Message)

            End

        End Try

    End Sub

End Module

4.5  Form Login

Langkah berikutnya adalah membuat form login sebagai sarana keamanan aplikasi. Bentuk form login terlihat pada gambar di bawah ini.

Gambar 4.3 Form login

Coding form login dapat anda lihat di bagian bawah berikut ini.

Imports System.Data.OleDb

 

Public Class Login

 

    Private Sub TUser_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TUser.KeyPress

        If e.KeyChar = Chr(13) Then

            TPassword.Focus()

        End If

    End Sub

 

    Private Sub TPassword_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TPassword.KeyPress

        If e.KeyChar = Chr(13) Then

            OK.Focus()

        End If

    End Sub

 

    Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click

        Call Koneksi()

        CMD = New OleDbCommand("select * from tbluser where nama_user='" & TUser.Text & "' and pwd_user='" & TPassword.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            MsgBox("Login gagal")

            TUser.Focus()

            Exit Sub

        Else

            Me.Visible = False

            MenuUtama.Show()

 

            MenuUtama.Panel1.Text = DR.Item("kode_user")

            MenuUtama.Panel2.Text = DR.Item("nama_user")

            MenuUtama.Panel3.Text = DR.Item("pwd_user")

 

            If MenuUtama.Panel1.Text = "ADMIN" Then

                MenuUtama.UserToolStripMenuItem.Visible = False

            End If

        End If

 

    End Sub

 

    Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click

        Me.Close()

    End Sub

End Class

4.6  Form Menu Utama

Langkah berikutnya adalah membuat menu utama dengan tampilan sebagai berikut.

Gambar 4.4 Menu utama aplikasi rawat inap

4.7  Form User

Selanjutnya membuat form user dengan bentuk tampilan seperti terlihat pada gambar berikut ini.

Gambar 4.5 Form user

 

4.8  Form Alat

Berikutnya adalah membuat form alat yang akan digunakan dalam proses melakukan tindakan terhadap pasien. Bentuk form alat adalah sebagai berikut.

Gambar 4.6 Form Alat kesehatan

4.9  Form Dokter

Selanjutnya adalah membuat form dokter yang akan melakukan diagnosa dan tindakan terhadap pasien. Bentuk formnya terlihat pada gambar di bawah ini.

Gambar 4.7 Form Dokter

4.10  Form Kamar

Langkah berikutnya adalah membuat form kamar berikut codingnya dengan tampilan seperti gambar di bawah ini.

Gambar 4.8 Form kamar

4.11  Form Obat

Berikutnya adalah membuat form obat berikut codingnya dengan bentuk tampilan seperti terlihat pada gambar berikut ini.

Gambar 4.9 Form Obat

4.12  Form Pasien

Selanjutnya adalah membuat form pasien berikut codingnya dengan bentuk sebagaimana terlihat pada gambar di bawah ini.

Gambar 4.10 Form Pasien

4.13  Form Tindakan

Data master yang terakhir adalah form tindakan. Bentuk form tersebut dapat anda lihat di bagian bawah berikut ini.

Gambar 4.11 Form tindakan

4.14  Form Registrasi

Sekarang kita mulai masuk ke form transaksi berupa form registrasi atau pendaftaran pasien. Bentuk form registrasi adalah sebagai berikut:

Gambar 4.12 Form registrasi

Coding :

Imports System.Data.OleDb

 

Public Class Registrasi

 

    Sub NomorRegOtomatis()

        CMD = New OleDbCommand("select nomor_registrasi from TRRegistrasi order by nomor_registrasi desc", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = Format(Today, "ddMMyy") + "01"

        Else

            If Microsoft.VisualBasic.Left(DR.Item("nomor_registrasi"), 6) = Format(Today, "ddMMyy") Then

                TextBox1.Text = Format(Today, "ddMMyy") + Format(Microsoft.VisualBasic.Right(DR.Item("nomor_registrasi"), 2) + 1, "00")

            Else

                TextBox1.Text = Format(Today, "ddMMyy") + "01"

            End If

        End If

        TextBox1.Enabled = False

    End Sub

 

    Sub Kosongkan()

        Call NomorRegOtomatis()

        DateTimePicker1.Text = Today

        ComboBox1.Text = ""

        TextBox2.Clear()

        ComboBox2.Text = ""

        TextBox3.Clear()

        Label10.Text = ""

        Label9.Text = ""

        TxtCari.Clear()

        DateTimePicker1.Focus()

    End Sub

 

    Sub DataBaru()

        ComboBox1.Text = ""

        TextBox2.Clear()

        ComboBox2.Text = ""

        TextBox3.Clear()

        TxtCari.Clear()

        DateTimePicker1.Focus()

    End Sub

 

    Sub Ketemu()

        On Error Resume Next

        DateTimePicker1.Text = DR.Item(1)

        ComboBox1.Text = DR.Item(2)

        DateTimePicker1.Focus()

 

        Label10.Text = ComboBox1.Text

        Label9.Text = ComboBox2.Text

    End Sub

 

    Sub Tampilgrid()

        DA = New OleDbDataAdapter("select * from TRRegistrasi", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

    Sub Tampilpasien()

        CMD = New OleDbCommand("select kode_pasien from tblpasien where kode_pasien not in (select kode_pasien from trregistrasi WHERE status_registrasi='TERDAFTAR')", CONN)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("kode_pasien"))

        Loop

    End Sub

 

    Sub TampilKamar()

        CMD = New OleDbCommand("select kode_kamar from tblkamar WHERE Status_kamar<>'PENUH'", CONN)

        DR = CMD.ExecuteReader

        ComboBox2.Items.Clear()

        Do While DR.Read

            ComboBox2.Items.Add(DR.Item("kode_Kamar"))

        Loop

    End Sub

 

    Sub CariPasien()

        CMD = New OleDbCommand("select * from tblpasien where kode_pasien='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox2.Text = DR.Item("nama_pasien")

        End If

    End Sub

 

    Sub CariKamar()

        CMD = New OleDbCommand("select * from tblkamar where kode_kamar='" & ComboBox2.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox3.Text = DR.Item("nama_kamar")

        End If

    End Sub

 

    Private Sub Registrasi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call Koneksi()

        Call Kosongkan()

        Call Tampilgrid()

        Call TampilKamar()

        Call Tampilpasien()

    End Sub

 

    Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click

        Me.Close()

    End Sub

 

    Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNBatal.Click

        Call Kosongkan()

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        Call CariPasien()

    End Sub

 

    Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged

        Call CariKamar()

    End Sub

 

    Sub CariNomorReg()

        CMD = New OleDbCommand("select * from TRRegistrasi where Nomor_registrasi='" & TextBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

    End Sub

 

 

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick

        On Error Resume Next

        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value

        DateTimePicker1.Text = DGV.Rows(e.RowIndex).Cells(1).Value

        ComboBox1.Text = DGV.Rows(e.RowIndex).Cells(2).Value

        ComboBox2.Text = DGV.Rows(e.RowIndex).Cells(3).Value

        Call CariPasien()

        Call CariKamar()

    End Sub

 

 

    Private Sub BTNHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNHapus.Click

        If TextBox1.Text = "" Then

            MsgBox("Nomor harus diisi")

            Exit Sub

        End If

 

        Call CariNomorReg()

        If Not DR.HasRows Then

            MsgBox("Nomor tidak terdaftar")

            Exit Sub

        End If

 

        If MessageBox.Show("yakin akan dihapus...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

            Dim hapus As String = "delete * from TRRegistrasi where nomor_registrasi='" & TextBox1.Text & "'"

            CMD = New OleDbCommand(hapus, CONN)

            CMD.ExecuteNonQuery()

 

            CMD = New OleDbCommand("select * from tblkamar where kode_kamar='" & ComboBox2.Text & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                Dim edit1 As String = "update tblkamar set terisi='" & DR.Item("terisi") - 1 & "' where kode_kamar='" & ComboBox2.Text & "'"

                CMD = New OleDbCommand(edit1, CONN)

                CMD.ExecuteNonQuery()

            End If

 

            CMD = New OleDbCommand("select * from tblkamar where kode_kamar='" & ComboBox2.Text & "'", CONN)

            DR = CMD.ExecuteReader

            DR.Read()

            If DR.HasRows Then

                If DR.Item("Kapasitas") <> DR.Item("Terisi") Then

                    Dim edit2 As String = "update tblkamar set status_kamar='TERSEDIA' where kode_kamar='" & Label9.Text & "'"

                    CMD = New OleDbCommand(edit2, CONN)

                    CMD.ExecuteNonQuery()

                End If

            End If

 

            Call Tampilgrid()

            Call Kosongkan()

            Call NomorRegOtomatis()

        Else

            Call Kosongkan()

 

        End If

    End Sub

 

    Private Sub DGV_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellContentClick

    End Sub

End Class

4.15  Form Perawatan

Setelah membuat form registrasi, selanjutnya adalah membuat form perawatan. Bentuk form tersebut adalah sebagai berikut.

Gambar 4.13 Form perawatan dan tindakan

Coding :

Imports System.Data.OleDb

 

Public Class Perawatan1

 

    Sub Kosongkan()

        ComboBox1.Text = ""

        TextBox2.Clear()

        TextBox3.Clear()

        TextBox4.Clear()

        TextBox5.Clear()

        TextBox6.Text = 0

        TextBox7.Text = 0

        TextBox8.Text = 0

        TextBox9.Text = 0

        TextBox10.Text = 0

        DGV1.Rows.Clear()

        DGV2.Rows.Clear()

        DGV3.Rows.Clear()

        DGV4.Rows.Clear()

    End Sub

 

    Sub Nomorotomatis()

        CMD = New OleDbCommand("select nomor_Perawatan from TRperawatan order by nomor_perawatan desc", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = "00001"

        Else

            TextBox1.Text = Format(DR.Item("nomor_perawatan") + 1, "00000")

        End If

    End Sub

 

    Sub TampilGrid()

        DA = New OleDbDataAdapter("select * from TRperawatan", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

    Sub TampilAlat()

        CMD = New OleDbCommand("select * from tblalat", CONN)

        DR = CMD.ExecuteReader

        Do While DR.Read

            ListBox1.Items.Add(DR.Item("kode_alat") & Space(2) & DR.Item("nama_alat"))

        Loop

    End Sub

 

    Sub TampilDokter()

        CMD = New OleDbCommand("select * from tbldokter", CONN)

        DR = CMD.ExecuteReader

        Do While DR.Read

            ListBox2.Items.Add(DR.Item("kode_dokter") & Space(2) & DR.Item("nama_dokter"))

        Loop

    End Sub

 

    Sub TampilObat()

        CMD = New OleDbCommand("select * from tblobat", CONN)

        DR = CMD.ExecuteReader

        Do While DR.Read

            ListBox3.Items.Add(DR.Item("kode_obat") & Space(2) & DR.Item("nama_obat"))

        Loop

    End Sub

 

    Sub TampilTindakan()

        CMD = New OleDbCommand("select * from tbltindakan", CONN)

        DR = CMD.ExecuteReader

        Do While DR.Read

            ListBox4.Items.Add(DR.Item("kode_tindakan") & Space(2) & DR.Item("nama_tindakan"))

        Loop

    End Sub

 

    Sub TampilRegistrasi()

        CMD = New OleDbCommand("select * from TRRegistrasi where status_Registrasi='TERDAFTAR'", CONN)

        DR = CMD.ExecuteReader

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("NOMOR_REGISTRASI"))

        Loop

    End Sub

 

    Sub CariPasien()

        CMD = New OleDbCommand("select * from tblpasien where kode_pasien='" & TextBox2.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox3.Text = DR.Item("nama_pasien")

        End If

    End Sub

 

 

    Sub CariKamar()

        CMD = New OleDbCommand("select * from tblkamar where kode_kamar='" & TextBox4.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox5.Text = DR.Item("nama_kamar")

        End If

    End Sub

 

    Private Sub Perawatan1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call Koneksi()

        Call TampilGrid()

        Call Nomorotomatis()

        Call TampilRegistrasi()

        Call TampilAlat()

        Call TampilDokter()

        Call TampilObat()

        Call TampilTindakan()

        Call Kosongkan()

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        CMD = New OleDbCommand("select * from TRregistrasi where nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox2.Text = DR.Item("kode_pasien")

            TextBox4.Text = DR.Item("kode_kamar")

            Call CariPasien()

            Call CariKamar()

        End If

    End Sub

 

    Sub HitungBiayaAlat()

        Dim Hitung As Integer = 0

        For baris As Integer = 0 To DGV1.RowCount - 1

            Hitung = Hitung + DGV1.Rows(baris).Cells(2).Value

        Next

        TextBox6.Text = Hitung

    End Sub

 

    Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged

 

        DGV1.Rows.Add(Microsoft.VisualBasic.Left(ListBox1.Text, 5))

        Dim baris As Integer = DGV1.RowCount - 2

 

        For i As Integer = 0 To DGV1.RowCount - 1

            For j As Integer = i + 1 To DGV1.RowCount - 1

                If DGV1.Rows(j).Cells(0).Value = DGV1.Rows(i).Cells(0).Value Then

                    MessageBox.Show("Kode" & DGV1.Rows(j).Cells(0).Value & " Sudah Dientri")

                    DGV1.Rows.RemoveAt(j)

                    Exit Sub

                End If

            Next

        Next

 

        CMD = New OleDbCommand("select * from tblALAT where kode_alat='" & DGV1.Rows(baris).Cells(0).Value & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

 

        If DR.HasRows Then

            DGV1.Rows(baris).Cells(1).Value = DR.Item("nama_alat")

            DGV1.Rows(baris).Cells(2).Value = DR.Item("tarif_alat")

            DGV1.Columns(2).DefaultCellStyle.Format = "###,###,###"

            DGV1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            Call HitungBiayaAlat()

            Call CariTotalBiaya()

        Else

            MsgBox("Kode barang tidak terdaftar")

        End If

 

    End Sub

 

    Sub HitungBiayaDokter()

        Dim Hitung As Integer = 0

        For baris As Integer = 0 To DGV2.RowCount - 1

            Hitung = Hitung + DGV2.Rows(baris).Cells(2).Value

        Next

        TextBox7.Text = Hitung

    End Sub

 

    Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        DGV2.Rows.Add(Microsoft.VisualBasic.Left(ListBox2.Text, 5))

        Dim baris As Integer = DGV2.RowCount - 2

 

        For i As Integer = 0 To DGV2.RowCount - 1

            For j As Integer = i + 1 To DGV2.RowCount - 1

                If DGV2.Rows(j).Cells(0).Value = DGV2.Rows(i).Cells(0).Value Then

                    MessageBox.Show("Kode" & DGV2.Rows(j).Cells(0).Value & " Sudah Dientri")

                    DGV2.Rows.RemoveAt(j)

                    Exit Sub

                End If

            Next

        Next

 

        CMD = New OleDbCommand("select * from tbldokter where kode_dokter='" & DGV2.Rows(baris).Cells(0).Value & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

 

        If DR.HasRows Then

            DGV2.Rows(baris).Cells(1).Value = DR.Item("nama_dokter")

            DGV2.Rows(baris).Cells(2).Value = DR.Item("tarif_dokter")

            DGV2.Columns(2).DefaultCellStyle.Format = "###,###,###"

            DGV2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            Call HitungBiayaDokter()

            Call CariTotalBiaya()

        Else

            MsgBox("Kode barang tidak terdaftar")

        End If

 

    End Sub

 

    Sub HitungBiayaObat()

        Dim Hitung As Integer = 0

        For baris As Integer = 0 To DGV3.RowCount - 1

            Hitung = Hitung + DGV3.Rows(baris).Cells(2).Value

        Next

        TextBox8.Text = Hitung

    End Sub

 

    Private Sub ListBox3_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox3.SelectedIndexChanged

        DGV3.Rows.Add(Microsoft.VisualBasic.Left(ListBox3.Text, 5))

        Dim baris As Integer = DGV3.RowCount - 2

 

        For i As Integer = 0 To DGV3.RowCount - 1

            For j As Integer = i + 1 To DGV3.RowCount - 1

                If DGV3.Rows(j).Cells(0).Value = DGV3.Rows(i).Cells(0).Value Then

                    MessageBox.Show("Kode" & DGV3.Rows(j).Cells(0).Value & " Sudah Dientri")

                    DGV3.Rows.RemoveAt(j)

                    Exit Sub

                End If

            Next

        Next

 

        CMD = New OleDbCommand("select * from tblobat where kode_obat='" & DGV3.Rows(baris).Cells(0).Value & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

 

        If DR.HasRows Then

            DGV3.Rows(baris).Cells(1).Value = DR.Item("nama_obat")

            DGV3.Rows(baris).Cells(2).Value = DR.Item("Tarif_Obat")

            DGV3.Columns(2).DefaultCellStyle.Format = "###,###,###"

            DGV3.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            Call HitungBiayaObat()

            Call CariTotalBiaya()

        Else

            MsgBox("Kode tidak terdaftar")

        End If

 

    End Sub

 

    Sub HitungBiayaTindakan()

        Dim Hitung As Integer = 0

        For baris As Integer = 0 To DGV4.RowCount - 1

            Hitung = Hitung + DGV4.Rows(baris).Cells(2).Value

        Next

        TextBox9.Text = Hitung

    End Sub

 

 

    Private Sub ListBox4_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox4.SelectedIndexChanged

        DGV4.Rows.Add(Microsoft.VisualBasic.Left(ListBox4.Text, 5))

        Dim baris As Integer = DGV4.RowCount - 2

 

        For i As Integer = 0 To DGV4.RowCount - 1

            For j As Integer = i + 1 To DGV4.RowCount - 1

                If DGV4.Rows(j).Cells(0).Value = DGV4.Rows(i).Cells(0).Value Then

                    MessageBox.Show("Kode" & DGV4.Rows(j).Cells(0).Value & " Sudah Dientri")

                    DGV4.Rows.RemoveAt(j)

                    Exit Sub

                End If

            Next

        Next

 

        CMD = New OleDbCommand("select * from tblTindakan where kode_Tindakan='" & DGV4.Rows(baris).Cells(0).Value & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

 

        If DR.HasRows Then

            DGV4.Rows(baris).Cells(1).Value = DR.Item("nama_Tindakan")

            DGV4.Rows(baris).Cells(2).Value = DR.Item("tarif_Tindakan")

            DGV4.Columns(2).DefaultCellStyle.Format = "###,###,###"

            DGV4.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

            Call HitungBiayaTindakan()

            Call CariTotalBiaya()

        Else

            MsgBox("Kode tidak terdaftar")

        End If

 

    End Sub

 

    Sub CariTotalBiaya()

        TextBox10.Text = Val(TextBox6.Text) + Val(TextBox7.Text) + Val(TextBox8.Text) + Val(TextBox9.Text)

    End Sub

 

 

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Me.Close()

    End Sub

 

    Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click

        Call Nomorotomatis()

        Call Kosongkan()

    End Sub

 

 

    Private Sub DGV1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV1.KeyPress

        On Error Resume Next

        If e.KeyChar = Chr(27) Then

            DGV1.Rows.Remove(DGV1.CurrentRow)

            Call HitungBiayaAlat()

            Call CariTotalBiaya()

        End If

    End Sub

 

    Private Sub DGV2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV2.KeyPress

        On Error Resume Next

        If e.KeyChar = Chr(27) Then

            DGV2.Rows.Remove(DGV2.CurrentRow)

            Call HitungBiayaDokter()

            Call CariTotalBiaya()

        End If

    End Sub

 

 

    Private Sub DGV3_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV3.KeyPress

        On Error Resume Next

        If e.KeyChar = Chr(27) Then

            DGV3.Rows.Remove(DGV3.CurrentRow)

            Call HitungBiayaObat()

            Call CariTotalBiaya()

        End If

    End Sub

 

    Private Sub DGV4_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles DGV4.KeyPress

        On Error Resume Next

        If e.KeyChar = Chr(27) Then

            DGV4.Rows.Remove(DGV4.CurrentRow)

            Call HitungBiayaTindakan()

            Call CariTotalBiaya()

        End If

    End Sub

End Class

4.16  Form Pembayaran

Setelah proses perawatan selesai, proses berikutnya adalah pembayaran. Bentuk form pembayaran terlihat pada gambar di bawah ini.

Gambar 4.14 Form pembayaran

Coding :

Imports System.Data.OleDb

 

Public Class Pembayaran

 

    Sub Nomorotomatis()

        CMD = New OleDbCommand("select nomor_Pembayaran from TRpembayaran order by nomor_pembayaran desc", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If Not DR.HasRows Then

            TextBox1.Text = "00001"

        Else

            TextBox1.Text = Format(DR.Item("nomor_pembayaran") + 1, "00000")

        End If

    End Sub

 

 

    Sub Kosongkan()

        Dim x As Control

        For Each x In Me.GroupBox1.Controls

            If TypeOf x Is TextBox Or TypeOf x Is ComboBox Then

                x.Text = ""

            End If

        Next x

        TxtCari.Clear()

    End Sub

 

    Sub TampilGrid()

        DA = New OleDbDataAdapter("select * from TRPembayaran", CONN)

        DS = New DataSet

        DA.Fill(DS)

        DGV.DataSource = DS.Tables(0)

        DGV.ReadOnly = True

    End Sub

 

    Sub TampilRegistrasi()

        CMD = New OleDbCommand("select * from TRRegistrasi where status_Registrasi='TERDAFTAR'", CONN)

        DR = CMD.ExecuteReader

        ComboBox1.Items.Clear()

        Do While DR.Read

            ComboBox1.Items.Add(DR.Item("NOMOR_REGISTRASI"))

        Loop

    End Sub

 

    Sub CariPasien()

        CMD = New OleDbCommand("select * from tblpasien where kode_pasien='" & TextBox3.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox4.Text = DR.Item("nama_pasien")

        End If

    End Sub

 

 

    Sub CariKamar()

        CMD = New OleDbCommand("select * from tblkamar where kode_kamar='" & TextBox5.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox6.Text = DR.Item("nama_kamar")

            TextBox7.Text = DR.Item("tarif_kamar")

        End If

    End Sub

 

    Private Sub Pembayaran_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call Koneksi()

        Call Kosongkan()

        Call Nol_kan()

        Call Nomorotomatis()

        Call TampilRegistrasi()

        Call TampilGrid()

    End Sub

 

    Sub Nol_kan()

        TextBox11.Text = 0

        TextBox12.Text = 0

        TextBox13.Text = 0

        TextBox14.Text = 0

        TextBox15.Text = 0

        TextBox16.Text = 0

        TextBox17.Text = 0

        TextBox18.Text = "-"

    End Sub

 

    Sub TotalBiayaAlat()

        On Error Resume Next

        CMD = New OleDbCommand("select sum(biaya) from TRperawatan,TRperawatandetail,TRregistrasi where trperawatan.nomor_perawatan=trperawatandetail.nomor_perawatan and trperawatan.nomor_registrasi=trregistrasi.nomor_registrasi and trperawatandetail.kode_alat<>'-' and trregistrasi.nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox11.Text = DR.Item(0)

        Else

            TextBox11.Text = 0

        End If

    End Sub

 

    Sub TotalBiayaDokter()

        On Error Resume Next

        CMD = New OleDbCommand("select sum(biaya) from TRperawatan,TRperawatandetail,TRregistrasi where trperawatan.nomor_perawatan=trperawatandetail.nomor_perawatan and trperawatan.nomor_registrasi=trregistrasi.nomor_registrasi and trperawatandetail.kode_dokter<>'-' and trregistrasi.nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox12.Text = DR.Item(0)

        Else

            TextBox12.Text = 0

        End If

    End Sub

 

 

    Sub TotalBiayaObat()

        On Error Resume Next

        CMD = New OleDbCommand("select sum(biaya) from TRperawatan,TRperawatandetail,TRregistrasi where trperawatan.nomor_perawatan=trperawatandetail.nomor_perawatan and trperawatan.nomor_registrasi=trregistrasi.nomor_registrasi and trperawatandetail.kode_obat<>'-' and trregistrasi.nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox13.Text = DR.Item(0)

        Else

            TextBox13.Text = 0

        End If

    End Sub

 

 

    Sub TotalBiayaTindakan()

        On Error Resume Next

        CMD = New OleDbCommand("select sum(biaya) from TRperawatan,TRperawatandetail,TRregistrasi where trperawatan.nomor_perawatan=trperawatandetail.nomor_perawatan and trperawatan.nomor_registrasi=trregistrasi.nomor_registrasi and trperawatandetail.kode_tindakan<>'-' and trregistrasi.nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox14.Text = DR.Item(0)

        Else

            TextBox14.Text = 0

        End If

    End Sub

 

    Sub GrandBiaya()

        TextBox15.Text = Val(TextBox10.Text) + Val(TextBox11.Text) + Val(TextBox12.Text) + Val(TextBox13.Text) + Val(TextBox14.Text)

    End Sub

 

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged

        CMD = New OleDbCommand("select * from TRregistrasi where nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox2.Text = DR.Item("Tgl_registrasi")

            TextBox3.Text = DR.Item("kode_pasien")

            TextBox5.Text = DR.Item("kode_kamar")

            Call CariPasien()

            Call CariKamar()

            TextBox8.Text = Today

 

            TextBox9.Text = DateDiff(DateInterval.Day, DateValue(TextBox2.Text), Today)

            If TextBox9.Text = 0 Then

                TextBox9.Text = 1

            End If

            TextBox10.Text = Val(TextBox7.Text) * Val(TextBox9.Text)

            Call Nol_kan()

            Call TotalBiayaAlat()

            Call TotalBiayaDokter()

            Call TotalBiayaObat()

            Call TotalBiayaTindakan()

            Call GrandBiaya()

            TextBox16.Focus()

        End If

    End Sub

 

    Private Sub BTNBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNBatal.Click

        Call Kosongkan()

        Call Nol_kan()

        Call Nomorotomatis()

    End Sub

 

    Private Sub BTNSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNSimpan.Click

        If ComboBox1.Text = "" Then

            MsgBox("Nomor registrasi harus diisi")

            ComboBox1.Focus()

            Exit Sub

        End If

 

        Dim simpan As String = "insert into TRpembayaran values('" & TextBox1.Text & "','" & DateTimePicker1.Value & "','" & ComboBox1.Text & "','" & TextBox8.Text & "','" & TextBox9.Text & "','" & TextBox10.Text & "','" & TextBox11.Text & "','" & TextBox12.Text & "','" & TextBox13.Text & "','" & TextBox14.Text & "','" & TextBox15.Text & "','" & TextBox16.Text & "','" & TextBox17.Text & "','USR01','" & TextBox18.Text & "')"

        CMD = New OleDbCommand(simpan, CONN)

        CMD.ExecuteNonQuery()

 

        CMD = New OleDbCommand("select nomor_registrasi from TRregistrasi where nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Dim editregistrasi As String = "update TRregistrasi set status_registrasi='KELUAR' where nomor_registrasi='" & ComboBox1.Text & "'"

            CMD = New OleDbCommand(editregistrasi, CONN)

            CMD.ExecuteNonQuery()

        End If

 

        CMD = New OleDbCommand("select * from TBLkamar where kode_kamar='" & TextBox5.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            Dim editkamar As String = "update TBLkamar set terisi='" & DR.Item("terisi") - 1 & "' where kode_kamar='" & TextBox5.Text & "'"

            CMD = New OleDbCommand(editkamar, CONN)

            CMD.ExecuteNonQuery()

 

            If DR.Item("terisi") < DR.Item("kapasitas") Then

                Dim editkamartersedia As String = "update TBLkamar set status_kamar='TERSEDIA' where kode_kamar='" & TextBox5.Text & "'"

                CMD = New OleDbCommand(editkamartersedia, CONN)

                CMD.ExecuteNonQuery()

            Else

                Dim editkamarpenuh As String = "update TBLkamar set status_kamar='PENUH' where kode_kamar='" & TextBox5.Text & "'"

                CMD = New OleDbCommand(editkamarpenuh, CONN)

                CMD.ExecuteNonQuery()

            End If

        End If

 

        CMD = New OleDbCommand("select * from TBLkamar where kode_kamar='" & TextBox5.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            If DR.Item("terisi") < DR.Item("kapasitas") Then

                Dim editkamartersedia As String = "update TBLkamar set status_kamar='TERSEDIA' where kode_kamar='" & TextBox5.Text & "'"

                CMD = New OleDbCommand(editkamartersedia, CONN)

                CMD.ExecuteNonQuery()

            End If

        End If

 

        If MessageBox.Show("Cetak bukti pembayaran...?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then

            Cetak.Show()

            Cetak.CRV.SelectionFormula = "{TRpembayaran.nomor_pembayaran} ='" & TextBox1.Text & "'"

            cryRpt.Load("mstr_pembayaran.rpt")

            Call seting_laporan()

            Cetak.CRV.ReportSource = cryRpt

            Cetak.CRV.RefreshReport()

        End If

        Call Kosongkan()

        Call Nol_kan()

        Call Nomorotomatis()

        Call TampilGrid()

        Call TampilRegistrasi()

    End Sub

 

    Private Sub BTNHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNHapus.Click

 

    End Sub

 

    Private Sub BTNTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNTutup.Click

        Me.Close()

    End Sub

 

    Private Sub TextBox16_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox16.KeyPress

        If Not (e.KeyChar >= "0" And e.KeyChar <= "9" Or e.KeyChar = vbBack) Then

            e.Handled = True

        End If

       

        If e.KeyChar = Chr(13) Then

            BTNSimpan.Focus()

        End If

    End Sub

 

    Private Sub TextBox16_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox16.TextChanged

        If Val(TextBox16.Text) < Val(TextBox15.Text) Then

            TextBox17.Text = 0

            TextBox18.Text = "SISA " & Val(TextBox15.Text) - Val(TextBox16.Text) & ""

        ElseIf Val(TextBox16.Text) >= Val(TextBox15.Text) Then

            TextBox17.Text = Val(TextBox16.Text) - Val(TextBox15.Text)

            TextBox18.Text = "LUNAS"

        End If

    End Sub

 

    Private Sub DGV_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGV.CellMouseClick

        On Error Resume Next

        TextBox1.Text = DGV.Rows(e.RowIndex).Cells(0).Value

        DateTimePicker1.Text = DGV.Rows(e.RowIndex).Cells(1).Value

        ComboBox1.Text = DGV.Rows(e.RowIndex).Cells(2).Value

 

        CMD = New OleDbCommand("select * from TRregistrasi where nomor_registrasi='" & ComboBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox2.Text = DR.Item("Tgl_registrasi")

            TextBox3.Text = DR.Item("kode_pasien")

            TextBox5.Text = DR.Item("kode_kamar")

            Call CariPasien()

            Call CariKamar()

            TextBox8.Text = Today

 

            TextBox9.Text = DateDiff(DateInterval.Day, DateValue(TextBox2.Text), Today)

            If TextBox9.Text = 0 Then

                TextBox9.Text = 1

            End If

            TextBox10.Text = Val(TextBox7.Text) * Val(TextBox9.Text)

            Call Nol_kan()

            Call TotalBiayaAlat()

            Call TotalBiayaDokter()

            Call TotalBiayaObat()

            Call TotalBiayaTindakan()

            Call GrandBiaya()

            TextBox16.Focus()

        End If

 

        CMD = New OleDbCommand("select * from TRPembayaran where nomor_pembayaran='" & TextBox1.Text & "'", CONN)

        DR = CMD.ExecuteReader

        DR.Read()

        If DR.HasRows Then

            TextBox16.Text = DR.Item("dibayar")

            TextBox17.Text = DR.Item("kembali")

            TextBox18.Text = DR.Item("status_pembayaran")

        End If

    End Sub

End Class

Bukti pembayaran pasien dapat dilihat pada gambar berikut ini.

Gambar 4.15 Bukti pembayaran

4.17  Laporan Master         

Menu untuk menampilkan laporan master user, alat kesehatan, dokter, kamar, obat dan sejenisnya terlihat pada gambar di bawah ini.

Gambar 4.16 Menu laporan master

Salah satu tampilan laporan master dari menu ini adalah sebagai berikut :

Gambar 4.17 Laporan dokter

Coding :

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        cryRpt.Load("lap dokter.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

4.18  Laporan Registrasi

Menu utama untuk laporan registrasi terlihat pada gambar di bawah ini.

Gambar 4.18 Menu utama laporan registrasi

Salah satu bentuk laporan registrasi dapat anda lihat pada gambar di bawah ini.

Gambar 4.19 Laporan registrasi berdasarkan status pasien

Coding :

Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        CRV.SelectionFormula = "{TRRegistrasi.status_registrasi} ='" & ListBox2.Text & "'"

        cryRpt.Load("master registrasi.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

Laporan registrasi terdiri dari beberapa kriteria antara lain :

1.       Laporan harian

2.       Laporan mingguan

3.       Laporan bulanan

4.       Laporan per kamar

5.       Laporan per pasien

Masing-masing laporan dapat anda lihat langsung dalam aplikasi rawat inap ini.

4.19  Laporan Perawatan

Bentuk menu utama laporan perawatan dan tindakan yang dilakukan oleh dokter terhadap pasien terlihat pada gambar di bawah ini.

Gambar 4.20 Menu utama laporan perawatan dan tindakan

Adapun salah satu bentuk laporan perawatan ini terlihat pada gambar berikut.

Gambar 4.21 Laporan perawatan per pasien

Coding :

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        CRV.SelectionFormula = "{TBLpasien.nama_pasien} ='" & ComboBox1.Text & "'"

        cryRpt.Load("master perawatan.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

4.20  Laporan Pembayaran

Bentuk menu laporan pembayaran pasien terlihat pada gambar berikut ini.

Gambar 4.22 Menu laporan pembayaran

Salah satu bentuk laporan pembayaran dapat anda lihat pada tampilan di bawah ini.

Gambar 4.23 Laporan pembayaran pasien yang telah lunas

Coding :

Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

        CRV.SelectionFormula = "{TRpembayaran.status_pembayaran} ='" & ListBox2.Text & "'"

        cryRpt.Load("master pembayaran.rpt")

        Call seting_laporan()

        CRV.ReportSource = cryRpt

        CRV.RefreshReport()

    End Sub

Laporan pembayaran ini terdiri dari beberapa kriteria antara lain :

1.       Laporan harian

2.       Laporan mingguan (periodik)

3.       Laporan bulanan

4.       Laporan per nomor pembayaran

5.       Laporan per status pembayaran (lunas-belum lunas)

6.       Laporan per pasien

Masing-masing laporan tersebut dapat anda lihat langsung dalam aplikasi rawat inap ini