Anda di halaman 1dari 28

APLIKASI PENDAFTARAN PASIEN

1. Latar Belakang
Poliklinik adalah instansi kesehatan yang menyediakan layanan kesehatan untuk pasien
rawat jalan. Di poliklinik terdapat beberapa dokter baik dokter umum maupun dokter
spesialis. Saat ini pendataan pasien dengan alur seperti berikut
a. Pasien datang ke Poliklinik dan mengambil nomer antrian
b. Pukul 7.00 layanan pendaftaran dibuka, petugas akan memanggil pasien sesuai
nomer antrian dan mendata penyakit pasien serta menentukan dokter yang sesuai
c. Pasien membawa berkas dan mengantri didepan tempat praktek dokter yang
ditentukan.
d. Layanan pengobatan dibuka jam 8.00 sesuai urutan antri pasien

Dengan alur seperti diatas seringkali menyebabkan antrian panjang, terutama pada bagian
pendataan pasien oleh petugas pendaftaran. Saat layanan pendaftaran pukul 7.00 biasanya
sudah banyak pasien yang antri, lambatnya proses pendaftaran menyebabkan antrian
semakin banyak.

2. Usulan
Dalam solusi yang diusulkan, proses pendataan dimulai sejak pasien datang, sehingga tidak
menunggu layanan pendaftaran pasien dibuka. Pasien diharuskan melakukan scan pada
KTP nya. Program akan menganalisa gambar dan mengambil data nama, alamat, pekerjaan
dan tanggal lahir. ketika layanan pendaftaran dibuka jam 7.00 petugas tinggal memanggil
pasien sesuai nomer urut dan tinggal melengkapi data keluhan pasien dan menentukan
dokter yang tepat. Pasien yang datang ketika petugas melengkapi data pasien, dapat tetap
melakukan scan KTP nya dan akan diproses tanpa menunggu petugas selesai melayani
pasien.
Aplikasi akan menganalisa gambar KTP dan
mengambil identitas dari gambar tersebut

Pasien melakukan
scan/foto ktp

Scan KTP Data identitas disimpan di database

Pasien
Database

Admin melengkapi keluhan


pasien dan dokter tujuan

Petugas
pendaftaran

3. Struktur Tabel Database


 Tabel Dokter

 Tabel Spesialisasi

 Tabel Pasien
 Tabel Tabel Antrian

 Tabel Kunjungan Selesai

4. Penjelasan Secara Garis Besar


Sebuah jendela aplikasi terdiri dari table data, form untuk input dan edit data, dan tombol
untuk operasi terhadap data. Table data akan diisi data dari database, table data akan secara
otomatis menyesuaikan dengan struktur kolom didatabase, sehingga untuk berbagai table,
kita cukup menggunakan satu table data saja,.Tombol operasi juga sama untuk semua table
Yang berbeda hanyalah pada form, setiap table akan memiliki form berbeda. Form disini
adalah sebuah interface Sehingga sebuah jendela dapat “ditempeli” form yang berbeda
asalkan berasal dari kelas yang mengimplementasikan interface form. Jendela aplikasi ini
juga bisa diturunkan untuk menambahkan fitur fitur baru, seperti fitur untuk mengupload
KTP.
Form

Tombol
Operasi

Table
Gambar KTP Jendela Aplikasi

5. Penjelasan Tiap Kelas


a. Package Data
i. Kelas BarisData
Kelas BarisData digunakan untuk menyimpan sebaris data pada database.Atibut
dalam kelas BarisData adalah data yang berjenis HashMap. HashMap dapat
menyimpan beberapa data dengan indeks tulisan. Untuk menambah data pada
HashMap menggunakan method put(key, value). Key adalah nama indeks dan value
adalah data yang dimasukkan. Sedang untuk mengambil data dari HashMap
perintahnya adalah get(key), dimana key adalah indeks yang ingin diambil nilainya.
Method dalam kelas BarisData antara lain
 public boolean isKey(String kolom)
Untuk memeriksa apakah nama kolom terdapat dalam BarisData, sehingga
menghindari pengguna memasukkan kolom yang salah
 public void insert(String kolom, Object isi)
