Diagramas en texto dentro de bloques de código, en vez de capturas: se editan
como texto, no pesan en el repositorio y no quedan desactualizados solos. Se
agregan el recorrido de un turno, quién firma cada consentimiento, el paso de
una muestra pendiente entre visitas y la línea de tiempo de las tomas seriadas.
Páginas nuevas del manual: kiosko y pantallas de TV (las dos que funcionan sin
nadie operándolas), y chat de WhatsApp, que explica por qué el bot deja de
responder cuando un operador toma la conversación y de dónde sale el límite de
24 horas.
Páginas técnicas nuevas: registro de exámenes, y los catálogos del laboratorio
agrupados en una sola página por compartir la misma forma. Operación suma
respaldos y recuperación, incluyendo qué datos históricos no son recuperables.
Los 10 endpoints que no tenían comentario de cabecera ahora lo tienen, así que
la tabla generada por {{endpoints}} queda completa: 83 de 83.
DOCUMENTACION_LAB.md y README_LAB.md quedan como puntero al módulo;
WEBHOOK_ENDPOINTS.md se elimina por estar ya migrado a la sección técnica.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
41 lines
1.2 KiB
PHP
41 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* GET ?q=&categoria=&page=&limit= — Catálogo de exámenes, paginado y filtrable.
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireLogin();
|
|
|
|
$q = trim($_GET['q'] ?? '');
|
|
$cat = trim($_GET['categoria'] ?? '');
|
|
$page = max(1, (int)($_GET['page'] ?? 1));
|
|
$limit = max(1, min(200, (int)($_GET['limit'] ?? 50)));
|
|
$offset = ($page - 1) * $limit;
|
|
|
|
$where = [];
|
|
$params = [];
|
|
|
|
if ($q !== '') {
|
|
$like = '%' . $q . '%';
|
|
$where[] = '(nombre LIKE ? OR codigo LIKE ? OR cups LIKE ?)';
|
|
$params[] = $like; $params[] = $like; $params[] = $like;
|
|
}
|
|
if ($cat !== '') {
|
|
$where[] = 'categoria = ?';
|
|
$params[] = $cat;
|
|
}
|
|
$wSql = $where ? 'WHERE ' . implode(' AND ', $where) : '';
|
|
|
|
$pdo = db();
|
|
|
|
$s = $pdo->prepare("SELECT COUNT(*) FROM exam_tipos $wSql");
|
|
$s->execute($params);
|
|
$total = (int)$s->fetchColumn();
|
|
|
|
$s = $pdo->prepare(
|
|
"SELECT id, codigo, nombre, categoria, activo, cups, seremite, cod_protocolo, tipo_muestra
|
|
FROM exam_tipos $wSql ORDER BY categoria, nombre LIMIT $limit OFFSET $offset"
|
|
);
|
|
$s->execute($params);
|
|
|
|
jsonOk(['data' => $s->fetchAll(PDO::FETCH_ASSOC), 'total' => $total, 'page' => $page, 'limit' => $limit]);
|