request->getVar('date1') ?? $today; $date2 = $this->request->getVar('date2') ?? $today; $db = \Config\Database::connect(); $sql = "SELECT * from GDC_CMOD.dbo.V_DASHBOARD_DEV where COLLECTIONDATE between '$date1 00:00' and '$date2 23:59' and ODR_DDATE between '$date1 00:00' and '$date2 23:59'"; $query = $db->query($sql); $results = $query->getResultArray(); // === Variabel counter === $CPending = 0; $CPColl = 0; $CColl = 0; $CPRecv = 0; $CRecv = 0; $CInc = 0; $CPenV = 0; $CFin = 0; $CFinV = 0; $dataList = []; foreach ($results as $row) { $reqdate = ''; if (!empty($row['REQDATE'])) { $reqdate = date('Y-m-d H:i', strtotime($row['REQDATE'])); } $patname = $row['Name'] ?? ''; $sp_accessnumber = $row['SP_ACCESSNUMBER'] ?? ''; $hostordernumber = $row['HOSTORDERNUMBER'] ?? ''; $stats = $row['STATS'] ?? ''; $tests = $row['TESTS'] ?? ''; $isDelete = $row['ISDELETE'] ?? 0; // Bersihkan test string $test = str_replace(['(', ')', ',', 'FA'], '', $tests); if (!is_numeric($test) && $isDelete == 0) { switch ($stats) { case 'Pend': $statscode = 1; $CPending++; break; case 'PartColl':$statscode = 2; $CPColl++; break; case 'Coll': $statscode = 3; $CColl++; break; case 'PartRecv':$statscode = 4; $CPRecv++; break; case 'Recv': $statscode = 5; $CRecv++; break; case 'Inc': $statscode = 6; $CInc++; break; case 'PenV': $statscode = 7; $CPenV++; break; case 'Fin': $statscode = 8; $CFin++; break; case 'FinV': $statscode = 9; $CFinV++; break; default: $statscode = 0; break; } // Simpan ke array $dataList[] = [ 'statscode' => $statscode, 'reqdate' => $reqdate, 'patname' => $patname, 'sp_accessnumber' => $sp_accessnumber, 'hostordernumber' => $hostordernumber, 'reff' => $row['REFF'] ?? '', 'doc' => $row['DOC'] ?? '', 'tests' => $row['TESTS'] ?? '', 'stats' => $stats, 'odr_cresult_to' => $row['ODR_CRESULT_TO'], 'isprinted'=> $row['ODR_ISPRINTED'] ?? 0, 'ispending'=> $row['ODR_ISPENDING'] ?? 0, 'ishardcopy'=> $row['ODR_NFLAGHARDCOPY'] ?? 0, 'isval' => $row['ISVAL'] ?? 0, 'isdelete' => $isDelete, ]; } } // === Total counter === $counter = [ 'pending' => $CPending, 'partialCollected' => $CPColl, 'collected' => $CColl, 'partialReceived' => $CPRecv, 'received' => $CRecv, 'incomplete' => $CInc, 'pendingValidation' => $CPenV, 'final' => $CFin, 'finalValidation' => $CFinV, ]; $data['dataList'] = $dataList; $data['counter'] = $counter; $data['date1'] = $date1; $data['date2'] = $date2; // dd($results); return view('admin/index', $data); } // Khusus Untuk API public function specimenDetailApi() { $access = $this->request->getGet('access'); $db = \Config\Database::connect(); $sql = "SELECT right(p.PATNUMBER,16) as [Rm], ISNULL(p.FIRSTNAME,'') + ' ' + ISNULL(p.NAME,'') as [Name], case when format(p.BIRTHDATE,'MMdd')=format(spr.COLLECTIONDATE,'MMdd') then DATEDIFF(YEAR,p.BIRTHDATE, spr.COLLECTIONDATE) else FLOOR(DATEDIFF(DAY, p.BIRTHDATE, spr.COLLECTIONDATE) / 365.25) end , [Gender] = case when p.SEX = 1 then 'Male' when p.SEX = 2 then 'Female' else '' end, spr.REQDATE, spo.COMMENTTEXT, dmg.DMG_CKTPNO, dmg.DMG_CPLACEOFBIRTH from SP_REQUESTS spr left join PATIENTS p on p.PATID=spr.PATID left join SP_REQUESTS_OCOM spo on spr.SP_ACCESSNUMBER=spo.SP_ACCESSNUMBER left join GDC_CMOD.dbo.TDL_DEMOGRAPHIC dmg on right(dmg.DMG_CPATNUMBER,15)=right(p.PATNUMBER,15) where spr.PATID=p.PATID and spr.SP_ACCESSNUMBER='$access'"; $query = $db->query($sql); $results = $query->getRowArray(); $patientIdentity = [ 'rm' => $results["Rm"], 'age' => $results[""], // key kosong 'name' => $results['Name'] ?? '', 'reqdate' => $results['REQDATE'] ?? '', 'gender' => $results['Gender'] ?? '', 'placeofbirth' => $results['DMG_CPLACEOFBIRTH'] ?? '', 'ktp' => $results['DMG_CKTPNO'] ?? '', 'comment' => $results['COMMENTTEXT'] ?? '', ]; $samples = []; $sql = "SELECT req.SAMPTYPEID, req.SAMPCODE, req.SHORTTEXT, tu.STATUS, st.TUBESTATUS from GDC_CMOD.dbo.v_sp_reqtube req left join GDC_CMOD.dbo.TUBES tu on req.SP_ACCESSNUMBER=tu.ACCESSNUMBER and req.SAMPCODE=tu.TUBENUMBER left join glendb.dbo.SP_TUBES st on st.SP_ACCESSNUMBER=req.SP_ACCESSNUMBER and req.SAMPCODE=st.SAMPLETYPE where req.SP_ACCESSNUMBER='$access'"; $query = $db->query($sql); $results = $query->getResultArray(); foreach ($results as $row) { $samples[] = [ 'samptypeid' => $row['SAMPTYPEID'] ?? null, 'sampcode' => $row['SAMPCODE'] ?? null, 'name' => $row['SHORTTEXT'] ?? '', 'colstatus' => $row['STATUS'] ?? '', 'tubestatus' => $row['TUBESTATUS'] ?? '', ]; } $data = ['patientIdentity' => $patientIdentity, 'samples' => $samples]; return $this->response->setJSON($data); } }