Untuk memasukkan nilai dalam kolom tertentu
 public Object getValue(String columnName)
Untuk mengambil nilai dari kolom tertentu ( Hasil dalam bentuk objek)
 public String getStringValue(String columnName)
Untuk mengambil nilai dari kolom tertentu ( Hasil dalam bentuk String)
 public ArrayList<Object> getValueList() :
Untuk menghasilkan semua nilai pada sebuah baris dalam bentuk ArrayList
 public Object[] getDaftarKolom()
Menghasilkan daftar nama kolom pada sebuah baris dalam bentuk Array
ii. TampilanForeignKey
Kelas ini digunakan untuk menampilkan kolom apa yang akan ditampilkan pada
hubungan Foreign Key

Misal dalam contoh diatas , semua tabel yang memiliki foreign key ke table dokter,
maka yang ditampilkan adalah kolom nama.\
iii. Table
Kelas Table merupakan turunan kelas AbstractTableModel yaitu kelas yang dibuat
untuk mempermudah pengisian data pada JTable. Untuk itu kelas Table harus
menggoverride beberapa method yaitu :
 getRowCount()
Untuk menghasilkan jumlah baris dalam table
 getColumnCount()
Untuk menghasilkan jumlah baris dalam table
 getValueAt(int rowIndex, int columnIndex)
Untuk mengambil data pada kolom dan baris tertentu
 setValueAt(Object value, int rowIndex, int columnIndex)
Untuk mengisi data pada kolom dan baris tertentu
 isCellEditable(int rowIndex, int columnIndex)
Untuk menentukan apakah sebuah kolom bisa diedit secara inline atau tidak
 getColumnName(int columnIndex)
Untuk menghasilkan nama kolom dengan index tertentu.

Kelas Table juga memiliki method method lain yaitu:


 removeRow(int rowIndex)
Menghapus baris tertentu
 Object getMaxValue(String col)
Menghasilkan nilai terbesar dari sebuah kolom
 isPrimaryKey(String kolom)
Memeriksa apakah sebuah kolom adalah primary key atau tidak
 int getColumnIndex(String col)
Menghasilkan nomer indeks kolom
 void update(BarisData barisData, int rowIndex)
Mengubah data pada baris tertentu dengan baris data baru
 int insert(BarisData barisData)
Memasukkan data baru. Jika insert data berhasil akan mereturn 1, jika data
telah ada angka mereturn angka 0, dan jika gagal akan mereturn angka -1
 int getRecordIndex(BarisData barisData)
Menghasilkan posisi baris sebuah baris data
 BarisData getRecordByValue(String columnName, String value)
Menghasilkan baris berdasarkan nilai dari kolom tertentu.
b. Package Koneksi
i. Kelas DBaseSetting
Kelas DBaseSetting berfungsi untuk menyimpan pegnaturan koneksi ke database.
Kelas ini terdiri dari beberapa atribut yaitu URL,portNumber, username, password
dan driver. Method dalam kelas ini adalah setter dan getter untuk mengisi dan
membaca nilai dari atribut atribut tersebut
ii. Kelas MySQLConnector
Kelas ini berfungsi untuk menghubungkan Java dengan database. Kelas ini
memiliki atribut dengan tipe dataDBaseSetting dan Connection. DBaseSetting
menjelaskan bagaimana terhubung dengan database sedangkan Connection
digunakan untuk menyimpan koneksi database yangberhasil terbentuk.
Method method dalam kelas ini adalah
 MySqlConnector(DBaseSetting setting)

Method ini adalah method konstruktor. Method ini memiliki parameter input
berupa setting yang kemudian dimasukkan ke atribut setting. Dalam method ini
dilakukan pemanggil method SetConnection yang berfungsi untuk membangun
koneksi antara program java dan database.
 public void SetConnection()

Method ini berfungsi menghubungkan Java dengan Database menggunakan


