Merge branch 'main' into zakaria

gas
This commit is contained in:
mikael-zakaria 2024-12-15 15:43:36 +08:00
commit f52c4196b9
6 changed files with 115 additions and 17 deletions

View File

@ -65,7 +65,10 @@ $routes->get('api/dictChapters/detail/(:any)', 'API_DictChapters::detail/$1');
// API - Orders
$routes->POST('api/orders/index', 'API_HISOrders::index');
$routes->POST('api/orders/save', 'API_HISOrders::save');
$routes->POST('api/orders/resend', 'API_HISOrders::resend');
$routes->get('api/orders/detail/(:any)', 'API_HISOrders::detail/$1');
// API - Patients
$routes->get('api/patients/patnumberSearch/(:any)', 'API_HISPatients::patnumberSearch/$1');
$routes->POST('api/patients/search/', 'API_HISPatients::search');
$routes->get('api/patients/detail/(:any)', 'API_HISPatients::detail/$1');
@ -76,8 +79,8 @@ $routes->group('admin', ['filter' => 'role:admin'], static function ($routes) {
$routes->get('', 'AdminController::index');
$routes->get('dashboard/viewAccess/(:any)', 'AdminController::viewAccess/$1');
$routes->get('orders/', 'AdminController::orders_index');
$routes->get('orders/create/', 'AdminController::orders_update/0');
$routes->get('orders/update/(:any)', 'AdminController::orders_update/$1');
$routes->get('orders/create/', 'AdminController::orders_edit/0');
$routes->get('orders/edit/(:any)', 'AdminController::orders_edit/$1');
$routes->get('patients/', 'AdminController::patients_index');
$routes->get('userroles/', 'AdminController::userroles_index');
$routes->get('users/', 'AdminController::users_index');

View File

@ -10,7 +10,7 @@ class API_HISOrders extends ResourceController {
$db = \Config\Database::connect();
$date1 = $this->request->getPost('date1');
$date2 = $this->request->getPost('date2');
$sql = "select o.VISITNUMBER, o.VISITDATE, o.PAYERNAME, o.TREATDOC, p.PATNUMBER, p.SEX, p.PATNAME,
$sql = "select o.ORDERID, o.VISITNUMBER, o.VISITDATE, o.PAYERNAME, o.TREATDOC, p.PATNUMBER, p.SEX, p.PATNAME,
TESTS=stuff(( select ', '+t.HISCODE from
( select t.HISCODE from cmod.dbo.CM_HIS_TESTS t
where t.ORDERID=o.ORDERID
@ -24,10 +24,23 @@ class API_HISOrders extends ResourceController {
return $this->respond($data,200);
}
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;
$sql = "select * from cmod.dbo.CM_HIS_TESTS where ORDERID='$orderid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['tests'] = $results;
return $this->respond($data,200);
}
public function save() {
$db = \Config\Database::connect();
//Object { patid: "9", visitnumber: "9989", visitdate: "2024-12-13", treatdoc: "alam", payername: "mala", tests: (2) […] }
$orderid = '0';
$orderid = $this->request->getPost('orderid');
$patid = $this->request->getPost('patid');
$visitnumber = $this->request->getPost('visitnumber');
$visitdate = $this->request->getPost('visitdate');
@ -45,21 +58,35 @@ class API_HISOrders extends ResourceController {
// query HIS_ORDERS
if( $db->query($sql) ) {
if($orderid == '0') {
if($orderid == '0') { // new order
$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";
} 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
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;";
}
// done
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
return $this->respond(['message' => 'Save Success', 'sql' => $sql],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Query test error'
'message' => 'Query test error',
'sql' => $sql
];
return $this->fail($response , 409);
}
@ -113,4 +140,18 @@ class API_HISOrders extends ResourceController {
$data['sql'] = $sql;
return $this->respond($data , 200);
}
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);
}
}
}

View File

@ -96,14 +96,14 @@ class AdminController extends BaseController {
return view('orders_index');
}
public function orders_update($orderid) {
public function orders_edit($orderid) {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_DICT_MAPPINGS";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['tests'] = $results;
$data['orderid'] = $orderid;
return view('orders_update', $data);
return view('orders_edit', $data);
}
public function patients_index() {

View File

@ -17,6 +17,7 @@ $visitdate = $now;
<div class="card border-0">
<div class="card-body">
<h3>Order Creation</h3>
<input type='hidden' id='orderid' value='<?=$orderid;?>' />
<div id='alert'>
</div>
<div class='row border gap-1 p-1'>
@ -52,7 +53,7 @@ $visitdate = $now;
<table class='table table-sm table-borderless'>
<tr>
<td>Visit#</td>
<td><input type="text" id="visitnumber" class="form-control form-control-sm"></td>
<td><input type="text" id="visitnumber" class="form-control form-control-sm" oninput="this.value = this.value.toUpperCase();"></td>
<td>Visit Date</td>
<td><input type="datetime" id="visitdate" class="form-control form-control-sm" value='<?=$visitdate;?>'></td>
</tr>
@ -171,15 +172,43 @@ $visitdate = $now;
<?= $this->section('script') ?>
<script>
function orderDetail(orderid) {
console.log(orderid);
let url = '<?=base_url('');?>api/orders/detail/'+orderid;
$.ajax({
url: url,
method: 'GET',
success: function(response) {
var data = response['orders'];
$('#payername').val(data[0].PAYERNAME);
$('#treatdoc').val(data[0].TREATDOC);
$('#visitdate').val(data[0].VISITDATE);
$('#visitnumber').val(data[0].VISITNUMBER);
patSelect(data[0].PATID);
var tests = response['tests'];
var j = 1;
for (const test of tests) {
console.log(test);
console.log(test.HISCODE);
$('.test'+j).val(test.HISCODE).trigger('change');
j++;
}
},
error: function(response) { console.log(response.responseJSON); }
});
}
function save() {
confirm('Are you sure?');
if(confirm) {
var orderid = $("#orderid").val();
var patid = $("#patid").val();
var visitnumber = $("#visitnumber").val();
var visitdate = $("#visitdate").val();
var treatdoc = $("#treatdoc").val();
var payername = $("#payername").val();
let data = { patid:patid, visitnumber:visitnumber, visitdate:visitdate, treatdoc:treatdoc, payername:payername ,tests:new Array() };
let data = { orderid:orderid, patid:patid, visitnumber:visitnumber, visitdate:visitdate, treatdoc:treatdoc, payername:payername ,tests:new Array() };
for (let i = 1; i <= 50; i++) {
let className = `.test${i}`;
let value = $(className).val();
@ -235,23 +264,22 @@ function patClear() {
$('#phone').html('');
}
function patSelect() {
function patSelect(patid) {
$('#modal_patList').modal('hide');
$('#modal_patEditor').modal('hide');
$('#patid').val('');
let url = '<?=base_url('');?>api/patients/detail/'+patid;
$.ajax({
url: url,
method: "GET",
success: function(response) {
let data = response['patient'];
$("#patid").val(patid);
$("#patnumber").val(data.PATNUMBER);
$('#patname').html(data.PATNAME);
$('#sex').html(data.SEX);
$('#birthdate').html(data.BIRTHDATE);
$('#address').html(data.ADDRESS);
$('#phone').html(data.PHONE);
$("#patid").val(data.PATID);
$("#patnumber").val(data.PATNUMBER);
},
error: function(response) {
alert(response.responseJSON.messages.errors);
@ -367,6 +395,10 @@ $(document).ready(function() {
patSearch();
}
});
if( $('#orderid').val()!=0 ) {
orderDetail($('#orderid').val());
}
});
</script>
<?= $this->endSection() ?>

View File

@ -21,6 +21,7 @@
<th>Patient Name</th>
<th>Payer Name</th>
<th>Test</th>
<th>Action</th>
</thead>
<tbody id="table-body">
</tbody>
@ -56,15 +57,20 @@ function index() {
$("#table-body").html("");
var data = response['data'];
for (var i = 0; i < data.length; i++) {
orderid = data[i].ORDERID;
visitdate = data[i].VISITDATE;
visitnumber = data[i].VISITNUMBER;
patnumber = data[i].PATNUMBER;
patname = data[i].PATNAME;
payername = data[i].PAYERNAME;
tests = data[i].TESTS;
editBtn = '<button class="btn btn-sm btn-warning" onclick="edit(\''+ orderid +'\')"><i class="bi bi-pencil"></i> edit</button>';
resendBtn = '<button class="btn btn-sm btn-primary" onclick="resend(\''+ visitnumber +'\')"><i class="bi bi-send"></i> resend</button>';
let datarow = '<tr class="align-middle">' +
'<td>' + visitdate + '</td> <td>' + visitnumber + '</td> <td>' + patnumber + '</td> <td>' + patname +
'</td> <td>' + payername + '</td> <td>' + tests + '</td>' + '</tr>';
'</td> <td>' + payername + '</td> <td>' + tests + '</td> ' +
'<td>' + resendBtn + ' ' + editBtn + '</td>' +
'</tr>';
$("#table-body").append(datarow);
}
//$('#myTable').DataTable();
@ -78,5 +84,21 @@ function create() {
'_blank', "width=1200,height=700,location=no,toolbar=no,menubar=no"
);
}
function edit(orderid) {
window.open("<?php echo base_url();echo $_SESSION['userrole']?>/orders/edit/"+orderid,
'_blank', "width=1200,height=700,location=no,toolbar=no,menubar=no"
);
}
function resend(visitnumber) {
let url = '<?=base_url('');?>api/orders/resend/'+visitnumber;
$.ajax({
url: url,
method: 'url',
success: function(response) { console.log(response.responseJSON); },
error: function(response) { console.log(response.responseJSON); }
});
}
</script>
<?= $this->endSection() ?>

View File

@ -41,7 +41,7 @@
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalToggleLabel">Edit Patient</h1>
<h1 class="modal-title fs-5" id="exampleModalToggleLabel">Patient Editor</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" ></button>
</div>
<div class="modal-body" style='background-color:#F4F6FF'>