Skip to content

Commit

Permalink
update cetak laporan rl 5.1
Browse files Browse the repository at this point in the history
  • Loading branch information
HidayatLahabu committed Jan 14, 2025
1 parent 670198b commit dddb8a1
Show file tree
Hide file tree
Showing 9 changed files with 362 additions and 36 deletions.
142 changes: 138 additions & 4 deletions app/Http/Controllers/Laporan/LaporanRl51Controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,149 @@ public function index(Request $request)
{
// Tanggal awal bulan berjalan
$tgl_awal = Carbon::now()->startOfYear()->toDateString();

// Tanggal hari ini
$tgl_akhir = Carbon::now()->toDateString();

// Panggil prosedur yang telah dibuat
$data = DB::connection('mysql10')->select('CALL laporan.LaporanRL51(?, ?)', [$tgl_awal, $tgl_akhir]);
$data = DB::connection('mysql10')->select("
SELECT
INST.KODE, INST.NAMAINST, INST.KODEPROP, INST.KOTA,
a.IDSTATUSPENGUNJUNG, a.JUMLAH,
ref.ID, CONCAT('Pengunjung ', ref.DESKRIPSI) AS DESKRIPSI,
'Rawat Jalan' AS JENIS_KUNJUNGAN
FROM master.referensi ref
LEFT JOIN (
SELECT
IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2) AS IDSTATUSPENGUNJUNG,
COUNT(pd.NOMOR) AS JUMLAH
FROM master.pasien p
JOIN pendaftaran.pendaftaran pd ON p.NORM = pd.NORM
JOIN pendaftaran.tujuan_pasien tp ON pd.NOMOR = tp.NOPEN
LEFT JOIN master.ruangan r ON tp.RUANGAN = r.ID AND r.JENIS = 5
JOIN pendaftaran.kunjungan tk ON pd.NOMOR = tk.NOPEN AND tp.RUANGAN = tk.RUANGAN
WHERE pd.STATUS IN (1, 2)
AND tk.RUANGAN = r.ID
AND tk.MASUK BETWEEN ? AND ?
AND r.JENIS_KUNJUNGAN = 1
GROUP BY IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2)
) a ON a.IDSTATUSPENGUNJUNG = ref.ID
JOIN (
SELECT p.KODE, p.NAMA AS NAMAINST, p.WILAYAH AS KODEPROP, w.DESKRIPSI AS KOTA
FROM aplikasi.instansi ai
JOIN master.ppk p ON ai.PPK = p.ID
JOIN master.wilayah w ON p.WILAYAH = w.ID
) INST
WHERE ref.JENIS = 22
UNION ALL
SELECT
INST.KODE, INST.NAMAINST, INST.KODEPROP, INST.KOTA,
a.IDSTATUSPENGUNJUNG, a.JUMLAH,
ref.ID, CONCAT('Pengunjung ', ref.DESKRIPSI) AS DESKRIPSI,
'Rawat Inap' AS JENIS_KUNJUNGAN
FROM master.referensi ref
LEFT JOIN (
SELECT
IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2) AS IDSTATUSPENGUNJUNG,
COUNT(pd.NOMOR) AS JUMLAH
FROM master.pasien p
JOIN pendaftaran.pendaftaran pd ON p.NORM = pd.NORM
JOIN pendaftaran.tujuan_pasien tp ON pd.NOMOR = tp.NOPEN
LEFT JOIN master.ruangan r ON tp.RUANGAN = r.ID AND r.JENIS = 5
JOIN pendaftaran.kunjungan tk ON pd.NOMOR = tk.NOPEN AND tp.RUANGAN = tk.RUANGAN
WHERE pd.STATUS IN (1, 2)
AND tk.RUANGAN = r.ID
AND tk.MASUK BETWEEN ? AND ?
AND r.JENIS_KUNJUNGAN = 3
GROUP BY IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2)
) a ON a.IDSTATUSPENGUNJUNG = ref.ID
JOIN (
SELECT p.KODE, p.NAMA AS NAMAINST, p.WILAYAH AS KODEPROP, w.DESKRIPSI AS KOTA
FROM aplikasi.instansi ai
JOIN master.ppk p ON ai.PPK = p.ID
JOIN master.wilayah w ON p.WILAYAH = w.ID
) INST
WHERE ref.JENIS = 22
", [$tgl_awal, $tgl_akhir, $tgl_awal, $tgl_akhir]);

return inertia("Laporan/Rl51/Index", [
'items' => $data,
'data' => $data,
'tgl_awal' => $tgl_awal,
'tgl_akhir' => $tgl_akhir,
]);
}

