File "recomendaciones.php"
Full Path: C:/wamp64/www/casos_medicos/pacientes/recomendaciones.php
File size: 8.15 KB
MIME-type: text/x-php
Charset: utf-8
<?php
include("./conexion.php");
$cedula = $_GET['cedula'] ?? ($_POST['cedula'] ?? '');
if (empty($cedula)) {
echo "<div class='alert alert-warning'>No se indicó la cédula del paciente.</div>";
exit;
}
?>
<div class="container-fluid">
<div class="d-flex justify-content-between align-items-center mb-3">
<h6 class="m-0 fw-bold text-success">Recomendaciones del paciente</h6>
<!-- botón programático (mejor para pestañas dinamicas) -->
<button type="button" id="btnNuevaRecomendacion" class="btn btn-sm btn-success">
➕ Nueva Recomendación
</button>
</div>
<?php
$sql = "SELECT id, fecha, entidad, quien_emite, funciones_actuales, funciones_nuevas, fecha_inicio, fecha_fin, tiempo_dias
FROM recomendaciones_paciente
WHERE cedula = ?
ORDER BY fecha DESC";
$stmt = $conn->prepare($sql);
$stmt->bind_param("s", $cedula);
$stmt->execute();
$res = $stmt->get_result();
?>
<div class="table-responsive">
<table class="table table-bordered table-sm align-middle">
<thead class="table-success">
<tr>
<th>Fecha</th>
<th>Entidad</th>
<th>Emitido por</th>
<th>Funciones Actuales</th>
<th>Funciones Nuevas</th>
<th>Inicio</th>
<th>Fin</th>
<th>Días</th>
</tr>
</thead>
<tbody>
<?php if ($res && $res->num_rows > 0): ?>
<?php while($r = $res->fetch_assoc()): ?>
<tr>
<td><?=htmlspecialchars($r['fecha'])?></td>
<td><?=htmlspecialchars($r['entidad'])?></td>
<td><?=htmlspecialchars($r['quien_emite'])?></td>
<td><?=nl2br(htmlspecialchars($r['funciones_actuales']))?></td>
<td><?=nl2br(htmlspecialchars($r['funciones_nuevas']))?></td>
<td><?=htmlspecialchars($r['fecha_inicio'])?></td>
<td><?=htmlspecialchars($r['fecha_fin']) ?: '-'?></td>
<td><?=htmlspecialchars($r['tiempo_dias'])?></td>
</tr>
<?php endwhile; ?>
<?php else: ?>
<tr><td colspan="8" class="text-center text-muted">Sin recomendaciones registradas</td></tr>
<?php endif; ?>
</tbody>
</table>
</div>
</div>
<!-- MODAL NUEVA RECOMENDACIÓN -->
<div class="modal fade" id="modalRecomendacion" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg">
<form class="modal-content" id="formRecomendacion">
<div class="modal-header bg-success text-white">
<h5 class="modal-title">Nueva Recomendación</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Cerrar"></button>
</div>
<div class="modal-body">
<input type="hidden" name="cedula" value="<?=htmlspecialchars($cedula)?>">
<div class="row g-3">
<div class="col-md-4">
<label class="form-label">Fecha</label>
<input type="datetime-local" name="fecha" class="form-control form-control-sm" required>
</div>
<div class="col-md-4">
<label class="form-label">Entidad</label>
<select name="entidad" class="form-control form-control-sm" required>
<option value="">Seleccione...</option>
<option value="ARL">ARL</option>
<option value="EPS">EPS</option>
<option value="MEDICO EMPRESA">MÉDICO EMPRESA</option>
</select>
</div>
<div class="col-md-4">
<label class="form-label">Quién Emite</label>
<input type="text" name="quien_emite" class="form-control form-control-sm" required>
</div>
<div class="col-12">
<label class="form-label">Funciones Actuales</label>
<textarea name="funciones_actuales" class="form-control form-control-sm" rows="2"></textarea>
</div>
<div class="col-12">
<label class="form-label">Funciones Nuevas</label>
<textarea name="funciones_nuevas" class="form-control form-control-sm" rows="2"></textarea>
</div>
<div class="col-md-4">
<label class="form-label">Fecha Inicio</label>
<input type="date" name="fecha_inicio" id="rec_fecha_inicio" class="form-control form-control-sm">
</div>
<div class="col-md-4">
<label class="form-label">Fecha Fin</label>
<input type="date" name="fecha_fin" id="rec_fecha_fin" class="form-control form-control-sm">
</div>
<div class="col-md-4">
<label class="form-label">Tiempo (días)</label>
<input type="number" name="tiempo_dias" id="rec_tiempo_dias" class="form-control form-control-sm" min="0" value="0" readonly>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-sm" data-bs-dismiss="modal">Cancelar</button>
<button type="submit" class="btn btn-success btn-sm">Guardar</button>
</div>
</form>
</div>
</div>
<script>
// ---- Apertura programática del modal (evita problemas si el contenido se carga via include/AJAX) ----
(function(){
// Asegúrate de que bootstrap esté disponible
if (typeof bootstrap === 'undefined') {
console.warn('Bootstrap JS no está cargado. Asegúrate de incluir bootstrap.bundle.min.js en la página padre.');
}
const btn = document.getElementById('btnNuevaRecomendacion');
if (btn) {
btn.addEventListener('click', function(){
// Si bootstrap Modal existe, úsalo; si no, intenta fallback con atributos
if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {
const modalEl = document.getElementById('modalRecomendacion');
const modal = new bootstrap.Modal(modalEl);
modal.show();
} else {
// fallback: si data-bs attributes funcionan
const modalTrigger = document.querySelector('[data-bs-toggle="modal"][data-bs-target="#modalRecomendacion"]');
if (modalTrigger) modalTrigger.click();
else alert('No se puede mostrar el modal: falta Bootstrap JS.');
}
});
}
// ---- Calculo automático de dias entre fechas ----
const fechaInicio = document.getElementById('rec_fecha_inicio');
const fechaFin = document.getElementById('rec_fecha_fin');
const campoDias = document.getElementById('rec_tiempo_dias');
function calcularDias() {
const fi = fechaInicio.value;
const ff = fechaFin.value;
if (!fi) { campoDias.value = ''; return; }
if (!ff) { campoDias.value = ''; return; } // permitimos dejar fecha_fin vacía
const d1 = new Date(fi);
const d2 = new Date(ff);
const diff = Math.ceil((d2 - d1) / (1000*60*60*24));
campoDias.value = diff >= 0 ? diff : 0;
}
if (fechaInicio) fechaInicio.addEventListener('change', calcularDias);
if (fechaFin) fechaFin.addEventListener('change', calcularDias);
// ---- Envío AJAX del formulario ----
const form = document.getElementById('formRecomendacion');
if (form) {
form.addEventListener('submit', function(e){
e.preventDefault();
const submitBtn = form.querySelector('button[type="submit"]');
submitBtn.disabled = true;
const data = new FormData(form);
fetch('pacientes/guardar_recomendacion.php', {
method: 'POST',
body: data
})
.then(r => r.text())
.then(text => {
// cerrar modal y recargar la sección (mejor que recargar toda la página)
if (typeof bootstrap !== 'undefined' && bootstrap.Modal) {
const modalEl = document.getElementById('modalRecomendacion');
bootstrap.Modal.getInstance(modalEl)?.hide();
}
// intentamos recargar solo el contenedor: si el archivo esta incluido directamente en la página padre,
// lo más simple es recargar la página para ver el nuevo registro.
alert(text);
location.reload();
})
.catch(err => {
alert('Error al guardar: ' + err);
})
.finally(()=> submitBtn.disabled = false);
});
}
})();
</script>