API, Backend & Frontend
This commit is contained in:
144
backend/FIX-MEDICINE-ID-ERROR.md
Normal file
144
backend/FIX-MEDICINE-ID-ERROR.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# 🔧 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
|
||||
Reference in New Issue
Block a user