up
This commit is contained in:
@@ -107,19 +107,25 @@ try {
|
||||
$stmtItem->execute([$solicitudId, $examId]);
|
||||
}
|
||||
|
||||
// ── Consentimientos: todos los formularios activos del laboratorio ──
|
||||
// (no solo los vinculados a exámenes — el recepcionista elige cuáles aplican)
|
||||
// ── Consentimientos: solo los configurados para este lugar ──
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT id AS formulario_id, nombre AS formulario_nombre
|
||||
FROM lab_formularios
|
||||
WHERE is_active = 1
|
||||
ORDER BY nombre ASC"
|
||||
"SELECT f.id AS formulario_id, f.nombre AS formulario_nombre
|
||||
FROM lab_formularios f
|
||||
INNER JOIN turnero_lugar_consentimientos tlc ON tlc.formulario_id = f.id
|
||||
WHERE tlc.lugar_id = ?
|
||||
AND f.is_active = 1
|
||||
ORDER BY f.nombre ASC"
|
||||
);
|
||||
$stmt->execute();
|
||||
$stmt->execute([$lugarId]);
|
||||
$consentimientosRequeridos = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// Agregar estado actual de cada consentimiento (si ya fue enviado antes)
|
||||
// Crear o recuperar estado de cada consentimiento requerido
|
||||
$stmtCreateConsent = $pdo->prepare(
|
||||
"INSERT IGNORE INTO turnero_consentimientos (turno_id, formulario_id, estado, creado_at)
|
||||
VALUES (?, ?, 'pendiente', NOW())"
|
||||
);
|
||||
foreach ($consentimientosRequeridos as &$c) {
|
||||
$stmtCreateConsent->execute([$turnoId, $c['formulario_id']]);
|
||||
$stC = $pdo->prepare(
|
||||
"SELECT estado FROM turnero_consentimientos WHERE turno_id = ? AND formulario_id = ?"
|
||||
);
|
||||
|
||||
@@ -77,48 +77,19 @@ if (empty($examIds)) {
|
||||
jsonError('La solicitud no tiene exámenes registrados.', 422);
|
||||
}
|
||||
|
||||
// ── 3. Obtener formularios de consentimiento (deduplicados) ───
|
||||
// 3a. Consentimientos por tipo de examen
|
||||
$in = implode(',', array_fill(0, count($examIds), '?'));
|
||||
// ── 3. Obtener formularios configurados para este turno ───────
|
||||
$stmt = $pdo->prepare(
|
||||
"SELECT DISTINCT etc.formulario_id, f.nombre AS formulario_nombre
|
||||
FROM exam_tipo_consentimientos etc
|
||||
JOIN lab_formularios f ON f.id = etc.formulario_id
|
||||
WHERE etc.exam_tipo_id IN ({$in})"
|
||||
"SELECT tc.formulario_id, f.nombre AS formulario_nombre
|
||||
FROM turnero_consentimientos tc
|
||||
JOIN lab_formularios f ON f.id = tc.formulario_id
|
||||
WHERE tc.turno_id = ?
|
||||
ORDER BY f.nombre ASC"
|
||||
);
|
||||
$stmt->execute($examIds);
|
||||
$stmt->execute([$turnoId]);
|
||||
$formulariosRequeridos = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
// 3b. Consentimientos por lugar/servicio (de la solicitud)
|
||||
$lugarIdSol = (int)($turno['lugar_id'] ?? 0);
|
||||
if (!$lugarIdSol) {
|
||||
// Intentar leer lugar_id directo de la solicitud si no vino en el join anterior
|
||||
$stmtLugar = $pdo->prepare("SELECT lugar_id FROM turnero_solicitudes WHERE id = ?");
|
||||
$stmtLugar->execute([$turno['solicitud_id']]);
|
||||
$lugarIdSol = (int)($stmtLugar->fetchColumn() ?: 0);
|
||||
}
|
||||
if ($lugarIdSol > 0) {
|
||||
$stmtLc = $pdo->prepare(
|
||||
"SELECT tlc.formulario_id, f.nombre AS formulario_nombre
|
||||
FROM turnero_lugar_consentimientos tlc
|
||||
JOIN lab_formularios f ON f.id = tlc.formulario_id
|
||||
WHERE tlc.lugar_id = ?"
|
||||
);
|
||||
$stmtLc->execute([$lugarIdSol]);
|
||||
foreach ($stmtLc->fetchAll(PDO::FETCH_ASSOC) as $row) {
|
||||
// Deduplicar: solo agregar si aún no está en la lista
|
||||
$yaExiste = false;
|
||||
foreach ($formulariosRequeridos as $fr) {
|
||||
if ((int)$fr['formulario_id'] === (int)$row['formulario_id']) { $yaExiste = true; break; }
|
||||
}
|
||||
if (!$yaExiste) {
|
||||
$formulariosRequeridos[] = $row;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($formulariosRequeridos)) {
|
||||
jsonOk(['consentimientos' => [], 'mensaje' => 'Ningún examen ni servicio requiere consentimiento.']);
|
||||
jsonOk(['consentimientos' => [], 'mensaje' => 'Este turno no tiene consentimientos requeridos.']);
|
||||
}
|
||||
|
||||
// ── 4. Generar / recuperar tokens UUID ────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user