# Sistema de Recetas Médicas 2.0

Aplicación PHP 8.1+ / MySQL con perfiles, logo, firma, PDF mPDF, QR, SMTP, respaldo, historial, reimpresión, verificación pública y auditoría.

## Instalación nueva

1. Cree una base de datos y ejecute `sql/instalacion_limpia.sql`.
2. Copie `config.example.php` como `config.php` y complete base URL, MySQL y SMTP.
3. En la raíz del proyecto ejecute `composer install --no-dev --optimize-autoloader`.
4. Configure el DocumentRoot del subdominio o sitio apuntando a la carpeta `public/`. Si no puede, acceda por `/public` y asegúrese de que `app`, `storage` y `config.php` no sean públicos.
5. Dé permisos de escritura al usuario PHP en `storage/pdfs`, `public/uploads/logos` y `public/uploads/firmas`.
6. Abra `public/crear_admin_inicial.php`, cree el administrador y ELIMINE ese archivo.
7. Ingrese a `public/login.php`; desde Administración cargue logo, profesional, firma y usuarios.

## Actualización desde la versión anterior

No copie esta versión encima de la instalación productiva. Haga respaldo de archivos y MySQL, instale V2 en otra carpeta/base, valide y luego migre. La V2 usa un modelo de datos nuevo. `sql/migracion_desde_v1.sql` protege la tabla anterior renombrándola, pero la importación histórica debe adaptarse a sus campos reales.

## Seguridad mínima para producción

HTTPS obligatorio; carpeta `storage` fuera del acceso web; SMTP autenticado; contraseñas robustas; respaldos cifrados; permisos 750/640; actualización de dependencias; revisión legal y clínica antes de emitir documentos reales. El sistema no reemplaza firma electrónica avanzada ni requisitos regulatorios aplicables.

## Pruebas sugeridas

- Crear centro, profesional y usuario de cada rol.
- Emitir receta con 2 o más filas.
- Verificar respaldo PDF y QR.
- Probar enlace largo de verificación.
- Probar SMTP y reenvío.
- Anular documento y confirmar estado público.
- Confirmar que no se puede abrir un PDF directamente por URL.
