Skip to content

Commit

Permalink
update informasi rawat jalan
Browse files Browse the repository at this point in the history
  • Loading branch information
HidayatLahabu committed Jan 11, 2025
1 parent 63242d1 commit f1a0aa2
Show file tree
Hide file tree
Showing 17 changed files with 694 additions and 86 deletions.
200 changes: 167 additions & 33 deletions app/Http/Controllers/Informasi/InformasiKunjunganController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

namespace App\Http\Controllers\Informasi;

use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Models\MasterRuanganModel;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;

Expand All @@ -11,35 +13,40 @@ class InformasiKunjunganController extends Controller

public function index()
{
// Get the search term from the request
$searchSubject = request('search') ? strtolower(request('search')) : null;

$data = $this->getKunjungan($searchSubject);
$data = $this->getKunjungan();
$dataArray = $data->toArray();

// Get weekly and monthly data
$kunjunganMingguan = $this->getWeeklyKunjungan($searchSubject);
$kunjunganMingguan = $this->getWeeklyKunjungan();
$dataKunjunganMingguan = $kunjunganMingguan->toArray();

// $perPage = 5; // Items per page
// $kunjunganBulanan = $this->getMonthlyKunjungan($perPage);

$kunjunganBulanan = $this->getMonthlyKunjungan($searchSubject);
$kunjunganBulanan = $this->getMonthlyKunjungan();
$dataKunjunganBulanan = $kunjunganBulanan->toArray();

$kunjunganTahunan = $this->getYearlyKunjungan();
$dataKunjunganTahunan = $kunjunganTahunan->toArray();

$ruangan = MasterRuanganModel::where('JENIS', 5)
->whereIn('JENIS_KUNJUNGAN', [1])
->where('STATUS', 1)
->orderBy('DESKRIPSI')
->get();

// Return Inertia view with paginated data
return inertia("Informasi/Kunjungan/Index", [
'ruangan' => $ruangan,
'harian' => [
'data' => $dataArray['data'],
'links' => $dataArray['links'],
],
'mingguan' => $dataKunjunganMingguan,
'bulanan' => $dataKunjunganBulanan,
'tahunan' => $dataKunjunganTahunan,
'queryParams' => request()->all()
]);
}

private function getKunjungan($searchSubject = null)
private function getKunjungan()
{
// Start building the query using the query builder
$query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
Expand All @@ -55,19 +62,12 @@ private function getKunjungan($searchSubject = null)
)
->groupBy('kunjungan.TANGGAL', 'kunjungan.IDSUBUNIT', 'kunjungan.SUBUNIT');

// Add search filter if provided
if ($searchSubject) {
$query->where(function ($q) use ($searchSubject) {
$q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']);
});
}

// Return the paginated results
return $query->orderByDesc('kunjungan.TANGGAL')->orderBy('kunjungan.SUBUNIT')
->paginate(5)->appends(request()->query());
}

private function getWeeklyKunjungan($searchSubject = null)
private function getWeeklyKunjungan()
{
// Start building the query using the query builder
$query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
Expand All @@ -89,21 +89,14 @@ private function getWeeklyKunjungan($searchSubject = null)
'kunjungan.SUBUNIT'
);

// Add search filter if provided
if ($searchSubject) {
$query->where(function ($q) use ($searchSubject) {
$q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']);
});
}

// Return the paginated results
return $query->orderBy('tahun', 'desc')
->orderBy('minggu', 'desc')
->orderBy('kunjungan.SUBUNIT')
->paginate(5)->appends(request()->query());
}

private function getMonthlyKunjungan($searchSubject = null)
private function getMonthlyKunjungan()
{
// Start building the query using the query builder
$query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
Expand All @@ -125,17 +118,158 @@ private function getMonthlyKunjungan($searchSubject = null)
'kunjungan.SUBUNIT'
);

// Add search filter if provided
if ($searchSubject) {
$query->where(function ($q) use ($searchSubject) {
$q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']);
});
}

// Return the paginated results
return $query->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc')
->orderBy(DB::raw('MONTH(kunjungan.TANGGAL)'), 'desc')
->orderBy('kunjungan.SUBUNIT')
->paginate(5)->appends(request()->query());
}

private function getYearlyKunjungan()
{
// Start building the query using the query builder
$query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
->select(
'kunjungan.IDSUBUNIT as idSubUnit',
DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'),
DB::raw('MIN(kunjungan.INSTALASI) as instalasi'),
DB::raw('MIN(kunjungan.UNIT) as unit'),
DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'),
DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'),
DB::raw('YEAR(kunjungan.TANGGAL) as tahun'),
DB::raw('SUM(kunjungan.VALUE) as jumlah')
)
->groupBy(
'kunjungan.IDSUBUNIT',
DB::raw('YEAR(kunjungan.TANGGAL)'),
'kunjungan.SUBUNIT'
);

// Return the paginated results
return $query->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc')
->orderBy('kunjungan.SUBUNIT')
->paginate(5)->appends(request()->query());
}

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

