Anda di halaman 1dari 7

Database sistem informasi rumah sakit.

Aturan bisnis rumah sakit sebagai berikut:


1) Sistem ini mencatat Data Pasien, Dokter, Perawat,Petugas, Rekam Medis pasien dan Kamar
untukrawat inap.
2) 1 orang Dokter dapat menangani banyak pasien.
3) 1 orang Perawat juga menangani banyak pasien.
4) 1 pasien ditangani oleh 1 orang dokter.
5) 1 pasien dapat berulang kali dapat melakukankunjungan dan di catat dalam rekam medis pasien.

1. Objek tang dipakai.


A. Pasien
B. Dokter
C. Ruang
D. Petugas
E. Rawat_inap
F. Pembayaran

2. Penentuan Entitas
A. Petugas : Menyimpan informasi identitas dari petugas jaga
B. Pasien : Menyimpan informasi identitas dari pasien
C. Dokter : Menyimpan informasi identitas dari dokter
D. Ruang : Menyimpan informasi identitas dari ruang
E. Rawat inap : Menyimpan informasi apabila ada pasien yang perlu rawat inap
F. Pembayaran : Menyimpan informasi dari administrasi pembayaran pasien. \

3. Tabel.

A. Pasien
CREATE TABLE pasien (
kode_pasien CHAR(12) NOT NULL,
kode_dokter CHAR(12) NOT NULL,
nama_pasien VARCHAR(60) NOT NULL,
jenis_kelamin CHAR(1) NOT NULL,
keluhan VARCHAR(30),
PRIMARY KEY(kode_pasien)
);

B. Dokter
CREATE TABLE dokter(
kode_dokter CHAR(12) NOT NULL,
nama_dokter VARCHAR(30) NOT NULL,
spesialisasi VARCHAR (20) NOT NULL,
PRIMARY KEY(kode_dokter)
);
C. Ruang
CREATE TABLE ruang(
kode_ruang CHAR(12) NOT NULL,
nama_ruang VARCHAR(60) NOT NULL,
kelas VARCHAR(12) NOT NULL,
PRIMARY KEY(kode_ruang)
);

D. Petugas
CREATE TABLE petugas(
kode_petugas CHAR(12) NOT NULL,
nama_petugas VARCHAR(30) NOT NULL,
jam_jaga CHAR(20) NOT NULL,
PRIMARY KEY(kode_petugas)
);

E. Rawat Inap
CREATE TABLE rawat_inap(
kode_rawat_inap CHAR(12) NOT NULL,
nama_pasien VARCHAR(30) NOT NULL,
kode_ruang VARCHAR(12) NOT NULL,
PRIMARY KEY(kode_rawat_inap)
);

F. Pembayaran
CREATE TABLE pembayaran(
kode_pembayaran CHAR(12) NOT NULL,
kode_pasien CHAR(12) NOT NULL,
kode_petugas CHAR(12) NOT NULL,
jumlah_harga INT(30) NOT NULL,
kode_rawat_inap VARCHAR(5) NOT NULL,
PRIMARY KEY(kode_pembayaran)
);

 Relationship antar tabel


I. Sub Query

Scalar subquery
select * from pasien
where keluhan =
(select keluhan
from pasien
where kode_pasien = 1004);
Multiple Row Subquery
Operator IN
select p.kode_pasien, p.nama_pasien
from pasien p
where p.kode_pasien IN
(select kode_pasien from pembayaran);

Operator ANY / SOME


select * from pembayaran
where jumlah_harga < any
(select jumlah_harga
from pembayaran
where jumlah_harga = 4000000);

Operator ALL
select * from pembayaran
where jumlah_harga < all
(select jumlah_harga
from pembayaran
where jumlah_harga = 5000000);

Multiple Column Subquery


select * from pembayaran
where (kode_pasien,jumlah_harga) IN
(select kode_pasien,jumlah_harga
from pembayaran
where kode_petugas = '22');

Operator EXISTS dan NONEXISTS


select * from pasien p
where exists (select * from dokter d
where p.keluhan = d.spesialisasi);

Subquery dan Fungsi agregat


select * from pembayaran
where jumlah_harga =
(select max(jumlah_harga)
from pembayaran);

Subquery dan join


select d.nama_dokter,d.spesialisasi
from dokter d
where d.kode_dokter in
(select kode_dokter from pasien);
II. Relasi dan Join

Inner join
select * from rawat_inap
inner join ruang
on rawat_inap.kode_ruang = ruang.kode_ruang;

select rawat_inap.nama_pasien, ruang.nama_ruang


from rawat_inap
inner join ruang
on rawat_inap.kode_ruang = ruang.kode_ruang;

