# 🔄 Guía de Migración a CIMA API + Redis Esta guía te ayudará a migrar tu aplicación FarmaFinder existente para usar la API de CIMA con caché de Redis. ## 📋 Cambios Principales ### Backend - ✅ Los medicamentos ahora se obtienen de la API de CIMA en tiempo real - ✅ Redis se usa como caché para mejorar el rendimiento - ✅ La tabla `pharmacy_medicines` ahora usa `medicine_nregistro` en lugar de `medicine_id` - ✅ Se eliminó la necesidad de gestionar medicamentos localmente ### Frontend - ✅ El componente de búsqueda ahora consulta CIMA en tiempo real - ✅ El panel de administración permite buscar medicamentos de CIMA - ✅ Interfaz mejorada para vincular medicamentos a farmacias ## 🚀 Pasos para Migrar ### 1. Instalar Redis **Ubuntu/Debian:** ```bash sudo apt-get update sudo apt-get install redis-server sudo systemctl start redis-server sudo systemctl status redis-server ``` **macOS:** ```bash brew install redis brew services start redis ``` **Verificar instalación:** ```bash redis-cli ping # Debe responder: PONG ``` ### 2. Actualizar Dependencias ```bash cd backend npm install ``` Esto instalará las nuevas dependencias: - `redis` - Cliente de Redis para Node.js - `axios` - Cliente HTTP para consumir la API de CIMA ### 3. Ejecutar la Migración de la Base de Datos ```bash cd backend npm run migrate ``` Este script: - ✅ Actualiza la tabla `pharmacy_medicines` para usar `medicine_nregistro` - ✅ Mantiene las farmacias existentes - ⚠️ Las relaciones medicamento-farmacia antiguas se perderán (deberás re-vincularlas) ### 4. Verificar Configuración Crear archivo `.env` en `backend/` (opcional): ```env # Redis Configuration REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD= # Session Configuration SESSION_SECRET=cambia-esto-en-produccion # Server Configuration PORT=3001 ``` ### 5. Iniciar la Aplicación **Terminal 1 - Redis:** ```bash redis-server ``` **Terminal 2 - Backend:** ```bash cd backend npm start ``` **Terminal 3 - Frontend:** ```bash cd frontend npm run dev ``` ### 6. Verificar el Funcionamiento 1. Abre `http://localhost:3000` 2. Busca un medicamento (ej: "paracetamol") 3. Verifica que aparezcan resultados de CIMA 4. En los logs del backend deberías ver: ``` ✅ Connected to Redis 🌐 Fetching from CIMA API: paracetamol ✅ Cached X medicines for: paracetamol ``` ### 7. Re-vincular Medicamentos a Farmacias Como las relaciones antiguas se perdieron: 1. Ve al Panel de Administración 2. Selecciona la pestaña "Link Medicine" 3. Busca medicamentos desde CIMA 4. Vincúlalos a tus farmacias con precio y stock ## 🔍 Verificación de Logs ### Backend debe mostrar: ``` ✅ Connected to Redis Database initialized successfully Server running on http://localhost:3001 ``` ### Al buscar medicamentos: ``` 🌐 Fetching from CIMA API: paracetamol ✅ Cached 204 medicines for: paracetamol ``` ### En búsquedas posteriores: ``` 📦 Cache hit for: paracetamol ``` ## ⚠️ Posibles Problemas ### Redis no conecta **Error:** `Redis Client Error: connect ECONNREFUSED` **Solución:** ```bash # Verificar si Redis está corriendo ps aux | grep redis # Iniciar Redis redis-server # O con systemd sudo systemctl start redis-server ``` ### API de CIMA lenta o no responde **Error:** Búsquedas muy lentas o timeout **Solución:** - La API de CIMA puede estar experimentando problemas - Los resultados cacheados seguirán funcionando - Espera unos minutos e intenta de nuevo ### Error de migración **Error:** `table pharmacy_medicines already exists` **Solución:** ```bash # Hacer backup de la base de datos cp backend/database.sqlite backend/database.sqlite.backup # Eliminar la base de datos y recrear cd backend rm database.sqlite npm run seed npm run create-admin ``` ## 📊 Comparación Antes/Después ### Antes - ❌ Medicamentos almacenados localmente en SQLite - ❌ Necesidad de actualizar la base de datos manualmente - ❌ Datos posiblemente desactualizados - ✅ Respuestas rápidas (todo local) ### Después - ✅ Medicamentos siempre actualizados desde CIMA - ✅ Datos oficiales de la Agencia Española de Medicamentos - ✅ Sin necesidad de mantenimiento de medicamentos - ✅ Respuestas rápidas gracias a Redis cache - ✅ Fallback a cache si la API falla ## 🎉 ¡Migración Completada! Si todo funciona correctamente: - ✅ Redis está conectado - ✅ Las búsquedas devuelven medicamentos de CIMA - ✅ El cache funciona (segunda búsqueda es más rápida) - ✅ Puedes vincular medicamentos a farmacias ## 📚 Recursos Adicionales - [API de CIMA](https://cima.aemps.es/) - [Documentación de Redis](https://redis.io/documentation) - [README principal](./README.md) ## 💬 Soporte Si encuentras problemas durante la migración, verifica: 1. Los logs del backend 2. El estado de Redis: `redis-cli ping` 3. La conectividad a internet (necesaria para CIMA API)