From 7bfd0f999c1dee59827b4d386a5017eb46304f0c Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Mon, 9 Jun 2025 16:37:05 +0700 Subject: [PATCH] broken commit dont use, only to remove .env --- .env | 82 -------------------------- .gitignore | 2 +- README.md | 79 ++++--------------------- app/Config/Routes.php | 4 +- app/Controllers/API_TM.php | 115 +++++++++++++++++++++++++------------ app/Controllers/Auths.php | 83 -------------------------- 6 files changed, 91 insertions(+), 274 deletions(-) delete mode 100644 .env delete mode 100644 app/Controllers/Auths.php diff --git a/.env b/.env deleted file mode 100644 index e9adcde..0000000 --- a/.env +++ /dev/null @@ -1,82 +0,0 @@ -#-------------------------------------------------------------------- -# Example Environment Configuration file -# -# This file can be used as a starting point for your own -# custom .env files, and contains most of the possible settings -# available in a default install. -# -# By default, all of the settings are commented out. If you want -# to override the setting, you must un-comment it by removing the '#' -# at the beginning of the line. -#-------------------------------------------------------------------- - -#-------------------------------------------------------------------- -# ENVIRONMENT -#-------------------------------------------------------------------- - -#CI_ENVIRONMENT = production -CI_ENVIRONMENT = development - -#-------------------------------------------------------------------- -# APP -#-------------------------------------------------------------------- - -# app.baseURL = '' -app.baseURL = 'http://rest.local/' -#app.baseURL = 'http://pbmc-dev.services-summit.my.id/' -# If you have trouble with `.`, you could also use `_`. -# app_baseURL = '' -# app.forceGlobalSecureRequests = false -# app.CSPEnabled = false - -#-------------------------------------------------------------------- -# DATABASE -#-------------------------------------------------------------------- - -# database.default.hostname = localhost -# database.default.database = ci4 -# database.default.username = root -# database.default.password = root -# database.default.DBDriver = MySQLi -# database.default.DBPrefix = -# database.default.port = 3306 - -# If you use MySQLi as tests, first update the values of Config\Database::$tests. -# database.tests.hostname = localhost -# database.tests.database = ci4_test -# database.tests.username = root -# database.tests.password = root -# database.tests.DBDriver = MySQLi -# database.tests.DBPrefix = -# database.tests.charset = utf8mb4 -# database.tests.DBCollat = utf8mb4_general_ci -# database.tests.port = 3306 - -database.default.hostname = localhost -database.default.database = PADMA -database.default.username = sa -database.default.password = SQLadmin2024 -database.default.DBDriver = SQLSRV -database.default.encrypt = false -#database.default.DBPrefix = -database.default.pconnect = false -database.default.port = 1433 - -#-------------------------------------------------------------------- -# ENCRYPTION -#-------------------------------------------------------------------- - -# encryption.key = - -#-------------------------------------------------------------------- -# SESSION -#-------------------------------------------------------------------- - -# session.driver = 'CodeIgniter\Session\Handlers\FileHandler' -# session.savePath = null - -#-------------------------------------------------------------------- -# LOGGER -#-------------------------------------------------------------------- - -# logger.threshold = 4 diff --git a/.gitignore b/.gitignore index a044545..e24e7ce 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,7 @@ $RECYCLE.BIN/ #------------------------- # These should never be under version control, # as it poses a security risk. -#.env +.env .vagrant Vagrantfile diff --git a/README.md b/README.md index d14b4c9..a79bea8 100644 --- a/README.md +++ b/README.md @@ -1,68 +1,11 @@ -# CodeIgniter 4 Application Starter - -## What is CodeIgniter? - -CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. -More information can be found at the [official site](https://codeigniter.com). - -This repository holds a composer-installable app starter. -It has been built from the -[development repository](https://github.com/codeigniter4/CodeIgniter4). - -More information about the plans for version 4 can be found in [CodeIgniter 4](https://forum.codeigniter.com/forumdisplay.php?fid=28) on the forums. - -You can read the [user guide](https://codeigniter.com/user_guide/) -corresponding to the latest version of the framework. - -## Installation & updates - -`composer create-project codeigniter4/appstarter` then `composer update` whenever -there is a new release of the framework. - -When updating, check the release notes to see if there are any changes you might need to apply -to your `app` folder. The affected files can be copied or merged from -`vendor/codeigniter4/framework/app`. - -## Setup - -Copy `env` to `.env` and tailor for your app, specifically the baseURL -and any database settings. - -## Important Change with index.php - -`index.php` is no longer in the root of the project! It has been moved inside the *public* folder, -for better security and separation of components. - -This means that you should configure your web server to "point" to your project's *public* folder, and -not to the project root. A better practice would be to configure a virtual host to point there. A poor practice would be to point your web server to the project root and expect to enter *public/...*, as the rest of your logic and the -framework are exposed. - -**Please** read the user guide for a better explanation of how CI4 works! - -## Repository Management - -We use GitHub issues, in our main repository, to track **BUGS** and to track approved **DEVELOPMENT** work packages. -We use our [forum](http://forum.codeigniter.com) to provide SUPPORT and to discuss -FEATURE REQUESTS. - -This repository is a "distribution" one, built by our release preparation script. -Problems with it can be raised on our forum, or as issues in the main repository. - -## Server Requirements - -PHP version 8.1 or higher is required, with the following extensions installed: - -- [intl](http://php.net/manual/en/intl.requirements.php) -- [mbstring](http://php.net/manual/en/mbstring.installation.php) - -> [!WARNING] -> - The end of life date for PHP 7.4 was November 28, 2022. -> - The end of life date for PHP 8.0 was November 26, 2023. -> - If you are still using PHP 7.4 or 8.0, you should upgrade immediately. -> - The end of life date for PHP 8.1 will be December 31, 2025. - -Additionally, make sure that the following extensions are enabled in your PHP: - -- json (enabled by default - don't turn it off) -- [mysqlnd](http://php.net/manual/en/mysqlnd.install.php) if you plan to use MySQL -- [libcurl](http://php.net/manual/en/curl.requirements.php) if you plan to use the HTTP\CURLRequest library +buat rule cmod-rest +-order baru +-klo ref baru > ok +-klo ref dan mr+nama sama -> ok +-klo ref sama cek mr dan nama beda di lis -> (kirim error balik) +-order tambahan +-ref sama , cek mr dan nama pasien harus sama + status receive di lis = 0 > ok +-kalo mr dan nama beda atau receive = 1 -> tolak (kirim error balik) +-order cancel +-klo ref sama status cancel=1 dan status receive di lis = 0 - ok +-klo ref sama sattus cancel=1 dan status receive di lis = 1 - tolak (kirim error balik \ No newline at end of file diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 10651a6..6567ae7 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -6,8 +6,8 @@ use CodeIgniter\Router\RouteCollection; * @var RouteCollection $routes */ $routes->get('/', 'Pages::home'); -$routes->get('/loginsby', 'Auths::loginSBY'); -$routes->get('/logindps', 'Auths::loginDPS'); +//$routes->get('/loginsby', 'Auths::loginSBY'); +//$routes->get('/logindps', 'Auths::loginDPS'); //$routes->get('/tests', 'Auths::tests'); $routes->post('/api/requests/', 'API_TM::requests'); $routes->post('/api/requests1/', 'API_TM::requests1'); diff --git a/app/Controllers/API_TM.php b/app/Controllers/API_TM.php index 6b534c2..125393b 100644 --- a/app/Controllers/API_TM.php +++ b/app/Controllers/API_TM.php @@ -76,8 +76,8 @@ class API_TM extends ResourceController { // log to cm_tm_logs $data = str_replace("'","''",json_encode($raw)); - $sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (URL, METHOD, BODY, LOGDATE) VALUES ('API/REQUESTS', 'POST', '$data', GETDATE())"; - $db->query($sql); + //$sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (URL, METHOD, BODY, LOGDATE) VALUES ('API/REQUESTS', 'POST', '$data', GETDATE())"; + //$db->query($sql); $data = array(); $qdata = (array)$raw; @@ -113,10 +113,49 @@ class API_TM extends ResourceController { $qant = (array)$qpat['anthropometry']; $bw = $qant['weight']; $bh = $qant['height']; - + $sql = "select PATID from cmod.dbo.CM_TM_PATIENTS where PATNUMBER='$rm'"; $query = $db->query($sql); - $results = $query->getResultArray(); + $result = $query->getResultArray(); + if(isset($result[0])) { $patid = $result[0]['PATID']; } + else { $patid = ''; } + + $sql = "select REQID, PATID from cmod.dbo.CM_TM_REQUESTS where REFFID='$reffid'"; + $query = $db->query($sql); + $result = $query->getResultArray(); + if(isset($result[0])) { $reqid = $result[0]['REQID']; $rpatid = $result[0]['PATID']; } + else { $reqid = ''; $rpatid = ''; } + + echo "$patid
$reqid - $rpatid"; + + // check data patient + if($patid == '') { // new patient + $sql = "INSERT INTO cmod.dbo.CM_TM_PATIENTS (PATNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, SEX, PHONE ) VALUES ('$rm', '$firstname', '$lastname', '$dob', '$sex', '$phone' )"; + //$db->query($sql); $patid = $db->insertID(); + } else { // existing patient + if($rpatid == $patid ) { // if patient is the same + $sql = "UPDATE cmod.dbo.CM_TM_PATIENTS SET FIRSTNAME='$firstname', LASTNAME='$lastname', BIRTHDATE='$dob', SEX='$sex', PHONE='$phone' where PATID='$patid'"; + //$db->query($sql); + } else { + return $this->failForbidden('Error. Invalid patient data.'); + } + } + + if($reqstatus != 1) { // reqstatus = order + if( $reqid == '' ) { // new request + $sql = "INSERT INTO cmod.dbo.CM_TM_REQUESTS (REFFID, REQNUMBER, REQDATE, AGENT, DOC, LOC, PATID, COMPANY, LOGDATE, BW, BH, VISITDESC, VISITTYPE, REQSTATUS) + VALUES ('$reffid', '$visitnum', '$visitdt', '$agentname', '$doc', '$loc', '$patid', '$company', '$createdt', '$bw', '$bh', '$visitdesc', '$visittype', '$reqstatus' )"; + //$db->query($sql); $reqid = $db->insertID(); + echo "$sql"; + } else { // existing request + $sql = "UPDATE cmod.dbo.CM_TM_REQUESTS SET REQNUMBER='$visitnum', REQDATE='$visitdt', AGENT='$agentname', DOC='$doc', LOC='$loc', PATID='$patid', + COMPANY='$company',LOGDATE='$createdt', BW='$bw', BH='$bh', VISITDESC='$visitdesc', VISITTYPE='$visittype', REQSTATUS='$reqstatus' + where REQID='$reqid'"; + //$db->query($sql); + echo "$sql"; + } + } + /* if(!isset($results[0])) { $sql = "INSERT INTO cmod.dbo.CM_TM_PATIENTS (PATNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, SEX, PHONE ) VALUES ('$rm', '$firstname', '$lastname', '$dob', '$sex', '$phone' )"; $db->query($sql); @@ -126,7 +165,6 @@ class API_TM extends ResourceController { $sql = "UPDATE cmod.dbo.CM_TM_PATIENTS SET FIRSTNAME='$firstname', LASTNAME='$lastname', BIRTHDATE='$dob', SEX='$sex', PHONE='$phone' where PATID='$patid'"; $db->query($sql); } - //echo "$reffid"; $sql = "select REQID from cmod.dbo.CM_TM_REQUESTS where REFFID='$reffid'"; $query = $db->query($sql); @@ -173,6 +211,7 @@ class API_TM extends ResourceController { $this->orm($reqid); return $this->respond(201); + */ } public function orm($reqid) { @@ -252,12 +291,12 @@ class API_TM extends ResourceController { public function create_result_json($accessnumber) { $db = \Config\Database::connect(); $sql = "select r.HOSTORDERNUMBER, r.SP_HOSPNUMBER, cr.REQNUMBER, cr.LOC, cr.COMPANY, cr.AGENT, cr.VISITDESC, cr.VISITTYPE, - p.PATNUMBER, cp.LASTNAME, cp.FIRSTNAME, p.BIRTHDATE, p.SEX, p.TELEPHON, r.COLLECTIONDATE, cr.AGENT, cr.DOC, cr.BW, cr.BH -from SP_REQUESTS r - left join cmod.dbo.CM_TM_REQUESTS cr on cr.REFFID=r.HOSTORDERNUMBER - left join PATIENTS p on p.PATID=r.PATID - left join cmod.dbo.CM_TM_PATIENTS cp on cp.PATNUMBER=right(p.PATNUMBER,8) -where r.SP_ACCESSNUMBER='$accessnumber'"; + p.PATNUMBER, cp.LASTNAME, cp.FIRSTNAME, p.BIRTHDATE, p.SEX, p.TELEPHON, r.COLLECTIONDATE, cr.AGENT, cr.DOC, cr.BW, cr.BH + from SP_REQUESTS r + left join cmod.dbo.CM_TM_REQUESTS cr on cr.REFFID=r.HOSTORDERNUMBER + left join PATIENTS p on p.PATID=r.PATID + left join cmod.dbo.CM_TM_PATIENTS cp on cp.PATNUMBER=right(p.PATNUMBER,8) + where r.SP_ACCESSNUMBER='$accessnumber'"; $query = $db->query($sql); $results = $query->getResultArray(); @@ -315,25 +354,25 @@ where r.SP_ACCESSNUMBER='$accessnumber'"; ]; $sql = "select dc.CHAPID, t.DEPTH as depth_test, 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.NOTPRINTABLE, cr.RESSTATUS, - 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, ct.REFFTESTID, m.HISCODE, m.LISCODE, - tub.TUBENAME, cr.REFRANGE, dt.TESTCODE, t.TESTORDER, dt.UNITS, cr.RESDATE, cr.USERVAL, u.USERNAME -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 and t.RESUPDDATE=cr.RESDATE -left join cmod.dbo.CM_TM_REQUESTS cq on cq.REFFID=r.EXTERNALORDERNUMBER -left join cmod.dbo.CM_TM_TESTS ct on ct.REQID=cq.REQID -left join cmod.dbo.CM_DICT_MAPPINGS m on m.LISCODE=cr.TESTCODE and m.HISCODE=ct.HISCODE -left join cmod.dbo.CM_DICT_TUBES tub on tub.TUBEID=m.TUBEID -left join USERS u on u.USERINITIALS=cr.USERVAL -where r.ACCESSNUMBER='$accessnumber' and t.NOTPRINTABLE is null ORDER BY t.TESTORDER"; + cdt.TEXT1 as test_eng, cdt.TEXT2 as test_ind, cdt.UNIT as UNITTEXT, cdt.REFFTEXT, t.NOTPRINTABLE, cr.RESSTATUS, + 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, ct.REFFTESTID, m.HISCODE, m.LISCODE, + tub.TUBENAME, cr.REFRANGE, dt.TESTCODE, t.TESTORDER, dt.UNITS, cr.RESDATE, cr.USERVAL, u.USERNAME + 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 and t.RESUPDDATE=cr.RESDATE + left join cmod.dbo.CM_TM_REQUESTS cq on cq.REFFID=r.EXTERNALORDERNUMBER + left join cmod.dbo.CM_TM_TESTS ct on ct.REQID=cq.REQID + left join cmod.dbo.CM_DICT_MAPPINGS m on m.LISCODE=cr.TESTCODE and m.HISCODE=ct.HISCODE + left join cmod.dbo.CM_DICT_TUBES tub on tub.TUBEID=m.TUBEID + left join USERS u on u.USERINITIALS=cr.USERVAL + where r.ACCESSNUMBER='$accessnumber' and t.NOTPRINTABLE is null ORDER BY t.TESTORDER"; $query = $db->query($sql); $test_results = $query->getResultArray(); $d0=-1; $d1=-1; $d2=-1; $d3=-1; @@ -399,14 +438,14 @@ where r.ACCESSNUMBER='$accessnumber' and t.NOTPRINTABLE is null ORDER BY t.TESTO } $sql = "SELECT ds.SHORTTEXT, - FORMAT(tu.COLLECTIONDATE, 'dd-MM-yyyy') AS RECVDATE, - FORMAT(tu.COLLECTIONDATE, 'HH:mm') AS RECVTIME, - FORMAT(ct.COLLECTIONDATE, 'dd-MM-yyyy') AS COLLDATE, - FORMAT(ct.COLLECTIONDATE, 'HH:mm') AS COLLTIME -FROM SP_TUBES tu -LEFT JOIN DICT_SAMPLES_TYPES ds ON ds.SAMPCODE = tu.SAMPLETYPE -LEFT JOIN cmod.dbo.CM_TUBES ct ON ct.SAMPLETYPE = tu.SAMPLETYPE AND ct.ACCESSNUMBER = tu.SP_ACCESSNUMBER -WHERE tu.SP_ACCESSNUMBER = '$accessnumber';"; + FORMAT(tu.COLLECTIONDATE, 'dd-MM-yyyy') AS RECVDATE, + FORMAT(tu.COLLECTIONDATE, 'HH:mm') AS RECVTIME, + FORMAT(ct.COLLECTIONDATE, 'dd-MM-yyyy') AS COLLDATE, + FORMAT(ct.COLLECTIONDATE, 'HH:mm') AS COLLTIME + FROM SP_TUBES tu + LEFT JOIN DICT_SAMPLES_TYPES ds ON ds.SAMPCODE = tu.SAMPLETYPE + LEFT JOIN cmod.dbo.CM_TUBES ct ON ct.SAMPLETYPE = tu.SAMPLETYPE AND ct.ACCESSNUMBER = tu.SP_ACCESSNUMBER + WHERE tu.SP_ACCESSNUMBER = '$accessnumber';"; $query = $db->query($sql); $samples = $query->getResultArray(); foreach ($samples as $data) { diff --git a/app/Controllers/Auths.php b/app/Controllers/Auths.php deleted file mode 100644 index 702c6a2..0000000 --- a/app/Controllers/Auths.php +++ /dev/null @@ -1,83 +0,0 @@ - 'JWT', 'alg' => 'HS256' ]; - $payload = [ - 'iat' => time(), - 'data'=> [ - 'username'=>"pbmc_bali", - 'password'=>"J8e29XjLmDCFuQnk" - ] - ]; - $jwt = $this->createJWT($header, $payload, $secret); - $this->token2file($TM_url, $jwt, $file); - } - - public function loginSBY() { - $TM_url = "http://10.10.4.123:8001/api/token/create"; - $file = "tokens/pbmc_sby.txt"; - $secret = "o7lf5DUxSuPKtDjlbqc2VuZD9WjQ5qAZ"; - $header = [ 'typ' => 'JWT', 'alg' => 'HS256' ]; - $payload = [ - 'iat' => time(), - 'data'=> [ - 'username'=>"pbmc_surabaya", - 'password'=>"pgcWfdwX3qEt9zaC" - ] - ]; - $jwt = $this->createJWT($header, $payload, $secret); - $this->token2file($TM_url, $jwt, $file); - } - - private function base64UrlEncode($data) { - return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); - } - - private function createJWT($header, $payload, $secret) { - $encodedHeader = $this->base64UrlEncode(json_encode($header)); - $encodedPayload = $this->base64UrlEncode(json_encode($payload)); - - $signature = hash_hmac('sha256', "$encodedHeader.$encodedPayload", $secret, true); - $encodedSignature = $this->base64UrlEncode($signature); - - // Combine to create the JWT - $jwt = "$encodedHeader.$encodedPayload.$encodedSignature"; - return $jwt; - } - - private function token2file($TM_url, $jwt, $file ) { - $client = \Config\Services::curlrequest(); - try { - $response = $client->request('GET', $TM_url, [ - "headers" => [ - "AppCode" => "2", - "Accept" => "application/json", - "Authorization" => "Bearer $jwt" - ], - "body" => '', - "verify" => false - ]); - - if ($response->getStatusCode() == 200) { - $body = $response->getBody(); - $data = json_decode($body, true); - $token = $data['data']['token']; - if (file_put_contents($file, $token) !== false) { - echo "Response saved to: " . $file . "
"; - } - } else { - print_r($response); - } - } catch (\Exception $e) { - echo "Error: " . $e->getMessage(); - } - } - -} \ No newline at end of file