# 🔧 Solución Rápida - Error: no such column: medicine_id ## ❌ El Error ``` Error: SQLITE_ERROR: no such column: medicine_id ``` Este error ocurre porque la base de datos tiene la estructura antigua que usa `medicine_id`, pero el código actualizado ahora usa `medicine_nregistro`. ## ✅ Soluciones ### Opción 1: Reset Completo (Recomendado para desarrollo) **Esto eliminará todos los datos actuales:** ```bash cd backend # Método 1: Usando el script npm run reset-db # Método 2: Manual rm database.sqlite node seed.js node create-admin.js ``` ### Opción 2: Migración (Mantiene farmacias, pierde vínculos medicamento-farmacia) ```bash cd backend node migrate.js ``` **Nota:** Esta opción mantiene las farmacias pero elimina las relaciones medicamento-farmacia porque ahora usan un esquema diferente (nregistro de CIMA en lugar de IDs locales). ### Opción 3: Manual con SQLite Si quieres más control: ```bash cd backend sqlite3 database.sqlite # Dentro de SQLite: DROP TABLE IF EXISTS pharmacy_medicines; DROP INDEX IF EXISTS idx_pharmacy_medicine; CREATE TABLE pharmacy_medicines ( id INTEGER PRIMARY KEY AUTOINCREMENT, pharmacy_id INTEGER NOT NULL, medicine_nregistro TEXT NOT NULL, medicine_name TEXT, price REAL, stock INTEGER DEFAULT 0, FOREIGN KEY (pharmacy_id) REFERENCES pharmacies(id), UNIQUE(pharmacy_id, medicine_nregistro) ); CREATE INDEX idx_pharmacy_medicine ON pharmacy_medicines(medicine_nregistro); .quit ``` ## 🔍 Verificar la Estructura Para verificar que la base de datos tiene la estructura correcta: ```bash cd backend sqlite3 database.sqlite "PRAGMA table_info(pharmacy_medicines);" ``` **Salida esperada:** ``` 0|id|INTEGER|0||1 1|pharmacy_id|INTEGER|1||0 2|medicine_nregistro|TEXT|1||0 3|medicine_name|TEXT|0||0 4|price|REAL|0||0 5|stock|INTEGER|0|0|0 ``` ## 🚀 Después de la Corrección 1. **Verifica que Redis esté corriendo:** ```bash redis-cli ping # Debe responder: PONG ``` 2. **Inicia el servidor:** ```bash cd backend npm start ``` 3. **Vincula medicamentos en el Admin Panel:** - Ve a http://localhost:3000 - Haz login en el Admin Panel - Ve a la pestaña "Link Medicine" - Busca medicamentos desde CIMA - Vincúlalos a tus farmacias ## 📝 ¿Por qué cambió? La aplicación ahora usa la **API oficial de CIMA** (Agencia Española de Medicamentos) en lugar de almacenar medicamentos localmente. **Beneficios:** - ✅ Datos siempre actualizados - ✅ Más de 30,000 medicamentos disponibles - ✅ Información oficial y verificada - ✅ Menos mantenimiento de base de datos **Estructura anterior:** ``` pharmacy_medicines - medicine_id → ID local en tabla medicines ``` **Estructura nueva:** ``` pharmacy_medicines - medicine_nregistro → Número de registro de CIMA - medicine_name → Nombre cacheado para mostrar ``` ## 💡 Preguntas Frecuentes **P: ¿Perderé mis farmacias?** R: No, las farmacias se mantienen. Solo necesitas re-vincular los medicamentos. **P: ¿Perderé los vínculos medicamento-farmacia?** R: Sí, porque ahora usan un sistema diferente (nregistros de CIMA). Tendrás que re-vincularlos usando el panel de admin. **P: ¿Y si tengo muchos vínculos?** R: La migración vale la pena por los beneficios a largo plazo. La re-vinculación es fácil con la búsqueda en tiempo real desde CIMA. ## 📚 Más Información - Ver [MIGRATION.md](./MIGRATION.md) para guía completa de migración - Ver [CHANGES.md](./CHANGES.md) para lista de todos los cambios - Ver [README.md](./README.md) para documentación general