Files
FarmaFinder/MIGRATION.md
2026-04-01 01:18:21 +02:00

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_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:

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.js
  • axios - 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_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):

# 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

  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:

# 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:

  1. Los logs del backend
  2. El estado de Redis: redis-cli ping
  3. La conectividad a internet (necesaria para CIMA API)