setting yang telah tersimpan sebelumnya. Perintah utama untuk menghubugkan
java dengan database adalah
DriverManager.getConnection(driver + "://" + url, username,
password)
Untuk MySQL misaln setting nya adalah
URL : localhost
Username=root
Password =
Driver = jdbc:mysql
Perintah diatas akan menghasilkan sebuah data denga tipe Connection yang akan
disimpan di atribut koneksi.
c. Package Pendeteksi Huruf
i. Kelas OCR
Kelas ini berfungsi untuk menghubungkan program java dengan API dari
ocrsdk.com. API ini berfungsi untuk membaca tulisan dari sebuah gambar KTP.
Method dalam kelas ini adalah
 public OCR(String username, String password, String serverUrl)
Konstruktor kelas OCR untuk mengatur setting ke API

 public void uploadGambar(String alamatFile, String bahasa)


Mengunggah gambar ke server. Parameter alamatFile diisi lokasi file yang
akan diunggah sedangkan parameter Bahasa diisi “id” untuk Indonesia.

 private void donwloadHasil(Task task, String outputPath)


Mendownload hasil analisa gambar di ocrssdk.com
 BarisData analisaData(String lokasiFile)
Menganalisa data hasil dari ocrsdk.com dan mengambil data nama, alamat dan
tanggal lahir
d. Package Suara
i. String angkaKeString(int number)
Menghsilkan ucapan sebuah angka, misal angka 101 menjadi “seratus satu”.
Untuk angka antara 11-19 pemrosesan dilakukan dengan memanggil fungsi
belasan, untuk angka 2—99 pemrosesan dilakukan dengan memanggil fungsi
puluhan, sedangkan untuk angka 100-999 pemrosesan dilakukan dengan
memanggil fungsi ratusan
ii. public void Play(int angka)
Memainkan file tertentu berdasarkan angka yang dimasukkan. Mula mula angka
akan diubah ke ucapannya, misal menjadi “lima belas”. Kemudian string tersebut
dipecah berdasar spasi , sehingga menjadi “lima” dan “belas”. Kemudian file yang
dimainkan adalah file lima.mp3 dan belas.mp3.

e. Package Tampilan
i. Interface Form

Interface form memiliki beberapa method yang harus dioverride oleh kelas yang
mengimplement interface
 BarisData getRecord()
Mengambil data dari tiap elemen penyusun form seperti text field, datepicker,
dan combo box dan mengembalikan nilai berupa BarisData
 void setForm(BarisData record)
Mengisi nilai elemen sebuah form dengan nilai dari parameter input.
 void clear()
Mengosongkan isi setiap elemen form
 void setEnable(boolean status)
Mengatur status keaktifan form, jika status bernilai false maka semua elemen
form tidak akan bisa diubah atau diisi nilai baru
 String getNamaTable()
Mengambil nama table yang direpresentasikan dalam sebuah form
 Dimension getSize()
Mengambil ukuran form dalam bentuk Dimension. Tipe data Dimension
memiliki atribut width dan height.

ii. FormDokter
Berfungsi sebagai User Interface untuk memasukkan dan mengubah data Dokter.
Kelas ini mengimplement interface Form. Sehingga harus mengoverride method
method dari interface Form

Atribut dalam kelas FormDokter adalah


private Table tableSpesialisasi
private final MySqlConnector connector
Atribut tableSpesialisasi digunakan untuk menyimpan data spesialisasi dokter
yang tersedia, tableSpesialisasi diisi dengan mengambil data dari table
spesialisasi didatabase menggunakan Atribut connector
Method dalam kelas ini adalah
 public FormDokter(MySqlConnector connector)
Konstruktor kelas FormDokter dengan parameter input berupa
MySQLConnector yang nantiny digunakan untuk melakukan operasi dalam
database.

 public BarisData getRecord()


Mengambil data dari tiap elemen form dan membentuk record berdasar
data tersebut dimana satu record menggambarkan data satu baris.

 public Dimension getSize()


Mengembalikan ukuran FormDokter

 public void setForm(BarisData record)


Mengisi form berdasar data record yang ada pada parameter
 public void clear()
Mengosongkan komponen form

 public void loadOption()