public function print(Request $request)
{
$request->validate([
'dari_tanggal' => 'required|date',
'sampai_tanggal' => 'required|date|after_or_equal:dari_tanggal',
]);

// Ambil nilai input
$tgl_awal = Carbon::parse($request->input('dari_tanggal'))->format('Y-m-d');
$tgl_akhir = Carbon::parse($request->input('sampai_tanggal'))->endOfDay()->format('Y-m-d');

$data = DB::connection('mysql10')->select("
SELECT
INST.KODE, INST.NAMAINST, INST.KODEPROP, INST.KOTA,
a.IDSTATUSPENGUNJUNG, a.JUMLAH,
ref.ID, CONCAT('Pengunjung ', ref.DESKRIPSI) AS DESKRIPSI,
'Rawat Jalan' AS JENIS_KUNJUNGAN
FROM master.referensi ref
LEFT JOIN (
SELECT
IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2) AS IDSTATUSPENGUNJUNG,
COUNT(pd.NOMOR) AS JUMLAH
FROM master.pasien p
JOIN pendaftaran.pendaftaran pd ON p.NORM = pd.NORM
JOIN pendaftaran.tujuan_pasien tp ON pd.NOMOR = tp.NOPEN
LEFT JOIN master.ruangan r ON tp.RUANGAN = r.ID AND r.JENIS = 5
JOIN pendaftaran.kunjungan tk ON pd.NOMOR = tk.NOPEN AND tp.RUANGAN = tk.RUANGAN
WHERE pd.STATUS IN (1, 2)
AND tk.RUANGAN = r.ID
AND tk.MASUK BETWEEN ? AND ?
AND r.JENIS_KUNJUNGAN = 1
GROUP BY IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2)
) a ON a.IDSTATUSPENGUNJUNG = ref.ID
JOIN (
SELECT p.KODE, p.NAMA AS NAMAINST, p.WILAYAH AS KODEPROP, w.DESKRIPSI AS KOTA
FROM aplikasi.instansi ai
JOIN master.ppk p ON ai.PPK = p.ID
JOIN master.wilayah w ON p.WILAYAH = w.ID
) INST
WHERE ref.JENIS = 22
UNION ALL
SELECT
INST.KODE, INST.NAMAINST, INST.KODEPROP, INST.KOTA,
a.IDSTATUSPENGUNJUNG, a.JUMLAH,
ref.ID, CONCAT('Pengunjung ', ref.DESKRIPSI) AS DESKRIPSI,
'Rawat Inap' AS JENIS_KUNJUNGAN
FROM master.referensi ref
LEFT JOIN (
SELECT
IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2) AS IDSTATUSPENGUNJUNG,
COUNT(pd.NOMOR) AS JUMLAH
FROM master.pasien p
JOIN pendaftaran.pendaftaran pd ON p.NORM = pd.NORM
JOIN pendaftaran.tujuan_pasien tp ON pd.NOMOR = tp.NOPEN
LEFT JOIN master.ruangan r ON tp.RUANGAN = r.ID AND r.JENIS = 5
JOIN pendaftaran.kunjungan tk ON pd.NOMOR = tk.NOPEN AND tp.RUANGAN = tk.RUANGAN
WHERE pd.STATUS IN (1, 2)
AND tk.RUANGAN = r.ID
AND tk.MASUK BETWEEN ? AND ?
AND r.JENIS_KUNJUNGAN = 3
GROUP BY IF(DATE_FORMAT(p.TANGGAL, '%d-%m-%Y') = DATE_FORMAT(tk.MASUK, '%d-%m-%Y'), 1, 2)
) a ON a.IDSTATUSPENGUNJUNG = ref.ID
JOIN (
SELECT p.KODE, p.NAMA AS NAMAINST, p.WILAYAH AS KODEPROP, w.DESKRIPSI AS KOTA
FROM aplikasi.instansi ai
JOIN master.ppk p ON ai.PPK = p.ID
JOIN master.wilayah w ON p.WILAYAH = w.ID
) INST
WHERE ref.JENIS = 22
", [$tgl_awal, $tgl_akhir, $tgl_awal, $tgl_akhir]);