// Ambil nilai input
$ruangan = $request->input('ruangan');
//dd($ruangan);
$dariTanggal = Carbon::parse($request->input('dari_tanggal'))->format('Y-m-d H:i:s');
$sampaiTanggal = Carbon::parse($request->input('sampai_tanggal'))->endOfDay()->format('Y-m-d H:i:s');

// Variable default untuk label
$namaRuangan = $ruangan ? MasterRuanganModel::where('ID', $ruangan)->value('DESKRIPSI') : 'SEMUA RUANGAN';

// Query Harian
$harian = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
->select(
'kunjungan.TANGGAL as tanggal',
'kunjungan.IDSUBUNIT as idSubUnit',
DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'),
DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'),
DB::raw('SUM(kunjungan.VALUE) as jumlah'),
DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated')
)
->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal])
->when($ruangan, fn($harian) => $harian->where('kunjungan.IDSUBUNIT', $ruangan))
->groupBy('kunjungan.TANGGAL', 'kunjungan.IDSUBUNIT', 'kunjungan.SUBUNIT')
->orderByDesc('kunjungan.TANGGAL')
->orderBy('kunjungan.SUBUNIT')
->get();

// Query Mingguan
$mingguan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
->select(
'kunjungan.IDSUBUNIT as idSubUnit',
DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'),
DB::raw('MIN(kunjungan.INSTALASI) as instalasi'),
DB::raw('MIN(kunjungan.UNIT) as unit'),
DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'),
DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'),
DB::raw('YEAR(kunjungan.TANGGAL) as tahun'),
DB::raw('WEEK(kunjungan.TANGGAL, 1) as minggu'),
DB::raw('SUM(kunjungan.VALUE) as jumlah')
)
->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal])
->when($ruangan, fn($mingguan) => $mingguan->where('kunjungan.IDSUBUNIT', $ruangan))
->groupBy(
'kunjungan.IDSUBUNIT',
DB::raw('YEAR(kunjungan.TANGGAL)'),
DB::raw('WEEK(kunjungan.TANGGAL, 1)'),
'kunjungan.SUBUNIT'
)
->orderBy('tahun', 'desc')
->orderBy('minggu', 'desc')
->orderBy('kunjungan.SUBUNIT')
->get();

// Query Bulanan
$bulanan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
->select(
'kunjungan.IDSUBUNIT as idSubUnit',
DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'),
DB::raw('MIN(kunjungan.INSTALASI) as instalasi'),
DB::raw('MIN(kunjungan.UNIT) as unit'),
DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'),
DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'),
DB::raw('YEAR(kunjungan.TANGGAL) as tahun'),
DB::raw('MONTH(kunjungan.TANGGAL) as bulan'),
DB::raw('SUM(kunjungan.VALUE) as jumlah')
)
->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal])
->when($ruangan, fn($bulanan) => $bulanan->where('kunjungan.IDSUBUNIT', $ruangan))
->groupBy(
'kunjungan.IDSUBUNIT',
DB::raw('YEAR(kunjungan.TANGGAL)'),
DB::raw('MONTH(kunjungan.TANGGAL)'),
'kunjungan.SUBUNIT'
)
->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc')
->orderBy(DB::raw('MONTH(kunjungan.TANGGAL)'), 'desc')
->orderBy('kunjungan.SUBUNIT')
->get();

// Query Tahunan
$tahunan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan')
->select(
'kunjungan.IDSUBUNIT as idSubUnit',
DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'),
DB::raw('MIN(kunjungan.INSTALASI) as instalasi'),
DB::raw('MIN(kunjungan.UNIT) as unit'),
DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'),
DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'),
DB::raw('YEAR(kunjungan.TANGGAL) as tahun'),
DB::raw('SUM(kunjungan.VALUE) as jumlah')
)
->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal])
->when($ruangan, fn($tahunan) => $tahunan->where('kunjungan.IDSUBUNIT', $ruangan))
->groupBy(
'kunjungan.IDSUBUNIT',
DB::raw('YEAR(kunjungan.TANGGAL)'),
'kunjungan.SUBUNIT'
)
->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc')
->orderBy('kunjungan.SUBUNIT')
->get();

