Merge branch 'main' into zakaria

This commit is contained in:
mikael-zakaria 2024-12-15 08:28:40 +08:00
commit f4fa370a64
4 changed files with 123 additions and 88 deletions

View File

@ -66,7 +66,8 @@ $routes->get('api/dictChapters/detail/(:any)', 'API_DictChapters::detail/$1');
$routes->POST('api/orders/index', 'API_HISOrders::index'); $routes->POST('api/orders/index', 'API_HISOrders::index');
$routes->POST('api/orders/save', 'API_HISOrders::save'); $routes->POST('api/orders/save', 'API_HISOrders::save');
$routes->get('api/orders/detail/(:any)', 'API_HISOrders::detail/$1'); $routes->get('api/orders/detail/(:any)', 'API_HISOrders::detail/$1');
$routes->get('api/patients/search/(:any)', 'API_HISPatients::search/$1'); $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'); $routes->get('api/patients/detail/(:any)', 'API_HISPatients::detail/$1');
$routes->POST('api/patients/save', 'API_HISPatients::save'); $routes->POST('api/patients/save', 'API_HISPatients::save');

View File

@ -24,7 +24,7 @@ class API_HISPatients extends ResourceController {
return $this->respond($data,200); return $this->respond($data,200);
} }
public function search($patnumber) { public function patnumberSearch($patnumber) {
$db = \Config\Database::connect(); $db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_HIS_PATIENTS where PATNUMBER like '%$patnumber%'"; $sql = "select * from cmod.dbo.CM_HIS_PATIENTS where PATNUMBER like '%$patnumber%'";
$query = $db->query($sql); $query = $db->query($sql);
@ -33,9 +33,32 @@ class API_HISPatients extends ResourceController {
return $this->respond($data,200); return $this->respond($data,200);
} }
public function detail($patnumber) { public function search() {
$db = \Config\Database::connect(); $db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_HIS_PATIENTS where PATNUMBER='$patnumber'"; $patnumber = $this->request->getPost('patnumber');
$patname = strtolower( $this->request->getPost('patname') );
$sql = "select * from cmod.dbo.CM_HIS_PATIENTS";
// Initialize a WHERE clause
$where= '';
if (!empty($patnumber) || !empty($patname)) {
$where= ' WHERE ';
if (!empty($patnumber)) { $where .= "PATNUMBER like '%$patnumber%'"; }
if (!empty($shorttext)) {
if (!empty($testcode)) { $where .= ' OR '; }
$where .= "LOWER(PATNAME) LIKE '%$patname%'";
}
}
$sql .= $where;
$query = $db->query($sql);
$results = $query->getResultArray();
$data['patients'] = $results;
return $this->respond($data, 200);
}
public function detail($patid) {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_HIS_PATIENTS where PATID='$patid'";
$query = $db->query($sql); $query = $db->query($sql);
$results = $query->getResultArray(); $results = $query->getResultArray();
$data['patient'] = $results[0]; $data['patient'] = $results[0];

View File

@ -235,11 +235,11 @@ function patClear() {
$('#phone').html(''); $('#phone').html('');
} }
function patSelect(patnumber) { function patSelect() {
$('#modal_patList').modal('hide'); $('#modal_patList').modal('hide');
$('#modal_patEditor').modal('hide'); $('#modal_patEditor').modal('hide');
$('#patid').val(''); $('#patid').val('');
let url = '<?=base_url('');?>api/patients/detail/'+patnumber; let url = '<?=base_url('');?>api/patients/detail/'+patid;
$.ajax({ $.ajax({
url: url, url: url,
method: "GET", method: "GET",
@ -251,7 +251,7 @@ function patSelect(patnumber) {
$('#address').html(data.ADDRESS); $('#address').html(data.ADDRESS);
$('#phone').html(data.PHONE); $('#phone').html(data.PHONE);
$("#patid").val(data.PATID); $("#patid").val(data.PATID);
$("#patnumber").val(patnumber); $("#patnumber").val(data.PATNUMBER);
}, },
error: function(response) { error: function(response) {
alert(response.responseJSON.messages.errors); alert(response.responseJSON.messages.errors);
@ -259,7 +259,7 @@ function patSelect(patnumber) {
}); });
} }
function patCreate(patnumber) { function patCreate() {
$('#modal_patList').modal('hide'); $('#modal_patList').modal('hide');
$("#qpatid").val('0'); $("#qpatid").val('0');
$("#qpatnumber").val(patnumber); $("#qpatnumber").val(patnumber);
@ -270,17 +270,16 @@ function patCreate(patnumber) {
$('#modal_patEditor').modal('show'); $('#modal_patEditor').modal('show');
} }
function patEdit(patnumber) { function patEdit(patid) {
$('#modal_patList').modal('hide'); $('#modal_patList').modal('hide');
let url = '<?=base_url('');?>api/patients/detail/'+patnumber; let url = '<?=base_url('');?>api/patients/detail/'+patid;
$.ajax({ $.ajax({
url: url, url: url,
method: "GET", method: "GET",
success: function(response) { success: function(response) {
let data = response['patient']; let data = response['patient'];
console.log(data); $("#qpatnumber").val(data.PATNUMBER);
$("#qpatnumber").val(patnumber); $("#qpatid").val(patid);
$("#qpatid").val(data.PATID);
$("#qpatname").val(data.PATNAME); $("#qpatname").val(data.PATNAME);
$("#qsex").val(data.SEX); $("#qsex").val(data.SEX);
$("#qbirthdate").val(data.BIRTHDATE); $("#qbirthdate").val(data.BIRTHDATE);
@ -296,10 +295,11 @@ function patEdit(patnumber) {
function patSearch() { function patSearch() {
patnumber = $("#patnumber").val(); patnumber = $("#patnumber").val();
let url = '<?=base_url('');?>api/patients/search/'+patnumber; let url = '<?=base_url('');?>api/patients/search';
$.ajax({ $.ajax({
url: url, url: url,
method: "GET", method: "POST",
data: {patnumber:patnumber},
success: function(response) { success: function(response) {
$("#patList_tbody").html(""); $("#patList_tbody").html("");
var data = response['patients']; var data = response['patients'];
@ -312,8 +312,8 @@ function patSearch() {
patname = data[i].PATNAME; patname = data[i].PATNAME;
sex = data[i].SEX; sex = data[i].SEX;
birthdate = data[i].BIRTHDATE; birthdate = data[i].BIRTHDATE;
editBtn = '<button class="btn btn-sm btn-warning" ' + ' onclick="patEdit(\'' + qpatnumber + '\')">Edit' + '</button> '; editBtn = '<button class="btn btn-sm btn-warning" ' + ' onclick="patEdit(\'' + patid + '\')">Edit' + '</button> ';
selectBtn = '<button class="btn btn-sm btn-success" ' + ' onclick="patSelect(\'' + qpatnumber + '\')">Select' + '</button> '; selectBtn = '<button class="btn btn-sm btn-success" ' + ' onclick="patSelect(\'' + patid + '\')">Select' + '</button> ';
if(data[i].LISCODE == null) { liscode = '-'; } if(data[i].LISCODE == null) { liscode = '-'; }
let datarow = '<tr class="align-middle">' + let datarow = '<tr class="align-middle">' +
'<td>' + qpatnumber + '</td>' + '<td>' + patname+ '</td> <td>' + sex + '</td>' + '<td>' + birthdate+ '</td>' + '<td>' + selectBtn + editBtn + '</td>' + '<td>' + qpatnumber + '</td>' + '<td>' + patname+ '</td> <td>' + sex + '</td>' + '<td>' + birthdate+ '</td>' + '<td>' + selectBtn + editBtn + '</td>' +
@ -337,24 +337,20 @@ function patSave() {
sex = $('#qsex').val(); sex = $('#qsex').val();
address = $('#qaddress').val(); address = $('#qaddress').val();
phone = $('#qphone').val(); phone = $('#qphone').val();
if(patid == '') { let data = { patid: patid, patnumber: patnumber, patname:patname, birthdate:birthdate, sex:sex, address:address, phone:phone };
let url = '<?=base_url('');?>api/patients/save';
} else { $.ajax({
let data = { patid: patid, patnumber: patnumber, patname:patname, birthdate:birthdate, sex:sex, address:address, phone:phone }; url: url,
let url = '<?=base_url('');?>api/patients/save'; method: "POST",
$.ajax({ data:data,
url: url, success: function(response) {
method: "POST", console.log(response);
data:data, patSelect(patnumber);
success: function(response) { },
console.log(response); error: function(response) {
patSelect(patnumber); alert(response.responseJSON.messages.errors);
}, }
error: function(response) { });
alert(response.responseJSON.messages.errors);
}
});
}
} }
$(document).ready(function() { $(document).ready(function() {
@ -363,7 +359,14 @@ $(document).ready(function() {
echo "$('.test$i').select2();"; echo "$('.test$i').select2();";
} }
?> ?>
flatpickr("#visitdate", { allowInput: true, enableTime: true, dateFormat: "Y-m-d H:i", time_24hr: true }); flatpickr("#visitdate", { allowInput: true, enableTime: true, dateFormat: "Y-m-d H:i", time_24hr: true });
$("#patnumber").keydown(function(event) {
if (event.keyCode === 13) {
patSearch();
}
});
}); });
</script> </script>
<?= $this->endSection() ?> <?= $this->endSection() ?>

View File

@ -2,9 +2,7 @@
<?= $this->section('content') ?> <?= $this->section('content') ?>
<div class="card border-0 m-1"> <div class="card border-0 m-1">
<div class="card-header bg-success text-white"> <div class="card-header bg-success text-white">Patients List</div>
<div class='card-title m-0'><b>Patients List</b></div>
</div>
<div class="card-body"> <div class="card-body">
<div class='row mb-2'> <div class='row mb-2'>
<div class='col-2'>MR#</div> <div class='col-2'>MR#</div>
@ -20,6 +18,7 @@
<div class="card border-0 m-1"> <div class="card border-0 m-1">
<div class="card-body"> <div class="card-body">
<button class='btn btn-sm btn-primary' onclick='create()'><i class='bi bi-plus-circle'></i> Create</button>
<div class="table-responsive"> <div class="table-responsive">
<table id="myTable" class="table"> <table id="myTable" class="table">
<thead> <thead>
@ -38,7 +37,7 @@
</div> </div>
</div> </div>
<div class="modal fade" id="modal_crud" aria-hidden="true" tabindex="-1"> <div class="modal fade" id="modal_patEditor" aria-hidden="true" tabindex="-1">
<div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable"> <div class="modal-dialog modal-lg modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
@ -46,21 +45,28 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" ></button> <button type="button" class="btn-close" data-bs-dismiss="modal" ></button>
</div> </div>
<div class="modal-body" style='background-color:#F4F6FF'> <div class="modal-body" style='background-color:#F4F6FF'>
<div class="row"> <table class="table table-sm table-borderless">
<div class="col-12"> <input type='hidden' id='qpatid' value='' />
<table class="table table-sm table-borderless"> <tr class="align-middle"> <th>MR#</th> <th>:</th>
<input type='hidden' id='patid' value='' /> <td><input class='form-control' type='text' id='qpatnumber' /></td>
<tr class="align-middle"> <th>MR#</th> <th>:</th> <td><input type='text' class='form-control' id='patnumber' /></td> </tr> </tr>
<tr class="align-middle"> <th>Name</th> <th>:</th> <td><input type='text' class='form-control' id='patname' /></td> </tr> <tr class="align-middle"> <th>Patient Name</th> <th>:</th> <td><input class='form-control' type='text' id='qpatname'/></td> </tr>
<tr class="align-middle"> <th>Sex</th> <th>:</th> <td></td> </tr> <tr class="align-middle"> <th>BirthDate</th> <th>:</th> <td><input class='form-control' type='date' id='qbirthdate'/></td> </tr>
<tr class="align-middle"> <th>Birthdate</th> <th>:</th> <td><textarea class='form-control' id='unit'/></textarea></td> </tr> <tr class="align-middle">
<tr class="align-middle"> <th>Address</th> <th>:</th> <td><textarea class='form-control' id='refftext'/></textarea></td> </tr> <th>Sex</th> <th>:</th>
<tr class="align-middle"> <th>Phone</th> <th>:</th> <td><textarea class='form-control' id='refftext'/></textarea></td> </tr> <td>
</table> <select class='form-control' id='qsex'>
<button class='btn btn-sm btn-primary' onclick='save()'>Save</button> <option value=''></option>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button> <option value='F'>Female</option>
</div> <option value='M'>Male</option>
</div> </select>
</td>
</tr>
<tr class="align-middle"> <th>Address</th> <th>:</th> <td><textarea class='form-control' id='qaddress'></textarea></td> </tr>
<tr class="align-middle"> <th>Phone</th> <th>:</th> <td><input class='form-control' type='text' id='qphone'/></td> </tr>
</table>
<button class='btn btn-sm btn-success' onclick='save()'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div> </div>
</div> </div>
</div> </div>
@ -100,60 +106,62 @@ function search() {
}); });
} }
function edit(testcode) { function create() {
let url = '<?=base_url('');?>api/dictTests/detail/'+testcode; $("#qpatid").val('0');
$("#qpatnumber").val();
$("#qpatname").val("");
$("#qsex").val("");
$("#qbirthdate").val("");
$("#qaddress").val('');
$('#modal_patEditor').modal('show');
}
function edit(patid) {
let url = '<?=base_url('');?>api/patients/detail/'+patid;
$.ajax({ $.ajax({
url: url, url: url,
method: "GET", method: "GET",
success: function(response) { success: function(response) {
let data = response; let data = response['patient'];
$("#alert-div").html(""); $("#qpatid").val(patid);
$("#error-div").html(""); $("#qpatnumber").val(data.PATNUMBER);
$("#testcode").val(testcode); $("#qpatname").val(data.PATNAME);
$("#testcodetext").html(testcode); $("#qsex").val(data.SEX);
$("#update").val('1'); $("#qbirthdate").val(data.BIRTHDATE);
$("#text1").val(data.TEXT1); $("#qaddress").val(data.ADDRESS);
$("#text2").val(data.TEXT2); $("#qphone").val(data.PHONE);
$("#unit").val(data.UNIT); $("#modal_patEditor").modal('show');
$("#refftext").val(data.REFFTEXT);
$("#modal_crud").modal('show');
}, },
error: function(response) { error: function(response) {
console.log(response.responseJSON) alert(response.responseJSON.messages.errors);
} }
}); });
} }
function save() { function save() {
let url = '<?=base_url('');?>api/dictTests/save'; patid = $("#qpatid").val();
var testcode = $("#testcode").val(); patnumber = $("#qpatnumber").val();
var text1 = $("#text1").val(); patname = $("#qpatname").val();
var text2 = $("#text2").val(); birthdate = $('#qbirthdate').val();
var unit = $("#unit").val(); sex = $('#qsex').val();
var refftext = $("#refftext").val(); address = $('#qaddress').val();
let data = { testcode: testcode, text1:text1, text2:text2, unit:unit, refftext:refftext }; phone = $('#qphone').val();
let data = { patid: patid, patnumber: patnumber, patname:patname, birthdate:birthdate, sex:sex, address:address, phone:phone };
let url = '<?=base_url('');?>api/patients/save';
$.ajax({ $.ajax({
url: url, url: url,
method: "POST", method: "POST",
data: data, data:data,
success: function(response) { success: function(response) {
$("#alert-div").html(""); $("#modal_patEditor").modal('hide');
$("#error-div").html(""); $('#search_patnumber').val(patnumber);
$("#testcode").val('');
$("#text1").val('');
$("#text2").val('');
$("#refftext").val('');
$("#unit").val('');
$("#modal_crud").modal('hide');
search(); search();
}, },
error: function(response) { error: function(response) {
console.log(response.responseJSON) alert(response.responseJSON.messages.errors);
} }
}); });
} }
</script> </script>
<?= $this->endSection() ?> <?= $this->endSection() ?>