Mengisi pilihan spesialisasi dengan mengambil dari table spesialisasi
dan kemudian menaruhnya di Combo Box pilihan

 public void setEnable(boolean status)


Mengatur status keaktifan form, jika status bernilai false maka semua
elemen form tidak akan bisa diubah atau diisi nilai baru
iii. FormPasien
Berfungsi sebagai user interfaces untuk memasukkan dan mengubah data pasien.
Kelas FormPasien merupakan impementasi dari interface Form.

Method dalam kelas ini adalah


 public FormPasien()
Konstruktor kelas FormPasien, saat awal dibuat semua elemen form akan
didisable.

 public Dimension getSize()


Mengembalikan ukuran FormPasien

 public void clear()


Mengosongkan komponen form
 public BarisData getRecord()
Mengambil data dari tiap elemen form dan membentuk record berdasar
data tersebut dimana satu record menggambarkan data satu baris.

 public void setForm(BarisData record)


Mengisi form berdasar data record yang ada pada parameter
 public String getNamaTable
Mengembalikan nama table dalam form ini, yaitu “pasien”

 public void setEnable(boolean status)


Mengatur status keaktifan form, jika status bernilai false maka semua
elemen form tidak akan bisa diubah atau diisi nilai baru

iv. Form Spesialisasi


Digunakan untuk mengelola data Spesialisasi Dokter

Method dalam kelas ini adalah


 public FormSpesialisasi()
Konstruktor kelas FormSpesialisasi, saat awal dibuat semua elemen form
akan didisable.

 public Dimension getSize()


Mengembalikan ukuran FormSpesialiasi
 public void clear()
Mengosongkan komponen form

 public BarisData getRecord()


Mengambil data dari tiap elemen form dan membentuk record berdasar
data tersebut dimana satu record menggambarkan data satu baris.

 public void setForm(BarisData record)


Mengisi form berdasar data record yang ada pada parameter

 public String getNamaTable


Mengembalikan nama table dalam form ini, yaitu “pasien”
 public void setEnable(boolean status)
Mengatur status keaktifan form, jika status bernilai false maka semua
elemen form tidak akan bisa diubah atau diisi nilai baru

v. FormPendaftaranPasien
Berfungsi sebagai user interfaces untuk memasukkan data antrian pasien. Kelas
FormPendaftaranPasien merupakan impementasi dari interface Form.

Kelas ini memiliki atribut :


 private Table tableDokter, untuk menyimpan data dokter
 private Table tablePasien, untuk menyimpan data pasien
 private final MySqlConnector connector, untuk melakukan operasi ke
database
 private final OCR ocr, untuk melakukan pengenalan huruf dari gambar
Method dalam kelas ini adalah
 public FormPendaftaranPasien(MySqlConnector connector)
Konstruktor kelas FormPendaftaran Pasien
 public BarisData getRecord()
Mengambil data dari tiap elemen form dan membentuk record berdasar
data tersebut dimana satu record menggambarkan data satu baris.

 public Dimension getSize()


Mengembalikan ukuran FormDokter

 public void clear()


Mengosongkan komponen form
 public void setForm(BarisData record)
Mengisi form berdasar data record yang ada pada parameter

 public void loadOption()


Mengisi pilihan dokter dengan mengambil dari table dokter
dan kemudian menaruhnya di Combo Box pilihanDokter

 public void setEnable(boolean status)


Mengatur status keaktifan form, jika status bernilai false maka semua
elemen form tidak akan bisa diubah atau diisi nilai baru
 public void setFormFromImage(BarisData record)
Mengisi form berdasar data dari gambar KTP form yang diisi adalah
Nama, Alamat. danTanggal lahir.

 private void tblUploadActionPerformed(java.awt.event.ActionEvent evt)


Method yang akan di eksekusi ketka tombol upload ditekan.
Dijalankan ketika tombol upload ditekan.Proses dalam method ini adalah
 Upload gambar
 Server akan mengirim balasan berupa file txt
 Menganalisa file txt tersebut dan membentuk record berdasar data
pada file txt
 Mengisi form berdasar record hasil analisa file txt
 Mengubah icon lblGambar menjadi gambar KTP
 private void tblPanggilActionPerformed(java.awt.event.ActionEvent evt)
