This commit is contained in:
Duidev Software
2026-01-02 16:42:43 +07:00
parent 98d6b688e9
commit 4583ac6cd7
4 changed files with 385 additions and 274 deletions
@@ -1,11 +1,5 @@
@php
use App\RekapAntibiotik;
use App\SiraB;
$antibiotikData = RekapAntibiotik::whereIn('orderid', $orderbydate->pluck('id'))->get()->keyBy('orderid');
$siraBData = SiraB::whereIn('antibiotik', $jsonantibiotik ?? [])->orWhereIn('subantibiotik', $jsonantibiotik ?? [])->get()->keyBy('antibiotik');
@endphp
@extends('base.layout')
@section('content')
<div class="wrapper">
<div class="container-fluid">
@@ -14,91 +8,53 @@
<div class="card-box ribbon-box">
<div class="ribbon ribbon-danger">Rekapitulasi Data Bulan {{$bulan}} Tahun {{$tahun}}</div>
<p></p>
<div class="table-responsive">
<button type="button" class="btn btn-primary" id="btnexport"><i class="fa fa-print"></i> Export</button>
<div class="mt-3 mb-3">
<a href="{{ route('exportGlassReport', ['bulan' => $bulan, 'tahun' => $tahun]) }}" class="btn btn-success">
<i class="fa fa-file-excel-o"></i> Download Full Excel (CSV)
</a>
</div>
<table id="glassreport" class="table table-bordered display">
<div class="table-responsive">
<table class="table table-bordered" id="datatable">
<thead>
<tr>
<th>ID Rumah Sakit</th>
<th>Nama Pasien</th>
<th>No Rekam Medis</th>
<th>Jenis Kelamin</th>
<th>Tanggal Lahir</th>
<th>Usia</th>
<th>Ruang Rawat</th>
<th>Tanggal Pasien Masuk</th>
<th>Tanggal Pengambilan Sample</th>
<th>Specimen Origin (Comunity Origin / Hospital Origin)</th>
<th>Jenis Spesimen</th>
<th>Nama Spesies Bakteri</th>
<th>ESBL</th>
<th>MRSA</th>
@if(!empty($jsonantibiotik))
@foreach($jsonantibiotik as $antibiotic)
<th>{{ $antibiotic }}</th>
@endforeach
@endif
<th>No RM</th>
<th>Bakteri</th>
@foreach($jsonantibiotik as $antibiotic)
<th title="{{ $antibiotic }}">{{ $antibiotic }}</th>
@endforeach
</tr>
</thead>
<tbody>
@forelse($orderbydate ?? [] as $data)
@forelse($orderbydate as $data)
<tr>
<td>&nbsp;</td>
<td>{{ $data->nmpasien }}</td>
<td>{{ $data->noregister }}</td>
<td>{{ $data->jkpasien }}</td>
<td>{{ $data->tgllahirpasien }}</td>
<td>{{ $data->usia }}</td>
<td>{{ $data->asalpasien }}</td>
<td>{{ $data->mulai }}</td>
<td>{{ $data->daftar }}</td>
<td>&nbsp;</td>
<td>{{ $data->kd_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->id_esbl }}</td>
<td>{{ $data->id_mrsa }}</td>
@if(!empty($jsonantibiotik))
@foreach($jsonantibiotik as $antibiotic)
@php
$cekapakahada = $antibiotikData[$data->id] ?? null;
$intepretasi = $cekapakahada->interpretation ?? '';
@endphp
<td>{{ $intepretasi }}</td>
@endforeach
@endif
<td>{{ $data->nm_spesimen }}</td> @foreach($jsonantibiotik as $headerAntibiotik)
@php
// LOGIC UTAMA:
// Cek di array lookup: [id_pasien][nama_antibiotik]
// Jika ada, ambil nilainya. Jika tidak, kosong.
$interpretasi = $antibiotikLookup[$data->id][$headerAntibiotik] ?? '';
@endphp
<td class="text-center" style="{{ $interpretasi == 'R' ? 'background-color:#ffcccc' : '' }}">
{{ $interpretasi }}
</td>
@endforeach
</tr>
@empty
<tr>
<td colspan="14" class="text-center">Tidak ada data yang tersedia.</td>
<td colspan="{{ count($jsonantibiotik) + 3 }}">Data tidak ditemukan</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
@endsection
@push('script')
<!-- SIGNATURE PAD -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.full.min.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btnexport').addEventListener('click', function() {
var table = document.getElementById('glassreport');
if (table) {
var wb = XLSX.utils.table_to_book(table, { sheet: "Report" });
XLSX.writeFile(wb, "GlassReport_{{$bulan}}_Tahun{{$tahun}}.xlsx");
} else {
console.error('Tabel dengan ID "tblkeaktifankelas" tidak ditemukan.');
}
});
});
</script>
@endpush
@endsection
@@ -7,10 +7,17 @@
<div class="card-box ribbon-box">
<div class="ribbon ribbon-danger">Rekapitulasi Data Bulan {{$bulan}} Tahun {{$tahun}}</div>
<p></p>
<div class="table-responsive">
<button type="button" class="btn btn-primary" id="btnexport"><i class="fa fa-print"></i> Export</button>
<div class="d-flex justify-content-between mb-2">
<a href="{{ route('exportRekapAntibiotik', ['bulan' => $bulan, 'tahun' => $tahun]) }}" class="btn btn-primary">
<i class="fa fa-print"></i> Export Excel (CSV)
</a>
<div>Halaman {{ $orderbydate->currentPage() }} dari {{ $orderbydate->lastPage() }}</div>
</div>
<table id="rekapantibiotik" class="table table-bordered display">
<div class="table-responsive">
<table class="table table-bordered table-sm table-striped display" id="datatable">
<thead>
<tr>
<th>No</th>
@@ -25,89 +32,74 @@
<th>Code</th>
<th>Spesimen</th>
<th>Finish</th>
<th>bhp_media</th>
<th>bhp_potsputum</th>
<th>bhp_poturine</th>
<th>bhp_oshe</th>
<th>bhp_obyekglass</th>
<th>bhp_botolbd</th>
<th>bhp_parafilm</th>
<th>bhp_tips</th>
<th>bhp_cottonswab</th>
<th>bhp_antibiotiktambahan</th>
<th>id_esbl</th>
<th>id_mrsa</th>
@if(isset($jsonantibiotik) && !empty($jsonantibiotik))
@foreach($jsonantibiotik->first() as $antibiotic)
<th>{{ $antibiotic->antibiotic }}</th>
@endforeach
@endif
<th>Media</th>
<th>Sputum</th>
<th>Urine</th>
<th>Oshe</th>
<th>Glass</th>
<th>Botol</th>
<th>Paraf</th>
<th>Tips</th>
<th>Swab</th>
<th>Ab+</th>
<th>ESBL</th>
<th>MRSA</th>
@foreach($listAntibiotik as $antibiotic)
<th>{{ $antibiotic }}</th>
@endforeach
</tr>
</thead>
<tbody>
@if(isset($orderbydate) && !empty($orderbydate))
@foreach($orderbydate as $data)
<tr>
<td>{{ $data->noloket }}</td>
<td>{{ $data->status }}</td>
<td>{{ $data->noregister }}</td>
<td>{{ $data->nmpasien }}</td>
<td>{{ $data->reques }}</td>
<td>{{ $data->jkpasien }}</td>
<td>{{ $data->daftar }}</td>
<td>{{ $data->urgensi }}</td>
<td>{{ $data->asalpasien }}</td>
<td>{{ $data->kd_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->updated_at }}</td>
<td>{{ $data->bhp_media}} </td>
<td>{{ $data->bhp_potsputum}} </td>
<td>{{ $data->bhp_poturine}} </td>
<td>{{ $data->bhp_oshe}} </td>
<td>{{ $data->bhp_obyekglass}} </td>
<td>{{ $data->bhp_botolbd}} </td>
<td>{{ $data->bhp_parafilm}} </td>
<td>{{ $data->bhp_tips}} </td>
<td>{{ $data->bhp_cottonswab}} </td>
<td>{{ $data->bhp_antibiotiktambahan}} </td>
<td>{{ $data->id_esbl}} </td>
<td>{{ $data->id_mrsa}} </td>
@if(isset($jsonantibiotik[$data->id]) && !empty($jsonantibiotik[$data->id]))
@foreach($jsonantibiotik[$data->id] as $antibiotic)
<td>{{ $antibiotic->interpretation }}</td>
@endforeach
@else
<td>&nbsp;</td>
@endif
</tr>
@endforeach
@endif
@forelse($orderbydate as $data)
<tr>
<td>{{ $data->noloket }}</td>
<td>{{ $data->status }}</td>
<td>{{ $data->noregister }}</td>
<td>{{ $data->nmpasien }}</td>
<td>{{ $data->reques }}</td>
<td>{{ $data->jkpasien }}</td>
<td>{{ $data->daftar }}</td>
<td>{{ $data->urgensi }}</td>
<td>{{ $data->asalpasien }}</td>
<td>{{ $data->kd_spesimen }}</td>
<td>{{ $data->nm_spesimen }}</td>
<td>{{ $data->updated_at }}</td>
<td>{{ $data->bhp_media}} </td>
<td>{{ $data->bhp_potsputum}} </td>
<td>{{ $data->bhp_poturine}} </td>
<td>{{ $data->bhp_oshe}} </td>
<td>{{ $data->bhp_obyekglass}} </td>
<td>{{ $data->bhp_botolbd}} </td>
<td>{{ $data->bhp_parafilm}} </td>
<td>{{ $data->bhp_tips}} </td>
<td>{{ $data->bhp_cottonswab}} </td>
<td>{{ $data->bhp_antibiotiktambahan}} </td>
<td>{{ $data->id_esbl}} </td>
<td>{{ $data->id_mrsa}} </td>
@foreach($listAntibiotik as $headerAb)
@php
// Ambil nilai dari Lookup Array
// Jika pasien ini tidak tes antibiotik tersebut, tampilkan kosong
$val = $antibiotikLookup[$data->id][$headerAb] ?? '';
@endphp
<td class="text-center">{{ $val }}</td>
@endforeach
</tr>
@empty
<tr>
<td colspan="{{ 24 + count($listAntibiotik) }}" class="text-center">
Tidak ada data tersedia.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="card-footer">
</div>
</div>
</div>
</div>
</div>
</div>
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
@endsection
@push('script')
<!-- SIGNATURE PAD -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.0/xlsx.full.min.js"></script>
<script type="text/javascript">
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btnexport').addEventListener('click', function() {
var table = document.getElementById('rekapantibiotik');
if (table) {
var wb = XLSX.utils.table_to_book(table, { sheet: "Report" });
XLSX.writeFile(wb, "RekapanAntiBiotik_{{$bulan}}_Tahun{{$tahun}}.xlsx");
} else {
console.error('Tabel dengan ID "tblkeaktifankelas" tidak ditemukan.');
}
});
});
</script>
@endpush
@endsection