4.8 KiB
4.8 KiB
🔄 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_medicinesahora usamedicine_nregistroen lugar demedicine_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:
sudo apt-get update
sudo apt-get install redis-server
sudo systemctl start redis-server
sudo systemctl status redis-server
macOS:
brew install redis
brew services start redis
Verificar instalación:
redis-cli ping
# Debe responder: PONG
2. Actualizar Dependencias
cd backend
npm install
Esto instalará las nuevas dependencias:
redis- Cliente de Redis para Node.jsaxios- Cliente HTTP para consumir la API de CIMA
3. Ejecutar la Migración de la Base de Datos
cd backend
npm run migrate
Este script:
- ✅ Actualiza la tabla
pharmacy_medicinespara usarmedicine_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):
# 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:
redis-server
Terminal 2 - Backend:
cd backend
npm start
Terminal 3 - Frontend:
cd frontend
npm run dev
6. Verificar el Funcionamiento
- Abre
http://localhost:3000 - Busca un medicamento (ej: "paracetamol")
- Verifica que aparezcan resultados de CIMA
- 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:
- Ve al Panel de Administración
- Selecciona la pestaña "Link Medicine"
- Busca medicamentos desde CIMA
- 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:
# 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:
# 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
💬 Soporte
Si encuentras problemas durante la migración, verifica:
- Los logs del backend
- El estado de Redis:
redis-cli ping - La conectividad a internet (necesaria para CIMA API)