- ver_formulario_enviado: auto-fill médico (nombres/especialidad/código) en datos_prefilled desde solicitud - ver_formulario_enviado: canvases de toma progresiva bloqueados secuencialmente — solo el turno activo es firmable, los siguientes aparecen al expirar el countdown - ver_formulario_enviado: countdown prominente con reloj grande, color dinámico, sonido (Web Audio) y vibración al llegar la hora - lugar: bloquear cierre del modal durante toma progresiva activa (botón X deshabilitado hasta mp_completar) - lugar: bloquear Finalizar atención si hay muestras pendientes sin decisión (recibida/rechazada) - lugar: _syncBtnFinalizar combina consentimientos + muestras para el aviso y estado del botón - lugar: restricción de usuario a lugar específico via turnero_lugar_id (admin_users) + bloqueo JS en confirmarLugar() - migrations: turnero_lugar_id en admin_users para restringir bacteriólogos por usuario Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
/**
|
|
* GET modules/turnero/api/get_consecutivo.php
|
|
* Devuelve el siguiente número de orden del día.
|
|
*
|
|
* Parámetros:
|
|
* tipo string 'F' = Físico/turnero (default) | 'D' = Domicilio
|
|
*
|
|
* Formato resultante:
|
|
* F-YYYYMMDD-NNN para tipo=F
|
|
* D-YYYYMMDD-NNN para tipo=D
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireTurnero();
|
|
requireMethod('GET');
|
|
|
|
$tipo = strtoupper(trim($_GET['tipo'] ?? 'F'));
|
|
if (!in_array($tipo, ['F', 'D'], true)) $tipo = 'F';
|
|
|
|
$pdo = db();
|
|
$prefix = $tipo . '-' . date('Ymd') . '-';
|
|
|
|
if ($tipo === 'D') {
|
|
$stmt = $pdo->prepare(
|
|
"SELECT MAX(CAST(SUBSTRING_INDEX(numero_orden, '-', -1) AS UNSIGNED)) AS ultimo
|
|
FROM lab_domicilios
|
|
WHERE numero_orden LIKE ?"
|
|
);
|
|
} else {
|
|
$stmt = $pdo->prepare(
|
|
"SELECT MAX(CAST(SUBSTRING_INDEX(numero_orden, '-', -1) AS UNSIGNED)) AS ultimo
|
|
FROM turnero_solicitudes
|
|
WHERE numero_orden LIKE ?"
|
|
);
|
|
}
|
|
$stmt->execute([$prefix . '%']);
|
|
$ultimo = (int)($stmt->fetch(PDO::FETCH_ASSOC)['ultimo'] ?? 0);
|
|
|
|
$siguiente = $prefix . str_pad($ultimo + 1, 3, '0', STR_PAD_LEFT);
|
|
jsonOk(['consecutivo' => $siguiente]);
|