up
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* GET /modules/turnero/api/get_consentimientos.php
|
||||
* Retorna el estado actualizado de los consentimientos de un turno.
|
||||
* Usado por lugar.php (polling cada 5 s) y recepcion.php.
|
||||
* No requiere autenticación (las pantallas internas ya están protegidas).
|
||||
*
|
||||
* Query params:
|
||||
* turno_id int requerido
|
||||
* incluir_solicitud int opcional 1 → también retorna solicitud, paciente y exámenes
|
||||
*/
|
||||
|
||||
require_once __DIR__ . '/_helpers.php';
|
||||
requireMethod('GET');
|
||||
|
||||
$turnoId = isset($_GET['turno_id']) ? (int) $_GET['turno_id'] : 0;
|
||||
$incluirSolicitud = isset($_GET['incluir_solicitud']) ? (bool)(int)$_GET['incluir_solicitud'] : false;
|
||||
|
||||
if ($turnoId <= 0) jsonError('turno_id inválido.');
|
||||
|
||||
$pdo = db();
|
||||
|
||||
// ── Verificar que el turno existe ─────────────────────────────
|
||||
$stmt = $pdo->prepare("SELECT id, estado FROM turnero_turnos WHERE id = ?");
|
||||
$stmt->execute([$turnoId]);
|
||||
$turno = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$turno) jsonError('Turno no encontrado.', 404);
|
||||
|
||||
// ── Consentimientos ───────────────────────────────────────────
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT tc.id,
|
||||
tc.turno_id,
|
||||
tc.formulario_id,
|
||||
tc.token,
|
||||
tc.estado,
|
||||
tc.enviado_at,
|
||||
tc.firmado_at,
|
||||
f.nombre AS formulario_nombre
|
||||
FROM turnero_consentimientos tc
|
||||
LEFT JOIN lab_formularios f ON f.id = tc.formulario_id
|
||||
WHERE tc.turno_id = ?
|
||||
ORDER BY tc.id ASC"
|
||||
);
|
||||
$stmt->execute([$turnoId]);
|
||||
$consentimientos = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$respuesta = [
|
||||
'turno_id' => $turnoId,
|
||||
'turno_estado' => $turno['estado'],
|
||||
'consentimientos' => $consentimientos,
|
||||
];
|
||||
|
||||
// ── Datos adicionales si solicita solicitud ───────────────────
|
||||
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,
|
||||
l.nombre AS lugar_nombre
|
||||
FROM turnero_solicitudes s
|
||||
LEFT JOIN turnero_lugares l ON l.id = s.lugar_id
|
||||
WHERE s.turno_id = ?
|
||||
LIMIT 1"
|
||||
);
|
||||
$stmt->execute([$turnoId]);
|
||||
$solicitud = $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
|
||||
|
||||
$paciente = null;
|
||||
$examenes = [];
|
||||
|
||||
if ($solicitud) {
|
||||
// Paciente
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT id, full_name, tipo_documento, documento,
|
||||
fecha_nacimiento, telefono, celular
|
||||
FROM lab_pacientes
|
||||
WHERE id = ?"
|
||||
);
|
||||
$stmt->execute([$solicitud['paciente_id']]);
|
||||
$paciente = $stmt->fetch(PDO::FETCH_ASSOC) ?: null;
|
||||
|
||||
// Exámenes
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT et.id, et.codigo, et.nombre, et.categoria
|
||||
FROM turnero_examen_items tei
|
||||
JOIN exam_tipos et ON et.id = tei.exam_tipo_id
|
||||
WHERE tei.solicitud_id = ?
|
||||
ORDER BY et.categoria, et.nombre"
|
||||
);
|
||||
$stmt->execute([$solicitud['id']]);
|
||||
$examenes = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
$respuesta['solicitud'] = $solicitud;
|
||||
$respuesta['paciente'] = $paciente;
|
||||
$respuesta['examenes'] = $examenes;
|
||||
}
|
||||
|
||||
jsonOk($respuesta);
|
||||
Reference in New Issue
Block a user