19) { $wordsLine2 = explode(' ', $line2); array_pop($wordsLine2); // Hapus kata terakhir $line2 = implode(' ', $wordsLine2); // Gabungkan kembali } // Kembalikan kedua baris sebagai array return ['line1' => $line1, 'line2' => $line2]; } public function labelZebraCollection($access) { $time = microtime(true); $logTime = date('d-m-Y_H_i_s', $time) . sprintf('_%03d', ($time - floor($time)) * 1000); $filename = "collection(".$access.")_".$logTime; $role = session()->get('userrole'); $networkPath = ""; $db = \Config\Database::connect(); $sql = "select p.PATNUMBER as UHID, sr.HOSTORDERNUMBER as BV, concat (p.FIRSTNAMESK, ' ', p.NAME) as NAME, p.SEX, DATEDIFF(YEAR, BirthDate, GETDATE()) - CASE WHEN MONTH(BirthDate) > MONTH(GETDATE()) OR (MONTH(BirthDate) = MONTH(GETDATE()) AND DAY(BirthDate) > DAY(GETDATE())) THEN 1 ELSE 0 END AS AGE, sr.COLLECTIONDATE, p.BIRTHDATE from SP_REQUESTS sr left join SP_REQUESTS st on sr.SP_ACCESSNUMBER=st.SP_ACCESSNUMBER left join PATIENTS p on p.PATID=sr.PATID where st.SP_ACCESSNUMBER='$access'"; $query = $db->query($sql); $results = $query->getResultArray(); $item = $results[0]; $uhid = substr($item['UHID'], -10); $bv = $item['BV']; $sex = $item['SEX'] == 1 ? "M" : "F"; $title = $item['SEX'] == 1 ? "Mr" : "Mrs"; $name = $item['NAME']; $age = $item['AGE']; $birthdate = $item['BIRTHDATE']; $date = \DateTime::createFromFormat('Y-m-d H:i:s.v', $birthdate); if ($date) { $birthdate = $date->format('d/m/Y'); } else { $birthdate = ""; } $collectiondate = $item['COLLECTIONDATE']; $date = \DateTime::createFromFormat('Y-m-d H:i:s.v', $collectiondate); if ($date) { $collectiondate = $date->format('d/m/Y H:i'); } else { $collectiondate = ""; } $fixName = $this->splitName($name); $name1 = $fixName['line1']; $name2 = $fixName['line2']; if ($sex == 'M') { $jarak = '42'; } else { $jarak = '53'; } $label = "^XA ^LH0,0 ^LL400 ^PW400 ^FO4,10^ADN,18,10^FD$title.$name1^FS ^FO$jarak,27^ADN,18,10^FD$name2^FS ^FO325,42^ADN,18,10^FD$sex {$age}Y^FS ^FO4,47^ADN,18,10^FDDoB: $birthdate^FS ^FO50,67^BY2,2,70^BCN,70,N,N^FD$access^FS ^FO110,142^ADN,18,10^FDREQ# $access^FS ^FO4,181^ADN,18,10^FDRM:$uhid^FS ^FO4,164^ADN,18,10^FDVN:$bv^FS ^FO195,181^ADN,18,10^FD$collectiondate^FS ^XZ "; $printer = $this->printerLab(); // $folder = "C:/data/"; $folder = $printer[0]; $fullPath = $folder . $filename; // Tulis file ke folder tujuan if (!file_put_contents($fullPath, $label)) { //exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var); // Eksekusi Kode Berikut Apabila Ada Error return $this->response->setJSON([ 'error' => $output, 'message' => "Gagal Melakukan Print, Mohon Ulangi Atau Cek Koneksi Printer Anda", 'status' => false, ]); } else { // Hapus Koneksi //exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var); return $this->response->setJSON( [ 'message' => "Print Berhasil!" , 'status' => true, ]); } } public function labelZebra($sample, $title, $name, $sex, $age, $barcode, $uhid, $bv, $collection_date, $birthdate) { $fixName = $this->splitName($name); $name1 = $fixName['line1']; $name2 = $fixName['line2']; if ($sex == 'M') { $jarak = '42'; } else { $jarak = '53'; } $sampleLabel = "^XA ^LH0,0 ^LL400 ^PW400 ^FO4,20^ADN,18,10^FD$title.$name1^FS ^FO$jarak,37^ADN,18,10^FD$name2^FS ^FO325,42^ADN,18,10^FD$sex {$age}Y^FS ^FO4,54^ADN,18,10^FD$sample^FS ^FO205,64^ADN,18,10^FDDoB: $birthdate^FS ^FO65,85^BY2,3,70^BCN,70,N,N^FD$barcode^FS ^FO115,160^ADN,18,10^FDSAM# $barcode^FS ^FO4,182^ADN,18,10^FDRM:$uhid^FS ^FO195,182^ADN,18,10^FD$collection_date^FS ^XZ "; return $sampleLabel; } public function printerLab() { exec('net use Y: \\\\10.0.10.30\\Labelshare /user:Administrator 2>&1', $output, $return_var); $pathNetworkFolder = 'Y:/Sampling_Labels/'; $letterPath = 'Y:'; return array($pathNetworkFolder, $letterPath); } public function printSingle($access, $sampletype) { $time = microtime(true); $logTime = date('d-m-Y_H_i_s', $time) . sprintf('_%03d', ($time - floor($time)) * 1000); $filename = "sample(".$sampletype.")_".$logTime; $role = session()->get('userrole'); $networkPath = ""; $db = \Config\Database::connect(); $sql = "select p.PATNUMBER as UHID, sr.HOSTORDERNUMBER as BV, concat (p.FIRSTNAMESK, ' ',p.NAME) as NAME, p.SEX, DATEDIFF(YEAR, BirthDate, GETDATE()) - CASE WHEN MONTH(BirthDate) > MONTH(GETDATE()) OR (MONTH(BirthDate) = MONTH(GETDATE()) AND DAY(BirthDate) > DAY(GETDATE())) THEN 1 ELSE 0 END AS AGE, ds.SHORTTEXT AS FULLTEXT, st.SAMPLETYPE+right(sr.SP_ACCESSNUMBER,5) as BARCODE, sr.COLLECTIONDATE, p.BIRTHDATE from SP_TUBES st left join SP_REQUESTS sr on st.SP_ACCESSNUMBER=sr.SP_ACCESSNUMBER left join PATIENTS p on p.PATID=sr.PATID left join DICT_SAMPLES_TYPES ds on ds.SAMPCODE=st.SAMPLETYPE where st.SP_ACCESSNUMBER='$access' AND ds.SAMPCODE = '$sampletype'"; $query = $db->query($sql); $results = $query->getResultArray(); $item = $results[0]; $uhid = substr($item['UHID'], -10); $bv = $item['BV']; $sex = $item['SEX'] == 1 ? "M" : "F"; $title = $item['SEX'] == 1 ? "Mr" : "Mrs"; $name = $item['NAME']; if ($sampletype == '200'){ $sample = 'SERUM KIMIA'; } else if ($sampletype == '250'){ $sample = 'SERUM IMUN'; } else { $sample = $item['FULLTEXT']; } $barcode = $item['BARCODE']; $age = $item['AGE']; $birthdate = $item['BIRTHDATE']; $date = \DateTime::createFromFormat('Y-m-d H:i:s.v', $birthdate); if ($date) { $birthdate = $date->format('d/m/Y'); } else { $birthdate = ""; } $collectiondate = $item['COLLECTIONDATE']; $date = \DateTime::createFromFormat('Y-m-d H:i:s.v', $collectiondate); if ($date) { $collectiondate = $date->format('d/m/Y H:i'); } else { $collectiondate = ""; } $printer = $this->printerLab(); $label = $this->labelZebra($sample, $title, $name, $sex, $age, $barcode, $uhid, $bv, $collectiondate, $birthdate); // $folder = "C:/data/"; $folder = $printer[0]; $fullPath = $folder . $filename; // Tulis file ke folder tujuan if (!file_put_contents($fullPath, $label)) { //exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var); // Eksekusi Kode Berikut Apabila Ada Error return $this->response->setJSON([ 'error' => $output, 'message' => "Gagal Melakukan Print, Mohon Ulangi Atau Cek Koneksi Printer Anda", 'status' => false, ]); } else { // Hapus Koneksi //exec('net use '. $letterPath .' /delete 2>&1', $output, $return_var); return $this->response->setJSON( [ 'message' => "Print Berhasil!" , 'status' => true, ]); } } public function printAll($access) { $db = \Config\Database::connect(); $sql = "select SAMPLETYPE from SP_TUBES where SP_ACCESSNUMBER='$access'"; $query = $db->query($sql); $results = $query->getResultArray(); foreach($results as $data) { $sample = $data['SAMPLETYPE']; $this->printSingle($access, $sample); } $this->labelZebraCollection($access); } }