Merge branch 'main' into zakaria
gas
This commit is contained in:
commit
f52c4196b9
@ -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');
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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() ?>
|
||||
@ -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() ?>
|
||||
@ -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'>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user