diff --git a/modules/turnero/api/create_consent_token.php b/modules/turnero/api/create_consent_token.php
new file mode 100644
index 0000000..75d40d5
--- /dev/null
+++ b/modules/turnero/api/create_consent_token.php
@@ -0,0 +1,75 @@
+prepare("SELECT id, sesion_id, paciente_id FROM turnero_turnos WHERE id = ?");
+$stmt->execute([$turnoId]);
+$turno = $stmt->fetch(PDO::FETCH_ASSOC);
+if (!$turno) jsonError('Turno no encontrado.', 404);
+
+$pacienteId = $turno['paciente_id'];
+if (!$pacienteId) jsonError('El turno no tiene paciente vinculado.');
+
+// Verificar que el formulario existe
+$stmt = $pdo->prepare("SELECT id, nombre FROM lab_formularios WHERE id = ? AND is_active = 1");
+$stmt->execute([$formularioId]);
+$formulario = $stmt->fetch(PDO::FETCH_ASSOC);
+if (!$formulario) jsonError('Formulario no encontrado o inactivo.', 404);
+
+// Buscar si ya existe un token
+$stmt = $pdo->prepare(
+ "SELECT token, estado FROM turnero_consentimientos WHERE turno_id = ? AND formulario_id = ?"
+);
+$stmt->execute([$turnoId, $formularioId]);
+$existente = $stmt->fetch(PDO::FETCH_ASSOC);
+
+if ($existente) {
+ if (in_array($existente['estado'], ['firmado', 'rechazado'], true)) {
+ jsonError('Este consentimiento ya fue ' . $existente['estado'] . '.', 422);
+ }
+ $token = $existente['token'];
+} else {
+ // Generar nuevo token
+ $token = sprintf(
+ '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+ mt_rand(0, 0xffff),
+ mt_rand(0, 0x0fff) | 0x4000,
+ mt_rand(0, 0x3fff) | 0x8000,
+ mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
+ );
+
+ $stmt = $pdo->prepare(
+ "INSERT INTO turnero_consentimientos (turno_id, formulario_id, token, estado, creado_at)
+ VALUES (?, ?, ?, 'pendiente', NOW())"
+ );
+ $stmt->execute([$turnoId, $formularioId, $token]);
+}
+
+$url = BASE_URL . 'ver_formulario_enviado.php?token=' . urlencode($token);
+
+jsonOk([
+ 'token' => $token,
+ 'url' => $url,
+ 'nombre'=> $formulario['nombre'],
+]);
diff --git a/modules/turnero/api/get_lugar_formularios.php b/modules/turnero/api/get_lugar_formularios.php
new file mode 100644
index 0000000..49dcbe1
--- /dev/null
+++ b/modules/turnero/api/get_lugar_formularios.php
@@ -0,0 +1,27 @@
+prepare(
+ "SELECT f.id, f.nombre
+ FROM turnero_lugar_consentimientos tlc
+ JOIN lab_formularios f ON f.id = tlc.formulario_id
+ WHERE tlc.lugar_id = ?
+ AND f.is_active = 1
+ ORDER BY f.nombre ASC"
+);
+$stmt->execute([$lugarId]);
+$formularios = $stmt->fetchAll(PDO::FETCH_ASSOC);
+
+jsonOk(['formularios' => $formularios]);
diff --git a/modules/turnero/views/recepcion.php b/modules/turnero/views/recepcion.php
index 067f303..34f2bad 100644
--- a/modules/turnero/views/recepcion.php
+++ b/modules/turnero/views/recepcion.php
@@ -389,7 +389,7 @@ require_once __DIR__ . '/../../../shared/components/sidebar.php';
-
+
Consentimientos informados