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>
24 lines
640 B
PHP
24 lines
640 B
PHP
<?php
|
|
/**
|
|
* GET ?id=N — Detalle de un examen del catálogo con sus ítems.
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireLogin();
|
|
|
|
$id = (int)($_GET['id'] ?? 0);
|
|
if (!$id) jsonError('ID requerido');
|
|
|
|
$pdo = db();
|
|
|
|
$s = $pdo->prepare('SELECT * FROM exam_tipos WHERE id = ?');
|
|
$s->execute([$id]);
|
|
$exam = $s->fetch(PDO::FETCH_ASSOC);
|
|
if (!$exam) jsonError('Examen no encontrado', 404);
|
|
|
|
$items = $pdo->prepare(
|
|
'SELECT * FROM lab_items_resultado WHERE cod_protocolo = ? ORDER BY orden, id'
|
|
);
|
|
$items->execute([$exam['cod_protocolo'] ?? $exam['codigo']]);
|
|
|
|
jsonOk(['data' => $exam, 'items' => $items->fetchAll(PDO::FETCH_ASSOC)]);
|