Oleh:
Hanifah Hasna Nuha (150533601920)
Hartanti Iriyani (150533601195)
Leo Razaka Qintara (150533601701)
Moch. Fadzil Fu’addin (150533603409)
B. Tujuan
1. Memudahkan pegawai untuk mendaftarkan pasien dan merekap data
pasien sebagai arsip poliklinik.
2. Menyimpan data poliklinik secara aman, efektif, dan efisien.
3. Memudahkan pasien untuk registrasi, bertransaksi, memilih poli,
mengambil resep, dan obat.
4. Memudahkan dokter untuk mengatur jadwal praktek, dan memeriksa
pasien.
C. Dasar Teori
1. FUNGSI AGREGATE
A. Fungsi Agregat
Fungsi agregat (aggregate) adalah fungsi yang menerima
koleksi nilai dan mengembalikan nilai tunggal sebagai hasilnya.
Standar ISO mendefinisikan lima jenis fungsi agregrat.
Fungsi Deskripsi
COUNT Mengembalikan jumlah (banyaknya atau kemunculannya) nilai di suatu
kolom
SUM Mengembalikan jumlah (total atau sum) nilai di suatu kolom
AVG Mengembalikan rata-rata (average) nilai di suatu kolom
MIN Mengembalikan nilai terkecil (minimal) di suatu kolom
MAX Mengembalikan nilai terbesar (maximal) di suatu kolom
B. Keyword DISTINCT
Keyword DISTINCT dapat dimanfaatkan untuk
mengeliminasi kemunculan data yang sama.
Sintaks keyword DISTINCT diperlukan sebagai berikut :
C. Pengelompokan
Operasi non – trivial lainnya di dalam pengambilan data
adalah pengelompokan. Operasi ini direpresentasikan melalui
klausa GROUP BY dan dikuti nama field.
Sintaks klausa GROUP BY diperhatikan sebagai berikut :
Inner joi terdapat tabel A dan B, maka hasil inner join dapat
diperhatikan sebagai bildang dalam diagram Venn seperti Gambat
1.
b. Outer join
Outer join dibagi ke dalam tiga jenis, yaitu left outer join, right
outer join, dan full outer join.
Selain empat jenis join itu yang utama di atas, masih ada beberapa
variasi join lainnya, seperti CROSS JOIN (cartesian product),
NATURAL JOIN, dan sebagainya.
Perlu juga diperhatikan, join diimplimentasikan dalam bentuk
bersarang (nested join). Jadi, di dalam sebuah operasi join bisa
terdapat operasi join lainnya.
C. Union
MySQL Union adalah statemen yang mengkombinasikan dua buah
atau lebih resulset darui beberapa table dengan statemen SELECT
sehingga menjadi satu buah result. Union statemen memilki beberapa
ketentuan sehingga berikut.
1. Jumlah kolom / field dari setiap statemen SELECT harus sama.
2. Tipe data kolom/field dari setiap statemen SELECT harus
kompatibel
Secara default Statemen UNION akan menghapus semua rcord duplikasi
dari resultset. Apabila anda ingin record duplikasi tetap di tampilkan
maka pada resultset tuliskan secara explisit UNION ALL. Perbedaan
Union dan Union All dapat dijelaskan pada gambar diagram Venn 5 dan
6.
Fungsi Union sendiri dapat dijalankan dengan sintaks sebagai berikut :
d. View
View dapat didefinisika tabel maya (virtual) atau loogical yang
terdiri dari himpunan hasil query. Tidak seperti umumnya tabel di
dalam basis data relational, view bersifat dinamis, ia menggundang
data dari tabelyang dipresentasikannya. Dengan demikian, ketika
tabel menjadi sumber datanya berubah, data di view juga akan
berubah.
Merujuk pada dokumentasi MySQL, sintaks pendefinisian view
diperhatikan sebagai berikut :
e. Update View
View dapat berisi read-only atau updatable. Kondisi ini sangat
dipengaruhi oleh adanya pendefinisian view itu sendiri.
Bagaimanapun, untuk menciptakan updatable view, pertanyaan
SELECT yang didefinisikan di view harus mengikuti aturan aturan
sebagai berikut:
Pernyataan SELECT tidak boleh merujuk ke lebih dari satu
tabel.
Penyataan SELECT tidak boleh menggunakan klausa GROUP
BY atau HAVING.
Pernyataan SELECT harus tidak menggunakan DISTINCT.
Pernyataan SELECT tidak boleh mengandung ekpresi apa pun,
misalnya fungsi agregrat.
Pada hakekatnya, jika sistem database mampu menentukan pemetaan
balik dari semua view ke skema tabel dasar, maka view memungkinkan
untuk di update. Dlam kondisi ini,operasi – operasi INSERT,
UPDATE dan DELETE dapat diterapkan pada view.
4. TRIGGER
A. Trigger
Trigger dapat didefinisikan sebagai himpunan kode (prosedural)
yang dieksekusi secara otomatis sebagai respon atas suatu kejadian
berkaitan dengan tabel basis data. Kejadian (event) yang dapat
membangkitkan trigger umumnya berupa pernyataan INSERT,
UPDATE, dan DELETE. Berdasarkan ruang lingkupnya, trigger
diklasifikasikan menjadi dua jenis : row trigger dan statement trigger.
Trigger baris (row) mendefinisikan aksi untuk setiap baris tabel : trigger
pernyataan hanya berlaku untuk setiap pernyataan INSERT,UPDATE,
dan DELETE.
Dari sisi perilaku (behavior) eksekusi, trigger dapat dibedakan
menjadi beberapa jenis; namun umumnya ada dua jenis: trigger BEFORE
dan AFTER. Sesuai penamaannya, jenis-jenis ini merepresentasikan waktu
eksekusi trigger-misalnya sebelum ataukah sesudah pernyataan-pernyataan
B. Trigger MySQL
MySQL mendukung fitur trigger—termasuk juga stored procedure
dan view—sejak versi 5.0.2. Sebagaimana objek-objek lainnya, trigger
diciptakan menggunakan pernyataan CREATE.
Sintaks pendefinisian trigger diperlihatkan sebagai berikut :
MySQL tidak mengizinkan multiple trigger dengan waktu aksi dan event sama
per tabel. Misalkan di tabel A sudah didefinisikan trigger AFTER INSERT,
maka kita tidak boleh mendefinisikan trigger AFTER INSERT lagi; namun
AFTER EDIT, AFTER DELETE, atau BEFORE (INSERT, EDIT, dan
DELETE) bisa diterima.
Kegunaan trigger:
5. STORED PROCEDURE
A. Stored Procedure
Stored procedure adalah sebuah prosedur layaknya subprogram
(subrutin) di dalam bahasa pemograman regular yang tersimpan di dalam
katalog basisdata. Di bawa ini merupakan bagian syntax dari Stored
procedure:
6. TRANSACTION
A. Transaksi Basis Data
Pada suatu hari, Tono ingin mentransfer uang ke rekening adiknya,
Tini, sebesar Rp. 9.000.000. Diilustrasikan secara sederhana, proses yang
terjadi adalah sebagai ber ikut:
1. Saldo Tono dikurangi sebesar Rp. 9.000.000,
2. Saldo Tini ditambah sebesar Rp. 9.000.000.
Begitu kedua tahap di atas terlaksana dengan baik, Tono akan
merasa lega, dan Tini pun bersuka cita, karena sebentar lagi dapat memilik
i laptop baru yang telah lama dimimpikannya. Namun, pertimbangkan
jika di antara langkah (1) dan (2) terjadi hal-hal buruk yang tidak
diinginkan, misalnya saja mesin ATM crash, terjadi pemadaman listrik
dan UPS gagal up, disk pada server penuh, atau ada cracker yang merusak
infrastruktur jaringan. Maka dapat dipastikan bahwa saldo Tono
berkurang, tetapi saldo Tini tidak bertambah. Hal tersebut merupakan
sesuatu yang tidak diharapkan untuk terjadi.
Dari ilustrasi di atas, maka dapat disimpulkan bahwa solusi yang
tepat adalah memperlakukan perintah-perintah sebagai satu kesatuan
operasi. Sederhananya, lakukan semua operasi atau tidak sama sekali,
biasa juga dikenal dengan jargon all or nothing. Uniknya, konsep
penyelesaian di atas sudah dikemukakan oleh para ahli sejak puluhan
tahun silam. Konsep yang disebut transaksi basis data (database
transaction) ini sebenarnya cukup sederhana, antara lain:
Tandai bagian awal dan akhir himpunan perintah,
Putuskan di bagian akhir untuk mengeksekusi (commit) atau
membatalkan (rollback) semua perintah.
C. Implementasi Transaksi
Transaksi di MySQL diinisiasi dengan menggunakan pernyataan
START TRANSACTION atau BEGIN dan diakhiri dengan 2 cara yaitu:
a. COMMIT
Pernyataan COMMIT digunakan untuk menyimpan data(tidak di-
rollback).
b. ROLLBACK
Pernyataan ROLLBACK digunakan untuk menggugurkan rangkaian
perintah. akan dilakukan manakala ada satu atau lebih perintah yang
gagal dilaksanakan.
Status-status yang dapat dicapai oleh sebuah transaksi sejak mulai
dilaksanakan hingga selesai atau batal adalah:
1. Aktif (Active) yang merupakan status awal (initial state) sebuah transaksi
yang menunjukkan transaksi tersebut masih dieksekusi.
2. Berhasil Sebagian (Partially Committed), yaitu keadaan yang dicapai
transaksi tepat pada saat operasi terakhir dalam transaksi selesai
dikerjakan.
3. Gagal (Failed), yang merupakan keadaan dimana sebuah transaksi
terhenti pengeksekusiannya sebelum tuntas sama sekali.
4. Batal (Aborted), yaitu keadaan dimana sebuah transaksi dianggap
tidak/belum dikerjakan yang tentu dengan terlebih dahulu diawali dengan
mengembalikan semua data yang telah diubah ke nilai-nilai semula. (yang
menjadi tanggung jawab DBMS).
5. Berhasil Sempurna (Committed), keadaan dimana transaksi telah
dinyatakan berhasil dikerjakan seluruhnya dan basis data telah
merefleksikan perubahan-perubahan yang memang diinginkan transaksi.
D. Isolasi Transaksi
Dalam transaksi pada sistem basis data ada 3 hal yang harus dicegah:
1. Dirty read
Dua transaksi berjalan bersama, dan salah satu transaksi membaca hasil
transaksi lainnya yang gagal
2. Non-repeatable read
Transaksi membaca ulang data yang telah dibaca sebelumnya karena telah
diubah oleh transaksi lain yang berjalan bersamaan.
3. Phantom read
Transaksi membaca data yang telah hilang oleh transaksi lainnya Untuk
mencegah 3 hal di atas, Oracle memiliki 2 level isolasi, yaitu:
1. Read Command
Transaksi hanya bisa membaca data yang telah selesai di eksekusi
(commit) oleh transaksi lain.
2. Serializable (mencegah Phantom read)
Proses transaksi di-serial-kan, artinya transaksi satu akan berjalan
setelah transaaksi lainnya selesai. Tetapi aplikasi yang menerapkan
level isolasi ini harus bersedia mengulangi transaksi akibat kegagalan
penserialan transaksi.
D. Desain Database
Dalam perancangan database poliklinik ini terdapat 12 buah tabel
yaitu tabel pasien, dokter, pegawai, registrasi, transaksi, penyakit, resep,
obat, JadwalPraktek, pemeriksaan, poli, dan ambil_poli.
Dalam tabel pasien terdapat 8 buah field yaitu id_pas, nama_pas,
jk, umur, jalan, kota, kode_pos, telp, dan tgl_reg yang dijadikan sebagai
Primary Key adalah id_pas. Struktur tabel pasien adalah gambar berikut
ini:
Dalam table pegawai terdapat 6 buah field yaitu nip, nama_peg, jk,
jalan, kota, kode_pos, dan telp_peg. Pada table ini yang dijadikan sebagai
Primary Key adalah nip. Struktur table pegawai seperti gambar berikut ini:
Gambar 3: Struktur tabel pegawai
USE poliklinik;
c. Screenshot Hasil
c. Screenshot Hasil
3. Membuat Table, Memasukkan, dan Menampilkan Data Dokter
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel dokter
Memasukkan data ke tabel dokter
Menampilkan data dokter
b. Kode Program
CREATE TABLE dokter(
id_dok VARCHAR(15) NOT NULL,
nama_dok VARCHAR(225) NOT NULL,
jk VARCHAR(2) NOT NULL,
kode_poli VARCHAR(15) NOT NULL,
jalan VARCHAR(20) NOT NULL,
kota VARCHAR(50) NOT NULL,
kode_pos INT(5) NOT NULL,
telp_dok VARCHAR(12) NOT NULL,
PRIMARY KEY(id_dok)
);
INSERT INTO dokter
VALUES
("D001","dr. Iriani, Sp.PD","P","P001","Jl.Jakarta 5",
"Malang","65119","085789173711"),
("D002","dr. Agung, Sp. S","L","P005","Jl.Merdeka 9",
"Malang","66015","085789173700"),
("D003","dr. Zayin, Sp. OT","L","P004","Jl.Mandalawangi
10", "Malang","63215","085789173255"),
("D004","dr. Efendi, Sp. P","L","P009","Jl.Singahraja 11",
"Malang","62215","085789173521"),
("D005","dr. Nurita, Sp. Rad","P","P006","Jl.Sekarsari
12", "Malang","64214","085789176701"),
("D006","dr. Dita, Sp. OT","P","P004","Jl.Andan sari 4",
"Malang","65232","085789173911"),
("D007","dr. Deny, Sp. S","L","P005","Jl.Semarang 14",
"Malang","65112","085789176711"),
("D008","dr. Cintya, Sp. A","P","P002","Jl.Siguragura 16",
"Malang","65233","085789073711"),
("D009","dr. Agung, Sp. M","L","P008","Jl.Buntu 23",
"Malang","65234","085783273711"),
("D010","dr. Setiawan, Sp. PD","L","P001","Jl.Merdeka 19",
"Malang","66015","085789103711"),
("D011","dr. Cici, Sp, JP","P","P007","Jl.Angkasa 01",
"Malang","65235","085783273711"),
("D012","dr. Anton, Sp. Rad","L","P006","Jl.Buntu 98",
"Malang","65234","085783273711"),
("D013","dr. Dinda, Sp. U","L","P012","Jl.Buntu 11",
"Malang","65234","085783273711"),
("D014","dr. Galih, Sp. OT","L","P004","Jl.Bendungan
Sutami 46", "Malang","65116","085894001001"),
("D015","dr. Cintya, Sp. U","P","P012","Jl.Terusan 09",
"Malang","65239","085789089000"),
("D016","dr. Ani, Sp. S","P","P005","Jl.Siguragura 10",
"Malang","65233","085789073719"),
("D017","dr. Budi, Sp. OT","L","P004","Jl.Cinta 01",
"Malang","65236","085789073719"),
("D018","dr. Dody, Sp. B","L","P003","Jl.Jombang 01",
"Malang","65115","085789073703"),
("D019","dr. Diana, Sp. THT","P","P010","Jl.Cemara 98",
"Malang","65238","085789073717"),
("D020","dr. Dani, Sp. PD","L","P001","Jl.Larasliris 31",
"Malang","65236","085789073917"),
("D021","dr. Elfa, Sp. A","P","P002","Jl.Larasliris 16",
"Malang","65276","085779073917"),
("D022","dr. Tora, Sp. JP","L","P007","Jl.Selasi 30",
"Malang","65238","085789073919"),
("D023","dr. Regina, Sp. THT","P","P010","Jl.Terusan 21",
"Malang","65239","085789073917"),
("D024","dr. Putri, Sp. P","P","P009","Jl.Selayar 53",
"Malang","65240","085789073945"),
("D025","dr. Gunawan, Sp. PA","L","P011","Jl.Sumber 12",
"Malang","65241","085789073617");
SELECT*FROM dokter;
c. Screenshot Hasil
SELECT*FROM pegawai;
c. Screenshot Hasil
5. Membuat Table, Memasukkan Data, dan Menampilkan Data Registrasi
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel registrasi
Memasukkan pada tabel registrasi
Menampilkan data registrasi
b. Kode Program
CREATE TABLE registrasi(
id_reg VARCHAR(15) NOT NULL,
no_reg INT(15) NOT NULL,
no_urut INT(5) NOT NULL,
nip INT(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_reg DATE NOT NULL,
PRIMARY KEY(id_reg)
);
SELECT*FROM registrasi;
c. Screenshot Hasil
6. Membuat Table, Memasukkan Data, dan Menampilkan Transaksi
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel transaksi
Memasukkan data pada tabel transaksi
Menampilkan data transaksi
b. Kode Program
CREATE TABLE transaksi(
id_transaksi VARCHAR(10) NOT NULL,
NamaTransaksi VARCHAR(255) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
tgl_trans DATE NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
Tarif INT(10) NOT NULL,
PRIMARY KEY(id_transaksi));
c. Screenshot Hasil
SELECT*FROM penyakit;
c. Screenshot Hasil
8. Membuat Table, Memasukkan Data, dan Menampilkan Data Resep
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel resep
Memasukkan data ke tabel resep
Menampilkan data resep
b. Kode Program
CREATE TABLE resep(
id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_resep VARCHAR(15) NOT NULL,
kode_obat VARCHAR(15) NOT NULL,
dosis VARCHAR(255) NOT NULL,
jumlah INT(5) NOT NULL,
PRIMARY KEY(no_resep)
);
SELECT*FROM resep;
c. Screenshot Hasil
9. Membuat Table dan Memasukkan Data Obat
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel obat
Memasukkan data ke tabel obat
b. Kode Program
CREATE TABLE obat(
jenis_obat VARCHAR(225) NOT NULL,
kode_obat VARCHAR(10) NOT NULL,
merk VARCHAR(255) NOT NULL,
harga INT(10) NOT NULL,
stok VARCHAR(10) NOT NULL,
PRIMARY KEY(kode_obat));
SELECT*FROM obat;
c. Screenshot Hasil
10. Membuat Table, Memasukkan Data, Menampilkan Data JadwalPraktek
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel
JadwalPraktek
Memasukkan data ke tabel JadwalPraktek
Menampilkan data JadwalPraktek
b. Kode Program
CREATE TABLE JadwalPraktek(
id_dok VARCHAR(15) NOT NULL,
KodeJadwal VARCHAR(15) NOT NULL,
Hari VARCHAR(10) NOT NULL,
JamMulai VARCHAR(10) NOT NULL,
JamSelesai VARCHAR(10) NOT NULL,
PRIMARY KEY(KodeJadwal));
SELECT*FROM JadwalPraktek;
c. Screenshot Hasil
11. Membuat Table Pemeriksaan
a. Langkah-langkah
Menuliskan pernyataan SQL untuk membuat tabel
pemeriksaan
b. Kode Program
CREATE TABLE pemeriksaan(
id_dok VARCHAR(15) NOT NULL,
id_pas VARCHAR(15) NOT NULL,
no_urut INT(5) NOT NULL,
keluhan VARCHAR(255) NOT NULL,
diagnosa VARCHAR(255) NOT NULL,
id_penyakit VARCHAR(15) NOT NULL,
berat_badan VARCHAR(10) NOT NULL);
SELECT*FROM pemeriksaan;
c. Screenshot Hasil
SELECT*FROM poli;
c. Screenshot Hasil
SELECT*FROM ambil_poli;
c. Screenshot Hasil
F. Studi Kasus
FUNGSI AGREGAT
1. Studi Kasus 1
Untuk mempermudah pegawai dalam melayani pasien maka di
butuhkan perintah yang dapat menampilkan harga daftar mulai dari yang
termurah sampai dengan yang termahal.
Berdasarkan tabel obat, tampilkan harga obat termurah !
a. Kode Program
SELECT MIN(harga) AS harga
FROM obat;
b. Screenshot Hasil
c. Penjelasan
Dari fungsi agregat “MIN” dapat mengembalikan nilai terkecil
(minimal) di suatu kolom. Jadi Melalui perintah “SELECT
MIN(harga) AS harga FROM obat; ” dapat di tampilkan harga obat
yang termurah dari tabel obat.
2. Studi Kasus 2
Untuk mempermudah pegawai mengetahui pendapatan dari hasil
penebusan resep obat pada waktu tertentu dibutuhkan perintah untuk
mengetahui jumlah rata rata tarif dengan waktu yang telah ditentukan.
Berdasarkan tabel transaksi, tampilkan rata2 tarif pada tanggal 13-03-
2016 !
a. Kode Program
b. Screenshot Hasil
c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan rata rata dengan perintah AVG(Tarif) dari kolom
tarif pada tabel transaksi dimana tgl_trans = "2016-03-13";.
3. Studi Kasus 3
Agar pegawai mengetahui data pasien tertentu dengan
membedakan berdasarkan jenis kelamin dan umurnya.
Berdasarkan tabel pasien, tampilkan jumlah pasien berjenis kelamin L dan
umur lebih dari 20 tahun !
a. Kode Program
b. Screenshot Hasil
c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan jumlah dari pasien yang memiliki jenis kelamin
Laki laki dengan perintah SELECT COUNT(jk) AS jumlah. Dan umur
kurang dari 20 tahun dengan perintah WHERE jk = "L" and
umur>="20" .
4. Studi Kasus 4
Agar pegawai mengetahui rekapan hasil atau junlah tarif
penebusan resep obat pada waktu tertentu agar kevalidtan data terjaga
sebagai arsip keamanan keuangan.
Berdasarkan tabel transaksi, tampilkan jumlah tarif pada tanggal 12-03-
2016 !
a. Kode Program
b. Screenshot Hasil
c. Penjelasan
Dari query diatas kita bisa mengetahui dan membuat perintah
untuk menampilkan total jumlah tarif pada tanggal 12-03-2016.
Dengan menggunakan perintah dari fungsi SELECT SUM(Tarif) AS
jumlah (AS sebagi alias) dari tabel transaksi dimana tanggal
transaksi adalah 12-03-2016 dengan perintah WHERE tgl_trans =
"2016-03-12".
5. Studi Kasus 5
Untuk mempermudah pegawai dalam melayani pasien maka di
butuhkan perintah yang dapat menampilkan harga daftar mulai dari yang
termurah sampai dengan yang termahal.
Berdasarkan tabel obat, tampilkan harga obat termahal !
a. Kode Program
b. Screenshot Hasil
c. Penjelasan
Dari fungsi agregat “MAX” dapat mengembalikan nilai terbesar
(maksimal) di suatu kolom. Jadi Melalui perintah “SELECT
MAX(harga) AS harga FROM obat; ” dapat di tampilkan harga obat
yang paling mahal dari tabel obat.
6. Studi Kasus 6
Dalam mempermudah pegawai dalam melayani pasien. Pegawai
perlu mengetahui jumlah stok pada obat untuk mengkntrol agar
persediaan obat tidak mengalami kekurangan stok atau saat stok
kosong.
Berdasarkan tabel obat, tampilkan daftar obat yang mempunyai stok
kurang dari 100 !
a. Kode Program
SELECT*FROM obat
WHERE stok<100;
b. Screenshot Hasil
c. Penjelasan
Untuk mengetahui stok atau persediaan obat pada batas jumlah
tertentu cotoknya untuk mengetahui dan menampilkan stok obat yang
kurang dari 100 menggunakan perintah SELECT*FROM obat WHERE
stok<100.
7. Studi Kasus 7
Dalam mempermudah pegawai dalam melayani pasien. Pegawai
perlu mengetahui daftar harga berdasarkan nama obat yang tertulis
pada resep obat yang telah ditulis oleh dokter.
Berdasarkan tabel obat, tampilkan daftar obat yang mempunyai harga
lebih dari 10000, selain jenis obat antiseptik !
a. Kode Program
SELECT*FROM obat
WHERE harga>10000 AND jenis_obat != "Antiseptik";
b. Screenshot Hasil
c. Penjelasan
Untuk mengetahui daftar harga dengan ketentuan lain mengguakan
perintah (AND) yaitu berdasarkan jenis obat dan yang tidak termasuk (
menggunakan tanda ! ) yaitu jedi obat Antiseptik yaitu dengan
mengguakan perintah SELECT*FROM obat WHERE harga>10000
AND jenis_obat != "Antiseptik".
8. Studi Kasus 8
Untuk memudahkan pegawai dalam merekap jumlah masing-
masing poli maka dibutuhkan perintah untuk mengerjakan pekerjaan
pegawai.
Berdasarkan tabel poli, berapa jumlah pasien yang mengambil poli P010?
a. Kode Program
SELECT kode_poli, COUNT(kode_poli)
FROM ambil_poli
WHERE kode_poli = "P010"
GROUP BY kode_poli;
b. Screenshot Hasil
c. Penjelasan
Untuk menghitung jumlah pasien yang mengambil suatu poli,
maka digunakan fungsi COUNT pada kode poli.
9. Studi Kasus 9
Untuk mempermudah pasien dan pegawai dalam mengetahui
nama-nama dokter yang memiliki poli dan nama polinya, maka
dibutuhkan perintah untuk mengetahui nama dokter dan spesialis nya.
Tampilkan id_dok, nama_dok pada tabel dokter yang memiliki poli
a. Kode Program
SELECT d.id_dok, d.nama_dok, p.kode_poli,
p.nama_poli
FROM dokter d INNER JOIN poli p
WHERE d.kode_poli = p.kode_poli;
b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan id_dok, nama_dok yang mempunyai
kode_poli dan nama_poli, maka dibutuhkan perintah INNER JOIN,
karena pada tabel dokter yang sesuai dengan perintah hanya terdapat
id_dok, nama_dok, dan kode_poli, sehingga jika menggunakan tabel
dokter saja maka tidak bisa mengetahui dokter tersebut mempunyai
poli apa. Untuk dapat menampilkan sesuai perintah, maka
menggunakan INNER JOIN untuk menemukan persimpangan
(intersection) antara tabel dokter dan tabel poli.
c. Penjelasan
Untuk menampilkan id_dok, nama_dok pada tabel dokter yang
tidak memiliki poli, maka dibutuhkan perintah LEFT OUTER JOIN,
karena id_dok dan nama_dok dari tabel dokter ditambah dengan nilai
dari tabel poli, sehingga akan menampilkan dan menampilkan
id_dok dan nama_dok yang tidak memiliki poli.
b. Screenshot Hasil
c. Penjelasan
Untuk mendapatkan pasien yang mengambil poli THT maka
dibutuhkan perintah INNER JOIN, karena untuk mendapatkan data
tersebut memerlukan persimpangan antara tabel pasien dengan
ambil_poli dan persimpangan antara tabel ambil_poli dengan tabel
poli. Dengan menentukan nama poli “THT” pada tabel poli.
b. Screenshot Hasil
c. Penjelasan
Untuk menggabungkan dua buah tabel, digunakan perintah
UNION. Perintah UNION memiliki beberapa ketentuan, yaitu jumlah
kolom/field dari statement SELECT harus sama, dan tipe data
kolom/field dari statement SELECT harus kompatibel. Sehingga
dengan menggunakan perintah tersebut dapat menggabungkan id_dok
dan id_pas pemeriksaan dengan resep.
c. Penjelasan
Untuk menampilkan nama dokter yang menangani pasien, nama
pasien dan tarif transaksi yang harus dibayar, maka digunakan
perintah INNER JOIN di 4 tabel, karena dalam menampilkan ketiga
field tersebut membutuhkan id_pas pada tabel pasien, pemeriksaan,
dan juga tabel transaksi, lalu id_dok pada tabel dokter untuk
menampilkan nama dokter yang menangani pasien.
b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan daftar obat yang tidak pernah ada di tabel
resep dan tidak ada duplikasi data, maka digunakan perintah RIGHT
OUTER JOIN pada tabel resep dan obat. Karena akan mengembalikan
semua nilai dari tabel resep ditambah dengan nilai tabel obat yang
sesuai, dimana kode obat pada resep sama dengan NULL (kosong)
atau tidak ada dalam tabel resep.
b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan id_dok, nama dokter yang menangani pasien
beserta id_pas dan nama_pas, dibutuhkan perintah CROSS JOIN dan
INNER JOIN. Karena untuk menampilkan nama dokter membutuhkan
tabel dokter dan nama pasien membutuhkan tabel pasien.
b. Screenshot Hasil
c. Penjelasan
Untuk mengatahui data pasien dan data registrasi yang dilakukan
pasien dapat menggunakan penggabungan 2 tabel, yakni tabel pasien
dengan tabel registrasi. Dapat juga menggunakan penggabungan
UNION atau FULL OUTER JOIN. Joinkan tabel pasien dengan tabel
registrasi secara LEFT OUTER JOIN kemudian Joinkan tabel pasien
dengan tabel registrasi secara RIGHT OUTER JOIN kemudian
gabungkan keduanya dengan UNION.
b. Screenshot Hasil
c. Penjelasan
Menurut perintah diatas diman perintah akan menampilkan data
dokter yang memiliki jenis kelamin yang sama dengan dosen
“Sutejo”. Dengan cara menggabungkan dua tabel tabel yaitu tabel
dokter dan tabel pegawai kemudian akan di ambil dari fild jk WHERE
jk = (SELECT jk FROM pegawai WHERE nama_peg = "Sutejo");
untuk megetahui jenis kelamin dari dosen yaitu Laki laki karena jk
sma dengan jk dari nama_peg nama_peg = "Sutejo");
b. Screenshot Hasil
c. Penjelasan
Dari perintah di atas kita bisa mengetahui daftar dokter dokter
siapa saja yang memriksa pasien . menggunakan perintah select dari
tabel dokter berupa id dan namanya. yang diinisialisasikan SELECT
d.id_dok, d.nama_dok. Dan kemudian dimana dokter
tersebut memmerikasa pasien . arrtinya berarti kita bisa
mencocoknyanya dengan tabel pemeriksaan yang diinisialisasikn
p.yaitu SELECT d.id_dok, d.nama_dok FROM dokter
d WHERE d.id_dok IN(SELECT id_dok FROM
pemeriksaan p);
SELECT*FROM pemeriksaan p
WHERE NOT EXISTS(SELECT*FROM pasien pa
WHERE p.id_pas = pa.id_pas);
b. Screenshot Hasil
c. Penjelasan
Dari peribtah diatas untuk mengetahui data pemeriksaan dimana p
sebagai inisialisai (SELECT*FROM pemeriksaan p) yang mana salah
satu datanya tidak ada pada tabel pasien yang mana pa menjadi
inisialisasi yang memiliki id_pas yang sama. WHERE NOT
EXISTS(SELECT*FROM pasien pa WHERE p.id_pas =
pa.id_pas);
SELECT*FROM transaksi
WHERE Tarif > ALL
(SELECT Tarif FROM transaksi
WHERE tgl_trans = "2016-03-12");
b. Screenshot Hasil
c. Penjelasan
Dari perintah diatas kita dapat mengetahui tarif yang diperoleh
dengan tarif yang paling besar mencakup diambil dari semua data
pada tabel . jadi untuk memper oleh data tersebut menggunakan
perintah ALL untuk melibatkan semua data dalam tabel transaksi
dalam mencari tarif terbesar pada taggal transaksi di
tanggal 2016-03-12. Dengan perintah diatas.
SELECT*FROM obat o
WHERE EXISTS(SELECT*FROM resep r
WHERE o.kode_obat = r.kode_obat);
b. Screenshot Hasil
c. Penjelasan
Dari perintah diatas akan mengetahui nilai yang ada dalam tabel.
(WHERE EXISTS(SELECT*FROM resep r WHERE o.kode_obat =
r.kode_obat);) yaitu dimana tabel resep yang diiniliasisasikan oleh r
dan o untuk tabel obat. Dari masing masing tabel akan di cari
kode_obatnya.
SELECT*FROM vPasPoliMata;
b. Screenshot Hasil
c. Penjelasan
Dari perintah diatas kita akan membuat perintah view sebagai
pengganti (CREATE VIEW vPasPoliMata AS SELECT * FROM
pasien ) perintah select untuk menampilkan tabel pasien yang di
dalamnya terdapat subquery berupa perintah untuk menampilkan
pasien yang mengambil poli mata. Dengan menampilkan id_pas dari
tabel ambil_poli dimana kode_poli dari tabel poli berupa
nama_polinya adalah poli “Mata”. Jadi ngefisienkan pada perintah
SELECT. Karna tidak lagi menggunakan perintah deng query yang
panjang. Kemudian langsung menggunakan perintah vie yang telah
dibuat tadi yaitu SELECT*FROM vPasPoliMata;.
23. Studi Kasus 23
Untuk mempermudah pegawai mengetahui jumlahnya pasien
berdasarkan poli yang di ambil tanpa membuat perintah query yang
panjang.
Definisikan view untuk menampilkan jumlah pasien pada masing masing
poli !
a. Kode Program
SELECT*FROM vCountPasien;
b. Screenshot Hasil
c. Penjelasan
Dari perintah diatas kita akan membuat perintah view sebagai
penggati (SELECT kode_poli, COUNT(*) AS jumlah FROM
SELECT*FROM vTransaksi;
b. Screenshot Hasil
c. Penjelasan
Untuk membuat view berdasarkan tarif transaksi yang kurang dari
15000, maka dibuatkan view vTransaksi dengan menampilkan
id_transaksi, id_pas, tariff, dan tgl_trans. Disini menggunakan fungsi
kurang dari “<” untuk menyeleksi tarif.
TRIGGER
25. Studi Kasus 25
Transaksi obat selalu berlasung dalam waktu yang sangat singkan.
Untuk itu pegawai sangat membutuhkan cara untuk memperbaruhi data
yang telah berupa karan adanya transaksi. Dan menjaga kevalidan data.
Buatlah trigger untuk mengupdate pada tabel obat, jika ada pengurangan
stok obat dari tabel resep !
a. Kode Program
DELIMITER //
CREATE TRIGGER updateStok
AFTER INSERT ON resep
UPDATE obat
SET stok = stok - NEW.jumlah
WHERE kode_obat = NEW.kode_obat;
END //
INSERT INTO resep
VALUES
("D011","PA026","R026","OAG001","3 x sehari 1 tablet","2");//
b. Screenshot Hasil
c. Penjelasan
Jadi melalui membuatan Trigger diatas akan memudahkan dalam
memperbarui suatu data dan kebutuhan yang dibutuhkan oleh
pegawai. Seperti dalam kasus jika ada pengurangan stok obat dari
tabel resep akan otomati terkurangi di tabel obaat. Dengan query
CREATE TRIGGER updateStok AFTER INSERT ON resep.
Yang memanfaatkan salah satu perintah yang disediakan oleh trigger
yaitu select. Keudian mengunakan rumus untukmengurangi data
setelah pengupdetan data. (seperti UPDATE obat)utuk
memperbaruhi tabel dari obat. ( SET stok = stok -
NEW.jumlah)untuk mengurangi stok setelah diupdate WHERE
kode_obat = NEW.kode_obat.
Kemudian seteah memsbuat trigger kita harus membuat pemicunya
untuk mengecek apakah trigger yang telah kita buat apakah aktif atau
tidak.
IF EXISTS(SELECT*FROM obat
WHERE kode_obat = NEW.kode_obat)
THEN
SET @status = CONCAT('Kode ', NEW.kode_obat, ' yang Anda
masukkan sudah ada');
END IF;
END //
b. Screenshot Hasil
c. Penjelasan
Dari pembuatan trigger diatas dapat membuat suatu status yang
bertujuan sebagai pemberitahuan katika ada inputan data baru yang
sama atau sudah ada sebelumnya.Dalam trigger kali ini memanfaatkan
salah satu perintah pada trigger yaitu menggunakan perintah BEFORE
INSERT ON dimana sebelum penambahan pada tabel
obat jika data ada atau (IF EXISTS(SELECT*FROM
obat WHERE kode_obat = NEW.kode_obat)) dimana
yang memiliki kode_obat yang sama akan muncul suatu
pemberitahuan berupa status seperti (SET @status =
CONCAT('Kode ', NEW.kode_obat, ' yang Anda
masukkan sudah ada');) kemudian kita akan membuat
pemicunya perupa insert.an data yang sudah ada sebelumnya. Untuk
memastikan bahwa trigger tersebut adalah aktif.
DELIMITER //
CREATE TRIGGER log_obat
AFTER UPDATE ON obat
FOR EACH ROW BEGIN
END//
UPDATE obat
SET stok = "50"
WHERE kode_obat = "OPR001";//
SELECT*FROM log_aktivitas;//
DELIMITER //
CREATE TRIGGER log_delete
AFTER DELETE ON obat
FOR EACH ROW BEGIN
END //
SELECT*FROM log_aktivitas;//
b. Screenshot Hasil
c. Penjelasan
Pembuatan trigger diatas bertujuan tuntuk menciptakan log atau
pemberitahuaan berdasarkan waktunya eksekusi perintah. Seperti
perintah update dan hapus. Tapi sebelum pembuatan tringger harus
membuat tabel log_aktivitas terlebih dahulu. Trigger log_aktivitas
update menggunakan perintah (CREATE TRIGGER log_obat
AFTER UPDATE ON ) dimana akan berfungsi setelah perintah
update. Dan akan menampilkan tulisan. SET ket =
CONCAT('Merubah data dengan keyword ',
NEW.kode_obat,' pada tabel obat'); sesuai dengan
kode obatnya . kemudian untuk trigger log_delete (CREATE
TRIGGER log_delete AFTER DELETE ON
obat)kemudian akan menampilkan SET ket =
CONCAT('Menghapus data ', OLD.kode_obat,' dari
tabel pembelian'); kemudian buatlah pemicu dari masing
masing log agar menampilkan tabel log_aktivitasnya dan
menunjukkan bahwa trigger telah aktif. Dan tampilkan tabel
log_aktivitasnya (SELECT*FROM log_Aktivitas;//).
END
CALL//
GetCountPasien('D018');//
CALL GetCountPasien('D002');//
b. Screenshot Hasil
c. Penjelasan
Untuk mengetahui jumlah pasien yang ditangani seorang dokter,
maka digunakan stored procedure GetCountPasien dengan
menggunakan parameter IN pada id_dokter, karena parameter tersebut
nantinya akan menjadi masukan bagi parameter tersebut. Untuk
menhitung jumlah pasien digunakan fungsi COUNT pada id_pas yang
akan ditampilkan dengan field alias bernama jumlah. Untuk
menampilkannya dapat menggunakan fungsi CALL yang diikuti
dengan nama procedure dan isi dari parameter atau id_dok.
END //
CALL data_poli('P011','Gigi');
CALL data_poli('P002','Umum');
b. Screenshot Hasil
c. Penjelasan
Untuk memperbarui data pada poli maka digunakan stored
procedure data_poli dengan menggunakan parameter IN pada kode
dan nama, karena parameter tersebut akan menjadi masukan bagi
parameter tersebut. Disini menggunakan kondisi IF-ELSE dan
menggunakan fungsi EXISTS. Jika data pada tabel poli ada atau eksis,
maka data tersebut akan diperbarui, jika tidak ada maka akan terjadi
penambahan data.
SELECT*FROM pasien
WHERE jk = jelkel;
END //
CALL data_pasien('L');//
CALL data_pasien('P');//
b. Screenshot Hasil
c. Penjelasan
Untuk mengelempokkan ata pasien berdasarkan jenis kelamin,
maka digunakan stored procedure dengan menggunakan parameter IN
pada jelkel, karena parameter tersebut nantinya akan menjadi masukan
bagi parameter tersebut. Untuk menampilkannya menggunakan fungsi
select pada tabel pasien dengan mengkondisikan apabila jk sama
dengan parameter yang dimasukkan.
END //
CALL total_tarif('2016-03-13');//
b. Screenshot Hasil
c. Penjelasan
Untuk mendapatkan total nominal transaksi pasien dalam 1 hari
maka digunakan stored procedure total_tarif dengan menggunakan
parameter IN pada tgl, karena parameter tersebut akan menjadi
masukan bagi parameter. Untuk menotalkan nominal, maka
digunakan fungsi SUM pada tariff di tabel transaksi.
32. Studi Kasus 32
Pegawai terkadang tidak teliti atau kesusahan dalam menghitung stok
obat, sehingga membutuhkan perintah untuk memudahkan pegawai.
Buatlah stored procedure untuk menghitung jumlah stok obat
a. Kode Program
DELIMITER //
CREATE PROCEDURE JumlahStokObat(
OUT jml_StokObat INT(3)
)
BEGIN
SELECT SUM(stok)
INTO jml_StokObat
FROM obat;
END //
CALL JumlahStokObat(@jml_StokObat);//
SELECT @jml_StokObat;//
b. Screenshot Hasil
c. Penjelasan
Untuk menghitung jumlah stok obat digunakan stored procedure
dengan menggunakan parameter OUT, karena parameter tersebut akan
menjadi keluaran dari parameter. Untuk menjumlahkan stok obat
digunakan fungsi SUM pada stok. Untuk menampilkan jumlahnya
digunakan fungsi CALL yang diikuti nama prosedur dan parameter.
Lalu deselect parameternya.
33. Studi Kasus 33
Pada poliklinik setiap hari terdapat dokter yang bekerja untuk
melayani pasien, dan dokter tersebut mempunyai jadwal praktek sendiri-
sendiri. Untuk membantu pegawai dalam menjumlahkan dokter yang
praktek pada 1 hari, maka dibutuhkan perintah untuk mempermudah
pekerjaannya.
Buatlah stored procedure untuk menghitung jumlah dokter yang praktek
pada suatu hari
a. Kode Program
DELIMITER //
CREATE PROCEDURE jumlah_praktek(
IN hari_prak VARCHAR(15),
OUT total INT(3)
)
BEGIN
SELECT COUNT(id_dok)
INTO total
FROM JadwalPraktek
WHERE Hari = hari_prak;
END //
CALL jumlah_praktek('Senin',@total);//
SELECT @total;
b. Screenshot Hasil
c. Penjelasan
Untuk menampilkan jumlah dokter yang praktek pada 1 hari maka
digunakan stored procedure jumlah_praktek, dengan menggunakan
parameter IN dan parameter OUT. Pada parameter IN digunakan
sebagai masukan oleh parameter tersebut, sedangkan parameter OUT
digunakan sebagai keluaran oleh parameter tersebut. Untuk
memanggil procedure tersebut digunakan perintah CALL yang diikuti
oleh parameter, dan untuk menampilkan jumlah digunakan fungsi
SELECT yang diikuti variabel.
IF EXISTS(SELECT*FROM pasien
WHERE id_pas = id_pasien)
THEN
IF EXISTS(SELECT*FROM poli
WHERE kode_poli = kd_poli)
THEN
INSERT INTO ambil_poli
VALUES
(id_pasien, kd_poli);
SET status = "Operasi Berhasil";
ELSE
SET status = "Operasi Gagal";
END IF;
ELSE
SET status = "Operasi Gagal";
END IF;
SELECT status;
END //
CALL AddAmbil_poli("PA025","P001");//
CALL AddAmbil_poli("PA026","P007");//
b. Screenshot Hasil
c. Penjelasan
Untuk menambah data ambil poli maka digunakan stored
procedure dengan menggunakan parameter IN, dimana parameter
tersebut sebagai masukan. Jika pasien yang mengambil poli terdaftar
pada tabel pasien maka input data ke tabel ambil_mk berhasil, jika
tidak ada maka gagal.
35. Studi Kasus 35
Untuk memberi pelayanan terhadap pasien antara perempuan dan
laki-laki tentunya berbeda. Maka dari itu dibutuhkan perintah untuk
menjumlahkan pasien berdasarkan jenis kelamin.
Prosedur untuk menampilkan jumlah pasien berdasarkan Gender (P)
a. Kode Program
DELIMITER //
CREATE PROCEDURE CountByGender(
IN gender VARCHAR(2),
OUT total INT(2)
)
BEGIN
SELECT COUNT(id_pas)
INTO total
FROM pasien
WHERE jk=gender;
END//
SELECT @total;//
b. Screenshot Hasil
c. Penjelasan
Untuk membedakan pasien laki-laki dan perempuan dapat
menerapkan STORED PROCEDURE. Pada STORED PROCEDURE
di atas digunakan untuk mencari jumlah dari pasien yang ada pada
tabel pasien berdasarkan jenus kelaminnya. Penghitungan pasiennya
menggunakan Fungsi Agregat COUNT. Misalkan saja jenis kelamin
‘P’ pada tabel pasien terdapat 13 pasien yang berjenis kelamin
Perempuan.
TRANSACTION
COMMIT;
b. Screenshot Hasil
c. Penjelasan
Untuk memasukkan data dengan mengimplementasikan transaction
maka untuk awalan digunakan perintah START TRANSACTION;. Lalu
diikuti perintah insert ke tabel obat. Untuk menyompan data secara
permanen maka digunakan perintah COMMIT diakhir query.
ROLLBACK;
b. Screenshot Hasil
c. Penjelasan
Untuk memasukan data dengan implementasi transaction, untuk
awalan menggunakan perintah START TRANSACTION, lalu
menggunakan perintah insert untuk memasukkan data. Jika ingin
dibatalkan dalam memasukkan data tersebut, maka menggunakan
perintah ROLLBACK. Ketika sudah di COMMIT, perintah
ROLLBACK tidak berfungsi, karena penggunaan perintah COMMIT
akan dilakukan secara implisit.
38. Studi Kasus 38
Terkadang para pegawai kesusahan dalam menghitung transaksi
para pasien secara manual, oleh karena itu di perlukan perintah untuk
memudahkan pegawai dalam menghitung transaksi pasien.
Definisikan stored procedure dengan menggunakan implementasi
transaction untuk menghitung tarif yang harus dibayar oleh pasien
a. Kode Program
DELIMITER //
CREATE PROCEDURE tarif_transaksi(
IN id_trans VARCHAR(15),
IN nm_trans VARCHAR(255),
IN id_pasien VARCHAR(15),
IN tanggal DATE,
IN kd_obat VARCHAR(15)
)
BEGIN
DECLARE hrg INT(10);
DECLARE jml INT(10);
START TRANSACTION;
IF EXISTS(SELECT*FROM obat WHERE kode_obat = kd_obat)
AND
EXISTS(SELECT*FROM resep WHERE id_pas = id_pasien)
THEN
SELECT harga INTO hrg FROM obat
WHERE kode_obat = kd_obat;
SELECT jumlah INTO jml FROM resep
WHERE id_pas=id_pasien;
INSERT INTO transaksi
VALUES
(id_trans, nm_trans, id_pasien, tanggal, kd_obat,
jml*hrg+10000);
SELECT "Transaksi Berhasil" AS Status;
COMMIT;
ELSE
SELECT "id_pas atau kode_obat tidak tersedia" AS
Status;
END IF;
END //
CALL tarif_transaksi("TR026","Pembayaran
berobat","PA026","2016-03-20","OAG001");//
CALL tarif_transaksi("TR028","Pembayaran
berobat","PA028","2016-03-20","OAG001");//
b. Screenshot Hasil
c. Penjelasan
Untuk menghitung tarif pasien digunakan strored procedure
dengan parameter IN, karena parameter tersebut nantinya akan
digunakan sebagai masukan. Dalam pembuatan perintah ini
menggunakan implementasi transaction yang diakhiri dengan perintah
COMMIT, karena agar data yang dimasukkan tidak hilang ketika
prompt mysql dikeluarkan. Untuk menghitung tarif dengan
menggunakan rumus (jumlah obat*harga obat + administrasi yang
telah ditentukan yaitu 10000). Jika id pasien dank ode obat ada dalam
tabel, maka akan mengeluarkan pesan “Transaksi Berhasil” dan
otomatis data akan tersimpan pada tabel transaksi, jika id pasien dan
kode obat tidak ada maka akan mengeluarkan pesan “id_pas atau
kode_obat tidak tersedia”.
39. Studi Kasus 39
Untuk mencegah kejahatan dan menjaga keamanan di perlukan
pemberitahuan atau status setelah melakukan registrasi.
Definisikan stored procedure untuk melakukan registrasi pasien dengan
implementasi transaction !
a. Kode Program
DELIMITER //
CREATE PROCEDURE registrasi(
IN id_registrasi VARCHAR(15),
IN no_registrasi INT(3),
IN no_ur INT(3),
IN no_peg INT(5),
IN id_pasien VARCHAR(15),
IN tanggal DATE
)
BEGIN
START TRANSACTION;
IF EXISTS(SELECT*FROM pegawai
WHERE nip = no_peg)
THEN
INSERT INTO registrasi
VALUES
(id_registrasi, no_registrasi, no_ur, no_peg,
id_pasien, tanggal);
SELECT "Registrasi berhasil" AS Status;
COMMIT;
ELSE
SELECT "Registrasi Gagal" AS Status;
END IF;
END //
CALL registrasi("REG026","26","26","15003","PA026","2016-03-20");//
CALL registrasi("REG027","27","27","15026","PA027","2016-03-20");//
b. Screenshot Hasil
c. Penjelasan
Langka pertama untukmembuat transaction diatas harus terlebih
dahulu membuat procedure registrasi terlebih dahulu. Dan kemudian
memulai transaction jika bernilai benar nip pegawai yang terdaftar
pada tabel pegawai. Tapi jika bernilai salah nip tidak sesuai yang ada
pada tabel pegawai. Maka akan muncul status “Registrasi Berhasil”
jika bernilai benar. Dan jika bernilai salah atau tidak sesuai maka akan
muncul status “Registrasi Gagal”.
DELIMITER //
CREATE PROCEDURE pemb(
IN id_trans VARCHAR(15),
IN nama_pasien VARCHAR(225),
IN bayar INT(10)
)
BEGIN
DECLARE kembali INT(10);
START TRANSACTION;
IF EXISTS(SELECT*FROM transaksi
WHERE id_transaksi = id_trans)
THEN
SELECT Tarif INTO kembali FROM transaksi
WHERE id_trans = id_transaksi;
IF(bayar <= kembali)
THEN
SELECT "Pembayaran Kurang" AS status;
ELSE
SET kembali = bayar-kembali;
INSERT INTO pembayaran
VALUES
(id_trans, nama_pasien, bayar, kembali);
COMMIT;
END IF;
ELSE
SELECT "id transaksi tidak terdaftar" AS Status;
END IF;
END //
CALL pemb("TR001","PA001","15000");//
CALL pemb("TR0027","PA027","15000");//
CALL pemb("TR002","PA002","20000");//
b. Screenshot Hasil
c. Penjelasan
Langaka pertama harus ada pembuatan tabel pembayaran yang
akan digunakan untuk transaksi saat pasien membayar obat pada kasir
atau pegawai. Kemudian membuat procedure pemb dan baru memulai
transaksi yang awalnya harus mendeklarasikan tipe data berupa int.
jika berniali benar id_transaksisnya akan menampilkan SELECT Tarif
INTO kembali FROM transaksi WHERE id_trans =
id_transaksi.Dan akan menampilkan status “Pembayaran Kurang”
jika IF(bayar <= kembali).Tapi jika tidak pembayaran yang
lebih akan di kurangi kembaliannya. Dan Jika id_trans tidak sesuai
maka akan muncul status “ id transaksi tidak terdaftar ” dan
untuk mengecek transaction tersebut maka dapat dipanggil
pembeliannya.
CALL kategoriUmur("PA001");//
b. Screenshot Hasil
c. Penjelasan
Untuk mengelompokan data pasien berdasarkan umur maka
dibuatkan tabel kategori_umur_pasien. Selanjutnya dibuat stored
procedure dengan mengimplementasikan transaction. Jika umur antara
0-5 termasuk kategori bayi, jika umur 5-11 maka termasuk kategori
kanak-kanak, jika umur 11-16 maka termasuk kategori remaja awal,
jika umur 16-25 maka termasuk kategori remaja akhir, jika umur 25-
35 maka termasuk kategori dewasa awal, jika umur 35-45 maka
termasuk kategori dewasa akhir, jika umur 45-55 maka termasuk
lansia awal, jika umur 55-65 maka termasuk kategori lansia akhir, dan
jika lebih dari 65 maka termasuk kategori manula.
COMMIT;
b. Screenshot Hasil
c. Penjelasan
Untuk membuat catatan rekam medik dapat yang berisi id_pas,
nama_pas, dan diagnosa dapat menggunakan JOIN antara tabel pasien
dan tabel pemeriksaan kemudian agar data tersimpan permanen maka
sebelum membuat VIEW RekamMedik diaktifkan dulu START
TRANSACTION yang diakhir pembuatan VIEW diberi perintah
COMMIT agar tersimpan secara permanen.
G. Kesimpulan
Berdasarkan hasil pembuatan database poliklinik telah dilakukan, maka
dari akan diatarik kesimpulan berdasarkan penulisan penulisan atau bab bab
sebelumnya. Berikut adalah kesimpulan yang dapat diambil diantaranya
adalah :
1. Membantu pembuatan aplikasi database agar memudahkan
pegawai poliklinik dalam pekerjanya. Seperti mencari data yang
penting dan mengarsipkannya secara efisien.
2. Membantu pembuatan aplikasi agar data pemeriksaan dapat
terdokumentasikan secara rapi dan tidak lagi melakukan pencatatan
secara manual.
3. Dan dengan basisdata piliklinik ini membuat proses pecarian data,
transaksi dan adminitrasi secara otomatis dan lebih mudah.
Daftar Pustaka
1. Tim Asisten Dosen. 2016. Modul 1-8. Malang : Universitas Negeri Malang.
2. Kadir, Abdul. 2008. Belajar Database Menggunakan MySQL. Yogyakarta :
ANDI.
3. http://www.rsmlamongan.com/home.php?page=daftar-
dokter.html#.VydEf3q1fZI, diakses pada 18 aApril 2015
Lampiran
DESAIN DATABASE
Membuat database
CREATE DATABASE poliklinik;
Menggunakan database
USE poliklinik;