From e7a05b176cae565379fcd03b49f7d815821a48e3 Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Thu, 16 Jan 2025 11:01:27 +0700 Subject: [PATCH] taken to istaken --- app/Config/Routes.php | 1 + app/Controllers/API.php | 125 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 116 insertions(+), 10 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 090b54e..f50e609 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -7,3 +7,4 @@ use CodeIgniter\Router\RouteCollection; */ $routes->get('/', 'Pages::home'); $routes->post('/api/requests/', 'API::requests'); +$routes->get('/api/results/(:any)', 'API::results/$1'); diff --git a/app/Controllers/API.php b/app/Controllers/API.php index d844542..b9e985d 100644 --- a/app/Controllers/API.php +++ b/app/Controllers/API.php @@ -46,10 +46,10 @@ class API extends ResourceController { $visitdt = $qpat['visit_date_time']; $agent = $qpat['agent']; $agentname = $qpat['agent_name']; - $doc = $qpat['treating_doctor']; $visittype = $qpat['visit_type']; $company_name = $qdata['company_name']; - $loc = $qdata['branch']; + $loc = $qdata['branch']; + $doc = $qpat['treating_doctor']; $utcdt = $qdata['created']; $data['created'] = $utcdt; $time = Time::createFromFormat('Y-m-d\TH:i:s.u\Z', $utcdt, 'UTC'); @@ -60,7 +60,7 @@ class API extends ResourceController { $query = $db->query($sql); $results = $query->getResultArray(); if(!isset($results[0])) { - $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDESC, REQTYPE, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, TAKEN) VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$orderdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', null )"; + $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDESC, REQTYPE, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, ISTAKEN) VALUES ('$reffid', '$visitnum', '$visitdesc', '$visittype', '$orderdt', '$agentname', '$doc', '$loc', '$patid', '$company_name', null )"; $db->query($sql); $reqid = $db->insertID(); } else { @@ -75,20 +75,24 @@ class API extends ResourceController { foreach($tests as $test) { $testcode = $test['service_id']; $testreffid = $test['test_ref_id']; - $string .= "( '$testreffid', '$reqid', '$testcode' ),"; + if(isset($test['status'])) { $teststatus = $test['status'];} + else { $teststatus = ''; } + $string .= "( '$testreffid', '$reqid', '$testcode', '$teststatus' ),"; } $string = rtrim($string, ','); //$sql = "INSERT INTO cmod.dbo.CM_TM_TESTS(REFFID, REQID, HISCODE) VALUES $string"; - $sql = "INSERT INTO cmod.dbo.CM_TM_TESTS (REFFID, REQID, HISCODE) - SELECT S.REFFID, S.REQID, S.HISCODE FROM ( VALUES $string ) AS S (REFFID, REQID, HISCODE) + $sql = "INSERT INTO cmod.dbo.CM_TM_TESTS (REFFID, REQID, HISCODE, TESTSTATUS) + SELECT S.REFFID, S.REQID, S.HISCODE, S.TESTSTATUS FROM ( VALUES $string ) AS S (REFFID, REQID, HISCODE, TESTSTATUS) WHERE NOT EXISTS ( SELECT 1 FROM cmod.dbo.CM_TM_TESTS T WHERE T.REQID = S.REQID AND T.HISCODE = S.HISCODE );"; $db->query($sql); - $sql = "DELETE T FROM cmod.dbo.CM_TM_TESTS T - LEFT JOIN ( VALUES $string ) AS S (REFFID, REQID, HISCODE) - ON T.REQID = S.REQID AND T.HISCODE = S.HISCODE - WHERE S.REQID IS NULL;"; + + $sql = "UPDATE cmod.dbo.CM_TM_TESTS SET TESTSTATUS = S.TESTSTATUS + FROM cmod.dbo.CM_TM_TESTS T + INNER JOIN ( VALUES $string ) AS S (REFFID, REQID, HISCODE, TESTSTATUS) + ON T.REQID = S.REQID AND T.HISCODE = S.HISCODE;"; $db->query($sql); + return $this->respond(201); /* if( $db->query($sql) ) { @@ -102,4 +106,105 @@ class API extends ResourceController { */ } + public function results($accessnumber) { + $db = \Config\Database::connect(); + + // $sql = "select HOSTORDERNUMBER as HISNO from SP_REQUESTS where SP_ACCESSNUMBER='$accessnumber'"; + // $query = $db->query($sql); + // $results = $query->getResultArray(); + // $data['LISNO'] = $accessnumber; + // $hisno = $results[0]['HISNO']; + // $sql = "select TESTCODE, TESTORDER, RESTYPE, RESVALUE, RESFLAG, UNIT, REFRANGE, USERVAL, RESDATE + // from cmod.dbo.CM_RESULTS r + // where ACCESSNUMBER='$accessnumber' + // order by TESTORDER"; + // $query = $db->query($sql); + // $results = $query->getResultArray(); + + $sql = "SELECT sp.HOSTORDERNUMBER, hiso.LOC, hiso.PAYERNAME + FROM dbo.SP_REQUESTS sp + LEFT JOIN cmod.dbo.CM_HIS_ORDERS hiso ON hiso.VISITNUMBER = sp.HOSTORDERNUMBER + WHERE SP_ACCESSNUMBER = '$accessnumber'"; + $query = $db->query($sql); + $results = $query->getResultArray(); + + $location = $results[0]['LOC'] == null ? 'PBMC Bali' : 'PBMC Surabaya'; + $payer_name = $results[0]['PAYERNAME'] == null ? '' : $results[0]['PAYERNAME']; + + $sql = "select + dc.CHAPID, + dc.FULLTEXT as chap_eng, + dc.FULLTEXT as chap_ind, + st.FULLTEXT as serum_type, + cdt.TEXT1 as test_eng, + cdt.TEXT2 as test_ind, + cdt.UNIT as UNITTEXT, + cdt.REFFTEXT, + t.DEPTH as text_depth, + t.NOTPRINTABLE, + t.TESTORDER, + t.RESTYPE as code_type, + t.VALIDATIONINITIALS as validator, + dt.SHORTTEXT, + RESULT = case when t.RESVALUE is null then tx.FULLTEXT else t.RESVALUE end, + cr.* + from REQUESTS r + left join TESTS t on t.REQUESTID = r.REQUESTID + left join DICT_TESTS dt on dt.ENDVALIDDATE is null and t.TESTID=dt.TESTID + left join DICT_TEXTS tx on tx.TEXTID=t.CODEDRESULTID + left join DICT_CHAPTERS dc on dc.CHAPID=dt.CHAPID and dc.ENDVALIDDATE is null + left join DICT_TEST_SAMPLES ts on ts.TESTID=t.TESTID and dt.TESTID=ts.TESTID + left join DICT_SAMPLES_TYPES st on st.SAMPTYPEID=ts.SAMPTYPEID + left join cmod.dbo.CM_DICT_TESTS cdt on dt.TESTCODE=cdt.TESTCODE + left join cmod.dbo.CM_RESULTS cr on cr.ACCESSNUMBER=r.ACCESSNUMBER and cr.TESTCODE=cdt.TESTCODE and cr.TESTCODE=dt.TESTCODE + where r.ACCESSNUMBER='$accessnumber' + ORDER BY t.TESTORDER"; + $query = $db->query($sql); + $test_results = $query->getResultArray(); + + // $uuid24 = $this->generateUUID24(); + $response = [ + "headers" => [ + "Content-Type" => "application/json", + "Authorization" => "Transmedic api key" + ], + "data" => [ + "reference_id" => "", + "created" => "2024-10-19T02:11:06.424654Z", + "company_name" => $payer_name, + "branch" => $location, + "test_results" => [] + ] + ]; + + // Digunakan Untuk Hasil test + foreach ($test_results as $result) { + + // var_dump($result);die(); + + if ($result['text_depth'] == 0) { + // $uuid32 = $this->generateUUID32(); + $uuid24 = $this->generateUUID24(); + + $data = [ + "test_ref_id"=> $uuid24, + "service_id"=> "", + "service_name"=> $result['test_eng'], + "test_medium"=> $result['serum_type'], + "test_container"=> "", + "chapter_type"=> $result['chap_eng'], + "test_summary"=> "", + "status"=> "", + ]; + + array_push($response['data']['test_results'], $data); + } + + + } + + + return $this->respond($response,200); + } + }