<?php
/**
 * GET ?paciente_id=X&formulario_id=Y&exclude_turno_id=Z
 * Devuelve las respuestas del último formulario firmado de ese tipo para el paciente
 * (ej. "Datos Toma de Muestras"), para precargarlo en una visita de seguimiento
 * sin obligar a re-digitar la historia clínica. No modifica el registro original.
 */
require_once __DIR__ . '/_helpers.php';
requireMethod('GET');
requireTurnero();

$pacienteId  = (int)($_GET['paciente_id']       ?? 0);
$formularioId = (int)($_GET['formulario_id']     ?? 0);
$excludeTurno = (int)($_GET['exclude_turno_id']  ?? 0);

if (!$pacienteId)   jsonError('paciente_id requerido.');
if (!$formularioId) jsonError('formulario_id requerido.');

$pdo = db();

$stmt = $pdo->prepare(
    "SELECT tc.datos_respuestas, tc.firmado_at, t.codigo AS turno_codigo
       FROM turnero_consentimientos tc
       JOIN turnero_turnos t ON t.id = tc.turno_id
       LEFT JOIN turnero_solicitudes ts ON ts.turno_id = t.id
      WHERE tc.formulario_id = ?
        AND tc.estado = 'firmado'
        AND COALESCE(ts.paciente_id, t.paciente_id) = ?
        AND t.id != ?
      ORDER BY tc.firmado_at DESC
      LIMIT 1"
);
$stmt->execute([$formularioId, $pacienteId, $excludeTurno]);
$row = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$row) {
    jsonOk(['encontrado' => false]);
}

$datos = json_decode($row['datos_respuestas'] ?? '{}', true) ?: [];
// No traer firmas ni identidad del profesional anterior: cada visita se firma de nuevo
foreach (array_keys($datos) as $k) {
    if (str_contains($k, 'firma') || $k === '_pro_nombre' || $k === '_pro_cedula') {
        unset($datos[$k]);
    }
}

jsonOk([
    'encontrado'      => true,
    'datos_respuestas'=> $datos,
    'firmado_at'      => $row['firmado_at'],
    'turno_codigo'    => $row['turno_codigo'],
]);
