diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 32d9969..67ed832 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -53,6 +53,7 @@ $routes->get('api/request/validate/(:any)', 'Request::show/$1'); $routes->post('api/request/validate/(:any)', 'Request::val/$1'); $routes->delete('api/request/validate/(:any)', 'Request::unval/$1'); $routes->get('api/request', 'Request::index'); +$routes->get('api/sample/(:any)', 'Sample::show/$1'); $routes->get('api/specimen/(:any)', 'Specimen::show/$1'); $routes->post('api/specimen/collect/(:any)', 'Specimen::collect/$1'); diff --git a/app/Controllers/Sample.php b/app/Controllers/Sample.php new file mode 100644 index 0000000..70d6a48 --- /dev/null +++ b/app/Controllers/Sample.php @@ -0,0 +1,114 @@ +query($sql); + $results = $query->getRowArray(); + $data = [ + 'patnumber' => $results["patnumber"], + 'age' => $results[""], + 'patname' => $results['Name'] ?? '', + 'reqdate' => $results['REQDATE'] ?? '', + 'gender' => $results['Gender'] ?? '', + 'placeofbirth' => $results['DMG_CPLACEOFBIRTH'] ?? '', + 'ktp' => $results['DMG_CKTPNO'] ?? '', + 'comment' => $results['COMMENTTEXT'] ?? '', + 'accessnumber' => $accessnumber, + ]; + + $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='$accessnumber'"; + $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['samples'] = $samples; + + $resp = [ 'data' => $data ]; + + return $this->response->setJSON($resp); + } + + public function collect($accessnumber) { + $db = \Config\Database::connect(); + $input = $this->request->getJSON(true); + $samplenumber = $input['samplenumber']; + $status = $input['status']; + $userid = $input['userid']; + $sql = "if not exists (select * from GDC_CMOD.dbo.TUBES where ACCESSNUMBER='$accessnumber' and TUBENUMBER='$samplenumber' and STATUS='$status') + begin + update GDC_CMOD.dbo.TUBES set USERID='$userid',STATUS='$status', COLLECTIONDATE=getdate() where ACCESSNUMBER='$accessnumber' and TUBENUMBER='$samplenumber' + end"; + $db->query($sql); + $sql = "INSERT INTO GDC_CMOD.dbo.AUDIT_TUBES(ACCESSNUMBER, TUBENUMBER, USERID, STATUS, LOGDATE) + VALUES ('$accessnumber', '$samplenumber', '$userid', '$status', getdate())"; + $db->query($sql); + return $this->respondCreated([ 'status' => 'success', 'message' => 'Data updated successfully', 'data' => "$accessnumber-$samplenumber" ], 201); + } + + public function unreceive($accessnumber) { + $db = \Config\Database::connect(); + $input = $this->request->getJSON(true); + $samplenumber = $input['samplenumber']; + // update firebird + $sql = "select r.EXTERNALORDERNUMBER, dt.TESTCODE, do.HISCODE from glendb.dbo.TESTS t + left join glendb.dbo.DICT_TESTS dt on dt.TESTID=t.TESTID + left join glendb.dbo.REQUESTS r on r.REQUESTID=t.REQUESTID + left join glendb.dbo.DICT_TEST_SAMPLES dts on dts.TESTID=t.TESTID + left join glendb.dbo.DICT_SAMPLES_TYPES ds on ds.SAMPTYPEID=dts.SAMPTYPEID + left join GDC_CMOD.dbo.DICT_TESTS_ORDER do on do.TESTCODE=dt.TESTCODE + where t.DEPTH=0 + and r.ACCESSNUMBER='$req' and ds.SAMPCODE='$samplenumber'"; + $rows = $db->query($sql)->getResultArray(); + $his_test = ''; + foreach( $rows as $row ) { + $hon = $row['EXTERNALORDERNUMBER']; + $testcode = $row['TESTCODE']; + $hiscode = $row['HISCODE']; + $his_test .= "'$hiscode',"; + $lis_test .= "'$testcode',"; + } + $his_test = rtrim($his_test,','); + $lis_test = rtrim($lis_test,','); + $conn = odbc_connect('GLENEAGLES','',''); + $sql = "UPDATE TDL_ORDERDT SET ODD_NRECEIVED=NULL , ODD_DTRECEIVE=NULL WHERE ODR_CNOLAB='$hon' and ODD_CPRODUCTCODE IN ($his_test)"; + $rs = odbc_exec($conn,$sql); + if (!$rs) {exit("Error in Update FB");} + + $sql = "update SP_TUBES set TUBESTATUS=0 where SP_ACCESSNUMBER='$accessnumber' and SAMPLETYPE='$samplenumber' "; + $db->query($sql); + $sql = "update SP_TESTS set SP_TESTSTATUS=NULL where SP_ACCESSNUMBER='$req' and SP_TESTCODE in ($lis_test)"; + $db->query($sql); + return $this->respondCreated([ 'status' => 'success', 'message' => 'Data updated successfully', 'data' => "$accessnumber-$samplenumber" ], 201); + } +} diff --git a/app/Views/v2/dialog_sample.php b/app/Views/v2/dialog_sample.php index e18a0b2..4963d01 100644 --- a/app/Views/v2/dialog_sample.php +++ b/app/Views/v2/dialog_sample.php @@ -1,15 +1,81 @@ - diff --git a/app/Views/v2/index.php b/app/Views/v2/index.php index 84d164b..706c938 100644 --- a/app/Views/v2/index.php +++ b/app/Views/v2/index.php @@ -212,11 +212,12 @@ /* sample dialog */ - item : [], + item : '', isDialogSampleOpen : false, openSampleDialog (accessnumber) { this.isDialogSampleOpen = true; + this.fetchItem(accessnumber) }, closeSampleDialog () { @@ -225,7 +226,7 @@ fetchItem(accessnumber){ this.item = []; - fetch(`${BASEURL}/api/request/${accessnumber}`, { method: 'GET', headers: {'Content-Type': 'application/json'}}) + fetch(`${BASEURL}/api/sample/${accessnumber}`, { method: 'GET', headers: {'Content-Type': 'application/json'}}) .then(res => res.json()).then(data => { this.item = data.data ?? []; });