broken commit dont use, only to remove .env

This commit is contained in:
mahdahar 2025-06-09 16:37:05 +07:00
parent fe8a4dc61c
commit 7bfd0f999c
6 changed files with 91 additions and 274 deletions

82
.env
View File

@ -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

2
.gitignore vendored
View File

@ -41,7 +41,7 @@ $RECYCLE.BIN/
#------------------------- #-------------------------
# These should never be under version control, # These should never be under version control,
# as it poses a security risk. # as it poses a security risk.
#.env .env
.vagrant .vagrant
Vagrantfile Vagrantfile

View File

@ -1,68 +1,11 @@
# CodeIgniter 4 Application Starter buat rule cmod-rest
-order baru
## What is CodeIgniter? -klo ref baru > ok
-klo ref dan mr+nama sama -> ok
CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. -klo ref sama cek mr dan nama beda di lis -> (kirim error balik)
More information can be found at the [official site](https://codeigniter.com). -order tambahan
-ref sama , cek mr dan nama pasien harus sama + status receive di lis = 0 > ok
This repository holds a composer-installable app starter. -kalo mr dan nama beda atau receive = 1 -> tolak (kirim error balik)
It has been built from the -order cancel
[development repository](https://github.com/codeigniter4/CodeIgniter4). -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
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

View File

@ -6,8 +6,8 @@ use CodeIgniter\Router\RouteCollection;
* @var RouteCollection $routes * @var RouteCollection $routes
*/ */
$routes->get('/', 'Pages::home'); $routes->get('/', 'Pages::home');
$routes->get('/loginsby', 'Auths::loginSBY'); //$routes->get('/loginsby', 'Auths::loginSBY');
$routes->get('/logindps', 'Auths::loginDPS'); //$routes->get('/logindps', 'Auths::loginDPS');
//$routes->get('/tests', 'Auths::tests'); //$routes->get('/tests', 'Auths::tests');
$routes->post('/api/requests/', 'API_TM::requests'); $routes->post('/api/requests/', 'API_TM::requests');
$routes->post('/api/requests1/', 'API_TM::requests1'); $routes->post('/api/requests1/', 'API_TM::requests1');

View File

@ -76,8 +76,8 @@ class API_TM extends ResourceController {
// log to cm_tm_logs // log to cm_tm_logs
$data = str_replace("'","''",json_encode($raw)); $data = str_replace("'","''",json_encode($raw));
$sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (URL, METHOD, BODY, LOGDATE) VALUES ('API/REQUESTS', 'POST', '$data', GETDATE())"; //$sql = "INSERT INTO cmod.dbo.CM_TM_LOGS (URL, METHOD, BODY, LOGDATE) VALUES ('API/REQUESTS', 'POST', '$data', GETDATE())";
$db->query($sql); //$db->query($sql);
$data = array(); $data = array();
$qdata = (array)$raw; $qdata = (array)$raw;
@ -113,10 +113,49 @@ class API_TM extends ResourceController {
$qant = (array)$qpat['anthropometry']; $qant = (array)$qpat['anthropometry'];
$bw = $qant['weight']; $bw = $qant['weight'];
$bh = $qant['height']; $bh = $qant['height'];
$sql = "select PATID from cmod.dbo.CM_TM_PATIENTS where PATNUMBER='$rm'"; $sql = "select PATID from cmod.dbo.CM_TM_PATIENTS where PATNUMBER='$rm'";
$query = $db->query($sql); $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<br/>$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])) { 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' )"; $sql = "INSERT INTO cmod.dbo.CM_TM_PATIENTS (PATNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, SEX, PHONE ) VALUES ('$rm', '$firstname', '$lastname', '$dob', '$sex', '$phone' )";
$db->query($sql); $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'"; $sql = "UPDATE cmod.dbo.CM_TM_PATIENTS SET FIRSTNAME='$firstname', LASTNAME='$lastname', BIRTHDATE='$dob', SEX='$sex', PHONE='$phone' where PATID='$patid'";
$db->query($sql); $db->query($sql);
} }
//echo "$reffid";
$sql = "select REQID from cmod.dbo.CM_TM_REQUESTS where REFFID='$reffid'"; $sql = "select REQID from cmod.dbo.CM_TM_REQUESTS where REFFID='$reffid'";
$query = $db->query($sql); $query = $db->query($sql);
@ -173,6 +211,7 @@ class API_TM extends ResourceController {
$this->orm($reqid); $this->orm($reqid);
return $this->respond(201); return $this->respond(201);
*/
} }
public function orm($reqid) { public function orm($reqid) {
@ -252,12 +291,12 @@ class API_TM extends ResourceController {
public function create_result_json($accessnumber) { public function create_result_json($accessnumber) {
$db = \Config\Database::connect(); $db = \Config\Database::connect();
$sql = "select r.HOSTORDERNUMBER, r.SP_HOSPNUMBER, cr.REQNUMBER, cr.LOC, cr.COMPANY, cr.AGENT, cr.VISITDESC, cr.VISITTYPE, $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 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 from SP_REQUESTS r
left join cmod.dbo.CM_TM_REQUESTS cr on cr.REFFID=r.HOSTORDERNUMBER left join cmod.dbo.CM_TM_REQUESTS cr on cr.REFFID=r.HOSTORDERNUMBER
left join PATIENTS p on p.PATID=r.PATID left join PATIENTS p on p.PATID=r.PATID
left join cmod.dbo.CM_TM_PATIENTS cp on cp.PATNUMBER=right(p.PATNUMBER,8) left join cmod.dbo.CM_TM_PATIENTS cp on cp.PATNUMBER=right(p.PATNUMBER,8)
where r.SP_ACCESSNUMBER='$accessnumber'"; where r.SP_ACCESSNUMBER='$accessnumber'";
$query = $db->query($sql); $query = $db->query($sql);
$results = $query->getResultArray(); $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, $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, 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, 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, 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 tub.TUBENAME, cr.REFRANGE, dt.TESTCODE, t.TESTORDER, dt.UNITS, cr.RESDATE, cr.USERVAL, u.USERNAME
from REQUESTS r from REQUESTS r
left join TESTS t on t.REQUESTID = r.REQUESTID 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_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_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_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_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 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_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_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_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_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_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 cmod.dbo.CM_DICT_TUBES tub on tub.TUBEID=m.TUBEID
left join USERS u on u.USERINITIALS=cr.USERVAL left join USERS u on u.USERINITIALS=cr.USERVAL
where r.ACCESSNUMBER='$accessnumber' and t.NOTPRINTABLE is null ORDER BY t.TESTORDER"; where r.ACCESSNUMBER='$accessnumber' and t.NOTPRINTABLE is null ORDER BY t.TESTORDER";
$query = $db->query($sql); $query = $db->query($sql);
$test_results = $query->getResultArray(); $test_results = $query->getResultArray();
$d0=-1; $d1=-1; $d2=-1; $d3=-1; $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, $sql = "SELECT ds.SHORTTEXT,
FORMAT(tu.COLLECTIONDATE, 'dd-MM-yyyy') AS RECVDATE, FORMAT(tu.COLLECTIONDATE, 'dd-MM-yyyy') AS RECVDATE,
FORMAT(tu.COLLECTIONDATE, 'HH:mm') AS RECVTIME, FORMAT(tu.COLLECTIONDATE, 'HH:mm') AS RECVTIME,
FORMAT(ct.COLLECTIONDATE, 'dd-MM-yyyy') AS COLLDATE, FORMAT(ct.COLLECTIONDATE, 'dd-MM-yyyy') AS COLLDATE,
FORMAT(ct.COLLECTIONDATE, 'HH:mm') AS COLLTIME FORMAT(ct.COLLECTIONDATE, 'HH:mm') AS COLLTIME
FROM SP_TUBES tu FROM SP_TUBES tu
LEFT JOIN DICT_SAMPLES_TYPES ds ON ds.SAMPCODE = tu.SAMPLETYPE 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 LEFT JOIN cmod.dbo.CM_TUBES ct ON ct.SAMPLETYPE = tu.SAMPLETYPE AND ct.ACCESSNUMBER = tu.SP_ACCESSNUMBER
WHERE tu.SP_ACCESSNUMBER = '$accessnumber';"; WHERE tu.SP_ACCESSNUMBER = '$accessnumber';";
$query = $db->query($sql); $query = $db->query($sql);
$samples = $query->getResultArray(); $samples = $query->getResultArray();
foreach ($samples as $data) { foreach ($samples as $data) {

View File

@ -1,83 +0,0 @@
<?php
namespace App\Controllers;
class Auths extends BaseController {
public function loginDPS() {
$file = "tokens/pbmc_dps.txt";
//$TM_url = "https://staging-eklinik.pbmcgroup.com/api/token/create";
$TM_url = "http://10.10.12.90:8001/api/token/create";
$secret = "o7lf5DUxSuPKtDjlbqc2VuZD9WjQ5qAZ";
$header = [ 'typ' => '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 . "<br/>";
}
} else {
print_r($response);
}
} catch (\Exception $e) {
echo "Error: " . $e->getMessage();
}
}
}