diff --git a/backend/src/migrateYamlToMongo.ts b/backend/src/migrateYamlToMongo.ts index 046ccf34..1766d9be 100644 --- a/backend/src/migrateYamlToMongo.ts +++ b/backend/src/migrateYamlToMongo.ts @@ -17,6 +17,20 @@ async function migrate() { await mongoose.connect(MONGODB_URI); console.log('✅ Conectado a MongoDB'); + function normalizeItems(items: any[] | undefined): string[] { + if (!items) return []; + return items.map(item => { + if (typeof item === 'string') return item; + if (typeof item === 'object' && item !== null) { + const entries = Object.entries(item); + if (entries.length > 0) { + const [key, value] = entries[0]; + return `${key}: ${value}`; + } + } + return String(item); + }); + } const folders = fs.readdirSync(PROTOCOLS_DIR); let totalMigrated = 0; @@ -29,12 +43,33 @@ async function migrate() { for (const file of files) { const filePath = path.join(folderPath, file); const content = fs.readFileSync(filePath, 'utf8'); - const data = yaml.load(content) as ClinicalProtocol; + const data = yaml.load(content) as any; if (!data.id) { data.id = file.replace('.yaml', ''); } + // Normalizar items en pasos + if (data.pasos) { + data.pasos = data.pasos.map((p: any) => ({ + ...p, + items: normalizeItems(p.items) + })); + } + + // Normalizar items en fases + if (data.fases) { + data.fases = data.fases.map((f: any) => ({ + ...f, + items: normalizeItems(f.items) + })); + } + + // Normalizar equipamiento + if (data.equipamiento) { + data.equipamiento = normalizeItems(data.equipamiento); + } + // Upsert await ProtocolModel.findOneAndUpdate( { id: data.id }, diff --git a/frontend/public/protocols/emergencias/hiperglucemia.yaml b/frontend/public/protocols/emergencias/hiperglucemia.yaml index 83ad8979..722b0d79 100644 --- a/frontend/public/protocols/emergencias/hiperglucemia.yaml +++ b/frontend/public/protocols/emergencias/hiperglucemia.yaml @@ -21,8 +21,8 @@ pasos: titulo: Valoración Clínica descripcion: Signos típicos de crisis. items: - - Valorar triada: Polidipsia (mucha sed), Poliuria, Polifagia - - Evaluar hidratación: Mucosas secas, signo del pliegue (+) + - "Valorar triada: Polidipsia (mucha sed), Poliuria, Polifagia" + - "Evaluar hidratación: Mucosas secas, signo del pliegue (+)" - Verificar nivel de consciencia (Glasgow) - Medir constantes vitales (TA, FC, Tª) @@ -45,11 +45,11 @@ pasos: - Monitorización continua del ritmo cardíaco (Riesgo de arritmias por potasio) - tipo: info - titulo: Identificación: CAD vs EHH + titulo: "Identificación: CAD vs EHH" descripcion: Diferenciación rápida para el informe médico. items: - - Cetoacidosis (CAD): Más frecuente en DM1, inicio rápido, aliento cetósico y dolor abdominal. - - Estado Hiperosmolar (EHH): Más frecuente en DM2 (ancianos), inicio lento, deshidratación extrema y alteraciones neurológicas. + - "Cetoacidosis (CAD): Más frecuente en DM1, inicio rápido, aliento cetósico y dolor abdominal." + - "Estado Hiperosmolar (EHH): Más frecuente en DM2 (ancianos), inicio lento, deshidratación extrema y alteraciones neurológicas." # ─── FÁRMACOS ────────────────────────────────────────────────── farmacos: diff --git a/frontend/public/protocols/inmovilizacion/transferencias-movilizacion.yaml b/frontend/public/protocols/inmovilizacion/transferencias-movilizacion.yaml index 2c2babd0..6b76154d 100644 --- a/frontend/public/protocols/inmovilizacion/transferencias-movilizacion.yaml +++ b/frontend/public/protocols/inmovilizacion/transferencias-movilizacion.yaml @@ -13,10 +13,7 @@ alertas: - tipo: danger texto: "Mantener alineación espinal en pacientes traumáticos." - tipo: warning - text - -#警戒 - texto: "Usar técnicasergonómicas para prevenir lesiones." + texto: "Usar técnicas ergonómicas para prevenir lesiones." # ─── PRINCIPIOS ──────────────────────────────────────────────── principios: diff --git a/frontend/public/protocols/material-sanitario/canulas.yaml b/frontend/public/protocols/material-sanitario/canulas.yaml index 79fa834f..4cb9e293 100644 --- a/frontend/public/protocols/material-sanitario/canulas.yaml +++ b/frontend/public/protocols/material-sanitario/canulas.yaml @@ -40,7 +40,7 @@ pasos: descripcion: "Verificar respiración correcta a través de la cánula." # ─── TÉCNICA NASOFARINGEA ──────────────────────────────────── -pasos: + - tipo: tecnica titulo: Preparación descripcion: "Lubricar cánula." diff --git a/frontend/public/protocols/material-sanitario/control-hemorragias.yaml b/frontend/public/protocols/material-sanitario/control-hemorragias.yaml index 31a5754c..80e3cde3 100644 --- a/frontend/public/protocols/material-sanitario/control-hemorragias.yaml +++ b/frontend/public/protocols/material-sanitario/control-hemorragias.yaml @@ -26,7 +26,7 @@ tecnicas: - titulo: Presión indirecta prioridad: 3 descripcion: "Presionar arteria proximal." - - torniquete + - titulo: Torniquete prioridad: 4 descripcion: "Último recurso para hemorragia masiva de extremidad." diff --git a/frontend/public/protocols/soporte-vital/ovace-adultos.yaml b/frontend/public/protocols/soporte-vital/ovace-adultos.yaml index 3aef481d..fa6f102c 100644 --- a/frontend/public/protocols/soporte-vital/ovace-adultos.yaml +++ b/frontend/public/protocols/soporte-vital/ovace-adultos.yaml @@ -11,7 +11,7 @@ actualizado: 2025-12-23 # ─── ALERTAS GLOBALES ───────────────────────────────────────── alertas: - tipo: danger - texto: "¿Puede hablar?" - Es la pregunta diagnóstica clave. + texto: '"¿Puede hablar?" - Es la pregunta diagnóstica clave.' - tipo: danger texto: "Si puede hablar/toser bien: ANIMA A TOSER. Si no: ACTÚA." - tipo: warning