prework
This commit is contained in:
parent
5c81a67f18
commit
0ff46cc4c1
@ -20,12 +20,11 @@ $routes->get('/logout', 'Auth::logout');
|
|||||||
// ------------------------------------------------------Page Based on Role------------------------------------------------------ //
|
// ------------------------------------------------------Page Based on Role------------------------------------------------------ //
|
||||||
$routes->group('admin', ['filter' => 'role:1'], function($routes) {
|
$routes->group('admin', ['filter' => 'role:1'], function($routes) {
|
||||||
$routes->get('/', 'Admin::index');
|
$routes->get('/', 'Admin::index');
|
||||||
|
$routes->get('modal_specimen', 'Admin::modal_specimen');
|
||||||
$routes->get('user', 'User::index');
|
$routes->get('user', 'User::index');
|
||||||
$routes->post('user/create', 'User::create');
|
$routes->post('user/create', 'User::create');
|
||||||
$routes->post('user/update', 'User::update');
|
$routes->post('user/update', 'User::update');
|
||||||
$routes->post('user/delete', 'User::delete');
|
$routes->post('user/delete', 'User::delete');
|
||||||
$routes->get('specimenDetail', 'Admin::specimenDetailApi'); //Ini Api ya ges ya
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$routes->group('doctor', ['filter' => 'role:2'], function($routes) {
|
$routes->group('doctor', ['filter' => 'role:2'], function($routes) {
|
||||||
@ -41,4 +40,5 @@ $routes->group('cs', ['filter' => 'role:4'], function($routes) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// ------------------------------------------------------For API------------------------------------------------------ //
|
// ------------------------------------------------------For API------------------------------------------------------ //
|
||||||
// $routes->get('/api/dashboard', 'ApiDashboard::index');
|
// $routes->get('/api/dashboard', 'ApiDashboard::index');
|
||||||
|
$routes->get('api/specimen/(:any)', 'Specimen::show/$1');
|
||||||
@ -96,59 +96,7 @@ class Admin extends BaseController
|
|||||||
return view('admin/index', $data);
|
return view('admin/index', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Khusus Untuk API
|
public function modal_specimen() {
|
||||||
public function specimenDetailApi()
|
return view('admin/modal_specimen');
|
||||||
{
|
|
||||||
$access = $this->request->getGet('access');
|
|
||||||
$db = \Config\Database::connect();
|
|
||||||
|
|
||||||
$sql = "SELECT right(p.PATNUMBER,16) as [Rm], ISNULL(p.FIRSTNAME,'') + ' ' + ISNULL(p.NAME,'') as [Name],
|
|
||||||
case when format(p.BIRTHDATE,'MMdd')=format(spr.COLLECTIONDATE,'MMdd') then DATEDIFF(YEAR,p.BIRTHDATE, spr.COLLECTIONDATE)
|
|
||||||
else FLOOR(DATEDIFF(DAY, p.BIRTHDATE, spr.COLLECTIONDATE) / 365.25) end ,
|
|
||||||
[Gender] = case
|
|
||||||
when p.SEX = 1 then 'Male'
|
|
||||||
when p.SEX = 2 then 'Female'
|
|
||||||
else ''
|
|
||||||
end, spr.REQDATE, spo.COMMENTTEXT, dmg.DMG_CKTPNO, dmg.DMG_CPLACEOFBIRTH
|
|
||||||
from SP_REQUESTS spr
|
|
||||||
left join PATIENTS p on p.PATID=spr.PATID
|
|
||||||
left join SP_REQUESTS_OCOM spo on spr.SP_ACCESSNUMBER=spo.SP_ACCESSNUMBER
|
|
||||||
left join GDC_CMOD.dbo.TDL_DEMOGRAPHIC dmg on right(dmg.DMG_CPATNUMBER,15)=right(p.PATNUMBER,15)
|
|
||||||
where spr.PATID=p.PATID and spr.SP_ACCESSNUMBER='$access'";
|
|
||||||
$query = $db->query($sql);
|
|
||||||
$results = $query->getRowArray();
|
|
||||||
$patientIdentity = [
|
|
||||||
'rm' => $results["Rm"],
|
|
||||||
'age' => $results[""], // key kosong
|
|
||||||
'name' => $results['Name'] ?? '',
|
|
||||||
'reqdate' => $results['REQDATE'] ?? '',
|
|
||||||
'gender' => $results['Gender'] ?? '',
|
|
||||||
'placeofbirth' => $results['DMG_CPLACEOFBIRTH'] ?? '',
|
|
||||||
'ktp' => $results['DMG_CKTPNO'] ?? '',
|
|
||||||
'comment' => $results['COMMENTTEXT'] ?? '',
|
|
||||||
];
|
|
||||||
|
|
||||||
$samples = [];
|
|
||||||
$sql = "SELECT req.SAMPTYPEID, req.SAMPCODE, req.SHORTTEXT, tu.STATUS, st.TUBESTATUS
|
|
||||||
from GDC_CMOD.dbo.v_sp_reqtube req
|
|
||||||
left join GDC_CMOD.dbo.TUBES tu on req.SP_ACCESSNUMBER=tu.ACCESSNUMBER and req.SAMPCODE=tu.TUBENUMBER
|
|
||||||
left join glendb.dbo.SP_TUBES st on st.SP_ACCESSNUMBER=req.SP_ACCESSNUMBER and req.SAMPCODE=st.SAMPLETYPE
|
|
||||||
where req.SP_ACCESSNUMBER='$access'";
|
|
||||||
$query = $db->query($sql);
|
|
||||||
$results = $query->getResultArray();
|
|
||||||
foreach ($results as $row) {
|
|
||||||
$samples[] = [
|
|
||||||
'samptypeid' => $row['SAMPTYPEID'] ?? null,
|
|
||||||
'sampcode' => $row['SAMPCODE'] ?? null,
|
|
||||||
'name' => $row['SHORTTEXT'] ?? '',
|
|
||||||
'colstatus' => $row['STATUS'] ?? '',
|
|
||||||
'tubestatus' => $row['TUBESTATUS'] ?? '',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$data = ['patientIdentity' => $patientIdentity, 'samples' => $samples];
|
|
||||||
|
|
||||||
return $this->response->setJSON($data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
57
app/Controllers/Specimen.php
Normal file
57
app/Controllers/Specimen.php
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Controllers;
|
||||||
|
|
||||||
|
class Specimen extends BaseController {
|
||||||
|
public function show($access) {
|
||||||
|
$db = \Config\Database::connect();
|
||||||
|
|
||||||
|
$sql = "SELECT right(p.PATNUMBER,16) as [Rm], ISNULL(p.FIRSTNAME,'') + ' ' + ISNULL(p.NAME,'') as [Name],
|
||||||
|
case when format(p.BIRTHDATE,'MMdd')=format(spr.COLLECTIONDATE,'MMdd') then DATEDIFF(YEAR,p.BIRTHDATE, spr.COLLECTIONDATE)
|
||||||
|
else FLOOR(DATEDIFF(DAY, p.BIRTHDATE, spr.COLLECTIONDATE) / 365.25) end ,
|
||||||
|
[Gender] = case
|
||||||
|
when p.SEX = 1 then 'Male'
|
||||||
|
when p.SEX = 2 then 'Female'
|
||||||
|
else ''
|
||||||
|
end, spr.REQDATE, spo.COMMENTTEXT, dmg.DMG_CKTPNO, dmg.DMG_CPLACEOFBIRTH
|
||||||
|
from SP_REQUESTS spr
|
||||||
|
left join PATIENTS p on p.PATID=spr.PATID
|
||||||
|
left join SP_REQUESTS_OCOM spo on spr.SP_ACCESSNUMBER=spo.SP_ACCESSNUMBER
|
||||||
|
left join GDC_CMOD.dbo.TDL_DEMOGRAPHIC dmg on right(dmg.DMG_CPATNUMBER,15)=right(p.PATNUMBER,15)
|
||||||
|
where spr.PATID=p.PATID and spr.SP_ACCESSNUMBER='$access'";
|
||||||
|
$query = $db->query($sql);
|
||||||
|
$results = $query->getRowArray();
|
||||||
|
$patientIdentity = [
|
||||||
|
'rm' => $results["Rm"],
|
||||||
|
'age' => $results[""], // key kosong
|
||||||
|
'name' => $results['Name'] ?? '',
|
||||||
|
'reqdate' => $results['REQDATE'] ?? '',
|
||||||
|
'gender' => $results['Gender'] ?? '',
|
||||||
|
'placeofbirth' => $results['DMG_CPLACEOFBIRTH'] ?? '',
|
||||||
|
'ktp' => $results['DMG_CKTPNO'] ?? '',
|
||||||
|
'comment' => $results['COMMENTTEXT'] ?? '',
|
||||||
|
];
|
||||||
|
|
||||||
|
$samples = [];
|
||||||
|
$sql = "SELECT req.SAMPTYPEID, req.SAMPCODE, req.SHORTTEXT, tu.STATUS, st.TUBESTATUS
|
||||||
|
from GDC_CMOD.dbo.v_sp_reqtube req
|
||||||
|
left join GDC_CMOD.dbo.TUBES tu on req.SP_ACCESSNUMBER=tu.ACCESSNUMBER and req.SAMPCODE=tu.TUBENUMBER
|
||||||
|
left join glendb.dbo.SP_TUBES st on st.SP_ACCESSNUMBER=req.SP_ACCESSNUMBER and req.SAMPCODE=st.SAMPLETYPE
|
||||||
|
where req.SP_ACCESSNUMBER='$access'";
|
||||||
|
$query = $db->query($sql);
|
||||||
|
$results = $query->getResultArray();
|
||||||
|
foreach ($results as $row) {
|
||||||
|
$samples[] = [
|
||||||
|
'samptypeid' => $row['SAMPTYPEID'] ?? null,
|
||||||
|
'sampcode' => $row['SAMPCODE'] ?? null,
|
||||||
|
'name' => $row['SHORTTEXT'] ?? '',
|
||||||
|
'colstatus' => $row['STATUS'] ?? '',
|
||||||
|
'tubestatus' => $row['TUBESTATUS'] ?? '',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$data = ['patientIdentity' => $patientIdentity, 'samples' => $samples];
|
||||||
|
|
||||||
|
return $this->response->setJSON($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -17,75 +17,6 @@
|
|||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sidebar {
|
|
||||||
width: 200px;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 100vh;
|
|
||||||
background: #343a40;
|
|
||||||
color: #fff;
|
|
||||||
transition: all 0.3s;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
#sidebar.collapsed {
|
|
||||||
width: 70px;
|
|
||||||
}
|
|
||||||
#sidebar .nav-link {
|
|
||||||
color: #adb5bd;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: 10px;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
#sidebar.collapsed .nav-link span {
|
|
||||||
opacity: 0;
|
|
||||||
visibility: hidden;
|
|
||||||
width: 0;
|
|
||||||
}
|
|
||||||
#sidebar .nav-link.active {
|
|
||||||
background: #495057;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
#content {
|
|
||||||
margin-left: 200px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
padding: 20px;
|
|
||||||
}
|
|
||||||
#content.fullwidth {
|
|
||||||
margin-left: 70px;
|
|
||||||
}
|
|
||||||
.toggle-btn {
|
|
||||||
position: fixed;
|
|
||||||
top: 15px;
|
|
||||||
left: 15px;
|
|
||||||
z-index: 999;
|
|
||||||
}
|
|
||||||
.main {
|
|
||||||
transition: margin-left 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main.shifted {
|
|
||||||
margin-left: 200px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.sidebar {
|
|
||||||
width: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.main.shifted {
|
|
||||||
margin-left: 150px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Untuk Card Status Counter */
|
/* Untuk Card Status Counter */
|
||||||
.status-card {
|
.status-card {
|
||||||
width: 123px;
|
width: 123px;
|
||||||
@ -202,79 +133,17 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<?= $this->renderSection('content'); ?>
|
||||||
|
|
||||||
<button class="btn btn-sm btn-secondary toggle-btn" id="toggleSidebar"> <i class="bi bi-list"></i> </button>
|
|
||||||
|
|
||||||
<div id="sidebar" class="collapsed">
|
|
||||||
<h5 class="p-3 text-center text-truncate"> <span class="sidebar-title">5Panda</span> </h5>
|
|
||||||
<nav class="nav flex-column px-2">
|
|
||||||
<a class="nav-link" href="<?=base_url('admin');?>"><i class="bi bi-house-door"></i> <span>Dashboard</span></a>
|
|
||||||
<a class="nav-link" href="<?=base_url('admin/user');?>"><i class="bi bi-people"></i> <span>Users</span></a>
|
|
||||||
<a class="nav-link" href="#"><i class="bi bi-graph-up"></i> <span>Reports</span></a>
|
|
||||||
<a class="nav-link" href="<?=base_url('logout');?>"><i class="bi bi-box-arrow-in-left"></i> <span>Log out</span></a>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="content" class="main p-1 fullwidth"> <?= $this->renderSection('content'); ?> </div>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
console.log("Jangan Nakal Yaa😏😏😏");
|
console.log("salam 5panda");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Bootstrap 5 JS Bundle -->
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/js/bootstrap.bundle.min.js"></script>
|
||||||
|
|
||||||
<!-- jQuery (Wajib untuk DataTables) -->
|
|
||||||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||||||
|
|
||||||
<!-- DataTables JS -->
|
|
||||||
<script src="https://cdn.datatables.net/v/bs5/dt-2.3.4/r-3.0.7/datatables.min.js" integrity="sha384-O4V7rOTTcSRflQBTMk8URAYWhGGEMgmmLFrqu3e83FQtze3vmndvrH3GcRdrfXRu" crossorigin="anonymous"></script>
|
<script src="https://cdn.datatables.net/v/bs5/dt-2.3.4/r-3.0.7/datatables.min.js" integrity="sha384-O4V7rOTTcSRflQBTMk8URAYWhGGEMgmmLFrqu3e83FQtze3vmndvrH3GcRdrfXRu" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.bootstrap5.min.js"></script>
|
<script src="https://cdn.datatables.net/2.0.8/js/dataTables.bootstrap5.min.js"></script>
|
||||||
|
<script src="https://unpkg.com/mustache@4.2.0/mustache.min.js"></script>
|
||||||
|
|
||||||
<script>
|
|
||||||
const sidebar = document.getElementById('sidebar');
|
|
||||||
const main = document.getElementById('main');
|
|
||||||
|
|
||||||
// Datatable
|
|
||||||
$(document).ready(function () {
|
|
||||||
$('#datatables').DataTable({
|
|
||||||
order: [[0, 'asc'], [3, 'asc']],
|
|
||||||
paging: false,
|
|
||||||
scrollCollapse: true,
|
|
||||||
scrollY: '650px',
|
|
||||||
columnDefs: [{
|
|
||||||
className: 'text-center',
|
|
||||||
targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
|
||||||
}, // semua kolom di tengah
|
|
||||||
{
|
|
||||||
className: 'text-start',
|
|
||||||
targets: [12]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
language: {
|
|
||||||
// search: "Cari:",
|
|
||||||
// lengthMenu: "Tampilkan _MENU_ data",
|
|
||||||
// info: "Menampilkan _START_ sampai _END_ dari _TOTAL_ data",
|
|
||||||
// paginate: {
|
|
||||||
// previous: "Sebelumnya",
|
|
||||||
// next: "Berikutnya"
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
responsive: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#toggleSidebar').on('click', function () {
|
|
||||||
$('#sidebar').toggleClass('collapsed');
|
|
||||||
$('#content').toggleClass('fullwidth');
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#sidebar .nav-link').on('click', function () {
|
|
||||||
$('#sidebar .nav-link').removeClass('active');
|
|
||||||
$(this).addClass('active');
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<?= $this->renderSection('script'); ?>
|
<?= $this->renderSection('script'); ?>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
562
app/Views/admin/index copy.php
Normal file
562
app/Views/admin/index copy.php
Normal file
@ -0,0 +1,562 @@
|
|||||||
|
<?= $this->extend('_layouts/main.php') ?>
|
||||||
|
|
||||||
|
<?= $this->section('title') ?>
|
||||||
|
<title>Admin Glenlis</title>
|
||||||
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
|
<?= $this->section('content') ?>
|
||||||
|
|
||||||
|
<div class="container-fluid px-3">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<!-- Accordion Search Detail -->
|
||||||
|
<!--
|
||||||
|
<div class="col col-12 mt-3">
|
||||||
|
<div class="accordion" id="accordionPanelsStayOpenExample">
|
||||||
|
<div class="accordion-item">
|
||||||
|
<h2 class="accordion-header">
|
||||||
|
<button class="accordion-button" type="button" data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="false"
|
||||||
|
aria-controls="panelsStayOpen-collapseOne">
|
||||||
|
🔎 Search Form
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show">
|
||||||
|
<div class="accordion-body">
|
||||||
|
<form method="GET" class="p-1" action='<?= base_url('/admin') ?>'>
|
||||||
|
<div class="row align-items-center g-2">
|
||||||
|
<div class="col-auto fw-semibold text-muted">
|
||||||
|
Date :
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date1"
|
||||||
|
value="<?php echo $date1; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">-</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date2"
|
||||||
|
value="<?php echo $date2; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary px-3">LIST</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="button" class="btn btn-sm btn-outline-dark px-3"
|
||||||
|
onclick="window.location.href='/';">
|
||||||
|
RESET
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="accordion-item">
|
||||||
|
<h2 class="accordion-header">
|
||||||
|
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
||||||
|
data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false"
|
||||||
|
aria-controls="panelsStayOpen-collapseTwo">
|
||||||
|
☰ Filter Form
|
||||||
|
</button>
|
||||||
|
</h2>
|
||||||
|
<div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
|
||||||
|
<div class="accordion-body">
|
||||||
|
<form class="p-1">
|
||||||
|
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Name :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="col2_filter"
|
||||||
|
data-column="2" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 d-flex align-items-center">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Reff :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="col5_filter"
|
||||||
|
data-column="5" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Test :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="col7_filter"
|
||||||
|
data-column="7" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 d-flex align-items-center">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Doctor :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="col6_filter"
|
||||||
|
data-column="6" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row mb-3">
|
||||||
|
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Exc :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="exc" />
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 d-flex align-items-center">
|
||||||
|
<label class="col-3 col-form-label-sm text-muted fw-semibold">Send to :</label>
|
||||||
|
<input type="text" class="form-control form-control-sm" id="col8_filter"
|
||||||
|
data-column="8" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
|
||||||
|
<form method="GET" action='<?= base_url('/admin') ?>'>
|
||||||
|
<div class="row align-items-center g-3 mt-3">
|
||||||
|
<div class="col-auto fw-semibold text-muted">
|
||||||
|
Date :
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date1"
|
||||||
|
value="<?php echo $date1; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">-</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date2"
|
||||||
|
value="<?php echo $date2; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary">Search</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto"> <button type="button" class="btn btn-sm btn-outline-dark" onclick="window.location.href='<?=base_url();?>';"> RESET </button> </div>
|
||||||
|
<div class="col-auto"> <button type="button" class="btn btn-sm btn-dark" data-bs-toggle="offcanvas" data-bs-target="#offcanvasFilter" aria-controls="offcanvasFilter"> Adv.Filter </button> </div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasFilter" aria-labelledby="offcanvasFilterLabel">
|
||||||
|
<div class="offcanvas-header">
|
||||||
|
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Advanced Filter</h5>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="offcanvas-body">
|
||||||
|
orang dalam
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Card Status Semua Counter
|
||||||
|
<div class="row justify-content-evenly mt-4">
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['pending']?></div>
|
||||||
|
<div class="status-label">Pending</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center PartColl">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['partialCollected']?></div>
|
||||||
|
<div class="status-label">Partial Collected</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center Collected">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['collected']?></div>
|
||||||
|
<div class="status-label">Collected</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center PartRecv">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['partialReceived']?></div>
|
||||||
|
<div class="status-label">Partial Received</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center Received">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['received']?></div>
|
||||||
|
<div class="status-label">Received</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center Incomplete">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['incomplete']?></div>
|
||||||
|
<div class="status-label">Incomplete</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center Final">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['final']?></div>
|
||||||
|
<div class="status-label">Final</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center FinVerification">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['finalValidation']?></div>
|
||||||
|
<div class="status-label">Final(Verified)</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center PenVerification">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count"><?=$counter['pendingValidation']?></div>
|
||||||
|
<div class="status-label">Pending(Verified)</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- <div class="col-auto mb-2">
|
||||||
|
<div class="card status-card text-center">
|
||||||
|
<div class="card-body p-2">
|
||||||
|
<div class="status-count text-success">-</div>
|
||||||
|
<div class="status-label text-success">-</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
-->
|
||||||
|
<!-- Semua Tabel -->
|
||||||
|
|
||||||
|
<div class="table table-responsive-scroll">
|
||||||
|
<table id="datatables" class="table table-sm table-hover table-bordered align-middle table-striped">
|
||||||
|
<thead class="table-primary">
|
||||||
|
<tr>
|
||||||
|
<th>S</th>
|
||||||
|
<th style='width:7%;'>Order Datetime</th>
|
||||||
|
<th>Patient Name</th>
|
||||||
|
<th>No Lab</th>
|
||||||
|
<th>No Register</th>
|
||||||
|
<th style='width:10%;'>Reff</th>
|
||||||
|
<th>Doctor</th>
|
||||||
|
<th style='width:10%;'>Tests</th>
|
||||||
|
<th style='width:5%;'>Result To</th>
|
||||||
|
<th style='width:8%;'>Validation</th>
|
||||||
|
<th style='width:5%;'>Status</th>
|
||||||
|
<th style='width:8%;'></th>
|
||||||
|
<th style='width:6%;'></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php foreach($dataList as $row) : ?>
|
||||||
|
<?php
|
||||||
|
switch ($row['statscode']) {
|
||||||
|
case 1: $class = 'BackPend'; break;
|
||||||
|
case 2: $class = 'PartColl'; break;
|
||||||
|
case 3: $class = 'Collected'; break;
|
||||||
|
case 4: $class = 'PartRecv'; break;
|
||||||
|
case 5: $class = 'Received'; break;
|
||||||
|
case 6: $class = 'Incomplete'; break;
|
||||||
|
case 7: $class = 'Final'; break;
|
||||||
|
case 8: $class = 'FinVerification'; break;
|
||||||
|
case 9: $class = 'PenVerification'; break;
|
||||||
|
default: $class = ''; break;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['statscode']) ?>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['reqdate']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['patname']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['sp_accessnumber']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['hostordernumber']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['reff']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['doc']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['tests']) ?>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol" data-access="<?= $row['sp_accessnumber'] ?>" data-bs-toggle="modal"
|
||||||
|
data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['odr_cresult_to']) ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<h6>
|
||||||
|
<span class="px-3 py-2 badge text-success border border-success bg-success-subtle">
|
||||||
|
_
|
||||||
|
</span>
|
||||||
|
</h6>
|
||||||
|
<a href="#" class="text-primary">Result</a><br>
|
||||||
|
<a href="#" class="text-primary" disabled>Invalidation</a><br>
|
||||||
|
</td>
|
||||||
|
<td class="pointercol <?= esc($class) ?>" data-access="<?= $row['sp_accessnumber'] ?>"
|
||||||
|
data-bs-toggle="modal" data-bs-target="#detailModal">
|
||||||
|
<?= esc($row['stats']) ?>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="#" class="text-primary">Preview</a> <br/>
|
||||||
|
|
||||||
|
<a href="#" class="text-danger">Print</a> | <a href="#" class="text-danger">Eng</a> <br/>
|
||||||
|
<a href="#" class="text-primary">Pdf</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox" name="printed"> Printed<br>
|
||||||
|
<input type="checkbox" name="hardcopy"> Hardcopy
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Modal Specimen Collection-->
|
||||||
|
<div class="modal fade" id="detailModal" aria-hidden="true" aria-labelledby="detailModal" tabindex="-1">
|
||||||
|
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h1 class="modal-title fw-bold fs-4" id="detailModal">Specimen Collection</h1>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" id="modalContent">
|
||||||
|
<!-- <div class="row mb-4">
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">Patient Name </div>
|
||||||
|
<div class="info-value fw-semibold">: </div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">Age</div>
|
||||||
|
<div class="info-value fw-semibold">: 23</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">No Lab</div>
|
||||||
|
<div class="info-value fw-semibold">: 5111113439</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">Sex</div>
|
||||||
|
<div class="info-value fw-semibold">: Female</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title fs-4 mb-2"><i class="bi bi-flask-florence-fill"></i> Tube</h5>
|
||||||
|
|
||||||
|
<table class="table fs-6 text-center">
|
||||||
|
<thead>
|
||||||
|
<tr class=''>
|
||||||
|
<th scope="col">Status</th>
|
||||||
|
<th scope="col">Sample Name</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" name="val"></td>
|
||||||
|
<td>101 - EDTA</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" name="val"></td>
|
||||||
|
<td>200 - Urine</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><input type="checkbox" name="val"></td>
|
||||||
|
<td>900 - Other</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='text-center'>
|
||||||
|
<td colspan="2">
|
||||||
|
<h6 class="p-0 m-0">
|
||||||
|
<i class="bi bi-pencil-square" role="button"
|
||||||
|
onclick="commentValue()"></i>
|
||||||
|
</h6>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="modal fade" id="detailModal" tabindex="-1" aria-hidden="true">
|
||||||
|
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h1 class="modal-title fs-5">Specimen Collection</h1>
|
||||||
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body" id="modalContent">
|
||||||
|
<p class="text-center text-muted">Klik data untuk melihat detail...</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
|
<?= $this->section('script') ?>
|
||||||
|
<script>
|
||||||
|
// Untuk Koment Value
|
||||||
|
function commentValue() {
|
||||||
|
const input = prompt("Masukkan Komentar :");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Untuk Detail
|
||||||
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
|
const modal = document.getElementById('detailModal');
|
||||||
|
const modalContent = document.getElementById('modalContent');
|
||||||
|
document.querySelectorAll('.pointercol').forEach(td => {
|
||||||
|
td.addEventListener('click', async function () {
|
||||||
|
const access = this.dataset.access;
|
||||||
|
modalContent.innerHTML =
|
||||||
|
"<p class='text-center text-muted'>Loading data...</p>";
|
||||||
|
try {
|
||||||
|
// Get API
|
||||||
|
const res = await fetch(
|
||||||
|
`<?=base_url();?>admin/specimenDetail?access=${access}`);
|
||||||
|
const data = await res.json();
|
||||||
|
|
||||||
|
modalContent.innerHTML = `
|
||||||
|
<div class="row mb-4 p-3">
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Patient</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.name}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Age</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.age} years</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Gender</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.gender}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">MR#</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.rm}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">KTP</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.ktp}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">Place of Birth</div>
|
||||||
|
<div class="info-value">: ${data.patientIdentity.placeofbirth}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title fs-4 mb-2">
|
||||||
|
<i class="bi bi-flask-florence-fill"></i> Tube
|
||||||
|
</h5>
|
||||||
|
|
||||||
|
<table class="table fs-6 text-start">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class='text-center'>Status</th>
|
||||||
|
<th>Sample Code</th>
|
||||||
|
<th>Sample Name</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
${data.samples.map(s => `
|
||||||
|
<tr>
|
||||||
|
<td class='text-center'>
|
||||||
|
<input type="checkbox" class="form-check-input"
|
||||||
|
${s.colstatus == 1 ? "checked" : ""}
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
</td>
|
||||||
|
<td>${s.sampcode}</td>
|
||||||
|
<td>${s.name}</td>
|
||||||
|
<td>
|
||||||
|
<button type="button" class="btn btn-success m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Coll.</h6></button>
|
||||||
|
<button type="button" class="btn btn-warning m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Un-Coll.</h6></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
`).join('')}
|
||||||
|
|
||||||
|
<tr class="text-center">
|
||||||
|
<td colspan="4">
|
||||||
|
<h6 class="p-0 m-0">
|
||||||
|
<i class="bi bi-pencil-square" role="button" onclick="commentValue()"></i>
|
||||||
|
</h6>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
modalContent.innerHTML =
|
||||||
|
"<p class='text-danger text-center'>Gagal memuat data.</p>";
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<?= $this->endSection() ?>
|
||||||
@ -7,250 +7,24 @@
|
|||||||
<?= $this->section('content') ?>
|
<?= $this->section('content') ?>
|
||||||
|
|
||||||
<div class="container-fluid px-3">
|
<div class="container-fluid px-3">
|
||||||
|
<div class='row p-1'>
|
||||||
<div class="row">
|
<div class='col fw-bold'>Dashboard</div>
|
||||||
|
<div class='col text-end'>
|
||||||
<!-- Accordion Search Detail -->
|
Hi, User
|
||||||
<!--
|
<button class="btn btn-sm btn-secondary" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false"><i class="bi bi-list"></i></button>
|
||||||
<div class="col col-12 mt-3">
|
<div class="dropdown">
|
||||||
<div class="accordion" id="accordionPanelsStayOpenExample">
|
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||||
<div class="accordion-item">
|
<li><a class="dropdown-item" href="<?=base_url('admin/');?>">Dashboard</a></li>
|
||||||
<h2 class="accordion-header">
|
<li><a class="dropdown-item" href="<?=base_url('');?>">Report</a></li>
|
||||||
<button class="accordion-button" type="button" data-bs-toggle="collapse"
|
<li><a class="dropdown-item" href="<?=base_url('admin/user');?>">User</a></li>
|
||||||
data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="false"
|
<li><a class="dropdown-item" href="<?=base_url('logout');?>">Log Out</a></li>
|
||||||
aria-controls="panelsStayOpen-collapseOne">
|
</ul>
|
||||||
🔎 Search Form
|
|
||||||
</button>
|
|
||||||
</h2>
|
|
||||||
<div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse show">
|
|
||||||
<div class="accordion-body">
|
|
||||||
<form method="GET" class="p-1" action='<?= base_url('/admin') ?>'>
|
|
||||||
<div class="row align-items-center g-2">
|
|
||||||
<div class="col-auto fw-semibold text-muted">
|
|
||||||
Date :
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<input type="date" class="form-control form-control-sm" name="date1"
|
|
||||||
value="<?php echo $date1; ?>" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">-</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<input type="date" class="form-control form-control-sm" name="date2"
|
|
||||||
value="<?php echo $date2; ?>" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<button type="submit" class="btn btn-sm btn-primary px-3">LIST</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<button type="button" class="btn btn-sm btn-outline-dark px-3"
|
|
||||||
onclick="window.location.href='/';">
|
|
||||||
RESET
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="accordion-item">
|
|
||||||
<h2 class="accordion-header">
|
|
||||||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse"
|
|
||||||
data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false"
|
|
||||||
aria-controls="panelsStayOpen-collapseTwo">
|
|
||||||
☰ Filter Form
|
|
||||||
</button>
|
|
||||||
</h2>
|
|
||||||
<div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
|
|
||||||
<div class="accordion-body">
|
|
||||||
<form class="p-1">
|
|
||||||
|
|
||||||
<div class="row mb-2">
|
|
||||||
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Name :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="col2_filter"
|
|
||||||
data-column="2" />
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 d-flex align-items-center">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Reff :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="col5_filter"
|
|
||||||
data-column="5" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-2">
|
|
||||||
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Test :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="col7_filter"
|
|
||||||
data-column="7" />
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 d-flex align-items-center">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Doctor :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="col6_filter"
|
|
||||||
data-column="6" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row mb-3">
|
|
||||||
<div class="col-md-6 d-flex align-items-center mb-2 mb-md-0">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Exc :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="exc" />
|
|
||||||
</div>
|
|
||||||
<div class="col-md-6 d-flex align-items-center">
|
|
||||||
<label class="col-3 col-form-label-sm text-muted fw-semibold">Send to :</label>
|
|
||||||
<input type="text" class="form-control form-control-sm" id="col8_filter"
|
|
||||||
data-column="8" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
-->
|
|
||||||
|
|
||||||
<form method="GET" action='<?= base_url('/admin') ?>'>
|
|
||||||
<div class="row align-items-center g-3 mt-3">
|
|
||||||
<div class="col-auto fw-semibold text-muted">
|
|
||||||
Date :
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<input type="date" class="form-control form-control-sm" name="date1"
|
|
||||||
value="<?php echo $date1; ?>" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">-</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<input type="date" class="form-control form-control-sm" name="date2"
|
|
||||||
value="<?php echo $date2; ?>" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto">
|
|
||||||
<button type="submit" class="btn btn-sm btn-primary">Search</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto"> <button type="button" class="btn btn-sm btn-outline-dark" onclick="window.location.href='<?=base_url();?>';"> RESET </button> </div>
|
|
||||||
<div class="col-auto"> <button type="button" class="btn btn-sm btn-dark" data-bs-toggle="offcanvas" data-bs-target="#offcanvasFilter" aria-controls="offcanvasFilter"> Adv.Filter </button> </div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasFilter" aria-labelledby="offcanvasFilterLabel">
|
|
||||||
<div class="offcanvas-header">
|
|
||||||
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Advanced Filter</h5>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="offcanvas-body">
|
|
||||||
orang dalam
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Card Status Semua Counter
|
|
||||||
<div class="row justify-content-evenly mt-4">
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['pending']?></div>
|
|
||||||
<div class="status-label">Pending</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center PartColl">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['partialCollected']?></div>
|
|
||||||
<div class="status-label">Partial Collected</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center Collected">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['collected']?></div>
|
|
||||||
<div class="status-label">Collected</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center PartRecv">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['partialReceived']?></div>
|
|
||||||
<div class="status-label">Partial Received</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center Received">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['received']?></div>
|
|
||||||
<div class="status-label">Received</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center Incomplete">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['incomplete']?></div>
|
|
||||||
<div class="status-label">Incomplete</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center Final">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['final']?></div>
|
|
||||||
<div class="status-label">Final</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center FinVerification">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['finalValidation']?></div>
|
|
||||||
<div class="status-label">Final(Verified)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center PenVerification">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count"><?=$counter['pendingValidation']?></div>
|
|
||||||
<div class="status-label">Pending(Verified)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- <div class="col-auto mb-2">
|
|
||||||
<div class="card status-card text-center">
|
|
||||||
<div class="card-body p-2">
|
|
||||||
<div class="status-count text-success">-</div>
|
|
||||||
<div class="status-label text-success">-</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
-->
|
|
||||||
<!-- Semua Tabel -->
|
|
||||||
|
|
||||||
<div class="table table-responsive-scroll">
|
<div class="table table-responsive-scroll">
|
||||||
<table id="datatables" class="table table-sm table-hover table-bordered align-middle table-striped">
|
<table id="datatables" class="table table-sm table-hover table-bordered align-middle table-striped">
|
||||||
<thead class="table-primary">
|
<thead class="table-primary">
|
||||||
@ -364,93 +138,90 @@
|
|||||||
<h1 class="modal-title fw-bold fs-4" id="detailModal">Specimen Collection</h1>
|
<h1 class="modal-title fw-bold fs-4" id="detailModal">Specimen Collection</h1>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body" id="modalContent">
|
<div class="modal-body" id="modalContent"> </div>
|
||||||
<!-- <div class="row mb-4">
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">Patient Name </div>
|
|
||||||
<div class="info-value fw-semibold">: </div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">Age</div>
|
|
||||||
<div class="info-value fw-semibold">: 23</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">No Lab</div>
|
|
||||||
<div class="info-value fw-semibold">: 5111113439</div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">Sex</div>
|
|
||||||
<div class="info-value fw-semibold">: Female</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title fs-4 mb-2"><i class="bi bi-flask-florence-fill"></i> Tube</h5>
|
|
||||||
|
|
||||||
<table class="table fs-6 text-center">
|
|
||||||
<thead>
|
|
||||||
<tr class=''>
|
|
||||||
<th scope="col">Status</th>
|
|
||||||
<th scope="col">Sample Name</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" name="val"></td>
|
|
||||||
<td>101 - EDTA</td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" name="val"></td>
|
|
||||||
<td>200 - Urine</td>
|
|
||||||
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><input type="checkbox" name="val"></td>
|
|
||||||
<td>900 - Other</td>
|
|
||||||
</tr>
|
|
||||||
<tr class='text-center'>
|
|
||||||
<td colspan="2">
|
|
||||||
<h6 class="p-0 m-0">
|
|
||||||
<i class="bi bi-pencil-square" role="button"
|
|
||||||
onclick="commentValue()"></i>
|
|
||||||
</h6>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="modal fade" id="detailModal" tabindex="-1" aria-hidden="true">
|
|
||||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
<!-- OffCanvas Filter -->
|
||||||
<div class="modal-content">
|
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasFilter" aria-labelledby="offcanvasFilterLabel">
|
||||||
<div class="modal-header">
|
<div class="offcanvas-header">
|
||||||
<h1 class="modal-title fs-5">Specimen Collection</h1>
|
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Advanced Filter</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
||||||
</div>
|
|
||||||
<div class="modal-body" id="modalContent">
|
|
||||||
<p class="text-center text-muted">Klik data untuk melihat detail...</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div> -->
|
<div class="offcanvas-body">
|
||||||
|
orang dalam
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?= $this->endSection() ?>
|
<?= $this->endSection() ?>
|
||||||
|
|
||||||
<?= $this->section('script') ?>
|
<?= $this->section('script') ?>
|
||||||
<script>
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('#datatables').DataTable({
|
||||||
|
layout: {
|
||||||
|
topStart: {
|
||||||
|
div: {
|
||||||
|
id: 'myCustomDiv',
|
||||||
|
className: 'custom-div-style',
|
||||||
|
html: `
|
||||||
|
<form method="GET" action='<?= base_url('/admin') ?>'>
|
||||||
|
<div class="row align-items-center g-3">
|
||||||
|
<div class="col-auto fw-semibold text-muted">
|
||||||
|
Date :
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date1"
|
||||||
|
value="<?php echo $date1; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">-</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="date" class="form-control form-control-sm" name="date2"
|
||||||
|
value="<?php echo $date2; ?>" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto">
|
||||||
|
<button type="submit" class="btn btn-sm btn-primary">Search</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-auto"> <button type="button" class="btn btn-sm btn-outline-dark" onclick="window.location.href='<?=base_url();?>';"> RESET </button> </div>
|
||||||
|
<div class="col-auto"> <button type="button" class="btn btn-sm btn-dark" data-bs-toggle="offcanvas" data-bs-target="#offcanvasFilter" aria-controls="offcanvasFilter"> Adv.Filter </button> </div>
|
||||||
|
</div>
|
||||||
|
</form>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
order: [[0, 'asc'], [3, 'asc']],
|
||||||
|
paging: false,
|
||||||
|
scrollCollapse: true,
|
||||||
|
scrollY: '75vh',
|
||||||
|
columnDefs: [{
|
||||||
|
className: 'text-center',
|
||||||
|
targets: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
|
||||||
|
}, // semua kolom di tengah
|
||||||
|
{
|
||||||
|
className: 'text-start',
|
||||||
|
targets: [12]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
language: {
|
||||||
|
// search: "Cari:",
|
||||||
|
// lengthMenu: "Tampilkan _MENU_ data",
|
||||||
|
// info: "Menampilkan _START_ sampai _END_ dari _TOTAL_ data",
|
||||||
|
// paginate: {
|
||||||
|
// previous: "Sebelumnya",
|
||||||
|
// next: "Berikutnya"
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
responsive: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
// Untuk Koment Value
|
// Untuk Koment Value
|
||||||
function commentValue() {
|
function commentValue() {
|
||||||
const input = prompt("Masukkan Komentar :");
|
const input = prompt("Masukkan Komentar :");
|
||||||
@ -467,93 +238,14 @@
|
|||||||
"<p class='text-center text-muted'>Loading data...</p>";
|
"<p class='text-center text-muted'>Loading data...</p>";
|
||||||
try {
|
try {
|
||||||
// Get API
|
// Get API
|
||||||
const res = await fetch(
|
const res = await fetch(`<?=base_url();?>api/specimen/${access}`);
|
||||||
`<?=base_url();?>admin/specimenDetail?access=${access}`);
|
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
|
$.get(`<?=base_url('admin/modal_specimen');?>`, function(tpl) {
|
||||||
modalContent.innerHTML = `
|
//console.log(tpl);
|
||||||
<div class="row mb-4 p-3">
|
//console.log(data);
|
||||||
|
const html = Mustache.render(tpl, data);
|
||||||
<div class="col-md-6">
|
modalContent.innerHTML=html;
|
||||||
<div class="info-pair d-flex">
|
});
|
||||||
<div class="info-label w-25 fw-bold">Patient</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.name}</div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-25 fw-bold">Age</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.age} years</div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-25 fw-bold">Gender</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.gender}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">MR#</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.rm}</div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">KTP</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.ktp}</div>
|
|
||||||
</div>
|
|
||||||
<div class="info-pair d-flex">
|
|
||||||
<div class="info-label w-50 fw-bold">Place of Birth</div>
|
|
||||||
<div class="info-value">: ${data.patientIdentity.placeofbirth}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title fs-4 mb-2">
|
|
||||||
<i class="bi bi-flask-florence-fill"></i> Tube
|
|
||||||
</h5>
|
|
||||||
|
|
||||||
<table class="table fs-6 text-start">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th class='text-center'>Status</th>
|
|
||||||
<th>Sample Code</th>
|
|
||||||
<th>Sample Name</th>
|
|
||||||
<th>Action</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
|
|
||||||
<tbody>
|
|
||||||
${data.samples.map(s => `
|
|
||||||
<tr>
|
|
||||||
<td class='text-center'>
|
|
||||||
<input type="checkbox" class="form-check-input"
|
|
||||||
${s.colstatus == 1 ? "checked" : ""}
|
|
||||||
disabled
|
|
||||||
>
|
|
||||||
</td>
|
|
||||||
<td>${s.sampcode}</td>
|
|
||||||
<td>${s.name}</td>
|
|
||||||
<td>
|
|
||||||
<button type="button" class="btn btn-success m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Coll.</h6></button>
|
|
||||||
<button type="button" class="btn btn-warning m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Un-Coll.</h6></button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
`).join('')}
|
|
||||||
|
|
||||||
<tr class="text-center">
|
|
||||||
<td colspan="4">
|
|
||||||
<h6 class="p-0 m-0">
|
|
||||||
<i class="bi bi-pencil-square" role="button" onclick="commentValue()"></i>
|
|
||||||
</h6>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
modalContent.innerHTML =
|
modalContent.innerHTML =
|
||||||
"<p class='text-danger text-center'>Gagal memuat data.</p>";
|
"<p class='text-danger text-center'>Gagal memuat data.</p>";
|
||||||
|
|||||||
80
app/Views/admin/modal_specimen.php
Normal file
80
app/Views/admin/modal_specimen.php
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
<div class="row mb-4 p-3">
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Patient</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.name}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Age</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.age}} years</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-25 fw-bold">Gender</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.gender}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">MR#</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.rm}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">KTP</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.ktp}}</div>
|
||||||
|
</div>
|
||||||
|
<div class="info-pair d-flex">
|
||||||
|
<div class="info-label w-50 fw-bold">Place of Birth</div>
|
||||||
|
<div class="info-value">: {{patientIdentity.placeofbirth}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title fs-4 mb-2">
|
||||||
|
<i class="bi bi-flask-florence-fill"></i> Tube
|
||||||
|
</h5>
|
||||||
|
|
||||||
|
<table class="table fs-6 text-start">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class='text-center'>Status</th>
|
||||||
|
<th>Sample Code</th>
|
||||||
|
<th>Sample Name</th>
|
||||||
|
<th>Action</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
{{#samples}}
|
||||||
|
<tr>
|
||||||
|
<td class='text-center'>
|
||||||
|
<input type="checkbox" class="form-check-input"
|
||||||
|
{{#is_checked}}checked{{/is_checked}}
|
||||||
|
disabled
|
||||||
|
>
|
||||||
|
</td>
|
||||||
|
<td>{{sampcode}}</td>
|
||||||
|
<td>{{name}}</td>
|
||||||
|
<td>
|
||||||
|
<button type="button" class="btn btn-success m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Coll.</h6></button>
|
||||||
|
<button type="button" class="btn btn-warning m-0 px-2 py-1" onclick=""><h6 class="p-0 m-0">Un-Coll.</h6></button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{{/samples}}
|
||||||
|
|
||||||
|
<tr class="text-center">
|
||||||
|
<td colspan="4">
|
||||||
|
<h6 class="p-0 m-0">
|
||||||
|
<i class="bi bi-pencil-square" role="button" onclick="commentValue()"></i>
|
||||||
|
</h6>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
Loading…
x
Reference in New Issue
Block a user