creating admin page
This commit is contained in:
parent
10412f2f93
commit
fee085a5c5
@ -23,10 +23,8 @@ $routes->get('/api/results_preview/(:any)', 'API_TM::results_preview/$1');
|
|||||||
// send oc
|
// send oc
|
||||||
// send new master
|
// send new master
|
||||||
|
|
||||||
$routes->get('/admin', 'AdminPages::LISRequests');
|
$routes->get('/admin', 'AdminPages::HISRequests');
|
||||||
$routes->get('/admin/LISRequests', 'AdminPages::LISRequests');
|
|
||||||
$routes->get('/admin/HISRequests', 'AdminPages::HISRequests');
|
$routes->get('/admin/HISRequests', 'AdminPages::HISRequests');
|
||||||
$routes->get('/admin/HISMessages', 'AdminPages::HISMessages');
|
$routes->get('/admin/HISMessages', 'AdminPages::HISMessages');
|
||||||
$routes->post('/admin/api/LISRequests', 'API_Admin::LISRequests_index');
|
|
||||||
$routes->post('/admin/api/HISRequests', 'API_Admin::HISRequests_index');
|
$routes->post('/admin/api/HISRequests', 'API_Admin::HISRequests_index');
|
||||||
$routes->post('/admin/api/HISMessages', 'API_Admin::HISMessages_index');
|
$routes->post('/admin/api/HISMessages', 'API_Admin::HISMessages_index');
|
||||||
|
|||||||
@ -9,30 +9,42 @@ class API_Admin extends ResourceController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function LISRequests_index() {
|
public function HISRequests_index() {
|
||||||
$db = \Config\Database::connect();
|
$db = \Config\Database::connect();
|
||||||
$date1 = $this->request->getPost('date1');
|
$date1 = $this->request->getPost('date1');
|
||||||
$date2 = $this->request->getPost('date2');
|
$date2 = $this->request->getPost('date2');
|
||||||
|
|
||||||
$sql = "select r.SP_ACCESSNUMBER, r.HOSTORDERNUMBER, r.SP_HOSPNUMBER, r.SP_LOCCODE, p.PATNUMBER, p.FIRSTNAME, p.NAME from SP_REQUESTS r
|
$sql = "select r.SP_ACCESSNUMBER, r.HOSTORDERNUMBER, PATNUMBER=right(p.PATNUMBER,8), p.FIRSTNAME, p.NAME, tr.*,
|
||||||
|
STUFF(
|
||||||
|
( select ', '+ SP_TESTCODE from SP_TESTS
|
||||||
|
where SP_ACCESSNUMBER=r.SP_ACCESSNUMBER and DEPTH=0
|
||||||
|
FOR XML PATH('')
|
||||||
|
), 1, 1, ''
|
||||||
|
) AS TESTS
|
||||||
|
from cmod.dbo.CM_TM_REQUESTS tr
|
||||||
|
left join SP_REQUESTS r on r.HOSTORDERNUMBER=tr.REFFID
|
||||||
left join PATIENTS p on p.PATID=r.PATID
|
left join PATIENTS p on p.PATID=r.PATID
|
||||||
where r.COLLECTIONDATE between '2025-03-17 00:00' and '2025-03-17 23:59'";
|
where tr.REQDATE between '".$date1."T00:00' and '".$date2."T23:59'
|
||||||
|
order by tr.REQDATE";
|
||||||
$query = $db->query($sql);
|
$query = $db->query($sql);
|
||||||
$results = $query->getResultArray();
|
$results = $query->getResultArray();
|
||||||
/*
|
|
||||||
$response = [
|
|
||||||
'status' => 200,
|
|
||||||
'error' => null,
|
|
||||||
'message' => 'Data received successfully!',
|
|
||||||
'data' => [
|
|
||||||
'date1' => $date1,
|
|
||||||
'date2' => $date2,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
*/
|
|
||||||
return $this->respond([
|
return $this->respond([
|
||||||
'data' => $results
|
'data' => $results
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function HISMessages_index() {
|
||||||
|
$db = \Config\Database::connect();
|
||||||
|
$date1 = $this->request->getPost('date1');
|
||||||
|
$date2 = $this->request->getPost('date2');
|
||||||
|
|
||||||
|
$sql = "select LOGID, BODY, LOGDATE from cmod.dbo.CM_TM_LOGS where LOGDATE between '$date1 00:00' and '$date2 23:59'";
|
||||||
|
$query = $db->query($sql);
|
||||||
|
$results = $query->getResultArray();
|
||||||
|
|
||||||
|
return $this->respond([
|
||||||
|
'data' => $results
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,8 +4,11 @@ namespace App\Controllers;
|
|||||||
|
|
||||||
class AdminPages extends BaseController {
|
class AdminPages extends BaseController {
|
||||||
|
|
||||||
public function LISRequests() {
|
public function HISRequests() {
|
||||||
return view('admin/LISRequests');
|
return view('admin/HISRequests');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function HISMessages() {
|
||||||
|
return view('admin/HISMessages');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
99
app/Views/admin/HISMessages.php
Normal file
99
app/Views/admin/HISMessages.php
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
<?= $this->extend('admin/layout') ?>
|
||||||
|
|
||||||
|
<?= $this->section('content') ?>
|
||||||
|
<div class='container-fluid'>
|
||||||
|
<div class="card bg-light">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">Messages</h5>
|
||||||
|
<form class="row g-2 align-items-center" id="myForm">
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="startDate" class="col-form-label">Date</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" id="date1" name='date1'>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<span>-</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" id="date2" name='date2'>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="button" class="btn btn-sm btn-primary" onclick='searchMessages()'>Search</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class='table-responsive'>
|
||||||
|
<table class='table table-striped table-bordered' id='dataTable'>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>#</th> <th>Messages</th> <th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id='tbody'>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
|
<?= $this->section('script') ?>
|
||||||
|
<script>
|
||||||
|
let curDate = new Date().toJSON().slice(0, 10);
|
||||||
|
$('#date1').val(curDate);
|
||||||
|
$('#date2').val(curDate);
|
||||||
|
|
||||||
|
function searchMessages() {
|
||||||
|
const url = '<?=base_url('');?>admin/api/HISMessages';
|
||||||
|
const form = document.getElementById('myForm');
|
||||||
|
const formData = new FormData(form);
|
||||||
|
|
||||||
|
fetch(url, {
|
||||||
|
method: 'POST',
|
||||||
|
body: formData
|
||||||
|
}).then(response => {
|
||||||
|
if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }
|
||||||
|
return response.json();
|
||||||
|
}).then(data => {
|
||||||
|
$("#dataTable").DataTable().destroy();
|
||||||
|
$("#tbody").html("");
|
||||||
|
let i = 1;
|
||||||
|
data.data.forEach(item => {
|
||||||
|
const row = `<tr>
|
||||||
|
<td>LogID : <b>${item.LOGID}</b><br />${item.LOGDATE}</td>
|
||||||
|
<td><a href="#" class="show-more" onclick='showmore(this)'>Show More</a> <span class='text-limit'>${item.BODY}</span> </td>
|
||||||
|
<td></td>
|
||||||
|
</tr>`;
|
||||||
|
$("#tbody").append(row);
|
||||||
|
});
|
||||||
|
$('#dataTable').DataTable({
|
||||||
|
"pageLength": 20,
|
||||||
|
"lengthMenu": [10, 20, 50, 100]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function showmore(element) {
|
||||||
|
event.preventDefault();
|
||||||
|
const limitedTextSpan = element.nextElementSibling;
|
||||||
|
console.log(limitedTextSpan.style.whiteSpace);
|
||||||
|
if (limitedTextSpan.style.whiteSpace == 'nowrap' || limitedTextSpan.style.whiteSpace == '') {
|
||||||
|
limitedTextSpan.style.whiteSpace = 'normal';
|
||||||
|
limitedTextSpan.style.overflow = 'visible';
|
||||||
|
element.textContent = 'Show Less';
|
||||||
|
console.log('show less');
|
||||||
|
} else {
|
||||||
|
limitedTextSpan.style.whiteSpace = 'nowrap';
|
||||||
|
limitedTextSpan.style.overflow = 'hidden';
|
||||||
|
element.textContent = 'Show More';
|
||||||
|
console.log('show more');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<?= $this->endSection() ?>
|
||||||
@ -4,7 +4,7 @@
|
|||||||
<div class='container-fluid'>
|
<div class='container-fluid'>
|
||||||
<div class="card bg-light">
|
<div class="card bg-light">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">LIS Requests</h5>
|
<h5 class="card-title">Requests</h5>
|
||||||
<form class="row g-2 align-items-center" id="myForm">
|
<form class="row g-2 align-items-center" id="myForm">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<label for="startDate" class="col-form-label">Date</label>
|
<label for="startDate" class="col-form-label">Date</label>
|
||||||
@ -28,13 +28,13 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class='table-responsive'>
|
<div class='table-responsive'>
|
||||||
<table class='table' id='dataTable'>
|
<table class='table table-striped table-bordered' id='dataTable'>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Access#</th> <th>Pat#</th> <th>PatName</th> <th>Loc</th>
|
<th>ID#</th> <th>Pat#</th> <th>PatName</th> <th>Loc</th> <th>Test</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody id='tbody'>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@ -49,14 +49,10 @@ $('#date1').val(curDate);
|
|||||||
$('#date2').val(curDate);
|
$('#date2').val(curDate);
|
||||||
|
|
||||||
function searchRequests() {
|
function searchRequests() {
|
||||||
|
const url = '<?=base_url('');?>admin/api/HISRequests';
|
||||||
const form = document.getElementById('myForm');
|
const form = document.getElementById('myForm');
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
|
|
||||||
const tableBody = document.getElementById('dataTable').getElementsByTagName('tbody')[0];
|
|
||||||
tableBody.innerHTML = '';
|
|
||||||
|
|
||||||
let url = '<?=base_url('');?>admin/api/LISRequests';
|
|
||||||
|
|
||||||
fetch(url, {
|
fetch(url, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: formData
|
body: formData
|
||||||
@ -64,23 +60,24 @@ function searchRequests() {
|
|||||||
if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }
|
if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }
|
||||||
return response.json();
|
return response.json();
|
||||||
}).then(data => {
|
}).then(data => {
|
||||||
|
$("#dataTable").DataTable().destroy();
|
||||||
|
$("#tbody").html("");
|
||||||
data.data.forEach(item => {
|
data.data.forEach(item => {
|
||||||
const row = `<tr> <td>${item.SP_ACCESSNUMBER}<br/>HON : ${item.HOSTORDERNUMBER}</td> <td>${item.name}</td> <td>${item.price}</td> </tr>`;
|
const row = `<tr>
|
||||||
tableBody.insertAdjacentHTML('beforeend', row);
|
<td class='text-nowrap'>Access# : ${item.SP_ACCESSNUMBER}<br/>Reff# : ${item.REFFID} | Visit : ${item.REQNUMBER}</td>
|
||||||
})
|
<td>${item.PATNUMBER}</td>
|
||||||
});
|
<td>${item.FIRSTNAME} ${item.NAME}</td>
|
||||||
/*
|
<td>${item.LOC}</td>
|
||||||
data.forEach(rowData => {
|
<td>${item.TESTS}</td>
|
||||||
const row = tableBody.insertRow();
|
</tr>`;
|
||||||
for (const key in rowData) {
|
$("#tbody").append(row);
|
||||||
if (rowData.hasOwnProperty(key)) {
|
|
||||||
const cell = row.insertCell();
|
|
||||||
cell.textContent = rowData[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
$('#dataTable').DataTable({
|
||||||
*/
|
"pageLength": 20,
|
||||||
|
"lengthMenu": [10, 20, 50, 100]
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
@ -4,14 +4,18 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>CMOD-Rest Administrator</title>
|
<title>CMOD-Rest Administrator</title>
|
||||||
<link href="assets/bootstrap.min.css" rel="stylesheet" />
|
<link href="<?=base_url();?>assets/bootstrap.min.css" rel="stylesheet" />
|
||||||
<script src="assets/bootstrap.bundle.min.js"></script>
|
<link href="<?=base_url();?>assets/datatables.min.css" rel="stylesheet">
|
||||||
<script src="assets/jquery-3.7.1.slim.min.js"></script>
|
<script src="<?=base_url();?>assets/jquery-3.7.1.slim.min.js"></script>
|
||||||
<link href="assets/datatables.min.css" rel="stylesheet">
|
<script src="<?=base_url();?>assets/bootstrap.bundle.min.js"></script>
|
||||||
<script src="assets/datatables.min.js"></script>
|
<script src="<?=base_url();?>assets/datatables.min.js"></script>
|
||||||
<style>
|
<style>
|
||||||
|
html {font-size:11px;}
|
||||||
.nav-link, .navbar-brand { color:white; }
|
.nav-link, .navbar-brand { color:white; }
|
||||||
a:hover { background-color:white;color:black; }
|
a:hover { background-color:white;color:black; }
|
||||||
|
|
||||||
|
/* HIS Messages */
|
||||||
|
.text-limit { display: block; max-width: 600px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class='bg-secondary'>
|
<body class='bg-secondary'>
|
||||||
@ -19,9 +23,8 @@
|
|||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="collapse navbar-collapse" id="navbarNav">
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item"> <a class="nav-link" href="#">LIS Requests</a> </li>
|
<li class="nav-item"> <a class="nav-link" href="<?=base_url();?>admin/HISRequests">HIS Requests</a> </li>
|
||||||
<li class="nav-item"> <a class="nav-link" href="#">HIS Requests</a> </li>
|
<li class="nav-item"> <a class="nav-link" href="<?=base_url();?>admin/HISMessages">HIS Messages</a> </li>
|
||||||
<li class="nav-item"> <a class="nav-link" href="#">HIS Messages</a> </li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-brand" href="#">CMOD-Rest Administrator</div>
|
<div class="navbar-brand" href="#">CMOD-Rest Administrator</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user