# Módulo Administrativo — Laboratorio Clínico

Módulo add-on para el sistema de chatbot WhatsApp que permite gestionar órdenes médicas recibidas como imágenes, domicilios, enfermeras y pacientes.

---

## Instalación

### 1. Ejecutar migraciones de base de datos

```bash
php migrations/20260302_lab_run_migrations.php
```

Crea 7 tablas nuevas sin modificar las existentes:
- `lab_pacientes`
- `lab_enfermeras`
- `lab_ordenes_medicas`
- `lab_domicilios`
- `lab_asignaciones`
- `lab_autorizaciones`
- `lab_actividad_admin`

Para deshacer:
```bash
php migrations/20260302_lab_run_migrations.php --rollback
```

### 2. Verificar instalación

Accede desde el navegador (con sesión admin activa):
```
https://tu-servidor/lab_status.php
```

O desde CLI:
```bash
php lab_status.php
```

---

## Archivos del módulo

### Vistas PHP
| Archivo | Descripción |
|---|---|
| `lab_dashboard.php` | Panel principal con estadísticas en tiempo real |
| `lab_ordenes.php` | Gestión de órdenes médicas (estados, imágenes, historial) |
| `lab_pacientes.php` | CRUD de pacientes, vinculación con usuarios WhatsApp |
| `lab_domicilios.php` | Agenda de domicilios y asignación de enfermeras |
| `lab_enfermeras.php` | CRUD de enfermeras y visualización de agenda diaria |
| `lab_reportes.php` | Trazabilidad, log de actividad, exportación CSV |
| `lab_status.php` | Verificador de estado del módulo |

### Clases (models)
Ubicadas en `classes/lab/`:
- `ActividadAdmin.php` — Base de trazabilidad
- `Paciente.php` — Modelo de pacientes
- `Enfermera.php` — Modelo de enfermeras
- `OrdenMedica.php` — Modelo de órdenes médicas con flujo de estados
- `Domicilio.php` — Modelo de domicilios con flujo de estados
- `Asignacion.php` — Modelo de asignaciones enfermera ↔ domicilio

### API REST
Ubicados en `api/lab/`:
| Endpoint | Método | Descripción |
|---|---|---|
| `get_pacientes.php` | GET | Lista paginada de pacientes |
| `save_paciente.php` | POST | Crear/actualizar paciente |
| `get_ordenes.php` | GET | Lista/detalle de órdenes |
| `save_orden.php` | POST | Crear/actualizar orden |
| `autorizar_orden.php` | POST | Cambiar estado de una orden |
| `get_domicilios.php` | GET | Lista/detalle de domicilios |
| `save_domicilio.php` | POST | Crear/actualizar domicilio |
| `get_enfermeras.php` | GET | Lista de enfermeras + agenda |
| `save_enfermera.php` | POST | Crear/actualizar enfermera |
| `get_asignaciones.php` | GET | Asignaciones por fecha |
| `save_asignacion.php` | POST | Asignar/liberar/completar enfermera |
| `get_actividad.php` | GET | Log de actividad con filtros |
| `get_stats.php` | GET | Estadísticas para dashboard |
| `crear_desde_whatsapp.php` | GET/POST | Crear orden desde conversación activa |

---

## Flujos de estado

### Órdenes médicas
```
pendiente → en_revision → autorizada → en_domicilio → completada
                       ↘ rechazada
```

### Domicilios
```
programado → confirmado → en_camino → en_domicilio → completado
                       ↘ cancelado
                       ↘ reprogramado
```

---

## Integración con el chatbot

En `conversations.php`, los mensajes de imagen entrantes tienen un botón **<i class="fas fa-flask"></i>** (verde) en las acciones del mensaje. Al hacer click:

1. Se abre un modal con la imagen adjunta
2. El operador busca o selecciona un paciente (o usa el contacto de la conversación)
3. Completa datos opcionales (médico, exámenes, ayuno)
4. Se crea la orden en estado `pendiente`

---

## Exportaciones CSV

Disponibles desde `lab_reportes.php`:
- **Órdenes médicas** del período — incluye estado, médico, exámenes
- **Domicilios** del período — incluye enfermera asignada, dirección, estado
- **Pacientes** — catálogo completo con total de órdenes

---

## Requisitos

- PHP 8.2+
- MariaDB 10.11+ (o MySQL 8+)
- Bootstrap 5.3 (ya incluido en el sistema)
- Font Awesome 6.4 (ya incluido en el sistema)
- `uploads/media/` con permisos de escritura (755/775)