// Kirim data ke frontend menggunakan Inertia
return inertia("Informasi/Kunjungan/Print", [
'harian' => $harian,
'mingguan' => $mingguan,
'bulanan' => $bulanan,
'tahunan' => $tahunan,
'dariTanggal' => $dariTanggal,
'sampaiTanggal' => $sampaiTanggal,
'namaRuangan' => $namaRuangan,
]);
}
}
12 changes: 6 additions & 6 deletions app/Http/Controllers/Informasi/InformasiPengunjungController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,22 @@ class InformasiPengunjungController extends Controller
public function index()
{
$queryPengunjung = $this->getRajal();
$dataPengunjung = $queryPengunjung->orderByDesc('pengunjung.TANGGAL')->paginate(7)->appends(request()->query());
$dataPengunjung = $queryPengunjung->orderByDesc('pengunjung.TANGGAL')->paginate(5)->appends(request()->query());
$dataPengunjung = $dataPengunjung->toArray();

$queryRanap = $this->getRanap();
$dataRanap = $queryRanap->orderByDesc('pasienRanap.TANGGAL')->paginate(7)->appends(request()->query());
$dataRanap = $queryRanap->orderByDesc('pasienRanap.TANGGAL')->paginate(5)->appends(request()->query());
$dataRanap = $dataRanap->toArray();

$rajalMingguan = $this->getWeeklyRajal();
$dataRajalMingguan = $rajalMingguan->paginate(4)->appends(request()->query());
$dataRajalMingguan = $rajalMingguan->paginate(5)->appends(request()->query());
$dataRajalMingguan = $dataRajalMingguan->toArray();

$ranapMingguan = $this->getWeeklyRanap();
$dataRanapMingguan = $ranapMingguan->paginate(4)->appends(request()->query());
$dataRanapMingguan = $ranapMingguan->paginate(5)->appends(request()->query());
$dataRanapMingguan = $dataRanapMingguan->toArray();

$perPage = 12; // Items per page
$perPage = 5; // Items per page
$rajalBulanan = $this->getMonthlyRajal($perPage);
$ranapBulanan = $this->getMonthlyRanap($perPage);

Expand Down Expand Up @@ -152,4 +152,4 @@ protected function getMonthlyRanap($perPage)
->orderBy(DB::raw('MONTH(pasienRanap.TANGGAL)'), 'desc')
->paginate($perPage);
}
}
}
2 changes: 1 addition & 1 deletion resources/js/Components/NavigationInformasi.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ export default function NavigationLogs() {
active={route().current('informasiKunjungan.index')}
className="flex justify-between items-center px-4 py-2 mb-1 w-full"
>
Kunjungan Rawat Jalan
Rawat Jalan
</NavLink>
<NavLink
href={route('informasiPengunjung.index')}
Expand Down
2 changes: 1 addition & 1 deletion resources/js/Components/ResponsiveNavInformasi.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default function ResponsiveNavInformasi() {
<div className="rounded-md shadow-xs">
<div className="py-1">
<ResponsiveNavLink href={route('statistikKunjungan.index')}>Statistik</ResponsiveNavLink>
<ResponsiveNavLink href={route('informasiKunjungan.index')}>Kunjungan Rawat Jalan</ResponsiveNavLink>
<ResponsiveNavLink href={route('informasiKunjungan.index')}>Rawat Jalan</ResponsiveNavLink>
<ResponsiveNavLink href={route('informasiPengunjung.index')}>Pengunjung</ResponsiveNavLink>
<ResponsiveNavLink href={route('informasiPenunjang.index')}>Penunjang</ResponsiveNavLink>
</div>
Expand Down
12 changes: 4 additions & 8 deletions resources/js/Pages/Informasi/Kunjungan/Bulanan.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ export default function Bulanan({ bulanan }) {

const headers = [
{ name: "TAHUN", className: "w-[9%]" },
{ name: "BULAN", className: "w-[10%]" },
{ name: "JENIS KUNJUNGAN", className: "w-[14%]" },
{ name: "INSTALASI" },
{ name: "UNIT", className: "w-[10%]" },
{ name: "BULAN" },
{ name: "JENIS KUNJUNGAN" },
{ name: "SUB UNIT" },
{ name: "KUNJUNGAN", className: "text-right w-[10%]" },
{ name: "LAST UPDATED", className: "w-[12%]" },
{ name: "LAST UPDATED" },
];

// Array nama bulan
Expand All @@ -27,7 +25,7 @@ export default function Bulanan({ bulanan }) {

return (
<div className="py-5">
<div className="max-w-8xl mx-auto sm:px-6 lg:px-5">
<div className="max-w-8xl mx-auto sm:pl-5 sm:pr-2 lg:pl-5 pr-2">
<div className="bg-white dark:bg-indigo-900 overflow-hidden shadow-sm sm:rounded-lg">
<div className="p-5 text-gray-900 dark:text-gray-100 dark:bg-indigo-950">
<div className="overflow-auto w-full">
Expand All @@ -52,8 +50,6 @@ export default function Bulanan({ bulanan }) {
<TableCell>{data.tahun}</TableCell>
<TableCell>{bulanNames[data.bulan - 1]}</TableCell>
<TableCell>{data.jenisKunjungan}</TableCell>
<TableCell>{data.instalasi}</TableCell>
<TableCell>{data.unit}</TableCell>
<TableCell>{data.subUnit}</TableCell>
<TableCell className='text-right'>{data.jumlah}</TableCell>
<TableCell>{data.lastUpdated}</TableCell>
Expand Down
Loading

0 comments on commit f1a0aa2

Please sign in to comment.