return inertia("Laporan/Rl51/Print", [
'data' => $data,
'tgl_awal' => $tgl_awal,
'tgl_akhir' => $tgl_akhir,
]);
Expand Down
2 changes: 1 addition & 1 deletion resources/js/Pages/Laporan/Rl12/Index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export default function LaporanRl12({ auth,
<AuthenticatedLayout user={auth.user}>
<Head title="Laporan" />

<div className="max-w-full mx-auto w-full pt-5 text-yellow-500">
<div className="max-w-full mx-auto w-full pt-3 text-yellow-500">
<h1 className="uppercase text-center font-bold text-2xl">LAPORAN RL 1.2</h1>
<p className="text-center font-bold">Sumber : Database Informasi</p>
</div>
Expand Down
6 changes: 3 additions & 3 deletions resources/js/Pages/Laporan/Rl12/Indikator.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ export default function ThisYear({
}) {

return (
<div className="py-5 flex flex-wrap w-full">
<div className="max-w-full mx-auto sm:pl-5 sm:pr-2 lg:pl-5 lg:pr-2 w-full">
<div className="pt-3 pb-5 flex flex-wrap w-full">
<div className="max-w-full mx-auto sm:px-5 lg:px-5 w-full">
<div className="bg-white dark:bg-indigo-950 overflow-hidden shadow-sm sm:rounded-lg w-full">
<div className="p-5 text-gray-900 dark:text-gray-100 w-full">
<div className="px-5 py-3 text-gray-900 dark:text-gray-100 w-full">
<div className="bg-white dark:bg-indigo-950 rounded-lg shadow-lg p-2">
<table className="min-w-full table-auto mt-2 border border-gray-500 dark:border-gray-600">
<thead>
Expand Down
2 changes: 1 addition & 1 deletion resources/js/Pages/Laporan/Rl31/Index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ export default function LaporanRl31({
<div className="p-5 text-gray-900 dark:text-gray-100 w-full">
<h1 className="uppercase text-center font-bold text-2xl pb-2">LAPORAN RL 3.1</h1>
<p className="text-center pb-4">
<strong>Periode Tanggal: </strong>{formatDate(tgl_awal)} - {formatDate(tgl_akhir)}
<strong>Periode Tanggal: </strong>{formatDate(tgl_awal)} s.d {formatDate(tgl_akhir)}
</p>
<div className="overflow-x-auto">
<Table>
Expand Down
2 changes: 1 addition & 1 deletion resources/js/Pages/Laporan/Rl31/Print.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default function Print({
LAPORAN RL 3.1
</h1>
<p className="text-center">
<strong>Periode Tanggal: {formatDate(tgl_awal)} - {formatDate(tgl_akhir)} </strong>
<strong>Periode Tanggal: {formatDate(tgl_awal)} s.d {formatDate(tgl_akhir)} </strong>
</p>

<div className="py-3 overflow-auto">
Expand Down
93 changes: 93 additions & 0 deletions resources/js/Pages/Laporan/Rl51/Cetak.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
import React, { useEffect } from "react";
import { useForm } from "@inertiajs/react";
import InputLabel from "@/Components/InputLabel";
import TextInput from "@/Components/TextInput";

export default function Cetak() {

const { data, setData } = useForm({
dari_tanggal: '',
sampai_tanggal: ''
});

useEffect(() => {
const currentDate = new Date();
const currentYear = currentDate.getFullYear();
const currentMonth = (currentDate.getMonth() + 1).toString().padStart(2, '0');
const firstDayOfMonth = `${currentYear}-${currentMonth}-01`;
const formattedCurrentDate = currentDate.toISOString().split("T")[0];

setData(prevData => ({
...prevData,
dari_tanggal: firstDayOfMonth,
sampai_tanggal: formattedCurrentDate
}));
}, []);

const onSubmit = (e) => {
e.preventDefault();

// Filter out empty values
const filteredData = Object.fromEntries(Object.entries(data).filter(([_, v]) => v !== ''));

const queryString = new URLSearchParams(filteredData).toString();
window.open(route("laporanRl51.print") + "?" + queryString, "_blank");
};

return (
<div>
<div className="max-w-8xl mx-auto sm:px-6 lg:px-5">
<div className="bg-white dark:bg-indigo-950 overflow-hidden shadow-sm sm:rounded-lg">
<form
onSubmit={onSubmit}
className="p-4 sm-8 bg-white dark:bg-indigo-950 shadow sm:rounded-lg"
>
<h1 className="uppercase text-center font-bold text-2xl pt-2 text-white">Cetak Laporan RL 5.1</h1>

<div className="mt-4 flex space-x-4">
<div className="flex-1">
<InputLabel
htmlFor="dari_tanggal"
value="Dari Tanggal"
/>
<TextInput
type="date"
id="dari_tanggal"
name="dari_tanggal"
className="mt-1 block w-full"
value={data.dari_tanggal}
onChange={(e) => setData(prevData => ({ ...prevData, dari_tanggal: e.target.value }))}
/>
</div>

<div className="flex-1">
<InputLabel
htmlFor="sampai_tanggal"
value="Sampai Tanggal"
/>
<TextInput
type="date"
id="sampai_tanggal"
name="sampai_tanggal"
className="mt-1 block w-full"
value={data.sampai_tanggal}
onChange={(e) => setData(prevData => ({ ...prevData, sampai_tanggal: e.target.value }))}
/>
</div>
</div>

<div className="flex justify-between items-center mt-4">
<button
className="bg-red-500 py-1 px-3 text-gray-200 rounded shadow transition-all hover:bg-red-700 ml-auto"
type="submit"
>
Cetak
</button>
</div>
</form>
</div>
</div>
</div>
)
}

Loading

0 comments on commit dddb8a1

Please sign in to comment.