From 11111aeed3f7188011bcba6909e27f87a974eb7f Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Tue, 18 Nov 2025 16:20:31 +0700 Subject: [PATCH] add label creation --- app/Config/Routes.php | 3 + app/Controllers/Label.php | 152 +++++++++++++++++++++++++++++ app/Controllers/Specimen.php | 2 +- app/Views/admin/index.php | 2 +- app/Views/admin/modal_specimen.php | 40 +++++--- public/file.txt | 84 ++++++++++++++++ 6 files changed, 270 insertions(+), 13 deletions(-) create mode 100644 app/Controllers/Label.php create mode 100644 public/file.txt diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 67e60bd..4dc1cc0 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -17,6 +17,9 @@ $routes->match(['get','post'],'/login', 'Auth::login', ['filter' => 'guest']); $routes->get('/logout', 'Auth::logout'); $routes->get('result/(:any)', 'Result::show/$1'); +$routes->get('label/coll/(:any)', 'Label::coll/$1'); +$routes->get('label/dispatch/(:any)/(:any)', 'Label::dispatch/$1/$2'); +$routes->get('label/all/(:any)', 'Label::print_all/$1'); // ------------------------------------------------------Page Based on Role------------------------------------------------------ // $routes->group('admin', ['filter' => 'role:1'], function($routes) { $routes->get('/', 'Admin::index'); diff --git a/app/Controllers/Label.php b/app/Controllers/Label.php new file mode 100644 index 0000000..fe4fa73 --- /dev/null +++ b/app/Controllers/Label.php @@ -0,0 +1,152 @@ + 0 then ( + case + when format(p.BIRTHDATE,'MMdd')=format(spr.COLLECTIONDATE,'MMdd') then cast(DATEDIFF(YEAR,p.BIRTHDATE, spr.COLLECTIONDATE) as varchar) + 'Y' + else cast( DATEDIFF(hour,p.BIRTHDATE, spr.COLLECTIONDATE)/8766 as varchar) + 'Y' end + ) + when month(spr.COLLECTIONDATE) - month(p.BIRTHDATE) > 0 then cast( DATEDIFF(MM,p.BIRTHDATE,spr.COLLECTIONDATE) as varchar) + 'M' + else cast ( floor ( ( day(spr.COLLECTIONDATE) - day(p.BIRTHDATE) ) / 7) as varchar ) + 'W' + end, + [Gender] = case + when p.SEX = 1 then 'M' + when p.SEX = 2 then 'F' + else '' + end, + spr.HOSTORDERNUMBER + from SP_REQUESTS spr + left join PATIENTS p on spr.PATID=p.PATID + left join DICT_TEXTS tx on tx.TEXTID=p.TITLEID + where spr.SP_ACCESSNUMBER='$reqnum'"; + $rows = $db->query($sql)->getResultArray(); + //print_r($rows); + $row = $rows[0]; + $patnum = $row['PATNUMBER']; + $patnum = substr($patnum,14); + //$patnum = str_pad(substr($row[0],5),17," "); + $patname = $row['Name']; + $dob = $row['dob']; + $age = $row['age']; + $sex = $row['Gender']; + $hospnum = $row['HOSTORDERNUMBER']; + $date = date("d/M/Y H:i"); + $bar = "[ +N +OD +q400 +Q224,24+0 +I8,A,001 +D10 +A10,3,0,3,1,1,N,\"$patname\" +A10,27,0,2,1,1,N,\"$sex $dob $age\" +A225,27,0,3,1,1,N,\"$reqnum\" +B120,50,0,1,2,8,90,N,\"$reqnum\" +A80,150,0,2,2,1,N,\"$hospnum\" +A10,195,0,1,1,1,N,\"HIS : $hospnum\" +A190,190,0,2,1,1,N,\"$date\" +P1\n]"; + + $handle = fopen("./file.txt","a+"); + fwrite($handle,$bar); + fclose($handle); + /*exec($command);*/ + + } + + public function dispatch($reqnum, $samid) { + $db = \Config\Database::connect(); + $sql = "select p.PATNUMBER, + [Name] = case + when p.TITLEID is not null then ISNULL(p.FIRSTNAME,'') + ' ' + ISNULL(p.NAME,'') + ', ' + tx.SHORTTEXT + else ISNULL(p.FIRSTNAME,'') + ' ' + ISNULL(p.NAME,'') + end, + format(p.BIRTHDATE,'dd/MMM/yyyy') as dob, + age = case + when year(spr.COLLECTIONDATE) - year(p.BIRTHDATE) > 0 then ( + case + when format(p.BIRTHDATE,'MMdd')=format(spr.COLLECTIONDATE,'MMdd') then cast(DATEDIFF(YEAR,p.BIRTHDATE, spr.COLLECTIONDATE) as varchar) + 'Y' + else cast( DATEDIFF(hour,p.BIRTHDATE, spr.COLLECTIONDATE)/8766 as varchar) + 'Y' end + ) + when month(spr.COLLECTIONDATE) - month(p.BIRTHDATE) > 0 then cast( DATEDIFF(MM,p.BIRTHDATE,spr.COLLECTIONDATE) as varchar) + 'M' + else cast ( floor ( ( day(spr.COLLECTIONDATE) - day(p.BIRTHDATE) ) / 7) as varchar ) + 'W' + end, + [Gender] = case + when p.SEX = 1 then 'M' + when p.SEX = 2 then 'F' + else '' + end, + spr.HOSTORDERNUMBER + from SP_REQUESTS spr + left join PATIENTS p on spr.PATID=p.PATID + left join DICT_TEXTS tx on tx.TEXTID=p.TITLEID + where spr.SP_ACCESSNUMBER='$reqnum'"; + + $rows = $db->query($sql)->getResultArray(); + $row = $rows[0]; + $patnum = $row['PATNUMBER']; + $patnum = substr($patnum,14); + $patname = $row['Name']; + $age = $row['age']; + $sex = $row['Gender']; + $hospnum = $row['HOSTORDERNUMBER']; + + $sql = "select SAMPCODE, SHORTTEXT, TESTS, TESTS1 from GDC_CMOD.dbo.v_sp_reqtube where SP_ACCESSNUMBER='$reqnum' and SAMPCODE='$samid'"; + $rows = $db->query($sql)->getResultArray(); + $row = $rows[0]; + $sampcode = $row['SAMPCODE']; + $samptext = $row['SHORTTEXT']; + $tests = $row['TESTS']; + $tests1 = $row['TESTS1']; + if($tests == '') {$tests = $tests1;} + $tubeid = $sampcode.substr("$reqnum",5,5); + $date = date("d/M/Y H:i"); + +$bar = "[ +N +OD +q400 +Q224,24+0 +I8,A,001 +D10 +A10,3,0,3,1,1,N,\"$patname \" +A10,27,0,2,1,1,N,\"$sex $age\" +B130,50,0,1,2,8,90,N,\"$tubeid\" +A380,27,5,3,1,1,N,\"$tubeid\" +A10,80,0,2,1,2,R,\"$samptext\" +A10,150,0,2,1,1,N,\"$tests\" +A10,180,0,1,1,1,N,\"LIS : $reqnum\" +A10,195,0,1,1,1,N,\"HIS : $hospnum\" +A190,190,0,2,1,1,N,\"$date\" +P1 +]"; + + $handle = fopen("./file.txt","a+"); + fwrite($handle,$bar); + fclose($handle); + //exec($command); + + } + + public function print_all($accessnumber) { + $db = \Config\Database::connect(); + $this->coll($accessnumber); + $sql = "select SAMPCODE from GDC_CMOD.dbo.v_sp_reqtube where SP_ACCESSNUMBER='$accessnumber'"; + $rows = $db->query($sql)->getResultArray(); + foreach($rows as $row) { + $sampcode = $row['SAMPCODE']; + $this->dispatch($accessnumber, $sampcode); + } + } +} diff --git a/app/Controllers/Specimen.php b/app/Controllers/Specimen.php index 34b665d..3722eac 100644 --- a/app/Controllers/Specimen.php +++ b/app/Controllers/Specimen.php @@ -49,7 +49,7 @@ class Specimen extends BaseController { ]; } - $data = ['patientIdentity' => $patientIdentity, 'samples' => $samples]; + $data = ['patientIdentity' => $patientIdentity, 'samples' => $samples, 'accessnumber' => $access]; return $this->response->setJSON($data); } diff --git a/app/Views/admin/index.php b/app/Views/admin/index.php index 3d965f1..0f408a1 100644 --- a/app/Views/admin/index.php +++ b/app/Views/admin/index.php @@ -132,7 +132,7 @@