2024-12-13 14:20:14 +07:00
|
|
|
<?php
|
|
|
|
|
namespace App\Controllers;
|
|
|
|
|
|
|
|
|
|
use CodeIgniter\RESTful\ResourceController;
|
|
|
|
|
|
2024-12-14 10:00:45 +07:00
|
|
|
class API_HISOrders extends ResourceController {
|
2024-12-13 14:20:14 +07:00
|
|
|
protected $format = 'json';
|
|
|
|
|
|
|
|
|
|
public function index() {
|
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
|
$date1 = $this->request->getPost('date1');
|
|
|
|
|
$date2 = $this->request->getPost('date2');
|
2024-12-15 14:36:57 +07:00
|
|
|
$sql = "select o.ORDERID, o.VISITNUMBER, o.VISITDATE, o.PAYERNAME, o.TREATDOC, p.PATNUMBER, p.SEX, p.PATNAME,
|
2024-12-13 14:20:14 +07:00
|
|
|
TESTS=stuff(( select ', '+t.HISCODE from
|
|
|
|
|
( select t.HISCODE from cmod.dbo.CM_HIS_TESTS t
|
2024-12-15 16:25:39 +07:00
|
|
|
where t.ORDERID=o.ORDERID and t.TESTSTATUS is null
|
2024-12-13 14:20:14 +07:00
|
|
|
) as T
|
|
|
|
|
for xml path('')),1,1,'')
|
|
|
|
|
from cmod.dbo.CM_HIS_ORDERS o
|
|
|
|
|
left join cmod.dbo.CM_HIS_PATIENTS p on p.PATID=o.PATID";
|
|
|
|
|
$query = $db->query($sql);
|
|
|
|
|
$results = $query->getResultArray();
|
|
|
|
|
$data['data'] = $results;
|
|
|
|
|
return $this->respond($data,200);
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-15 14:36:57 +07:00
|
|
|
public function detail($orderid) {
|
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
|
$sql = "select * from cmod.dbo.CM_HIS_ORDERS o where o.ORDERID='$orderid'";
|
|
|
|
|
$query = $db->query($sql);
|
|
|
|
|
$results = $query->getResultArray();
|
|
|
|
|
$data['orders'] = $results;
|
2024-12-15 16:25:39 +07:00
|
|
|
$sql = "select * from cmod.dbo.CM_HIS_TESTS where ORDERID='$orderid' and TESTSTATUS is null";
|
2024-12-15 14:36:57 +07:00
|
|
|
$query = $db->query($sql);
|
|
|
|
|
$results = $query->getResultArray();
|
|
|
|
|
$data['tests'] = $results;
|
|
|
|
|
return $this->respond($data,200);
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-13 14:20:14 +07:00
|
|
|
public function save() {
|
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
|
//Object { patid: "9", visitnumber: "9989", visitdate: "2024-12-13", treatdoc: "alam", payername: "mala", tests: (2) […] }
|
2024-12-15 14:36:57 +07:00
|
|
|
$orderid = $this->request->getPost('orderid');
|
2024-12-13 14:20:14 +07:00
|
|
|
$patid = $this->request->getPost('patid');
|
|
|
|
|
$visitnumber = $this->request->getPost('visitnumber');
|
|
|
|
|
$visitdate = $this->request->getPost('visitdate');
|
|
|
|
|
$treatdoc = $this->request->getPost('treatdoc');
|
|
|
|
|
$payername = $this->request->getPost('payername');
|
|
|
|
|
$tests = $this->request->getPost('tests');
|
|
|
|
|
|
|
|
|
|
if($orderid == '0') {
|
|
|
|
|
$sql = "INSERT INTO cmod.dbo.CM_HIS_ORDERS (PATID, VISITNUMBER, VISITDATE, TREATDOC, PAYERNAME)
|
|
|
|
|
VALUES ('$patid', '$visitnumber', '$visitdate', '$treatdoc', '$payername')";
|
|
|
|
|
} else {
|
|
|
|
|
$sql = "UPDATE cmod.dbo.CM_HIS_ORDERS set PATID='$patid', VISITNUMBER='$visitnumber', VISITDATE='$visitdate',
|
|
|
|
|
TREATDOC='$treatdoc', PAYERNAME='$payername' where ORDERID='$orderid'";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// query HIS_ORDERS
|
|
|
|
|
if( $db->query($sql) ) {
|
2024-12-15 14:36:57 +07:00
|
|
|
if($orderid == '0') { // new order
|
2024-12-13 14:20:14 +07:00
|
|
|
$orderid = $db->insertID();
|
|
|
|
|
$test = '';
|
|
|
|
|
foreach($tests as $qtest) { $test .= "('$orderid', '$qtest'),"; }
|
|
|
|
|
$test = rtrim($test, ",");
|
|
|
|
|
$sql = "INSERT into cmod.dbo.CM_HIS_TESTS(ORDERID,HISCODE) VALUES $test";
|
2024-12-15 14:36:57 +07:00
|
|
|
} else { // update
|
|
|
|
|
$test = '';
|
|
|
|
|
foreach($tests as $qtest) { $test .= "('$orderid', '$qtest'),"; }
|
|
|
|
|
$test = rtrim($test, ",");
|
|
|
|
|
$sql = "MERGE INTO cmod.dbo.CM_HIS_TESTS AS t
|
|
|
|
|
USING ( VALUES
|
|
|
|
|
$test
|
|
|
|
|
) AS s (ORDERID, HISCODE) on s.ORDERID=t.ORDERID and s.HISCODE=t.HISCODE
|
2024-12-15 16:25:39 +07:00
|
|
|
WHEN MATCHED THEN
|
|
|
|
|
UPDATE SET TESTSTATUS=null
|
2024-12-15 14:36:57 +07:00
|
|
|
WHEN NOT MATCHED BY TARGET THEN
|
|
|
|
|
INSERT (ORDERID, HISCODE)
|
|
|
|
|
VALUES (s.ORDERID, s.HISCODE)
|
|
|
|
|
WHEN NOT MATCHED BY SOURCE and t.ORDERID='$orderid' THEN
|
|
|
|
|
UPDATE SET TESTSTATUS=1;";
|
2024-12-13 14:20:14 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// done
|
|
|
|
|
if( $db->query($sql) ) {
|
2024-12-15 14:36:57 +07:00
|
|
|
return $this->respond(['message' => 'Save Success', 'sql' => $sql],201);
|
2024-12-13 14:20:14 +07:00
|
|
|
} else {
|
|
|
|
|
$response = [
|
|
|
|
|
'errors' => $db->errors(),
|
2024-12-15 14:36:57 +07:00
|
|
|
'message' => 'Query test error',
|
|
|
|
|
'sql' => $sql
|
2024-12-13 14:20:14 +07:00
|
|
|
];
|
|
|
|
|
return $this->fail($response , 409);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$response = [
|
|
|
|
|
'errors' => $db->errors(),
|
|
|
|
|
'message' => 'Query order error'
|
|
|
|
|
];
|
|
|
|
|
return $this->fail($response , 409);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-12-15 14:36:57 +07:00
|
|
|
public function resend($visitnumber) {
|
|
|
|
|
$db = \Config\Database::connect();
|
|
|
|
|
$sql = "update cmod.dbo.CM_HIS_ORDERS set ISTAKEN=null where VISITNUMBER='$visitnumber'";
|
|
|
|
|
if( $db->query($sql) ) {
|
|
|
|
|
return $this->respond(['message' => 'Update Success'],201);
|
|
|
|
|
} else {
|
|
|
|
|
$response = [
|
|
|
|
|
'errors' => $db->errors(),
|
|
|
|
|
'message' => 'Query error'
|
|
|
|
|
];
|
|
|
|
|
return $this->fail($response , 409);
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-13 14:20:14 +07:00
|
|
|
}
|