# Auditoría Notas de Enfermería — Clínica SION

## Instalación

### 1. Requisitos
- PHP 8.0+
- MySQL 5.7+ / MariaDB 10.4+
- Composer
- Servidor web (Apache/Nginx) con mod_rewrite

### 2. Dependencias PHP
```bash
composer install
```

### 3. Base de datos
```bash
mysql -u root -p < database.sql
```
Esto crea la base `auditoria_sion` y el usuario `admin` con contraseña `Admin2026*`.
**Cambia la contraseña después del primer login.**

### 4. Configuración
Editar `config.php`:
```php
define('DB_HOST', 'localhost');
define('DB_NAME', 'auditoria_sion');
define('DB_USER', 'tu_usuario');
define('DB_PASS', 'tu_contraseña');
define('TOKEN_TTL_HORAS', 8);
define('MAX_PDF_MB', 20);
```

### 5. Permisos
```bash
chmod 755 uploads/
```

### 6. Apache — .htaccess (en raíz del proyecto)
```apache
Options -Indexes
RewriteEngine On
# Bloquear acceso directo a uploads
RewriteRule ^uploads/ - [F,L]
```

## Estructura de archivos
```
/
├── config.php          ← Configuración central
├── database.sql        ← Esquema de base de datos
├── composer.json       ← Dependencias
├── login.php           ← Página de acceso
├── dashboard.php       ← Dashboard principal
├── api/
│   ├── auth.php        ← POST /api/auth.php
│   ├── logout.php      ← POST /api/logout.php
│   ├── analizar.php    ← POST /api/analizar.php
│   ├── resultados.php  ← GET  /api/resultados.php
│   └── exportar.php    ← GET  /api/exportar.php
├── middleware/
│   └── auth_check.php  ← Validación de token (incluir en APIs)
├── lib/
│   └── parser.php      ← Motor de análisis de PDFs
├── assets/
│   └── js/
│       └── auth.js     ← Helper JS de autenticación
└── uploads/            ← PDFs temporales (se borran tras parsear)
```

## Seguridad
- Token SHA-256 de 64 caracteres con TTL configurable
- Contraseñas con bcrypt (cost 12)
- PDO con prepared statements en todas las queries
- Validación MIME de PDFs antes de procesar
- Archivos subidos eliminados tras el análisis
- Directorio uploads bloqueado vía .htaccess

## Reglas de auditoría
| Regla | Descripción |
|-------|-------------|
| R1 | Debe haber nota de mañana, tarde y noche cada día |
| R2 | Fecha de atención debe coincidir con fecha de grabación |
| R3 | AM/PM de atención debe coincidir con AM/PM de grabación |
