# 🔄 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: 1. ✅ Lee el contenido de `src/data/procedures.ts` y `src/data/drugs.ts` 2. ✅ Lo transforma al formato del schema `tes_content` 3. ✅ Lo inserta en la base de datos PostgreSQL 4. ✅ Marca todo como `published` para que esté disponible --- ## 🚀 CÓMO EJECUTAR LA MIGRACIÓN ### Paso 1: Verificar que el schema existe ```bash cd backend node scripts/create-auth-tables.js ``` ### Paso 2: Ejecutar el script de migración ```bash 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 ```sql -- 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 1. Accede al panel admin: `http://localhost:5174` 2. Ve a "Contenido" → "Protocolos" 3. Deberías ver los 5 procedimientos 4. Ve a "Contenido" → "Fármacos" 5. 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:** ```bash cd backend node scripts/migrate-app-content-v2.js ``` --- ## ⚠️ NOTAS IMPORTANTES 1. **No modifica la app:** El script solo lee de `procedures.ts` y `drugs.ts`, no los modifica 2. **Estado inicial:** Todo se migra como `published` para que esté disponible inmediatamente 3. **Versión:** Todo se migra como versión `1.0.0` 4. **Admin requerido:** Necesitas tener un usuario admin creado (ejecuta `seed-admin.js` primero) --- ## 🐛 SOLUCIÓN DE PROBLEMAS ### Error: "No se encontró usuario admin" ```bash # Crear usuario admin primero cd backend node scripts/seed-admin.js ``` ### Error: "Schema tes_content no existe" ```bash # 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: 1. ✅ Verificar contenido en panel admin 2. ✅ Probar endpoints API: `GET /api/content/protocol/:slug` 3. ✅ Generar Content Pack: `POST /api/admin/pack/generate` 4. ✅ Integrar en app (FASE 2 del plan técnico) --- **Fin del Documento**