Update web/patients.html
Browse files- web/patients.html +30 -48
web/patients.html
CHANGED
|
@@ -9,7 +9,7 @@
|
|
| 9 |
<title>Gestión de Pacientes</title>
|
| 10 |
<link rel="stylesheet" href="css/simplebar.css">
|
| 11 |
<link href="https://fonts.googleapis.com/css2?family=Overpass:ital,wght@0,100;0,200;0,300;0,400;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
|
| 12 |
-
<
|
| 13 |
<link rel="stylesheet" href="css/select2.css">
|
| 14 |
<link rel="stylesheet" href="css/dropzone.css">
|
| 15 |
<link rel="stylesheet" href="css/uppy.min.css">
|
|
@@ -185,7 +185,7 @@
|
|
| 185 |
<div class="wrapper">
|
| 186 |
<nav class="topnav navbar navbar-light">
|
| 187 |
<button type="button" class="navbar-toggler text-muted mt-2 p-0 mr-3 collapseSidebar">
|
| 188 |
-
<i
|
| 189 |
</button>
|
| 190 |
|
| 191 |
<ul class="nav">
|
|
@@ -205,7 +205,7 @@
|
|
| 205 |
<!-- Sidebar -->
|
| 206 |
<aside class="sidebar-left border-right bg-white shadow" id="leftSidebar" data-simplebar>
|
| 207 |
<a href="#" class="btn collapseSidebar toggle-btn d-lg-none text-muted ml-2 mt-3" data-toggle="toggle">
|
| 208 |
-
<i
|
| 209 |
</a>
|
| 210 |
<nav class="vertnav navbar navbar-light">
|
| 211 |
<!-- nav bar -->
|
|
@@ -219,31 +219,31 @@
|
|
| 219 |
<ul class="navbar-nav flex-fill w-100 mb-2">
|
| 220 |
<li class="nav-item">
|
| 221 |
<a class="nav-link" href="./index.html">
|
| 222 |
-
<i
|
| 223 |
<span class="ml-3 item-text">Dashboard</span>
|
| 224 |
</a>
|
| 225 |
</li>
|
| 226 |
<li class="nav-item">
|
| 227 |
<a class="nav-link" href="./diagnosis.html">
|
| 228 |
-
<i
|
| 229 |
<span class="ml-3 item-text">Diagnóstico</span>
|
| 230 |
</a>
|
| 231 |
</li>
|
| 232 |
<li class="nav-item active">
|
| 233 |
<a class="nav-link" href="./patients.html">
|
| 234 |
-
<i
|
| 235 |
<span class="ml-3 item-text">Pacientes</span>
|
| 236 |
</a>
|
| 237 |
</li>
|
| 238 |
<li class="nav-item">
|
| 239 |
<a class="nav-link" href="./historial-consultas.html">
|
| 240 |
-
<i
|
| 241 |
<span class="ml-3 item-text">Consultas</span>
|
| 242 |
</a>
|
| 243 |
</li>
|
| 244 |
-
<li class="nav-item
|
| 245 |
<a class="nav-link" href="./users.html">
|
| 246 |
-
<i
|
| 247 |
<span class="ml-3 item-text">Usuarios</span>
|
| 248 |
</a>
|
| 249 |
</li>
|
|
@@ -262,14 +262,14 @@
|
|
| 262 |
<div class="row align-items-center mb-4">
|
| 263 |
<div class="col">
|
| 264 |
<h2 class="h3 page-title">
|
| 265 |
-
<i
|
| 266 |
Gestión de Pacientes
|
| 267 |
</h2>
|
| 268 |
<p class="text-muted">Administra la información de tus pacientes de manera eficiente</p>
|
| 269 |
</div>
|
| 270 |
<div class="col-auto">
|
| 271 |
<button class="btn btn-primary" onclick="showNewPatientWizard()">
|
| 272 |
-
<i
|
| 273 |
</button>
|
| 274 |
</div>
|
| 275 |
</div>
|
|
@@ -323,7 +323,7 @@
|
|
| 323 |
<div class="row align-items-center" style="background-color: #f5f5f5; padding: 15px; border-radius: 8px;">
|
| 324 |
<div class="col-lg-6">
|
| 325 |
<h5 class="mb-3">
|
| 326 |
-
<i
|
| 327 |
</h5>
|
| 328 |
<input type="text" class="form-control search-input" id="patientSearchInput" placeholder="Buscar por nombre, ID o tipo de diabetes...">
|
| 329 |
</div>
|
|
@@ -347,11 +347,11 @@
|
|
| 347 |
</div>
|
| 348 |
|
| 349 |
<div id="emptyState" class="empty-state" style="display: none;">
|
| 350 |
-
<i
|
| 351 |
<h4>No hay pacientes registrados</h4>
|
| 352 |
<p class="text-muted">Comienza agregando tu primer paciente al sistema</p>
|
| 353 |
<button class="btn btn-primary" onclick="showNewPatientWizard()">
|
| 354 |
-
<i
|
| 355 |
</button>
|
| 356 |
</div>
|
| 357 |
</div>
|
|
@@ -366,7 +366,7 @@
|
|
| 366 |
<div class="modal-content form-wizard">
|
| 367 |
<div class="modal-header step-indicator">
|
| 368 |
<h5 class="modal-title">
|
| 369 |
-
<i
|
| 370 |
</h5>
|
| 371 |
<div class="ml-auto">
|
| 372 |
<span class="step-item active" data-step="1">1. Información Personal</span>
|
|
@@ -428,7 +428,7 @@
|
|
| 428 |
|
| 429 |
<div class="modal-footer">
|
| 430 |
<button type="button" class="btn btn-success" id="savePatientBtn" style="display: none;">
|
| 431 |
-
<i
|
| 432 |
</button>
|
| 433 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
|
| 434 |
</div>
|
|
@@ -442,7 +442,7 @@
|
|
| 442 |
<div class="modal-content">
|
| 443 |
<div class="modal-header">
|
| 444 |
<h5 class="modal-title">
|
| 445 |
-
<i
|
| 446 |
</h5>
|
| 447 |
<button type="button" class="close" data-dismiss="modal">
|
| 448 |
<span aria-hidden="true">×</span>
|
|
@@ -496,7 +496,7 @@
|
|
| 496 |
</div>
|
| 497 |
<div class="modal-footer">
|
| 498 |
<button type="button" class="btn btn-success" id="updatePatientBtn">
|
| 499 |
-
<i
|
| 500 |
</button>
|
| 501 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
|
| 502 |
</div>
|
|
@@ -510,7 +510,7 @@
|
|
| 510 |
<div class="modal-content">
|
| 511 |
<div class="modal-header">
|
| 512 |
<h5 class="modal-title">
|
| 513 |
-
<i
|
| 514 |
</h5>
|
| 515 |
<button type="button" class="close" data-dismiss="modal">
|
| 516 |
<span aria-hidden="true">×</span>
|
|
@@ -521,7 +521,7 @@
|
|
| 521 |
</div>
|
| 522 |
<div class="modal-footer">
|
| 523 |
<button type="button" class="btn btn-primary" onclick="startDiagnosisForPatient()">
|
| 524 |
-
<i
|
| 525 |
</button>
|
| 526 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
|
| 527 |
</div>
|
|
@@ -665,7 +665,7 @@
|
|
| 665 |
|
| 666 |
<div class="mt-3">
|
| 667 |
<small class="text-muted">
|
| 668 |
-
<i
|
| 669 |
Registro: ${moment(patient.creationDate).format('DD/MM/YYYY')}
|
| 670 |
</small>
|
| 671 |
</div>
|
|
@@ -673,21 +673,21 @@
|
|
| 673 |
|
| 674 |
<div class="dropdown">
|
| 675 |
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown">
|
| 676 |
-
<i
|
| 677 |
</button>
|
| 678 |
<div class="dropdown-menu dropdown-menu-right">
|
| 679 |
<a class="dropdown-item" href="#" onclick="viewPatientDetails(${patient.patientID})">
|
| 680 |
-
<i
|
| 681 |
</a>
|
| 682 |
<a class="dropdown-item" href="#" onclick="editPatient(${patient.patientID})">
|
| 683 |
-
<i
|
| 684 |
</a>
|
| 685 |
<a class="dropdown-item" href="diagnosis.html?patient=${patient.patientID}">
|
| 686 |
-
<i
|
| 687 |
</a>
|
| 688 |
<div class="dropdown-divider"></div>
|
| 689 |
<a class="dropdown-item text-danger" href="#" onclick="deletePatient(${patient.patientID}, '${patient.name}')">
|
| 690 |
-
<i
|
| 691 |
</a>
|
| 692 |
</div>
|
| 693 |
</div>
|
|
@@ -849,7 +849,7 @@
|
|
| 849 |
diabetesType: formData.diabetesType || null
|
| 850 |
}).then(function(response) {
|
| 851 |
$('#savePatientBtn').prop('disabled', false)
|
| 852 |
-
.html('<i
|
| 853 |
|
| 854 |
if (response && response.success) {
|
| 855 |
showAlert('success', `Paciente ${formData.name} creado exitosamente`);
|
|
@@ -899,7 +899,7 @@
|
|
| 899 |
diabetesType: formData.diabetes_type
|
| 900 |
}).then(function(response) {
|
| 901 |
$('#updatePatientBtn').prop('disabled', false)
|
| 902 |
-
.html('<i
|
| 903 |
|
| 904 |
if (response && response.success) {
|
| 905 |
showAlert('success', 'Paciente actualizado exitosamente');
|
|
@@ -995,7 +995,7 @@
|
|
| 995 |
</div>
|
| 996 |
` : `
|
| 997 |
<div class="text-center text-muted py-4">
|
| 998 |
-
<i
|
| 999 |
<p>No hay consultas registradas</p>
|
| 1000 |
</div>
|
| 1001 |
`}
|
|
@@ -1082,7 +1082,7 @@
|
|
| 1082 |
|
| 1083 |
const alertHtml = `
|
| 1084 |
<div class="alert ${alertClass} alert-dismissible fade show" role="alert">
|
| 1085 |
-
${
|
| 1086 |
${message}
|
| 1087 |
<button type="button" class="close" data-dismiss="alert">
|
| 1088 |
<span aria-hidden="true">×</span>
|
|
@@ -1233,23 +1233,5 @@
|
|
| 1233 |
<script src="js/gauge.min.js"></script>
|
| 1234 |
<script src="js/jquery.sparkline.min.js"></script>
|
| 1235 |
<script src="js/apps.js"></script>
|
| 1236 |
-
<script>
|
| 1237 |
-
// Feather Icons: reemplaza <i data-feather="X"> con SVG inline
|
| 1238 |
-
// Inmune a problemas de fuentes locales
|
| 1239 |
-
function _initFeather() {
|
| 1240 |
-
if (typeof feather !== 'undefined') feather.replace({ 'stroke-width': 1.8 });
|
| 1241 |
-
}
|
| 1242 |
-
document.addEventListener('DOMContentLoaded', _initFeather);
|
| 1243 |
-
// Re-render al inyectar HTML dinámico (modals, cards, tablas)
|
| 1244 |
-
var _fObserver = new MutationObserver(function(mutations) {
|
| 1245 |
-
var needsRefresh = mutations.some(function(m) {
|
| 1246 |
-
return m.addedNodes.length > 0;
|
| 1247 |
-
});
|
| 1248 |
-
if (needsRefresh) _initFeather();
|
| 1249 |
-
});
|
| 1250 |
-
document.addEventListener('DOMContentLoaded', function() {
|
| 1251 |
-
_fObserver.observe(document.body, { childList: true, subtree: true });
|
| 1252 |
-
});
|
| 1253 |
-
</script>
|
| 1254 |
</body>
|
| 1255 |
</html>
|
|
|
|
| 9 |
<title>Gestión de Pacientes</title>
|
| 10 |
<link rel="stylesheet" href="css/simplebar.css">
|
| 11 |
<link href="https://fonts.googleapis.com/css2?family=Overpass:ital,wght@0,100;0,200;0,300;0,400;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
|
| 12 |
+
<link rel="stylesheet" href="css/feather.css">
|
| 13 |
<link rel="stylesheet" href="css/select2.css">
|
| 14 |
<link rel="stylesheet" href="css/dropzone.css">
|
| 15 |
<link rel="stylesheet" href="css/uppy.min.css">
|
|
|
|
| 185 |
<div class="wrapper">
|
| 186 |
<nav class="topnav navbar navbar-light">
|
| 187 |
<button type="button" class="navbar-toggler text-muted mt-2 p-0 mr-3 collapseSidebar">
|
| 188 |
+
<i class="fe fe-menu navbar-toggler-icon"></i>
|
| 189 |
</button>
|
| 190 |
|
| 191 |
<ul class="nav">
|
|
|
|
| 205 |
<!-- Sidebar -->
|
| 206 |
<aside class="sidebar-left border-right bg-white shadow" id="leftSidebar" data-simplebar>
|
| 207 |
<a href="#" class="btn collapseSidebar toggle-btn d-lg-none text-muted ml-2 mt-3" data-toggle="toggle">
|
| 208 |
+
<i class="fe fe-x"><span class="sr-only"></span></i>
|
| 209 |
</a>
|
| 210 |
<nav class="vertnav navbar navbar-light">
|
| 211 |
<!-- nav bar -->
|
|
|
|
| 219 |
<ul class="navbar-nav flex-fill w-100 mb-2">
|
| 220 |
<li class="nav-item">
|
| 221 |
<a class="nav-link" href="./index.html">
|
| 222 |
+
<i class="fe fe-home fe-16"></i>
|
| 223 |
<span class="ml-3 item-text">Dashboard</span>
|
| 224 |
</a>
|
| 225 |
</li>
|
| 226 |
<li class="nav-item">
|
| 227 |
<a class="nav-link" href="./diagnosis.html">
|
| 228 |
+
<i class="fe fe-eye fe-16"></i>
|
| 229 |
<span class="ml-3 item-text">Diagnóstico</span>
|
| 230 |
</a>
|
| 231 |
</li>
|
| 232 |
<li class="nav-item active">
|
| 233 |
<a class="nav-link" href="./patients.html">
|
| 234 |
+
<i class="fe fe-users fe-16"></i>
|
| 235 |
<span class="ml-3 item-text">Pacientes</span>
|
| 236 |
</a>
|
| 237 |
</li>
|
| 238 |
<li class="nav-item">
|
| 239 |
<a class="nav-link" href="./historial-consultas.html">
|
| 240 |
+
<i class="fe fe-file-text fe-16"></i>
|
| 241 |
<span class="ml-3 item-text">Consultas</span>
|
| 242 |
</a>
|
| 243 |
</li>
|
| 244 |
+
<li class="nav-item">
|
| 245 |
<a class="nav-link" href="./users.html">
|
| 246 |
+
<i class="fe fe-user fe-16"></i>
|
| 247 |
<span class="ml-3 item-text">Usuarios</span>
|
| 248 |
</a>
|
| 249 |
</li>
|
|
|
|
| 262 |
<div class="row align-items-center mb-4">
|
| 263 |
<div class="col">
|
| 264 |
<h2 class="h3 page-title">
|
| 265 |
+
<i class="fe fe-users fe-24 mr-2 text-primary"></i>
|
| 266 |
Gestión de Pacientes
|
| 267 |
</h2>
|
| 268 |
<p class="text-muted">Administra la información de tus pacientes de manera eficiente</p>
|
| 269 |
</div>
|
| 270 |
<div class="col-auto">
|
| 271 |
<button class="btn btn-primary" onclick="showNewPatientWizard()">
|
| 272 |
+
<i class="fe fe-plus fe-16 mr-2"></i>Nuevo Paciente
|
| 273 |
</button>
|
| 274 |
</div>
|
| 275 |
</div>
|
|
|
|
| 323 |
<div class="row align-items-center" style="background-color: #f5f5f5; padding: 15px; border-radius: 8px;">
|
| 324 |
<div class="col-lg-6">
|
| 325 |
<h5 class="mb-3">
|
| 326 |
+
<i class="fe fe-search mr-2"></i>Buscar Pacientes
|
| 327 |
</h5>
|
| 328 |
<input type="text" class="form-control search-input" id="patientSearchInput" placeholder="Buscar por nombre, ID o tipo de diabetes...">
|
| 329 |
</div>
|
|
|
|
| 347 |
</div>
|
| 348 |
|
| 349 |
<div id="emptyState" class="empty-state" style="display: none;">
|
| 350 |
+
<i class="fe fe-users"></i>
|
| 351 |
<h4>No hay pacientes registrados</h4>
|
| 352 |
<p class="text-muted">Comienza agregando tu primer paciente al sistema</p>
|
| 353 |
<button class="btn btn-primary" onclick="showNewPatientWizard()">
|
| 354 |
+
<i class="fe fe-plus mr-2"></i>Agregar Primer Paciente
|
| 355 |
</button>
|
| 356 |
</div>
|
| 357 |
</div>
|
|
|
|
| 366 |
<div class="modal-content form-wizard">
|
| 367 |
<div class="modal-header step-indicator">
|
| 368 |
<h5 class="modal-title">
|
| 369 |
+
<i class="fe fe-user-plus mr-2"></i>Nuevo Paciente
|
| 370 |
</h5>
|
| 371 |
<div class="ml-auto">
|
| 372 |
<span class="step-item active" data-step="1">1. Información Personal</span>
|
|
|
|
| 428 |
|
| 429 |
<div class="modal-footer">
|
| 430 |
<button type="button" class="btn btn-success" id="savePatientBtn" style="display: none;">
|
| 431 |
+
<i class="fe fe-save mr-2"></i>Guardar Paciente
|
| 432 |
</button>
|
| 433 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
|
| 434 |
</div>
|
|
|
|
| 442 |
<div class="modal-content">
|
| 443 |
<div class="modal-header">
|
| 444 |
<h5 class="modal-title">
|
| 445 |
+
<i class="fe fe-edit mr-2"></i>Editar Paciente
|
| 446 |
</h5>
|
| 447 |
<button type="button" class="close" data-dismiss="modal">
|
| 448 |
<span aria-hidden="true">×</span>
|
|
|
|
| 496 |
</div>
|
| 497 |
<div class="modal-footer">
|
| 498 |
<button type="button" class="btn btn-success" id="updatePatientBtn">
|
| 499 |
+
<i class="fe fe-save mr-2"></i>Actualizar
|
| 500 |
</button>
|
| 501 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancelar</button>
|
| 502 |
</div>
|
|
|
|
| 510 |
<div class="modal-content">
|
| 511 |
<div class="modal-header">
|
| 512 |
<h5 class="modal-title">
|
| 513 |
+
<i class="fe fe-user mr-2"></i>Detalles del Paciente
|
| 514 |
</h5>
|
| 515 |
<button type="button" class="close" data-dismiss="modal">
|
| 516 |
<span aria-hidden="true">×</span>
|
|
|
|
| 521 |
</div>
|
| 522 |
<div class="modal-footer">
|
| 523 |
<button type="button" class="btn btn-primary" onclick="startDiagnosisForPatient()">
|
| 524 |
+
<i class="fe fe-eye mr-2"></i>Nuevo Diagnóstico
|
| 525 |
</button>
|
| 526 |
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button>
|
| 527 |
</div>
|
|
|
|
| 665 |
|
| 666 |
<div class="mt-3">
|
| 667 |
<small class="text-muted">
|
| 668 |
+
<i class="fe fe-calendar fe-12 mr-1"></i>
|
| 669 |
Registro: ${moment(patient.creationDate).format('DD/MM/YYYY')}
|
| 670 |
</small>
|
| 671 |
</div>
|
|
|
|
| 673 |
|
| 674 |
<div class="dropdown">
|
| 675 |
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown">
|
| 676 |
+
<i class="fe fe-more-horizontal"></i>
|
| 677 |
</button>
|
| 678 |
<div class="dropdown-menu dropdown-menu-right">
|
| 679 |
<a class="dropdown-item" href="#" onclick="viewPatientDetails(${patient.patientID})">
|
| 680 |
+
<i class="fe fe-eye mr-2"></i>Ver Detalles
|
| 681 |
</a>
|
| 682 |
<a class="dropdown-item" href="#" onclick="editPatient(${patient.patientID})">
|
| 683 |
+
<i class="fe fe-edit mr-2"></i>Editar
|
| 684 |
</a>
|
| 685 |
<a class="dropdown-item" href="diagnosis.html?patient=${patient.patientID}">
|
| 686 |
+
<i class="fe fe-activity mr-2"></i>Nuevo Diagnóstico
|
| 687 |
</a>
|
| 688 |
<div class="dropdown-divider"></div>
|
| 689 |
<a class="dropdown-item text-danger" href="#" onclick="deletePatient(${patient.patientID}, '${patient.name}')">
|
| 690 |
+
<i class="fe fe-trash-2 mr-2"></i>Eliminar
|
| 691 |
</a>
|
| 692 |
</div>
|
| 693 |
</div>
|
|
|
|
| 849 |
diabetesType: formData.diabetesType || null
|
| 850 |
}).then(function(response) {
|
| 851 |
$('#savePatientBtn').prop('disabled', false)
|
| 852 |
+
.html('<i class="fe fe-save mr-2"></i>Guardar Paciente');
|
| 853 |
|
| 854 |
if (response && response.success) {
|
| 855 |
showAlert('success', `Paciente ${formData.name} creado exitosamente`);
|
|
|
|
| 899 |
diabetesType: formData.diabetes_type
|
| 900 |
}).then(function(response) {
|
| 901 |
$('#updatePatientBtn').prop('disabled', false)
|
| 902 |
+
.html('<i class="fe fe-save mr-2"></i>Actualizar');
|
| 903 |
|
| 904 |
if (response && response.success) {
|
| 905 |
showAlert('success', 'Paciente actualizado exitosamente');
|
|
|
|
| 995 |
</div>
|
| 996 |
` : `
|
| 997 |
<div class="text-center text-muted py-4">
|
| 998 |
+
<i class="fe fe-file-text fe-48 mb-3"></i>
|
| 999 |
<p>No hay consultas registradas</p>
|
| 1000 |
</div>
|
| 1001 |
`}
|
|
|
|
| 1082 |
|
| 1083 |
const alertHtml = `
|
| 1084 |
<div class="alert ${alertClass} alert-dismissible fade show" role="alert">
|
| 1085 |
+
<i class="fe fe-${type === 'error' ? 'x-circle' : type === 'success' ? 'check-circle' : type === 'warning' ? 'alert-triangle' : 'info'} mr-2"></i>
|
| 1086 |
${message}
|
| 1087 |
<button type="button" class="close" data-dismiss="alert">
|
| 1088 |
<span aria-hidden="true">×</span>
|
|
|
|
| 1233 |
<script src="js/gauge.min.js"></script>
|
| 1234 |
<script src="js/jquery.sparkline.min.js"></script>
|
| 1235 |
<script src="js/apps.js"></script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1236 |
</body>
|
| 1237 |
</html>
|