5.5 KiB
5.5 KiB
🔄 MIGRACIÓN DE CONTENIDO: APP → BACKEND
Fecha: 2025-01-06
Problema: El contenido real de la app no está en el backend
Solución: Script de migración
❓ ¿POR QUÉ NO VES EL CONTENIDO ACTUAL EN EL BACKEND?
Situación Actual
En la App (Frontend):
- ✅
src/data/procedures.ts- 5 procedimientos (RCP Adulto SVB, RCP Adulto SVA, RCP Pediátrico, OVACE, Shock Hemorrágico) - ✅
src/data/drugs.ts- 6 fármacos (Oxígeno, Adrenalina, Amiodarona, Atropina, Midazolam, Salbutamol)
En el Backend:
- ❌ Solo contenido de ejemplo (checklists de prueba)
- ❌ NO tiene los procedimientos reales
- ❌ NO tiene los fármacos reales
Razón
El backend fue diseñado con un schema nuevo (tes_content) que es diferente a la estructura actual de la app. El contenido de la app vive en archivos TypeScript (procedures.ts, drugs.ts) y nunca se migró al backend.
✅ SOLUCIÓN: SCRIPT DE MIGRACIÓN
He creado un script que:
- ✅ Lee el contenido de
src/data/procedures.tsysrc/data/drugs.ts - ✅ Lo transforma al formato del schema
tes_content - ✅ Lo inserta en la base de datos PostgreSQL
- ✅ Marca todo como
publishedpara que esté disponible
🚀 CÓMO EJECUTAR LA MIGRACIÓN
Paso 1: Verificar que el schema existe
cd backend
node scripts/create-auth-tables.js
Paso 2: Ejecutar el script de migración
cd backend
node scripts/migrate-app-content-v2.js
Salida esperada:
🔄 Iniciando migración de contenido de la app al backend...
✅ Conexión a base de datos establecida
✅ Usuario admin encontrado: [uuid]
📋 Cargando procedimientos...
Encontrados 5 procedimientos
💾 Migrando procedimientos a la base de datos...
✅ rcp-adulto-svb: RCP Adulto - Soporte Vital Básico
✅ rcp-adulto-sva: RCP Adulto - Soporte Vital Avanzado
✅ rcp-pediatrico: RCP Pediátrico - SVB
✅ obstruccion-via-aerea: Obstrucción de Vía Aérea - OVACE
✅ shock-hemorragico: Shock Hemorrágico
💊 Cargando fármacos...
Encontrados 6 fármacos
💾 Migrando fármacos a la base de datos...
✅ oxigeno: Oxígeno (O₂)
✅ adrenalina: Adrenalina (Epinefrina)
✅ amiodarona: Amiodarona
✅ atropina: Atropina
✅ midazolam: Midazolam
✅ salbutamol: Salbutamol
📊 Resumen de migración:
protocol: 5 total, 5 publicados
drug: 6 total, 6 publicados
✅ Migración completada exitosamente!
🔍 VERIFICAR QUE LA MIGRACIÓN FUNCIONÓ
Opción 1: Consulta SQL directa
-- Ver procedimientos migrados
SELECT
slug,
title,
status,
priority,
clinical_context
FROM tes_content.content_items
WHERE type = 'protocol'
ORDER BY priority, title;
-- Ver fármacos migrados
SELECT
slug,
title,
status,
priority
FROM tes_content.content_items
WHERE type = 'drug'
ORDER BY title;
Opción 2: Desde el Panel Admin
- Accede al panel admin:
http://localhost:5174 - Ve a "Contenido" → "Protocolos"
- Deberías ver los 5 procedimientos
- Ve a "Contenido" → "Fármacos"
- Deberías ver los 6 fármacos
📊 CONTENIDO QUE SE MIGRA
Procedimientos (5)
| Slug | Título | Prioridad | Contexto Clínico |
|---|---|---|---|
rcp-adulto-svb |
RCP Adulto - Soporte Vital Básico | Crítica | RCP |
rcp-adulto-sva |
RCP Adulto - Soporte Vital Avanzado | Crítica | RCP |
rcp-pediatrico |
RCP Pediátrico - SVB | Crítica | RCP |
obstruccion-via-aerea |
Obstrucción de Vía Aérea - OVACE | Crítica | VIA_AEREA |
shock-hemorragico |
Shock Hemorrágico | Crítica | SHOCK |
Fármacos (6)
| Slug | Nombre Genérico | Categoría |
|---|---|---|
oxigeno |
Oxígeno (O₂) | Oxigenoterapia |
adrenalina |
Adrenalina (Epinefrina) | Cardiovascular |
amiodarona |
Amiodarona | Cardiovascular |
atropina |
Atropina | Cardiovascular |
midazolam |
Midazolam | Neurológico |
salbutamol |
Salbutamol | Respiratorio |
🔄 RE-MIGRACIÓN (Si necesitas actualizar)
El script usa ON CONFLICT (slug) DO UPDATE, así que puedes ejecutarlo múltiples veces:
- ✅ Si el contenido ya existe, se actualiza
- ✅ Si no existe, se crea
- ✅ No duplica contenido
Ejecutar de nuevo:
cd backend
node scripts/migrate-app-content-v2.js
⚠️ NOTAS IMPORTANTES
- No modifica la app: El script solo lee de
procedures.tsydrugs.ts, no los modifica - Estado inicial: Todo se migra como
publishedpara que esté disponible inmediatamente - Versión: Todo se migra como versión
1.0.0 - Admin requerido: Necesitas tener un usuario admin creado (ejecuta
seed-admin.jsprimero)
🐛 SOLUCIÓN DE PROBLEMAS
Error: "No se encontró usuario admin"
# Crear usuario admin primero
cd backend
node scripts/seed-admin.js
Error: "Schema tes_content no existe"
# Crear schema primero
cd backend
node scripts/create-auth-tables.js
Error: "No se pudo importar directamente"
El script tiene un fallback con datos hardcodeados. Si no puede leer los archivos TypeScript, usará datos de ejemplo. Esto es normal si hay problemas con imports dinámicos.
📝 PRÓXIMOS PASOS
Después de migrar:
- ✅ Verificar contenido en panel admin
- ✅ Probar endpoints API:
GET /api/content/protocol/:slug - ✅ Generar Content Pack:
POST /api/admin/pack/generate - ✅ Integrar en app (FASE 2 del plan técnico)
Fin del Documento