You are on page 1of 9

-- --------------------------------------------------------

-- Host: localhost
-- Server version: 8.0.11 - MySQL Community Server - GPL
-- Server OS: Win64
-- HeidiSQL Version: 11.2.0.6213
-- --------------------------------------------------------

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;


/*!40101 SET NAMES utf8 */;
/*!50503 SET NAMES utf8mb4 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

-- Dumping structure for procedure laporan.LaporanRP1


DROP PROCEDURE IF EXISTS `LaporanRP1`;
DELIMITER //
CREATE PROCEDURE `LaporanRP1`(
IN `TGLAWAL` DATETIME,
IN `TGLAKHIR` DATETIME,
IN `CARAKELUAR` TINYINT,
IN `RUANGAN` CHAR(10),
IN `LAPORAN` INT,
IN `CARABAYAR` INT
)
BEGIN

DECLARE vTGLAWAL DATE;


DECLARE vTGLAKHIR DATE;
DECLARE vRUANGAN VARCHAR(11);

SET vRUANGAN = CONCAT(RUANGAN,'%');


SET vTGLAWAL = DATE(TGLAWAL);
SET vTGLAKHIR = DATE(TGLAKHIR);

SET @sqlText = CONCAT('


SELECT INST.NAMAINST, INST.ALAMATINST, mt.TANGGAL
, master.getHeaderLaporan(''',RUANGAN,''') INSTALASI
, IF(',CARABAYAR,'=0,''Semua'',(SELECT ref.DESKRIPSI FROM master.referensi
ref WHERE ref.ID=',CARABAYAR,' AND ref.JENIS=10)) CARABAYARHEADER
, SUM(AWAL) AWAL
, SUM(MASUK) MASUK
, SUM(PINDAHAN) PINDAHAN
, SUM(DIPINDAHKAN) DIPINDAHKAN
, SUM(HIDUP) HIDUP
, SUM(MATI) MATI
, SUM(MATIKURANG48) MATIKURANG48
, SUM(MATILEBIH48) MATILEBIH48
, SUM(LD) LD
, SUM(SISA) SISA
, SUM(PAV) PAV
, SUM(VVIP) VVIP
, SUM(VIP) VIP
, SUM(KLSI) KLSI
, SUM(KLSII) KLSII
, SUM(KLSIII) KLSIII
, SUM(KLSKHUSUS) KLSKHUSUS
, SUM(ODC) ODC
, SUM(HP) HP
FROM master.tanggal mt
LEFT JOIN (
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, SUM(IF(pk.`STATUS` IN (1,2),1,0))
AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur rkt
ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, master.ruangan r
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND DATE(pk.MASUK) < bts.TGL
AND (DATE(pk.KELUAR) >= bts.TGL OR
pk.KELUAR IS NULL)
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, tp.RUANGAN, bts.TGL
, 0 AWAL
, SUM(IF(pk.`STATUS` IN (1,2),1,0)) MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, pendaftaran.tujuan_pasien tp
, master.ruangan r
, pendaftaran.kunjungan pk
LEFT JOIN
master.ruang_kamar_tidur rkt ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pp.NOMOR=pk.NOPEN AND pp.`STATUS` IN
(1,2) AND pk.`STATUS` IN (1,2) AND pk.REF IS NULL
AND pp.NOMOR=tp.NOPEN AND
tp.RUANGAN=pk.RUANGAN AND tp.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
AND pk.MASUK BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, COUNT(pk.NOMOR) DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.mutasi pm
, master.ruangan r
, pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur
rkt ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pm.KUNJUNGAN=pk.NOMOR AND pm.`STATUS`=2
AND pm.TUJUAN !=pk.RUANGAN AND pk.NOPEN=pp.NOMOR
AND pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2)
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pm.TANGGAL BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, COUNT(pk.NOMOR) PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur rkt
ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, master.ruangan r
, pendaftaran.mutasi pm
, pendaftaran.kunjungan asal
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.REF IS NOT NULL AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
AND pk.REF=pm.NOMOR AND
pm.KUNJUNGAN=asal.NOMOR AND pk.RUANGAN !=asal.RUANGAN
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.MASUK BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
GROUP BY bts.TGL
UNION
SELECT RAND() IDX,pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, SUM(IF(pp.CARA NOT IN (6,7),1,0))
HIDUP
, SUM(IF(pp.CARA IN (6,7),1,0)) MATI
, SUM(IF(pp.CARA IN (6,7) AND
HOUR(TIMEDIFF(pp.TANGGAL, pd.TANGGAL)) <= 48,1,0)) MATIKURANG48
, SUM(IF(pp.CARA IN (6,7) AND
HOUR(TIMEDIFF(pp.TANGGAL, pd.TANGGAL)) > 48,1,0)) MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM layanan.pasien_pulang pp
, master.ruangan r
, pendaftaran.kunjungan pk
LEFT JOIN
master.ruang_kamar_tidur rkt ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, pendaftaran.pendaftaran pd
LEFT JOIN pendaftaran.penjamin pj
ON pd.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pp.KUNJUNGAN=pk.NOMOR AND pk.`STATUS`
IN (1,2) AND pp.TANGGAL=pk.KELUAR
AND pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.NOPEN=pd.NOMOR AND pd.`STATUS` IN (1,2)
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.KELUAR BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
,
SUM(IF(DATE(pk.KELUAR)>DATE(pk.MASUK),DATEDIFF(pk.KELUAR, pk.MASUK),1)) LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur rkt ON
pk.RUANG_KAMAR_TIDUR=rkt.ID
, master.ruangan r
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
AND pk.KELUAR BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, SUM(IF(pk.`STATUS` IN (1,2),1,0))
SISA
, SUM(IF(rk.KELAS=9,1,0)) PAV
, SUM(IF(rk.KELAS IN (21,22),1,0)) VVIP
, SUM(IF(rk.KELAS IN (11,12,17),1,0))
VIP
, SUM(IF(rk.KELAS=3,1,0)) KLSI
, SUM(IF(rk.KELAS=2,1,0)) KLSII
, SUM(IF(rk.KELAS=1,1,0)) KLSIII
, SUM(IF(rk.KELAS IN (0,6,7,8),1,0))
KLSKHUSUS
, 0 ODC
, 0 HP
FROM pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur rkt
ON pk.RUANG_KAMAR_TIDUR=rkt.ID
LEFT JOIN master.ruang_kamar rk ON
rkt.RUANG_KAMAR=rk.ID
, master.ruangan r
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
AND DATE(pk.MASUK)<DATE_ADD(bts.TGL,INTERVAL
1 DAY)
AND (DATE(pk.KELUAR) > bts.TGL OR
pk.KELUAR IS NULL)
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, SUM(IF(pk.`STATUS` IN (1,2),1,0)) ODC
, 0 HP
FROM pendaftaran.kunjungan pk

LEFT JOIN master.ruang_kamar_tidur rkt


ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, layanan.pasien_pulang lpp
, master.ruangan r
, pendaftaran.pendaftaran pp
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
AND lpp.KUNJUNGAN=pk.NOMOR
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
AND DATE(pk.MASUK)=DATE(pk.KELUAR)
AND pk.KELUAR BETWEEN CONCAT(bts.TGL,''
00:00:00'') AND CONCAT(bts.TGL,'' 23:59:59'')
AND lpp.CARA NOT IN (6,7)
GROUP BY bts.TGL
UNION
SELECT RAND() IDX, pk.RUANGAN, bts.TGL
, 0 AWAL
, 0 MASUK
, 0 PINDAHAN
, 0 DIPINDAHKAN
, 0 HIDUP
, 0 MATI
, 0 MATIKURANG48
, 0 MATILEBIH48
, 0 LD
, 0 SISA
, 0 PAV
, 0 VVIP
, 0 VIP
, 0 KLSI
, 0 KLSII
, 0 KLSIII
, 0 KLSKHUSUS
, 0 ODC
, SUM(IF(pk.`STATUS` IN (1,2),1,0)) HP

FROM pendaftaran.kunjungan pk
LEFT JOIN master.ruang_kamar_tidur rkt
ON pk.RUANG_KAMAR_TIDUR=rkt.ID
, master.ruangan r
, pendaftaran.pendaftaran pp
LEFT JOIN master.pasien ps ON
pp.NORM=ps.NORM
LEFT JOIN pendaftaran.penjamin pj ON
pp.NOMOR=pj.NOPEN
, (SELECT TANGGAL TGL
FROM master.tanggal
WHERE TANGGAL BETWEEN
''',vTGLAWAL,''' AND ''',vTGLAKHIR,''') bts
WHERE pk.RUANGAN=r.ID AND r.JENIS_KUNJUNGAN=3
AND pk.`STATUS` IN (1,2) AND pk.NOPEN=pp.NOMOR
',IF(CARABAYAR=0,'',CONCAT(' AND
pj.JENIS=',CARABAYAR)),'
AND pk.RUANGAN LIKE ''',vRUANGAN,''' AND
r.JENIS_KUNJUNGAN=''',LAPORAN,''' AND INSTR(rkt.TEMPAT_TIDUR,''Bayi'')=0
AND DATE(pk.MASUK) <
DATE_ADD(bts.TGL,INTERVAL 1 DAY)
AND (DATE(pk.KELUAR) > bts.TGL OR
pk.KELUAR IS NULL)
AND ps.STATUS!=2
GROUP BY bts.TGL
) b ON b.TGL=mt.TANGGAL
, (SELECT p.NAMA NAMAINST, p.ALAMAT ALAMATINST
FROM aplikasi.instansi ai
, master.ppk p
WHERE ai.PPK=p.ID) INST
WHERE mt.TANGGAL BETWEEN ''',vTGLAWAL,''' AND ''',vTGLAKHIR,'''
GROUP BY mt.TANGGAL
');

PREPARE stmt FROM @sqlText;


EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END//
DELIMITER ;

/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;


/*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;

You might also like