Align target deadlines in early warning and reports
This commit is contained in:
@@ -35,7 +35,7 @@ use App\RekapAntibiotik;
|
||||
use App\PendaftaranOnListiner;
|
||||
use App\CriticalValueSample;
|
||||
use App\Paslab;
|
||||
|
||||
use App\SIMBHPReport;
|
||||
use Carbon\Carbon;
|
||||
use Aranyasen\HL7\Message;
|
||||
use Aranyasen\HL7\Connection;
|
||||
@@ -1941,6 +1941,40 @@ class DokterController extends Controller
|
||||
'created_by' => Session('nama'),
|
||||
]);
|
||||
}
|
||||
$media = $request->input('komponen') ?? '';
|
||||
$status = $request->input('status') ?? '';
|
||||
if ($media == 'Media BAP'){
|
||||
$mediatanam = 'BAPPLATE';
|
||||
} else if ($media == 'Media CAP'){
|
||||
$mediatanam = 'CAPPLATE';
|
||||
} else if ($media == 'Media Mc Conkey'){
|
||||
$mediatanam = 'MCPLATE';
|
||||
} else if ($media == 'Media SDA R1' OR $media == 'Media SDA R2' OR $media == 'Media SDA I1' OR $media == 'Media SDA I2'){
|
||||
$mediatanam = 'SDAPLATE';
|
||||
} else {
|
||||
$mediatanam = '';
|
||||
}
|
||||
if ($mediatanam != '' AND $status == 'Sub Kultur'){
|
||||
$tanggal= date("d-m-Y");
|
||||
$ahrf = explode("-", $tanggal);
|
||||
$tahun = $ahrf[0];
|
||||
if(isset($ahrf[1])){ $wulan = (int)$ahrf[1]; } else { $wulan = (int)date("m"); }
|
||||
if(isset($ahrf[2])){ $dino = (int)$ahrf[2]; } else { $dino = (int)date("d"); }
|
||||
$datapemeriksaan = Periksa::where('id', $nofoto)->first();
|
||||
SIMBHPReport::create([
|
||||
'tanggal' => $dino,
|
||||
'bulan' => $wulan,
|
||||
'tahun' => $tahun,
|
||||
'deskripsi' => $status.' Nomor Lab.'.$datapemeriksaan->nofoto ?? ''.' petugas '.Session('nama'),
|
||||
'pemasukan' => null,
|
||||
'pengeluaran' => 1,
|
||||
'qty_base' => 1,
|
||||
'satuan_transaksi' => 'besar',
|
||||
'jenis' => $mediatanam,
|
||||
'keterangan' => '',
|
||||
'marking' => '',
|
||||
]);
|
||||
}
|
||||
Periksa::where('id', $idperiksa)->update([
|
||||
'status' => $request->input('komponen') ?? ''.' '.$request->input('status') ?? '',
|
||||
]);
|
||||
@@ -2664,6 +2698,7 @@ class DokterController extends Controller
|
||||
public function periksa(Request $request) {
|
||||
$nofoto = $request->input('nofoto');
|
||||
$id = $request->input('id');
|
||||
$mediatanams = $request->input('mediatanam');
|
||||
$nama = Session('nama');
|
||||
$idpemeriksa = Session('id');
|
||||
if ($id == 'ubahnomorlab'){
|
||||
@@ -2714,38 +2749,64 @@ class DokterController extends Controller
|
||||
$statuse = $jpoli->status ?? '';
|
||||
$noregister = $jpoli->noregister;
|
||||
$daftar = $jpoli->daftar;
|
||||
|
||||
$arrnofoto = explode('-', $nofoto);
|
||||
$nofoto = $arrnofoto[0];
|
||||
if ($statuse == 'Pemeriksaan awal' OR $statuse == 'Penerimaan Sampel'){
|
||||
Periksa::where('id', $id)->update([
|
||||
'status' => 'Pemeriksaan Sampel',
|
||||
'tgldraft' => date('Y-m-d H:i:s'),
|
||||
'excutor' => $idpemeriksa,
|
||||
'nmppdsmiddle2' => Session('nama')
|
||||
]);
|
||||
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Status Updated']);
|
||||
return back();
|
||||
} else if ($statuse == 'Pemeriksaan Sampel'){
|
||||
Periksa::where('id', $id)->update([
|
||||
'status' => 'Pemeriksaan awal',
|
||||
'tgldraft' => date('Y-m-d H:i:s'),
|
||||
'excutor' => $idpemeriksa,
|
||||
'nmppdsmiddle2' => Session('nama')
|
||||
]);
|
||||
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Status Updated']);
|
||||
return back();
|
||||
} else {
|
||||
Periksa::where('id', $id)->whereNull('status')->update([
|
||||
'status' => 'Pemeriksaan awal',
|
||||
'tgldraft' => date('Y-m-d H:i:s'),
|
||||
'status' => 'Penerimaan Sampel',
|
||||
'daftar' => date('Y-m-d H:i:s'),
|
||||
'mulai' => date('Y-m-d H:i:s'),
|
||||
'excutor' => $idpemeriksa,
|
||||
'nmppdsmiddle2' => Session('nama')
|
||||
]);
|
||||
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Status Updated']);
|
||||
return back();
|
||||
}
|
||||
if ($mediatanams == null OR $mediatanams == ''){
|
||||
|
||||
} else {
|
||||
foreach($mediatanams as $media){
|
||||
if ($media == 'Media BAP'){
|
||||
$mediatanam = 'BAPPLATE';
|
||||
} else if ($media == 'Media CAP'){
|
||||
$mediatanam = 'CAPPLATE';
|
||||
} else if ($media == 'Media Mc Conkey'){
|
||||
$mediatanam = 'MCPLATE';
|
||||
} else if ($media == 'Media SDA R1' OR $media == 'Media SDA R2' OR $media == 'Media SDA I1' OR $media == 'Media SDA I2'){
|
||||
$mediatanam = 'SDAPLATE';
|
||||
} else {
|
||||
$mediatanam = '';
|
||||
}
|
||||
if ($mediatanam != ''){
|
||||
$tanggal= date("Y-m-d");
|
||||
$ahrf = explode("-", $tanggal);
|
||||
$tahun = $ahrf[0];
|
||||
if(isset($ahrf[1])){ $wulan = (int)$ahrf[1]; } else { $wulan = (int)date("m"); }
|
||||
if(isset($ahrf[2])){ $dino = (int)$ahrf[2]; } else { $dino = (int)date("d"); }
|
||||
$datapemeriksaan = Periksa::where('id', $id)->first();
|
||||
SIMBHPReport::create([
|
||||
'tanggal' => $dino,
|
||||
'bulan' => $wulan,
|
||||
'tahun' => $tahun,
|
||||
'deskripsi' => 'Pemeriksaan Awal '.' Nomor Lab.'.$datapemeriksaan->nofoto.' petugas '.Session('nama'),
|
||||
'pemasukan' => null,
|
||||
'pengeluaran' => 1,
|
||||
'qty_base' => 1,
|
||||
'satuan_transaksi' => 'besar',
|
||||
'jenis' => $mediatanam,
|
||||
'keterangan' => '',
|
||||
'marking' => '',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return response()->json(['icon' => 'success', 'warna' => '#5ba035', 'status' => 'Success', 'message' => 'Status Updated']);
|
||||
return back();
|
||||
}
|
||||
}
|
||||
public function getFoto(Request $request) {
|
||||
@@ -3690,6 +3751,7 @@ class DokterController extends Controller
|
||||
'status' => 'Penerimaan Sampel',
|
||||
'nmppdsjunior2' => Session('nama'),
|
||||
'mulai' => date('Y-m-d H:i:s'),
|
||||
'daftar' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d').' 00:00:00',
|
||||
]);
|
||||
if ($kanan == ''){
|
||||
|
||||
@@ -36,6 +36,16 @@ use Carbon\Carbon;
|
||||
|
||||
class FrontpageController extends Controller
|
||||
{
|
||||
protected function resolveTargetDays($modaliti2)
|
||||
{
|
||||
return (!empty($modaliti2) && is_numeric($modaliti2) && intval($modaliti2) > 0)
|
||||
? intval($modaliti2)
|
||||
: 1;
|
||||
}
|
||||
protected function getTargetDeadline(Carbon $startAt, $targetDays)
|
||||
{
|
||||
return $startAt->copy()->addDays(intval($targetDays))->endOfDay();
|
||||
}
|
||||
protected function buildMikroViewData($master, array $extra = [])
|
||||
{
|
||||
$data = [
|
||||
@@ -236,16 +246,15 @@ class FrontpageController extends Controller
|
||||
|
||||
$earlyWarnings = [];
|
||||
foreach ($rawEarlyWarnings as $row) {
|
||||
$targetDays = 1;
|
||||
if (!empty($row->modaliti2) && is_numeric($row->modaliti2) && intval($row->modaliti2) > 0) {
|
||||
$targetDays = intval($row->modaliti2);
|
||||
}
|
||||
$targetDays = $this->resolveTargetDays($row->modaliti2);
|
||||
|
||||
$waktuDaftar = Carbon::parse($row->daftar);
|
||||
$targetSelesai = $waktuDaftar->copy()->addDays($targetDays);
|
||||
$targetSelesai = $this->getTargetDeadline($waktuDaftar, $targetDays);
|
||||
$sisaMenit = $now->diffInMinutes($targetSelesai, false);
|
||||
$batasWarningMenit = $targetDays > 1 ? 1440 : 60;
|
||||
$isMelewatiTarget = $now->gt($targetSelesai);
|
||||
|
||||
if ($sisaMenit <= 60) {
|
||||
if ($isMelewatiTarget || $sisaMenit <= $batasWarningMenit) {
|
||||
$earlyWarnings[] = [
|
||||
'id' => $row->id,
|
||||
'mikro_master' => $this->resolveMikroMasterFromPoliId($row->poli_id),
|
||||
@@ -260,7 +269,7 @@ class FrontpageController extends Controller
|
||||
'target_hari' => $targetDays,
|
||||
'target_selesai' => $targetSelesai->format('Y-m-d H:i:s'),
|
||||
'sisa_menit' => $sisaMenit,
|
||||
'warning_label' => $sisaMenit <= 0 ? 'Melewati Target' : 'Kurang dari 1 Jam'
|
||||
'warning_label' => $isMelewatiTarget ? 'Melewati Target' : ($targetDays > 1 ? 'Kurang dari 1 Hari' : 'Kurang dari 1 Jam')
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -733,9 +733,6 @@ class ListController extends Controller
|
||||
<div class="btn-group-vertical mb-2">
|
||||
<button type="button" class="btn btn-sm btn-outline-primary waves-effect" onClick="btnMarking('.$row->id.')">
|
||||
<i class="me-50 fa fa-flag"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-sm btn-outline-danger waves-effect" onClick="btnOpenEditor('.$row->id.')">
|
||||
<i class="me-50 fa fa-pencil"></i> Khusus Penomoran TB
|
||||
</button>
|
||||
</div>';
|
||||
})
|
||||
|
||||
@@ -323,6 +323,23 @@ class ReportController extends Controller
|
||||
'Amphotericin B',
|
||||
'Flucytosine'
|
||||
];
|
||||
private function resolveTatTargetDays($modaliti2) {
|
||||
return (!empty($modaliti2) && is_numeric($modaliti2) && intval($modaliti2) > 0)
|
||||
? intval($modaliti2)
|
||||
: 1;
|
||||
}
|
||||
private function getTatDeadlineDate($mulai, $targetDays) {
|
||||
return Carbon::parse($mulai)->addDays(intval($targetDays))->toDateString();
|
||||
}
|
||||
private function getTatElapsedDays($mulai, $verifikasi) {
|
||||
return Carbon::parse($mulai)->startOfDay()->diffInDays(Carbon::parse($verifikasi)->startOfDay());
|
||||
}
|
||||
private function resolveTatStatus($mulai, $verifikasi, $targetDays) {
|
||||
$deadlineDate = $this->getTatDeadlineDate($mulai, $targetDays);
|
||||
return Carbon::parse($verifikasi)->toDateString() <= $deadlineDate
|
||||
? 'MEMENUHI TARGET'
|
||||
: 'TIDAK MEMENUHI TARGET';
|
||||
}
|
||||
public function report(Request $request) {
|
||||
$bulan = $request->input('bulan');
|
||||
$tahun = $request->input('tahun');
|
||||
@@ -455,15 +472,13 @@ class ReportController extends Controller
|
||||
|
||||
$p = $poli[$row->poli_id] ?? null;
|
||||
$row->subpoli = $p->subpoli ?? null;
|
||||
$row->modaliti2 = $p->modaliti2 ?? '1';
|
||||
$row->modaliti2 = $this->resolveTatTargetDays($p->modaliti2 ?? '1');
|
||||
|
||||
// Hitung status target
|
||||
if (!empty($row->verifikasi)) {
|
||||
$selisih = Carbon::parse($row->mulai)->diffInDays($row->verifikasi);
|
||||
$selisih = $this->getTatElapsedDays($row->mulai, $row->verifikasi);
|
||||
$row->selisih_hari = $selisih;
|
||||
$row->status_target = ($selisih <= intval($row->modaliti2))
|
||||
? "MEMENUHI TARGET"
|
||||
: "TIDAK MEMENUHI TARGET";
|
||||
$row->status_target = $this->resolveTatStatus($row->mulai, $row->verifikasi, $row->modaliti2);
|
||||
} else {
|
||||
$row->selisih_hari = null;
|
||||
$row->status_target = "TIDAK ADA HASIL";
|
||||
|
||||
@@ -19,21 +19,24 @@ class UserController extends Controller
|
||||
if (Session::get('previlage') == ''){
|
||||
return redirect('/login');
|
||||
} else {
|
||||
if ($cekkelompok == 'supervisor' OR $cekkelompok == 'admin' OR $cekkelompok == 'developer'){
|
||||
$users = User::all();
|
||||
if ($cekkelompok == 'supervisor' OR $cekkelompok == 'developer'){
|
||||
$getsetting = Setting::where('id', '1')->first();
|
||||
$data = [];
|
||||
$data['users'] = User::orderBy('nama', 'ASC')->get();
|
||||
$data['pacsaddr'] = $getsetting->pacs ?? '';
|
||||
$data['zfpaddr'] = $getsetting->zfp ?? '';
|
||||
$data['port'] = $getsetting->port ?? '';
|
||||
$data['portzfp'] = $getsetting->portzfp ?? '';
|
||||
$data['username'] = $getsetting->username ?? '';
|
||||
$data['password'] = $getsetting->password ?? '';
|
||||
return view('admin.user', $data);
|
||||
} else {
|
||||
$users = User::where('previlage', $cekkelompok)->get();
|
||||
$data = [];
|
||||
$data['kalimatheader'] = 'Access Denied';
|
||||
$data['kalimatbody'] = 'Laman khusus SPV';
|
||||
return view('errors.error', $data);
|
||||
}
|
||||
$getsetting = Setting::where('id', '1')->first();
|
||||
$data = [];
|
||||
$data['users'] = $users;
|
||||
$data['pacsaddr'] = $getsetting->pacs ?? '';
|
||||
$data['zfpaddr'] = $getsetting->zfp ?? '';
|
||||
$data['port'] = $getsetting->port ?? '';
|
||||
$data['portzfp'] = $getsetting->portzfp ?? '';
|
||||
$data['username'] = $getsetting->username ?? '';
|
||||
$data['password'] = $getsetting->password ?? '';
|
||||
return view('admin.user', $data);
|
||||
|
||||
}
|
||||
}
|
||||
public function exSetting(Request $request) {
|
||||
|
||||
Reference in New Issue
Block a user