query("SELECT 1 FROM `{$t}` LIMIT 1", []);
$checks[] = ['ok' => true, 'msg' => "Tabla `$t` ✔"];
} catch (Exception $e) {
$checks[] = ['ok' => false, 'msg' => "Tabla `$t` ✘ — NO EXISTE (ejecuta migrations/20260302_lab_run_migrations.php)"];
$allOk = false;
}
}
// ── 2. Archivos de clases ──────────────────────────────────────────────────
$classFiles = [
'classes/lab/ActividadAdmin.php',
'classes/lab/Paciente.php',
'classes/lab/Enfermera.php',
'classes/lab/OrdenMedica.php',
'classes/lab/Domicilio.php',
'classes/lab/Asignacion.php',
];
foreach ($classFiles as $f) {
$ok = file_exists(__DIR__ . '/' . $f);
if (!$ok) $allOk = false;
$checks[] = ['ok' => $ok, 'msg' => "Clase $f " . ($ok ? '✔' : '✘ — FALTA')];
}
// ── 3. Endpoints API ──────────────────────────────────────────────────────
$apiFiles = [
'api/lab/_helpers.php', 'api/lab/get_pacientes.php', 'api/lab/save_paciente.php',
'api/lab/get_ordenes.php', 'api/lab/save_orden.php', 'api/lab/autorizar_orden.php',
'api/lab/get_domicilios.php', 'api/lab/save_domicilio.php', 'api/lab/get_enfermeras.php',
'api/lab/save_enfermera.php', 'api/lab/get_asignaciones.php', 'api/lab/save_asignacion.php',
'api/lab/get_actividad.php', 'api/lab/get_stats.php', 'api/lab/crear_desde_whatsapp.php',
];
foreach ($apiFiles as $f) {
$ok = file_exists(__DIR__ . '/' . $f);
if (!$ok) $allOk = false;
$checks[] = ['ok' => $ok, 'msg' => "API $f " . ($ok ? '✔' : '✘ — FALTA')];
}
// ── 4. Vistas (páginas PHP) ───────────────────────────────────────────────
$views = ['lab_dashboard.php','lab_ordenes.php','lab_pacientes.php','lab_domicilios.php','lab_enfermeras.php','lab_reportes.php'];
foreach ($views as $v) {
$ok = file_exists(__DIR__ . '/' . $v);
if (!$ok) $allOk = false;
$checks[] = ['ok' => $ok, 'msg' => "Vista $v " . ($ok ? '✔' : '✘ — FALTA')];
}
// ── 5. Directorio uploads ─────────────────────────────────────────────────
$uploadsOk = is_dir(__DIR__ . '/uploads/media') && is_writable(__DIR__ . '/uploads/media');
if (!$uploadsOk) $allOk = false;
$checks[] = ['ok' => $uploadsOk, 'msg' => 'Directorio uploads/media ' . ($uploadsOk ? '✔ (writable)' : '✘ — no existe o sin permisos de escritura')];
// ── Salida ─────────────────────────────────────────────────────────────────
if ($isCli) {
echo "\n=== Módulo Laboratorio — Estado del sistema ===\n\n";
foreach ($checks as $c) {
echo ($c['ok'] ? ' [OK] ' : ' [!!] ') . $c['msg'] . "\n";
}
echo "\n" . ($allOk ? "✔ Todo correcto." : "✘ Hay problemas — revisa los puntos marcados con [!!]") . "\n\n";
exit($allOk ? 0 : 1);
}
$adminNombre = $_SESSION['admin_user']['full_name'] ?? $_SESSION['admin_user']['username'] ?? 'Admin';
?>
Estado Módulo Lab
= $allOk ? 'Módulo instalado correctamente' : 'Se encontraron problemas — revisa los elementos marcados en rojo' ?>
| Verificación | Estado |
| = htmlspecialchars($c['msg']) ?> |
= $c['ok'] ? 'OK' : 'ERROR' ?> |
Pasos para solucionar:
- Ejecuta las migraciones:
php migrations/20260302_lab_run_migrations.php
- Verifica que todos los archivos de
classes/lab/ y api/lab/ existen
- Asegúrate de que
uploads/media/ tiene permisos 755 o 775