feat(turnero): anexar formulario adicional a turno desde lugar.php
Permite al operador agregar un consentimiento informado extra (fuera de los asignados por defecto) mientras el turno está en servicio. - PHP: consulta lab_formularios activos al cargar lugar.php - JS: modal de selección con lista de formularios - Botón visible solo cuando turno está en_servicio, oculto en resetFicha - API: modules/turnero/api/anexar_formulario.php crea el consentimiento y notifica SSE para que el dispositivo lo vea inmediatamente - Fix: _olvidarConsentimiento usaba cargarConsentimientos() inexistente; corregido a actualizarConsentimientos(turnoActivo.id) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
ff52fa5ba7
commit
afa7cc6812
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
/**
|
||||
* POST /modules/turnero/api/anexar_formulario.php
|
||||
* Crea un consentimiento adicional para un turno activo.
|
||||
* Body JSON: { turno_id: int, formulario_id: int }
|
||||
*/
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireMethod('POST');
|
||||
requireTurnero();
|
||||
|
||||
$body = inputJson();
|
||||
$turnoId = (int)($body['turno_id'] ?? 0);
|
||||
$formularioId = (int)($body['formulario_id'] ?? 0);
|
||||
|
||||
if (!$turnoId) jsonError('turno_id requerido.');
|
||||
if (!$formularioId) jsonError('formulario_id requerido.');
|
||||
|
||||
$pdo = db();
|
||||
|
||||
// Verificar que el turno existe y está activo
|
||||
$turno = $pdo->prepare("SELECT id, sesion_id, estado FROM turnero_turnos WHERE id = ? LIMIT 1");
|
||||
$turno->execute([$turnoId]);
|
||||
$t = $turno->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$t) jsonError('Turno no encontrado.', 404);
|
||||
if (!in_array($t['estado'], ['en_espera_lugar', 'en_servicio'])) jsonError('El turno no está activo.');
|
||||
|
||||
// Verificar que el formulario existe
|
||||
$form = $pdo->prepare("SELECT id, nombre FROM lab_formularios WHERE id = ? AND is_active = 1 LIMIT 1");
|
||||
$form->execute([$formularioId]);
|
||||
if (!$form->fetch()) jsonError('Formulario no encontrado o inactivo.', 404);
|
||||
|
||||
// Crear el consentimiento con token único
|
||||
$token = bin2hex(random_bytes(16));
|
||||
|
||||
$ins = $pdo->prepare(
|
||||
"INSERT INTO turnero_consentimientos (turno_id, formulario_id, token, estado, datos_respuestas)
|
||||
VALUES (?, ?, ?, 'enviado', '{}')"
|
||||
);
|
||||
$ins->execute([$turnoId, $formularioId, $token]);
|
||||
$newId = (int)$pdo->lastInsertId();
|
||||
|
||||
notificarSSE((int)$t['sesion_id']);
|
||||
jsonOk(['id' => $newId, 'token' => $token], 'Formulario agregado.');
|
||||
Reference in New Issue
Block a user