turnero: kiosko — niños placeholder+edad, muestras desc, numpad +5%
- Prioridad A (Niños): placeholder cedula → 'Tarjeta de Identidad del menor (si tiene)' - Prioridad A: age check via check_paciente.php → toast aviso si paciente ≥ 10 años - Prioridad F: descripción → 'Muestras de días anteriores' (BD + fallback PHP) - Numpad: padding .6rem → .63rem .6rem (+5% alto) - Nuevo: check_paciente.php (endpoint público, solo devuelve fecha_nacimiento) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
80b61f88be
commit
b1d1c0896f
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* GET check_paciente.php?doc=NUMERO
|
||||||
|
* Endpoint público (mismo nivel que el kiosko). Solo devuelve fecha_nacimiento para validar edad.
|
||||||
|
*/
|
||||||
|
require_once __DIR__ . '/../../../config/config.php';
|
||||||
|
|
||||||
|
header('Content-Type: application/json');
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] !== 'GET') { echo json_encode(['ok' => false]); exit; }
|
||||||
|
|
||||||
|
$doc = preg_replace('/\D/', '', trim($_GET['doc'] ?? ''));
|
||||||
|
if (strlen($doc) < 5 || strlen($doc) > 15) { echo json_encode(['ok' => false]); exit; }
|
||||||
|
|
||||||
|
try {
|
||||||
|
$stmt = Database::getInstance()->getConnection()
|
||||||
|
->prepare("SELECT fecha_nacimiento FROM lab_pacientes WHERE numero_documento = ? LIMIT 1");
|
||||||
|
$stmt->execute([$doc]);
|
||||||
|
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||||
|
if (!$row || !$row['fecha_nacimiento']) { echo json_encode(['ok' => false]); exit; }
|
||||||
|
echo json_encode(['ok' => true, 'fecha_nacimiento' => $row['fecha_nacimiento']]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
echo json_encode(['ok' => false]);
|
||||||
|
}
|
||||||
@@ -41,7 +41,7 @@ try {
|
|||||||
['codigo'=>'C','nombre'=>'Adulto mayor', 'color'=>'#eab308','icono'=>'fas fa-person-cane', 'descripcion'=>'Mayores de 60 años'],
|
['codigo'=>'C','nombre'=>'Adulto mayor', 'color'=>'#eab308','icono'=>'fas fa-person-cane', 'descripcion'=>'Mayores de 60 años'],
|
||||||
['codigo'=>'D','nombre'=>'Discapacidad', 'color'=>'#8b5cf6','icono'=>'fas fa-wheelchair', 'descripcion'=>'Personas con discapacidad'],
|
['codigo'=>'D','nombre'=>'Discapacidad', 'color'=>'#8b5cf6','icono'=>'fas fa-wheelchair', 'descripcion'=>'Personas con discapacidad'],
|
||||||
['codigo'=>'E','nombre'=>'Paciente general', 'color'=>'#3b82f6','icono'=>'fas fa-user', 'descripcion'=>'Atención general'],
|
['codigo'=>'E','nombre'=>'Paciente general', 'color'=>'#3b82f6','icono'=>'fas fa-user', 'descripcion'=>'Atención general'],
|
||||||
['codigo'=>'F','nombre'=>'Muestra pendiente','color'=>'#6b7280','icono'=>'fas fa-vial', 'descripcion'=>'Entrega de muestra tomada'],
|
['codigo'=>'F','nombre'=>'Muestra pendiente','color'=>'#6b7280','icono'=>'fas fa-vial', 'descripcion'=>'Muestras de días anteriores'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -392,7 +392,7 @@ unset($p);
|
|||||||
margin: .6rem 0 1rem;
|
margin: .6rem 0 1rem;
|
||||||
}
|
}
|
||||||
.np-btn {
|
.np-btn {
|
||||||
padding: .6rem;
|
padding: .63rem .6rem;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
border: 1.5px solid #e2e8f0;
|
border: 1.5px solid #e2e8f0;
|
||||||
@@ -697,6 +697,9 @@ unset($p);
|
|||||||
|
|
||||||
mostrar('screen-datos');
|
mostrar('screen-datos');
|
||||||
const inpCedula = document.getElementById('inp-cedula');
|
const inpCedula = document.getElementById('inp-cedula');
|
||||||
|
inpCedula.placeholder = prioCodigo === 'A'
|
||||||
|
? 'Tarjeta de Identidad del menor (si tiene)'
|
||||||
|
: 'Ej: 1234567890';
|
||||||
inpCedula.focus();
|
inpCedula.focus();
|
||||||
inpCedula.value = '';
|
inpCedula.value = '';
|
||||||
_scannerLocked = false;
|
_scannerLocked = false;
|
||||||
@@ -721,6 +724,23 @@ unset($p);
|
|||||||
|
|
||||||
_enviando = true;
|
_enviando = true;
|
||||||
setSpinner(true);
|
setSpinner(true);
|
||||||
|
|
||||||
|
// Verificar edad solo para prioridad Niños
|
||||||
|
if (prioCodigo === 'A') {
|
||||||
|
try {
|
||||||
|
const ar = await fetch(`<?= BASE_URL ?>modules/turnero/api/check_paciente.php?doc=${encodeURIComponent(cedula)}`);
|
||||||
|
const aj = await ar.json();
|
||||||
|
if (aj.ok && aj.fecha_nacimiento) {
|
||||||
|
const dob = new Date(aj.fecha_nacimiento);
|
||||||
|
const today = new Date();
|
||||||
|
let age = today.getFullYear() - dob.getFullYear();
|
||||||
|
if (today.getMonth() < dob.getMonth() ||
|
||||||
|
(today.getMonth() === dob.getMonth() && today.getDate() < dob.getDate())) age--;
|
||||||
|
if (age >= 10) mostrarError('Este turno es para menores de 10 años, verifique la prioridad.');
|
||||||
|
}
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const res = await fetch(API_URL, {
|
const res = await fetch(API_URL, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|||||||
Reference in New Issue
Block a user