update
This commit is contained in:
@@ -25,7 +25,18 @@ class ReportController extends Controller
|
||||
if (Session::get('previlage') == ''){
|
||||
return redirect('/login');
|
||||
} else {
|
||||
return view('admin.report');
|
||||
$dokterOptions = Periksa::select('dokter_id', 'nmdokter')
|
||||
->whereNotNull('dokter_id')
|
||||
->where('dokter_id', '<>', 0)
|
||||
->whereNotNull('nmdokter')
|
||||
->where('nmdokter', '<>', '')
|
||||
->groupBy('dokter_id', 'nmdokter')
|
||||
->orderBy('nmdokter', 'ASC')
|
||||
->get();
|
||||
|
||||
return view('admin.report', [
|
||||
'dokterOptions' => $dokterOptions
|
||||
]);
|
||||
}
|
||||
}
|
||||
public function rekapPeriksa(Request $request) {
|
||||
@@ -316,6 +327,7 @@ class ReportController extends Controller
|
||||
$bulan = $request->input('bulan');
|
||||
$tahun = $request->input('tahun');
|
||||
$jenisreport = $request->input('jenisreport');
|
||||
$dokterId = $request->input('dokter_id');
|
||||
$homebase = url("/");
|
||||
$arraylist = [];
|
||||
$limit = $request->input('limit') ?? 500;
|
||||
@@ -324,7 +336,7 @@ class ReportController extends Controller
|
||||
$filterscount = $request->input('filterscount') ?? 0;
|
||||
if ($jenisreport == 'biorepository'){
|
||||
if ($bulan == 'ALL'){
|
||||
$lists = DB::table('db_komponenjawaban')
|
||||
$queryBiorepo = DB::table('db_komponenjawaban')
|
||||
->select('db_komponenjawaban.*',
|
||||
'periksa.nofoto',
|
||||
'periksa.noregister',
|
||||
@@ -338,9 +350,13 @@ class ReportController extends Controller
|
||||
->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto')
|
||||
->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri'])
|
||||
->where('db_komponenjawaban.isidata', '!=', '')
|
||||
->where('periksa.daftar', 'LIKE', $tahun.'-%')->orderBy('periksa.id', 'DESC')->get();
|
||||
->where('periksa.daftar', 'LIKE', $tahun.'-%');
|
||||
if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') {
|
||||
$queryBiorepo->where('periksa.dokter_id', $dokterId);
|
||||
}
|
||||
$lists = $queryBiorepo->orderBy('periksa.id', 'DESC')->get();
|
||||
} else {
|
||||
$lists = DB::table('db_komponenjawaban')
|
||||
$queryBiorepo = DB::table('db_komponenjawaban')
|
||||
->select('db_komponenjawaban.*',
|
||||
'periksa.nofoto',
|
||||
'periksa.noregister',
|
||||
@@ -354,7 +370,11 @@ class ReportController extends Controller
|
||||
->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto')
|
||||
->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri'])
|
||||
->where('db_komponenjawaban.isidata', '!=', '')
|
||||
->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%')->orderBy('periksa.id', 'DESC')->get();
|
||||
->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%');
|
||||
if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') {
|
||||
$queryBiorepo->where('periksa.dokter_id', $dokterId);
|
||||
}
|
||||
$lists = $queryBiorepo->orderBy('periksa.id', 'DESC')->get();
|
||||
}
|
||||
echo json_encode($lists);
|
||||
} else {
|
||||
@@ -363,6 +383,9 @@ class ReportController extends Controller
|
||||
if ($bulan !== 'ALL') {
|
||||
$query->whereMonth('mulai', $bulan);
|
||||
}
|
||||
if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') {
|
||||
$query->where('dokter_id', $dokterId);
|
||||
}
|
||||
|
||||
/**
|
||||
* CURSOR → Streaming data, tidak boros memori
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="wrapper">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<div class="col-lg-8">
|
||||
<div class="card-box ribbon-box">
|
||||
<div class="ribbon ribbon-primary">Pick Report Range</div>
|
||||
<p class="m-b-0"></p>
|
||||
@@ -29,9 +29,22 @@
|
||||
<div class="form-group col-md-3">
|
||||
<input type="text" name="tahun" id="tahun" class="form-control" value="{{ date('Y')}}">
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<select class="form-control" id="dokter_id" name="dokter_id">
|
||||
<option value="ALL">Semua Dokter</option>
|
||||
@if(isset($dokterOptions) && count($dokterOptions) > 0)
|
||||
@foreach($dokterOptions as $dokter)
|
||||
<option value="{{ $dokter->dokter_id }}">{{ $dokter->nmdokter }}</option>
|
||||
@endforeach
|
||||
@endif
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<button type="button" class="btn btn-primary" id="btnReport">Detail</button>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<button type="button" class="btn btn-success btn-block" id="btnExportDokter">Export Excel Dokter</button>
|
||||
</div>
|
||||
<div class="form-group col-md-3">
|
||||
<button type="button" class="btn btn-warning btn-block" id="btnrekaptat">Rekap TAT</button>
|
||||
</div>
|
||||
@@ -221,6 +234,7 @@ $(document).ready(function () {
|
||||
$('#btnReport').click(function () {
|
||||
var bulan = document.getElementById('bulan').value;
|
||||
var tahun = document.getElementById('tahun').value;
|
||||
var dokterId= document.getElementById('dokter_id').value;
|
||||
var token = document.getElementById('token').value;
|
||||
if (bulan == '' || tahun == ''){
|
||||
swal({
|
||||
@@ -229,7 +243,7 @@ $(document).ready(function () {
|
||||
type : 'error',
|
||||
});
|
||||
} else {
|
||||
$.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, jenisreport: '', _token: token },
|
||||
$.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, dokter_id: dokterId, jenisreport: '', _token: token },
|
||||
function(data){
|
||||
var sourceawal = {
|
||||
datatype: "json",
|
||||
@@ -367,6 +381,56 @@ $(document).ready(function () {
|
||||
});
|
||||
}
|
||||
});
|
||||
$('#btnExportDokter').click(function () {
|
||||
var bulan = document.getElementById('bulan').value;
|
||||
var tahun = document.getElementById('tahun').value;
|
||||
var dokterId = document.getElementById('dokter_id').value;
|
||||
var dokterText = $('#dokter_id option:selected').text();
|
||||
var token = document.getElementById('token').value;
|
||||
|
||||
if (bulan == '' || tahun == '' || dokterId == '' || dokterId == 'ALL') {
|
||||
swal({
|
||||
title : 'Mohon diLengkapi',
|
||||
text : 'Bulan, Tahun, dan Dokter wajib dipilih untuk export ini.',
|
||||
type : 'error',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
$.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, dokter_id: dokterId, jenisreport: '', _token: token }, function(data) {
|
||||
if (!Array.isArray(data) || data.length === 0) {
|
||||
swal({
|
||||
title : 'Info',
|
||||
text : 'Data report tidak ditemukan untuk filter yang dipilih.',
|
||||
type : 'warning',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var exportRows = data.map(function(row) {
|
||||
return {
|
||||
'No.Sample': row.nofoto || '',
|
||||
'No.RM': row.noregister || '',
|
||||
'Nama': row.nmpasien || '',
|
||||
'Dokter': row.nmdokter || '',
|
||||
'Order': row.reques || '',
|
||||
'Asal Pasien': row.asalpasien || '',
|
||||
'Status': row.status || '',
|
||||
'Tgl Sample': row.mulai || '',
|
||||
'Tgl Verifikasi': row.verifikasi || '',
|
||||
'Target': row.modaliti2 || '',
|
||||
'Durasi': row.selisih_hari || '',
|
||||
'Keterangan': row.status_target || ''
|
||||
};
|
||||
});
|
||||
|
||||
var ws = XLSX.utils.json_to_sheet(exportRows);
|
||||
var wb = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(wb, ws, 'ReportDokter');
|
||||
var dokterSafe = (dokterText || 'Dokter').replace(/[^a-zA-Z0-9]+/g, '_');
|
||||
XLSX.writeFile(wb, 'Report_' + bulan + '_' + tahun + '_' + dokterSafe + '.xlsx');
|
||||
});
|
||||
});
|
||||
$('#btnrekapbiorepo').click(function () {
|
||||
var bulan = document.getElementById('bulan').value;
|
||||
var tahun = document.getElementById('tahun').value;
|
||||
|
||||
Reference in New Issue
Block a user