diff --git a/GUIA_ENLACES_REFERENCIA.md b/GUIA_ENLACES_REFERENCIA.md new file mode 100644 index 00000000..91eddcf3 --- /dev/null +++ b/GUIA_ENLACES_REFERENCIA.md @@ -0,0 +1,253 @@ +# 🔗 Guía: Enlaces de Referencia entre Capítulos + +**Fecha:** 2024-12-19 +**Objetivo:** Añadir enlaces cruzados entre capítulos relacionados del manual + +--- + +## 📋 FORMATO ESTÁNDAR + +### Sección de Enlaces Recomendados + +Añadir al final de cada capítulo (antes de la línea final): + +```markdown +--- + +## 🔗 Enlaces recomendados / Guía de referencia + +### Capítulos relacionados +- [Título del Capítulo Relacionado](../ruta/relativa/al/archivo.md) +- [Otro Capítulo Relacionado](../ruta/relativa/al/archivo.md) + +### Prerrequisitos +- [Capítulo que debe leerse antes](../ruta/relativa/al/archivo.md) + +### Continuación +- [Capítulo siguiente en la secuencia](../ruta/relativa/al/archivo.md) +``` + +--- + +## 📁 ESTRUCTURA DE RUTAS + +### Desde `MANUAL_TES_DIGITAL/BLOQUE_X/archivo.md` + +**Ejemplo:** `MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md` + +#### Enlaces a capítulos del mismo bloque: +```markdown +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) +``` + +#### Enlaces a capítulos de otro bloque: +```markdown +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) +``` + +#### Enlaces a capítulos de otra parte: +```markdown +- [Fundamentos de Emergencias](../01_FUNDAMENTOS_Y_CONCEPTOS/BLOQUE_00_FUNDAMENTOS_EMERGENCIAS.md) +``` + +--- + +## 🎯 CATEGORÍAS DE ENLACES + +### 1. Prerrequisitos (Debe leerse antes) +```markdown +### Prerrequisitos +- [Fundamentos de Emergencias](../01_FUNDAMENTOS_Y_CONCEPTOS/BLOQUE_00_FUNDAMENTOS_EMERGENCIAS.md) +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +``` + +### 2. Relacionados (Temas complementarios) +```markdown +### Capítulos relacionados +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) +``` + +### 3. Continuación (Siguiente en secuencia) +```markdown +### Continuación +- [Preparación para Traslado](./BLOQUE_08_1_PREPARACION_TRASLADO.md) +- [Gestión durante Traslado](./BLOQUE_08_2_GESTION_DURANTE_TRASLADO.md) +``` + +### 4. Aplicación práctica (Dónde se usa) +```markdown +### Aplicación práctica +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) +- [Protocolos Transtelefónicos](../06_PROTOCOLOS_TRANSTELEFONICOS/BLOQUE_05_1_RCP_TRANSTELEFONICA_ADULTOS.md) +``` + +--- + +## 📝 EJEMPLOS POR BLOQUE + +### Bloque 2 - Inmovilización + +**Archivo:** `BLOQUE_02_3_COLLARIN_CERVICAL.md` + +```markdown +--- + +## 🔗 Enlaces recomendados / Guía de referencia + +### Prerrequisitos +- [Anatomía Operativa](./BLOQUE_02_0_ANATOMIA_OPERATIVA.md) +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) + +### Capítulos relacionados +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) +- [Extricación y Movimientos Bloque](./BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md) + +### Aplicación práctica +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) +``` + +### Bloque 3 - Oxigenoterapia + +**Archivo:** `BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md` + +```markdown +--- + +## 🔗 Enlaces recomendados / Guía de referencia + +### Prerrequisitos +- [Constantes Vitales](../02_PROCEDIMIENTOS_BASICOS/1.1_constantes_vitales.md) +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) + +### Capítulos relacionados +- [Dispositivos de Oxigenoterapia](./BLOQUE_03_1_DISPOSITIVOS_OXIGENOTERAPIA.md) +- [Ventilación BVM](./BLOQUE_03_3_BVM.md) +- [Monitorización Básica](./BLOQUE_03_10_MONITORIZACION_BASICA.md) + +### Aplicación práctica +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) +- [Ventilación BVM](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_5_VENTILACION_BVM.md) +``` + +### Bloque 4 - Soporte Vital + +**Archivo:** `BLOQUE_04_1_RCP_ADULTOS.md` + +```markdown +--- + +## 🔗 Enlaces recomendados / Guía de referencia + +### Prerrequisitos +- [Reconocimiento de PCR](./BLOQUE_04_0_RECONOCIMIENTO_PCR.md) +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) + +### Capítulos relacionados +- [RCP Pediátrica](./BLOQUE_04_2_RCP_PEDIATRIA.md) +- [RCP Lactantes](./BLOQUE_04_3_RCP_LACTANTES.md) +- [Uso de DESA](./BLOQUE_04_4_USO_DESA.md) +- [Ventilación BVM](./BLOQUE_04_5_VENTILACION_BVM.md) + +### Protocolos transtelefónicos +- [RCP Transtelefónica Adultos](../06_PROTOCOLOS_TRANSTELEFONICOS/BLOQUE_05_1_RCP_TRANSTELEFONICA_ADULTOS.md) + +### Continuación +- [RCP Pediátrica](./BLOQUE_04_2_RCP_PEDIATRIA.md) +``` + +--- + +## 🔧 CONVERSIÓN DE RUTAS + +### De ruta de archivo a ruta relativa en Markdown + +**Ruta del archivo:** `MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md` + +**Ruta relativa desde otro archivo:** + +#### Desde mismo bloque: +```markdown +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) +``` + +#### Desde bloque diferente (misma parte): +```markdown +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) +``` + +#### Desde otra parte: +```markdown +- [Fundamentos](../01_FUNDAMENTOS_Y_CONCEPTOS/BLOQUE_00_FUNDAMENTOS_EMERGENCIAS.md) +``` + +--- + +## 📋 CHECKLIST PARA AÑADIR ENLACES + +Antes de añadir enlaces a un capítulo: + +- [ ] Identificar capítulos relacionados (mismo tema) +- [ ] Identificar prerrequisitos (qué debe leerse antes) +- [ ] Identificar continuación (siguiente en secuencia) +- [ ] Verificar que las rutas relativas son correctas +- [ ] Probar que los enlaces funcionan en la app +- [ ] Añadir sección al final del capítulo (antes de línea final) + +--- + +## 🎯 PRIORIDADES + +### Alta Prioridad (Añadir enlaces ahora) +1. **Bloque 2 - Inmovilización** (todos los capítulos están relacionados) +2. **Bloque 3 - Oxigenoterapia** (secuencia lógica clara) +3. **Bloque 4 - Soporte Vital** (RCP adulto → pediátrico → lactante) +4. **Bloque 6 - Farmacología** (principios → preparación → fármacos) + +### Media Prioridad +5. **Bloque 5 - Protocolos Transtelefónicos** (relacionados con Bloque 4) +6. **Bloque 8 - Transferencia** (secuencia clara) + +### Baja Prioridad +7. Resto de bloques + +--- + +## ✅ EJEMPLO COMPLETO + +**Archivo:** `MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md` + +Añadir al final: + +```markdown +--- + +## 🔗 Enlaces recomendados / Guía de referencia + +### Prerrequisitos +- [Anatomía Operativa](./BLOQUE_02_0_ANATOMIA_OPERATIVA.md) - Fundamentos anatómicos +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) - Técnica previa + +### Capítulos relacionados (Sistema de Inmovilización) +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) - Inmovilización corporal completa +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) - Alternativa al tablero +- [Camilla Cuchara](./BLOQUE_02_4_CAMILLA_CUCHARA.md) - Dispositivo de transferencia +- [Extricación y Movimientos Bloque](./BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md) - Técnicas de movilización + +### Aplicación práctica +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración inicial +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) - Contexto de uso +- [Transferencia y Movilización](./BLOQUE_02_8_TRANSFERENCIAS_MOVILIZACION.md) - Continuación del proceso + +### Errores y prevención +- [Errores Críticos en Inmovilización](./BLOQUE_02_9_ERRORES_CRITICOS.md) - Errores comunes a evitar +``` + +--- + +**Última actualización:** 2024-12-19 diff --git a/MANUAL_TES_DIGITAL/03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md b/MANUAL_TES_DIGITAL/03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md index 6d1cd6af..826fd182 100644 --- a/MANUAL_TES_DIGITAL/03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md +++ b/MANUAL_TES_DIGITAL/03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md @@ -348,5 +348,19 @@ Este procedimiento es de **uso exclusivo como apoyo** y **NO sustituye**: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Reconocimiento de PCR](./BLOQUE_04_0_RECONOCIMIENTO_PCR.md) - Identificación de PCR +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración inicial + +### Capítulos relacionados (RCP) +- [RCP Pediátrica](./BLOQUE_04_2_RCP_PEDIATRIA.md) - RCP en niños +- [RCP Lactantes](./BLOQUE_04_3_RCP_LACTANTES.md) - RCP en lactantes +- [Uso de DESA](./BLOQUE_04_4_USO_DESA.md) - Desfibrilación precoz +- [Ventilación BVM](./BLOQUE_04_5_VENTILACION_BVM.md) - Ventilación con bolsa-mascarilla + +### Protocolos transtelefónicos +- [RCP Transtelefónica Adultos](../06_PROTOCOLOS_TRANSTELEFONICOS/BLOQUE_05_1_RCP_TRANSTELEFONICA_ADULTOS.md) - Guía telefónica + +### Continuación +- [RCP Pediátrica](./BLOQUE_04_2_RCP_PEDIATRIA.md) - Siguiente en la secuencia diff --git a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_2_INMOVILIZACION_MANUAL.md b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_2_INMOVILIZACION_MANUAL.md index 005d53c3..296d5740 100644 --- a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_2_INMOVILIZACION_MANUAL.md +++ b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_2_INMOVILIZACION_MANUAL.md @@ -711,5 +711,16 @@ Este procedimiento es de **uso exclusivo como apoyo** y **NO sustituye**: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Anatomía Operativa](./BLOQUE_02_0_ANATOMIA_OPERATIVA.md) - Fundamentos anatómicos +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración inicial + +### Capítulos relacionados (Sistema de Inmovilización) +- [Collarín Cervical](./BLOQUE_02_3_COLLARIN_CERVICAL.md) - Dispositivo de inmovilización cervical +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) - Inmovilización corporal completa +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) - Alternativa al tablero +- [Extricación y Movimientos Bloque](./BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md) - Técnicas de movilización + +### Continuación +- [Collarín Cervical](./BLOQUE_02_3_COLLARIN_CERVICAL.md) - Siguiente paso en inmovilización diff --git a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md index ec1dacca..2293b7ca 100644 --- a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md +++ b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_3_COLLARIN_CERVICAL.md @@ -884,5 +884,21 @@ Este procedimiento es de **uso exclusivo como apoyo** y **NO sustituye**: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Anatomía Operativa](./BLOQUE_02_0_ANATOMIA_OPERATIVA.md) - Fundamentos anatómicos +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) - Técnica previa + +### Capítulos relacionados (Sistema de Inmovilización) +- [Tablero Espinal](./BLOQUE_02_5_TABLERO_ESPINAL.md) - Inmovilización corporal completa +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) - Alternativa al tablero +- [Camilla Cuchara](./BLOQUE_02_4_CAMILLA_CUCHARA.md) - Dispositivo de transferencia +- [Extricación y Movimientos Bloque](./BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md) - Técnicas de movilización + +### Aplicación práctica +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración inicial +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) - Contexto de uso +- [Transferencia y Movilización](./BLOQUE_02_8_TRANSFERENCIAS_MOVILIZACION.md) - Continuación del proceso + +### Errores y prevención +- [Errores Críticos en Inmovilización](./BLOQUE_02_9_ERRORES_CRITICOS.md) - Errores comunes a evitar diff --git a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_5_TABLERO_ESPINAL.md b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_5_TABLERO_ESPINAL.md index e1907616..6add63c1 100644 --- a/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_5_TABLERO_ESPINAL.md +++ b/MANUAL_TES_DIGITAL/04_MATERIAL_E_INMOVILIZACION/BLOQUE_02_5_TABLERO_ESPINAL.md @@ -513,5 +513,16 @@ Este procedimiento es de **uso exclusivo como apoyo** y **NO sustituye**: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Inmovilización Manual](./BLOQUE_02_2_INMOVILIZACION_MANUAL.md) - Técnica previa +- [Collarín Cervical](./BLOQUE_02_3_COLLARIN_CERVICAL.md) - Parte del sistema completo + +### Capítulos relacionados (Sistema de Inmovilización) +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) - Alternativa para traslados largos +- [Camilla Cuchara](./BLOQUE_02_4_CAMILLA_CUCHARA.md) - Dispositivo de transferencia +- [Extricación y Movimientos Bloque](./BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md) - Técnicas de movilización + +### Continuación +- [Colchón de Vacío](./BLOQUE_02_6_COLCHON_VACIO.md) - Considerar para traslados prolongados +- [Transferencia y Movilización](./BLOQUE_02_8_TRANSFERENCIAS_MOVILIZACION.md) - Continuación del proceso diff --git a/MANUAL_TES_DIGITAL/05_OXIGENOTERAPIA_Y_MATERIAL_SANITARIO/BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md b/MANUAL_TES_DIGITAL/05_OXIGENOTERAPIA_Y_MATERIAL_SANITARIO/BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md index 7956f5fd..470f9fed 100644 --- a/MANUAL_TES_DIGITAL/05_OXIGENOTERAPIA_Y_MATERIAL_SANITARIO/BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md +++ b/MANUAL_TES_DIGITAL/05_OXIGENOTERAPIA_Y_MATERIAL_SANITARIO/BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md @@ -765,5 +765,16 @@ Este procedimiento es de **uso exclusivo como apoyo** y **NO sustituye**: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Constantes Vitales](../02_PROCEDIMIENTOS_BASICOS/1.1_constantes_vitales.md) - Monitorización durante oxigenoterapia +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración inicial + +### Capítulos relacionados +- [Dispositivos de Oxigenoterapia](./BLOQUE_03_1_DISPOSITIVOS_OXIGENOTERAPIA.md) - Tipos de dispositivos +- [Ventilación BVM](./BLOQUE_03_3_BVM.md) - Ventilación con bolsa-mascarilla +- [Monitorización Básica](./BLOQUE_03_10_MONITORIZACION_BASICA.md) - Seguimiento del paciente + +### Aplicación práctica +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) - Uso durante RCP +- [Ventilación BVM](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_5_VENTILACION_BVM.md) - Técnica de ventilación diff --git a/MANUAL_TES_DIGITAL/07_FARMACOLOGIA_OPERATIVA/BLOQUE_06_1_DEL_VIAL_A_LA_VENA.md b/MANUAL_TES_DIGITAL/07_FARMACOLOGIA_OPERATIVA/BLOQUE_06_1_DEL_VIAL_A_LA_VENA.md index 6b792a99..1227ee19 100644 --- a/MANUAL_TES_DIGITAL/07_FARMACOLOGIA_OPERATIVA/BLOQUE_06_1_DEL_VIAL_A_LA_VENA.md +++ b/MANUAL_TES_DIGITAL/07_FARMACOLOGIA_OPERATIVA/BLOQUE_06_1_DEL_VIAL_A_LA_VENA.md @@ -282,5 +282,16 @@ Estas habilidades son el núcleo para: ## 🔗 Enlaces recomendados / Guía de referencia -- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) +### Prerrequisitos +- [Principios de Administración de Fármacos](./BLOQUE_06_0_PRINCIPIOS_ADMINISTRACION.md) - Fundamentos de seguridad farmacológica +- [Constantes Vitales](../02_PROCEDIMIENTOS_BASICOS/1.1_constantes_vitales.md) - Monitorización durante administración + +### Capítulos relacionados (Vademécum) +- [Analgésicos y Sedantes](./BLOQUE_06_2_ANALGESICOS_SEDANTES.md) - Aplicación práctica +- [Vasoactivos y Aminas](./BLOQUE_06_3_VASOACTIVOS_AMINAS.md) - Aplicación práctica +- [Fármacos Cardiológicos](./BLOQUE_06_5_FARMACOS_CARDIOLOGICOS.md) - Aplicación práctica + +### Aplicación práctica +- [RCP Adultos](../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md) - Contexto de uso en PCR +- [ABCDE Operativo](../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md) - Valoración durante administración diff --git a/scripts/anadir_enlaces_referencia.py b/scripts/anadir_enlaces_referencia.py new file mode 100644 index 00000000..25bdd4a4 --- /dev/null +++ b/scripts/anadir_enlaces_referencia.py @@ -0,0 +1,237 @@ +#!/usr/bin/env python3 +""" +Script para añadir enlaces de referencia entre capítulos del manual +Basado en manual-index.ts y relaciones lógicas entre capítulos +""" + +import os +import re +from pathlib import Path +from typing import Dict, List, Tuple, Optional + +BASE_DIR = Path(__file__).parent.parent +MANUAL_DIR = BASE_DIR / "MANUAL_TES_DIGITAL" + +# Mapeo de relaciones entre capítulos +RELACIONES: Dict[str, Dict[str, List[str]]] = { + # Bloque 2 - Inmovilización + "BLOQUE_02_3_COLLARIN_CERVICAL.md": { + "prerrequisitos": [ + "BLOQUE_02_0_ANATOMIA_OPERATIVA.md", + "BLOQUE_02_2_INMOVILIZACION_MANUAL.md", + ], + "relacionados": [ + "BLOQUE_02_5_TABLERO_ESPINAL.md", + "BLOQUE_02_6_COLCHON_VACIO.md", + "BLOQUE_02_4_CAMILLA_CUCHARA.md", + "BLOQUE_02_7_EXTRICACION_MOVIMIENTOS_BLOQUE.md", + ], + "aplicacion": [ + "../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md", + "../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md", + ], + "continuacion": [ + "BLOQUE_02_8_TRANSFERENCIAS_MOVILIZACION.md", + ], + }, + + # Bloque 4 - RCP + "BLOQUE_04_1_RCP_ADULTOS.md": { + "prerrequisitos": [ + "BLOQUE_04_0_RECONOCIMIENTO_PCR.md", + "../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md", + ], + "relacionados": [ + "BLOQUE_04_2_RCP_PEDIATRIA.md", + "BLOQUE_04_3_RCP_LACTANTES.md", + "BLOQUE_04_4_USO_DESA.md", + "BLOQUE_04_5_VENTILACION_BVM.md", + ], + "transtelefonico": [ + "../06_PROTOCOLOS_TRANSTELEFONICOS/BLOQUE_05_1_RCP_TRANSTELEFONICA_ADULTOS.md", + ], + }, + + # Bloque 3 - Oxigenoterapia + "BLOQUE_03_0_OXIGENOTERAPIA_FUNDAMENTOS.md": { + "prerrequisitos": [ + "../02_PROCEDIMIENTOS_BASICOS/1.1_constantes_vitales.md", + "../02_PROCEDIMIENTOS_BASICOS/1.2_abcde_operativo.md", + ], + "relacionados": [ + "BLOQUE_03_1_DISPOSITIVOS_OXIGENOTERAPIA.md", + "BLOQUE_03_3_BVM.md", + "BLOQUE_03_10_MONITORIZACION_BASICA.md", + ], + "aplicacion": [ + "../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md", + "../03_SOPORTE_VITAL_BASICO/BLOQUE_04_5_VENTILACION_BVM.md", + ], + }, + + # Bloque 6 - Farmacología + "BLOQUE_06_1_DEL_VIAL_A_LA_VENA.md": { + "prerrequisitos": [ + "BLOQUE_06_0_PRINCIPIOS_ADMINISTRACION.md", + ], + "relacionados": [ + "BLOQUE_06_2_ANALGESICOS_SEDANTES.md", + "BLOQUE_06_3_VASOACTIVOS_AMINAS.md", + "BLOQUE_06_5_FARMACOS_CARDIOLOGICOS.md", + ], + "aplicacion": [ + "../03_SOPORTE_VITAL_BASICO/BLOQUE_04_1_RCP_ADULTOS.md", + ], + }, +} + +# Mapeo de nombres de archivo a rutas completas +def encontrar_archivo(nombre: str, directorio_actual: Path) -> Optional[str]: + """Encuentra la ruta relativa de un archivo desde el directorio actual""" + # Buscar en el mismo directorio + archivo_local = directorio_actual / nombre + if archivo_local.exists(): + return f"./{nombre}" + + # Buscar en subdirectorios del manual + for subdir in MANUAL_DIR.rglob("*"): + if subdir.is_dir(): + archivo = subdir / nombre + if archivo.exists(): + # Calcular ruta relativa + rel_path = os.path.relpath(archivo, directorio_actual) + return rel_path.replace("\\", "/") + + return None + + +def generar_seccion_enlaces(archivo: Path, relaciones: Dict[str, List[str]]) -> str: + """Genera la sección de enlaces en formato Markdown""" + directorio_actual = archivo.parent + + seccion = "\n---\n\n## 🔗 Enlaces recomendados / Guía de referencia\n\n" + + # Prerrequisitos + if relaciones.get("prerrequisitos"): + seccion += "### Prerrequisitos\n\n" + for rel in relaciones["prerrequisitos"]: + ruta = encontrar_archivo(rel, directorio_actual) or rel + nombre = rel.replace(".md", "").replace("BLOQUE_", "").replace("_", " ") + seccion += f"- [{nombre}]({ruta})\n" + seccion += "\n" + + # Relacionados + if relaciones.get("relacionados"): + seccion += "### Capítulos relacionados\n\n" + for rel in relaciones["relacionados"]: + ruta = encontrar_archivo(rel, directorio_actual) or rel + nombre = rel.replace(".md", "").replace("BLOQUE_", "").replace("_", " ") + seccion += f"- [{nombre}]({ruta})\n" + seccion += "\n" + + # Aplicación práctica + if relaciones.get("aplicacion"): + seccion += "### Aplicación práctica\n\n" + for rel in relaciones["aplicacion"]: + ruta = rel # Ya es ruta relativa + nombre = Path(rel).stem.replace("BLOQUE_", "").replace("_", " ") + seccion += f"- [{nombre}]({ruta})\n" + seccion += "\n" + + # Continuación + if relaciones.get("continuacion"): + seccion += "### Continuación\n\n" + for rel in relaciones["continuacion"]: + ruta = encontrar_archivo(rel, directorio_actual) or rel + nombre = rel.replace(".md", "").replace("BLOQUE_", "").replace("_", " ") + seccion += f"- [{nombre}]({ruta})\n" + seccion += "\n" + + # Protocolos transtelefónicos + if relaciones.get("transtelefonico"): + seccion += "### Protocolos transtelefónicos\n\n" + for rel in relaciones["transtelefonico"]: + ruta = rel + nombre = Path(rel).stem.replace("BLOQUE_", "").replace("_", " ") + seccion += f"- [{nombre}]({ruta})\n" + seccion += "\n" + + return seccion.rstrip() + "\n" + + +def añadir_enlaces_a_archivo(archivo: Path, relaciones: Dict[str, List[str]]) -> bool: + """Añade enlaces de referencia a un archivo Markdown""" + if not archivo.exists(): + print(f"❌ Archivo no encontrado: {archivo}") + return False + + contenido = archivo.read_text(encoding='utf-8') + + # Verificar si ya tiene sección de enlaces + if "## 🔗 Enlaces recomendados" in contenido: + print(f"⏭️ Ya tiene enlaces: {archivo.name}") + return False + + # Buscar el final del archivo (última línea con contenido) + lineas = contenido.rstrip().split('\n') + + # Buscar última línea con contenido antes de líneas vacías finales + ultima_linea_contenido = len(lineas) - 1 + while ultima_linea_contenido >= 0 and not lineas[ultima_linea_contenido].strip(): + ultima_linea_contenido -= 1 + + # Generar sección de enlaces + seccion_enlaces = generar_seccion_enlaces(archivo, relaciones) + + # Insertar antes de la última línea (o al final si no hay separador) + if ultima_linea_contenido >= 0: + # Insertar después de la última línea con contenido + lineas.insert(ultima_linea_contenido + 1, seccion_enlaces) + else: + lineas.append(seccion_enlaces) + + nuevo_contenido = '\n'.join(lineas) + + # Guardar + archivo.write_text(nuevo_contenido, encoding='utf-8') + print(f"✅ Enlaces añadidos: {archivo.name}") + return True + + +def main(): + """Función principal""" + print("=" * 70) + print("🔗 AÑADIR ENLACES DE REFERENCIA ENTRE CAPÍTULOS") + print("=" * 70) + print() + + añadidos = 0 + omitidos = 0 + + # Procesar cada archivo con relaciones definidas + for nombre_archivo, relaciones in RELACIONES.items(): + # Buscar archivo en el manual + archivo = None + for subdir in MANUAL_DIR.rglob(nombre_archivo): + if subdir.is_file(): + archivo = subdir + break + + if not archivo: + print(f"⚠️ Archivo no encontrado: {nombre_archivo}") + omitidos += 1 + continue + + if añadir_enlaces_a_archivo(archivo, relaciones): + añadidos += 1 + else: + omitidos += 1 + + print() + print("=" * 70) + print(f"📊 RESUMEN: {añadidos} añadidos, {omitidos} omitidos") + print("=" * 70) + + +if __name__ == "__main__": + main()