Left Outer Join


select * from rawat_inap ri
left outer join ruang r
on ri.kode_ruang = r.kode_ruang;

Full outer join


select * from rawat_inap ri
left outer join ruang r
on ri.kode_ruang = r.kode_ruang

union
select * from rawat_inap ri
right outer join ruang r
on ri.kode_ruang = r.kode_ruang;

Cross join
select * from rawat_inap
cross join ruang;

Script:
SELECT DISTINCT dokter.nama_dokter, dokter.spesialisasi, pasien.nama_pasien, pas
ien.keluhan
FROM dokter

INNER JOIN pasien


ON dokter.kode_dokter=pasien.kode_dokter
ORDER BY nama_dokter;

Script:
SELECT * FROM pasien
WHERE keluhan =
(SELECT keluhan FROM pasien
WHERE nama_pasien="Lily"
HAVING (nama_pasien NOT LIKE 'Lily'));
4. View

Script :
create view vGetPsn
as
select * from pasien;

o Misalkan untuk mencari mahasiswa yang berkelamin P


Nested View
create view vDK
as
select * from dokter

o Misalkan Untuk memanggil dokter dengan kode 115


create view vDK1
as
select * from vDK
WHERE kode_dokter = 115;

Updatable view
create view vUpdate
as
select * from pasien

Script :
CREATE VIEW vpasien
AS
SELECT * FROM pasien;
SELECT * FROM vpasien
WHERE jenis_kelamin = 'P' AND tgl_masuk='23/10/2009';

INSERT INTO `dokter` VALUES ('D01','andi','gigi'),


('D02','hendra','jantung'),
('D03','ayu','gizi'),
('D04','huda','otak'),
('D05','tono','paru-paru');

INSERT INTO `pasien` VALUES ('P01','D01','sultan','P','sakit gigi'),


('P02','D02','hasan','P','sakit jantung'),
('P03','D03','nia','L','busung lapar'),
('P04','D04','tini','L','kangker otak'),
('P05','D03','budi','P','anemia');

INSERT INTO `pembayaran` VALUES ('B01','P03','T02',300000,'I01'),


('B02','P02','T01',5000000,'I05'),
('B03','P05','T02',500000,'I02'),
('B04','P04','T04',3000000,'I03'),
('B05','P01','T05',200000,'I04');
INSERT INTO `petugas` VALUES ('T01','ahmad','08.00-16.00'),
('T02','alfian','16.00-00.00'),
('T03','tika','00.00-08.00');

INSERT INTO `rawat_inap` VALUES ('I01','nia','R02'),


('I02','budi','R03'),
('I03','tini','R01'),
('I04','sultan','R03'),
('I05','hasan','R01');

INSERT INTO `rawat_inap` VALUES ('R01','melati','A'),


('R02','mawar','B'),
('R03','cempaka','C');

5. Stored Procedure

Script:
DELIMITER //
CREATE PROCEDURE getPasien()
BEGIN
SELECT * FROM pasien;
END //
DELIMITER;

Script:
DELIMITER //
CREATE PROCEDURE ruangpasien(IN ruang INT(2))
BEGIN
SELECT *
FROM rawat_inap
WHERE kode_ruang = ruang;
END //
DELIMITER ;

Script:
DELIMITER //
CREATE PROCEDURE ruangdanrawat(IN ru VARCHAR(2), IN RA VARCHAR(5))
BEGIN
SELECT *
FROM rawat_inap
WHERE kode_ruang = ru
AND kode_rawat_inap = ra;
END //
DELIMITER ;
PARAMETER IN OUT
DELIMITER //

CREATE PROCEDURE jkpas (INOUT jumlah VARCHAR(5))


BEGIN
SELECT COUNT(kode_pasien)
INTO jumlah
FROM pasien
WHERE jenis_kelamin = jumlah;
END//
DELIMITER;

Script :
DELIMITER //
CREATE PROCEDURE peringatan (
IN kode INT(5),
IN nama VARCHAR(30),
keluhan_pas VARCHAR(30)
)
BEGIN
DECLARE peringatan VARCHAR(30);
IF ((SELECT COUNT(kode_pasien) FROM pasien WHERE kode = kode_pasien)=0) THEN
SET peringatan = 'Data ditambah';
INSERT INTO pasien
VALUES (kode, nama, keluhan_pas);
ELSE
SET peringatan = 'Data diubah';
UPDATE pasien SET nama_pasien=nama, keluhan=keluhan_pas
WHERE kode_pasien = kode;
END IF;
SELECT peringatan;
END //
DELIMITER ;

Anda mungkin juga menyukai