Method yang diapnggil ketika tombol tblPanggil ditekan, method akan
memanggil method play dari kelas SuaraAntrian() untuk memainkan suara
sesuai nomer urut pasien.

vi. FormKunjunganSelesai
Form ini adalah turunan dari kelas FormKunjunganPasien, form ini digunakan
untuk menampilkan daftar kunjungan pasien yang telah diproses, hanya saja
bedanya pada form ini, tombol upload, dan panggil dihilangkan.
vii. JendelaDataInduk

Jendela data induk adalah user interfaces untuk mengelola data di database.
Jendela data induk digunakan untuk insert, update, dan delete data. Jendela data
induk terdiri dari beberapa atribut yaitu
private Form panel1 Form untuk mengisi atau mengubah data
private Table tableData Berisi data dari tabel yang sedang dibuka
private String tabel, whereClause = "" berisi nama tabel dan where clause
yang mungkin ada
private String mode Mode operasi aplikasi ( admin, pasien atau dokter )
private MySqlConnector connector Untuk melakukan operasi ke database

Karena form adalah interface, maka jendela data induk dapat dipasangi form dari
kelas apapun, selama kelas tersebut mengimplementasi interface form

Method dalam kelas jendelaDataInduk adalah


 public JendelaDataInduk(String whereClause, String mode, MySqlConnector
connector, Form form)
Konstruktor kelas, ketika objek dibentuk akan melakukan proses berikut
 Mengatur tata letak komponen
 Mengaktifkan jam
 mengatur status keaktifan tombol kedalam mode default
 mengambil data dari database

 private void startJam()

Berfungsi untuk mengupdate tampilan waktu setiap 1000ms( 1 detik )


sehingga tampak seperti jam digital
 private void init()

Mengatur koordinat tiap tombol, aplikasi ini menggunakan absolute layout,


sehingga harus didefinisikan secara detail posisi x,y sebuah komponen
 public void defaultButton()
Menentukan tombola pa yang aktif dan tombola pa yang tidak aktif ketika
aplikasi pertama kali berjalan
 public void allButtonEnabled()
Mengaktifkan semua tombol

 public void loadTable()

Mengisi atribut table dengan data dari database


 public void resizeColumnWidth(JTable table)
Menyesuaikan ukuran table agar pas dengan isi table

 private void jTable1MouseClicked(java.awt.event.MouseEvent evt)


Method yang akan dijalankan ketika pengguna mengklik salah satu data di
table. Ketika baris tabel d klik
 Buat record sesuai baris table yang diklik
 Gunakan record tersebut untuk mengisi form
 Aktifkan form
Jika pengguna bukan admin maka yang aktif hanya tombol tambah data

 private void tblMasukkanDataActionPerformed(java.awt.event.ActionEvent


evt)
Method yang akan dijalankan ketika tombol masukkan data ditekan

Proses yang dilakukan adalah


 Kosongkan form
 aktifkan form
 non aktifkan tombol masukkan data
 aktifkan tombol simpan dan batal
 protected void tblSimpanActionPerformed(java.awt.event.ActionEvent evt)
Method ini akan dieksekusi ketika tombol simpan ditekan. Mula mula
program akan menampilkan pesan konfirmasi. Jika pengguna menekan
tombol ya, maka program akan mengambil data dari form melalui method
gerRecord dan memasukkan kedalam tabel. Selanjutnya program akan
mengosongkan form dan mereload isi table
 private void tblHapusActionPerformed(java.awt.event.ActionEvent evt)
Method ini akan dijalankan ketika tombol hapus ditekan, mula mula program
akan menghapus data dari tabel kemudian memperbarui tampilan table
dengan memanggil method fireTtableDataChanged().

 private void tblBatalActionPerformed(java.awt.event.ActionEvent evt)

Method ini dipanggil ketika tombol batal ditekan, method ini akan memanggil
method defaultButton untuk mengatur status aktivasi tombol ke setelan
default, serta mengosongkan form

Anda mungkin juga menyukai