feat(turnero): campo embarazada en recepción y badge en toma de muestras

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-02 23:48:03 -05:00
co-authored by Claude Sonnet 4.6
parent d40da57a60
commit c9e5744de4
5 changed files with 31 additions and 4 deletions
@@ -0,0 +1,4 @@
ALTER TABLE turnero_solicitudes
ADD COLUMN embarazada TINYINT(1) NOT NULL DEFAULT 0
COMMENT 'Indica si la paciente está embarazada al momento de la solicitud'
AFTER observaciones;
+4 -3
View File
@@ -30,6 +30,7 @@ $total = isset($datos['total_cobrado']) && $datos['total_cobrado'] !== nul
$metodoPago = isset($datos['metodo_pago']) ? trim((string) $datos['metodo_pago']) : null;
$obs = isset($datos['observaciones']) ? trim((string) $datos['observaciones']) : null;
$numOrden = isset($datos['numero_orden']) ? trim((string) $datos['numero_orden']) : null;
$embarazada = !empty($datos['embarazada']) ? 1 : 0;
if ($numOrden === '') $numOrden = null;
// ── Validaciones ──────────────────────────────────────────────
@@ -103,12 +104,12 @@ try {
$stmt = $pdo->prepare(
"INSERT INTO turnero_solicitudes
(turno_id, paciente_id, lugar_id, numero_orden, total_cobrado, metodo_pago, observaciones, creado_por)
VALUES (?, ?, ?, ?, ?, ?, ?, ?)"
(turno_id, paciente_id, lugar_id, numero_orden, total_cobrado, metodo_pago, observaciones, embarazada, creado_por)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"
);
$stmt->execute([
$turnoId, $pacienteId, $lugarId, $numOrden,
$total, $metodoPago ?: null, $obs ?: null, adminId(),
$total, $metodoPago ?: null, $obs ?: null, $embarazada, adminId(),
]);
$solicitudId = (int) $pdo->lastInsertId();
+1 -1
View File
@@ -56,7 +56,7 @@ $respuesta = [
if ($incluirSolicitud) {
$stmt = $pdo->prepare(
"SELECT s.id, s.turno_id, s.paciente_id, s.lugar_id,
s.total_cobrado, s.metodo_pago, s.observaciones, s.creado_at,
s.total_cobrado, s.metodo_pago, s.observaciones, s.embarazada, s.creado_at,
l.nombre AS lugar_nombre
FROM turnero_solicitudes s
LEFT JOIN turnero_lugares l ON l.id = s.lugar_id
+10
View File
@@ -285,6 +285,12 @@ require_once __DIR__ . '/../../../shared/components/sidebar.php';
<div class="pac-dato"><span class="lbl">Fecha nac.</span><span class="val" id="pac-fec">—</span></div>
<div class="pac-dato"><span class="lbl">Celular</span><span class="val" id="pac-cel">—</span></div>
</div>
<div id="pac-embarazada" class="d-none mt-2">
<span class="badge text-bg-danger">
<i class="fas fa-baby me-1"></i>Paciente embarazada
</span>
</div>
<div id="bloque-pac-sin" class="text-muted small">
<i class="fas fa-info-circle me-1"></i>Sin paciente vinculado
</div>
@@ -579,6 +585,10 @@ async function cargarFichaSolicitud(turnoId) {
let consts = json.consentimientos || [];
// Datos del paciente
// Badge embarazada
const badgeEmb = document.getElementById('pac-embarazada');
if (badgeEmb) badgeEmb.classList.toggle('d-none', !(sol && sol.embarazada == 1));
if (pac) {
document.getElementById('bloque-pac-info').style.display = '';
document.getElementById('bloque-pac-sin').classList.add('d-none');
+12
View File
@@ -429,6 +429,16 @@ document.addEventListener('DOMContentLoaded', function() {
</div>
</div>
<!-- Embarazo -->
<div class="mt-2">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="chk-embarazada">
<label class="form-check-label small fw-semibold text-danger" for="chk-embarazada">
<i class="fas fa-baby me-1"></i>Paciente embarazada
</label>
</div>
</div>
<!-- Historial colapsable del paciente -->
<div id="sec-historial-pac" class="d-none">
<button class="hist-toggle-btn" id="btn-hist-toggle" onclick="toggleHistorialPaciente()">
@@ -1121,6 +1131,7 @@ function desvincularPaciente() {
document.getElementById('btn-hist-toggle').classList.remove('open');
document.getElementById('lista-pacientes-res').innerHTML = '';
document.getElementById('inp-buscar-pac').value = '';
document.getElementById('chk-embarazada').checked = false;
}
function cambiarPaciente() {
@@ -1256,6 +1267,7 @@ async function guardarSolicitud() {
total_cobrado: parseFloat(document.getElementById('inp-total').value) || null,
metodo_pago: document.getElementById('sel-pago').value || null,
observaciones: document.getElementById('inp-obs').value.trim() || null,
embarazada: document.getElementById('chk-embarazada').checked ? 1 : 0,
}),
});
const json = await res.json();