File "index.php.bak"
Full Path: C:/wamp64/www/casos_medicos/index.php.bak
File size: 21.01 KB
MIME-type: text/x-php
Charset: utf-8
<?php
include("conexion.php");
session_start();
if(!isset($_SESSION['usuario'])) {
header('Location: login.php');
exit();
}
$perfil = strtolower($_SESSION['perfil'] ?? '');
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Dashboard Casos Médicos</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<style>
/* ===========================
Global / Body
=========================== */
body {
background-color: #f4f6f4;
font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* ===========================
Navbar custom
=========================== */
.navbar-custom {
height: 80px;
background: linear-gradient(90deg, #2d7a2e 0%, #1f5c20 50%, #28a745 100%);
box-shadow: 0 6px 18px rgba(0,0,0,0.18);
border-bottom-left-radius: 14px;
border-bottom-right-radius: 14px;
}
.navbar-custom .logo-title {
display: flex;
align-items: center;
gap: 12px;
}
.navbar-custom .logo-title img {
height: 54px;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0,0,0,0.25);
background: #fff;
padding: 3px;
}
.navbar-custom .logo-title span {
color: #fff;
font-size: 1.6rem;
font-weight: 700;
letter-spacing: 0.2px;
text-shadow: 1px 1px 6px rgba(0,0,0,0.25);
}
.navbar-custom .user-info {
color: #fff;
font-weight: 600;
font-size: 0.98rem;
}
/* ===========================
Dashboard cards
=========================== */
.dashboard-card {
background: #ffffff;
border-radius: 16px;
padding: 20px;
text-align: center;
cursor: pointer;
transition: transform .28s ease, box-shadow .28s ease, border-color .28s;
box-shadow: 0 6px 18px rgba(13, 38, 0, 0.06);
height: 140px;
display: flex;
flex-direction: column;
justify-content: center;
border: 1px solid rgba(0,0,0,0.03);
}
.dashboard-card:hover {
transform: translateY(-6px);
box-shadow: 0 12px 30px rgba(0,0,0,0.12);
}
.dashboard-card i {
font-size: 40px;
margin-bottom: 10px;
}
.dashboard-card .text {
font-size: 1.05rem;
font-weight: 700;
color: #222;
}
.card-green { border-top: 6px solid #28a745; }
.card-orange { border-top: 6px solid #fd7e14; }
.card-blue { border-top: 6px solid #0d6efd; }
.card-gray { border-top: 6px solid #6c757d; }
.card-info { border-top: 6px solid #17a2b8; }
.card-dark { border-top: 6px solid #343a40; }
/* ===========================
PowerBI container
=========================== */
.powerbi-container {
background-color: #fff;
border-radius: 16px;
padding: 18px;
box-shadow: 0 8px 22px rgba(0,0,0,0.08);
margin-top: 18px;
}
.powerbi-container iframe {
width: 100%;
height: 78vh;
border-radius: 10px;
border: none;
}
/* ===========================
Modal styles (mini-option es el diseño unificado)
=========================== */
.modal-subtitle {
font-size: 1.05rem;
font-weight: 700;
color: #fff;
background-color: #1f5c20;
padding: 8px 12px;
border-radius: 8px;
margin-top: 10px;
display: inline-block;
}
label.form-label {
color: #1f5c20;
font-weight: 700;
}
/* Estilo unificado para las opciones de menú en modales (mini-option) */
.mini-option {
border: 2px solid #198754; /* Borde verde para ambos modales */
border-radius: 12px;
padding: 12px;
text-align: center;
cursor: pointer;
transition: 0.2s;
margin-bottom: 12px;
}
.mini-option:hover {
background: #f1f8f1;
transform: scale(1.03);
}
.mini-option i {
font-size: 28px;
}
.mini-option h6 {
font-weight: 700;
margin-top: 6px;
font-size: 0.95rem;
color: #145c1b;
}
/* Animation */
.fade-in { animation: fadeIn .6s ease; }
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
/* Responsive tweaks */
@media (max-width: 575.98px) {
.dashboard-card { height: 120px; padding: 14px; }
.navbar-custom { height: 70px; }
.navbar-custom .logo-title span { font-size: 1.2rem; }
.powerbi-container iframe { height: 60vh; }
}
</style>
</head>
<body>
<nav class="navbar navbar-custom mb-4">
<div class="container-fluid d-flex justify-content-between align-items-center">
<div class="logo-title">
<img src="imagen/avicampo.png" alt="Logo Avicampo" onerror="this.style.display='none'">
<span>Seguimiento Gestión de casos de salud - PRRL</span>
</div>
<div class="d-flex align-items-center gap-3">
<div class="text-end me-2">
<div class="user-info">Usuario: <?=htmlspecialchars($_SESSION['usuario'])?></div>
<div style="font-size:0.8rem;color:rgba(255,255,255,0.85)"><?=htmlspecialchars($_SESSION['nombre'] ?? '')?></div>
</div>
<a href="logout.php" class="btn btn-outline-light btn-sm">Salir</a>
</div>
</div>
</nav>
<div class="container-fluid">
<div class="row g-4 mb-4 fade-in">
<div class="col-md-3 col-6">
<a href="#" data-bs-toggle="modal" data-bs-target="#modalCasosMedicosMenu" class="text-decoration-none">
<div class="dashboard-card card-green">
<i class="bi bi-file-medical text-success"></i>
<div class="text">Gestión de Casos de Salud</div>
</div>
</a>
</div>
<div class="col-md-3 col-6">
<a href="#" data-bs-toggle="modal" data-bs-target="#modalAusentismosMenu" class="text-decoration-none">
<div class="dashboard-card card-dark">
<i class="bi bi-clock-history text-dark"></i>
<div class="text">Gestión de Ausentismos</div>
</div>
</a>
</div>
<div class="col-md-3 col-6">
<a href="pacientes/historial_incapacidades.php" class="text-decoration-none">
<div class="dashboard-card card-info">
<i class="bi bi-card-list text-info"></i>
<div class="text">Historial Casos</div>
</div>
</a>
</div>
<div class="col-md-3 col-6">
<a href="usuarios/lista_usuarios.php" class="text-decoration-none">
<div class="dashboard-card card-gray">
<i class="bi bi-people text-secondary"></i>
<div class="text">Usuarios</div>
</div>
</a>
</div>
<div class="col-md-3 col-6">
<a href="pacientes/historial_incapacidades.php" class="text-decoration-none">
<div class="dashboard-card card-info">
<i class="bi bi-card-list text-info"></i>
<div class="text">Historial Casos</div>
</div>
</a>
</div>
</div>
<div class="powerbi-container">
<iframe title="Casos Médicos"
src="https://app.powerbi.com/view?r=eyJrIjoiOGM0ZTc5NDEtMzA0NS00MDZmLTg2MzctNGEzNTU3MGQyOTIyIiwidCI6ImI0OTViMDI5LTY3N2EtNDc5Yy04Yjk2LTQ5Mjg0OGYzYTQyMiJ9"
allowFullScreen="true">
</iframe>
</div>
</div>
<div class="modal fade" id="modalCasosMedicosMenu" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header bg-success text-white">
<h5 class="modal-title">
<i class="bi bi-file-medical"></i> Gestión de Casos Mèdicos
</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<a href="pacientes/nuevo_paciente.php" class="text-decoration-none text-dark">
<div class="mini-option">
<i class="bi bi-person-plus-fill text-success"></i>
<h6>Nuevo Registro de Paciente</h6>
</div>
</a>
<div class="mini-option">
<i class="bi bi-search text-primary"></i>
<h6>Consultar Paciente por Cédula</h6>
<div class="input-group mt-2">
<input type="text" id="cedula_buscar_paciente" class="form-control form-control-sm" placeholder="Cédula del paciente">
<button type="button" class="btn btn-success btn-sm" onclick="buscarPacienteCedula()">
<i class="bi bi-arrow-right-circle"></i>
</button>
</div>
</div>
<a href="pacientes/historial_incapacidades.php" class="text-decoration-none text-dark">
<div class="mini-option">
<i class="bi bi-card-list text-info"></i>
<h6>Historial de Casos Médicos</h6>
</div>
</a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modalAusentismo" tabindex="-1">
<div class="modal-dialog modal-lg">
<form id="formAusentismo" class="modal-content" method="post" enctype="multipart/form-data">
<div class="modal-header bg-warning text-dark">
<h5 class="modal-title"><i class="bi bi-briefcase-medical"></i> Registro de Ausentismo</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<div class="modal-subtitle">Información del Empleado</div>
<label class="form-label mt-2">Cédula del Colaborador:</label>
<input type="text" name="cedula" id="cedula_aus" class="form-control" placeholder="Ingrese la cédula" required>
<small class="text-muted">⚠️ Sin puntos ni comas</small>
<div id="infoEmpleado" class="mt-3" style="display:none;">
<div class="alert alert-light border">
<div class="row">
<div class="col-md-6 mb-2"><strong style="color:#1f5c20;">Nombre:</strong> <span id="nombre"></span></div>
<div class="col-md-6 mb-2"><strong style="color:#1f5c20;">Centro de Costo:</strong> <span id="ccosto"></span></div>
<div class="col-md-6 mb-2"><strong style="color:#1f5c20;">Descripción:</strong> <span id="descripcion"></span></div>
<div class="col-md-6 mb-2"><strong style="color:#1f5c20;">Cargo:</strong> <span id="cargo"></span></div>
</div>
<div class="row mt-2">
<div class="col-md-6">
<label class="form-label">Teléfono:</label>
<input type="text" id="telefono" name="telefono" class="form-control form-control-sm" placeholder="Teléfono">
</div>
<div class="col-md-6">
<label class="form-label">Correo electrónico:</label>
<input type="email" id="correo" name="correo" class="form-control form-control-sm" placeholder="Correo electrónico">
</div>
</div>
<div class="row mt-2">
<div class="col-md-6">
<label class="form-label">EPS:</label>
<select id="eps" name="eps" class="form-select form-select-sm">
<option value="">Seleccione EPS</option>
<option value="SOS">SOS</option>
<option value="Sanitas">Sanitas</option>
<option value="Cafam">Cafam</option>
<option value="Colsubsidio">Colsubsidio</option>
</select>
</div>
<div class="col-md-6">
<label class="form-label">Tipo de Incapacidad:</label>
<select id="tipo_incapacidad" name="tipo_incapacidad" class="form-select form-select-sm" required>
<option value="">Seleccione tipo</option>
<option value="Enfermedad General">Enfermedad General</option>
<option value="Accidente de Tránsito">Accidente de Tránsito</option>
<option value="Licencia de Maternidad">Licencia de Maternidad</option>
<option value="Licencia de Paternidad">Licencia de Paternidad</option>
</select>
</div>
</div>
</div>
</div>
<div class="modal-subtitle mt-3">Detalle del Ausentismo</div>
<div id="camposIncapacidad" style="display:none;">
<div class="row">
<div class="col-md-4">
<label class="form-label">Fecha Inicio:</label>
<input type="date" id="fecha_inicio" name="fecha_inicio" class="form-control form-control-sm">
</div>
<div class="col-md-4">
<label class="form-label">Fecha Fin:</label>
<input type="date" id="fecha_fin" name="fecha_fin" class="form-control form-control-sm">
</div>
<div class="col-md-4">
<label class="form-label">Días:</label>
<input type="number" id="dias" name="dias" class="form-control form-control-sm" readonly>
</div>
</div>
<div class="mt-3">
<label class="form-label">Certificado de Incapacidad:</label>
<input type="file" id="certificado" name="certificado" class="form-control form-control-sm" accept=".pdf,.jpg,.png,.jpeg">
</div>
<div class="mt-3">
<label class="form-label">Epicrisis:</label>
<input type="file" id="epicrisis" name="epicrisis" class="form-control form-control-sm" accept=".pdf,.jpg,.png,.jpeg">
</div>
<div class="mt-3" id="campoFurips" style="display:none;">
<label class="form-label">FURIPS:</label>
<input type="file" id="furips" name="furips" class="form-control form-control-sm" accept=".pdf,.jpg,.png,.jpeg">
</div>
<div class="mt-3" id="campoRegistroCivil" style="display:none;">
<label class="form-label">Registro Civil:</label>
<input type="file" id="registro_civil" name="registro_civil" class="form-control form-control-sm" accept=".pdf,.jpg,.png,.jpeg">
</div>
</div>
</div>
<div class="modal-footer">
<button type="submit" id="btnContinuar" class="btn btn-warning text-white" disabled>Continuar</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
</div>
</form>
</div>
</div>
<div class="modal fade" id="modalAusentismosMenu" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header bg-dark text-white">
<h5 class="modal-title">
<i class="bi bi-clock-history"></i> Gestión de Ausentismos
</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<div class="modal-body">
<a href="ausentismo_publico.php" class="text-decoration-none text-dark">
<div class="mini-option">
<i class="bi bi-plus-circle text-success"></i>
<h6>Nuevo Ausentismo</h6>
</div>
</a>
<div class="mini-option">
<i class="bi bi-search text-primary"></i>
<h6>Buscar por Cédula</h6>
<div class="input-group mt-2">
<input type="text" id="cedula_buscar_aus" class="form-control form-control-sm" placeholder="Cédula">
<button type="button" class="btn btn-success btn-sm" onclick="buscarAusentismoCedula()">
<i class="bi bi-arrow-right-circle"></i>
</button>
</div>
</div>
<a href="ausentismos/historico_completo.php" class="text-decoration-none text-dark">
<div class="mini-option">
<i class="bi bi-collection text-dark"></i>
<h6>Historial de Ausentismos</h6>
</div>
</a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
// ===========================
// Variables y Funciones del Modal Ausentismo (MANTENIDAS)
// ===========================
let empleadoValido = false;
$(document).ready(function() {
// Buscar empleado (modal Ausentismo)
$('#cedula_aus').on('keyup change', function() {
let cedula = $(this).val().trim();
if (cedula.length >= 4) {
$.ajax({
url: 'buscar_empleado.php',
type: 'POST',
dataType: 'json',
data: {cedula: cedula},
success: function(resp) {
if (resp && resp.encontrado) {
empleadoValido = true;
$('#infoEmpleado').show();
$('#nombre').text(resp.nombre);
$('#ccosto').text(resp.ccosto);
$('#descripcion').text(resp.descripcion);
$('#cargo').text(resp.cargo);
$('#telefono').val(resp.telefono || '');
$('#correo').val(resp.correo || '');
$('#eps').val(resp.eps || '');
$('#btnContinuar').prop('disabled', false);
} else {
empleadoValido = false;
$('#infoEmpleado').hide();
$('#btnContinuar').prop('disabled', true);
}
},
error: function() {
empleadoValido = false;
$('#infoEmpleado').hide();
$('#btnContinuar').prop('disabled', true);
}
});
} else {
$('#infoEmpleado').hide();
$('#btnContinuar').prop('disabled', true);
}
});
// Mostrar campos dinámicos según tipo de incapacidad
$('#tipo_incapacidad').on('change', function() {
let tipo = $(this).val();
if (tipo) {
$('#camposIncapacidad').show();
$('#campoFurips, #campoRegistroCivil').hide();
if (tipo === 'Accidente de Tránsito') $('#campoFurips').show();
if (tipo === 'Licencia de Maternidad' || tipo === 'Licencia de Paternidad') $('#campoRegistroCivil').show();
} else {
$('#camposIncapacidad').hide();
}
});
// Calcular dias entre fechas (incluye ambos días)
$('#fecha_inicio, #fecha_fin').on('change', function() {
let inicio = new Date($('#fecha_inicio').val());
let fin = new Date($('#fecha_fin').val());
if (!isNaN(inicio) && !isNaN(fin) && fin >= inicio) {
let diff = Math.ceil((fin - inicio) / (1000 * 60 * 60 * 24)) + 1;
$('#dias').val(diff);
} else {
$('#dias').val('');
}
});
// (Opcional) Prevención de submit si empleado no válido
$('#formAusentismo').on('submit', function(e) {
if (!empleadoValido) {
e.preventDefault();
alert('Por favor ingrese una cédula válida y seleccione el empleado antes de continuar.');
return false;
}
// El formulario seguirá su flujo normal (POST). Puedes añadir validaciones adicionales aquí.
});
});
// ===========================
// Función para buscar Paciente por Cédula (CASOS MÉDICOS)
// ===========================
function buscarPacienteCedula() {
// Captura el valor del input en el modal de Casos Médicos
let ced = document.getElementById("cedula_buscar_paciente").value.trim();
if (ced === "") {
alert("Ingrese una cédula para consultar el paciente");
return;
}
// Redirige a la página de verificación del paciente
// Nota: El path es pacientes/ver_paciente.php (la ruta donde se debe buscar)
window.location.href = "./ver_paciente.php?cedula=" + encodeURIComponent(ced);
}
// ===========================
// Buscar Ausentismo por Cédula (AUSENTISMOS)
// ===========================
function buscarAusentismoCedula() {
let ced = document.getElementById("cedula_buscar_aus").value.trim();
if (ced === "") {
alert("Ingrese una cédula para continuar");
return;
}
// Redirige a la página que mostrará los ausentismos de dicha cédula
window.location.href = "ausentismos/ver_ausentismo.php?cedula=" + encodeURIComponent(ced);
}
</script>
</body>
</html>