173 lines
4.9 KiB
Markdown
173 lines
4.9 KiB
Markdown
|
|
# MÓDULO 1: ÁRBOLES DE DECISIÓN BINARIOS
|
||
|
|
|
||
|
|
## ✅ IMPLEMENTACIÓN COMPLETADA
|
||
|
|
|
||
|
|
**Fecha:** 2024-12-13
|
||
|
|
**Estado:** Completado y listo para uso
|
||
|
|
**Compatibilidad:** 100% aditivo, no modifica código existente
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📁 ARCHIVOS CREADOS (NUEVOS)
|
||
|
|
|
||
|
|
### 1. `src/data/decision-trees.ts`
|
||
|
|
- **Tipo:** Archivo de datos TypeScript
|
||
|
|
- **Contenido:**
|
||
|
|
- Tipos TypeScript: `DecisionNodeType`, `DecisionNode`, `DecisionTree`
|
||
|
|
- 2 árboles de decisión implementados:
|
||
|
|
- `pcrRecognitionTree`: Reconocimiento de PCR (Cap 4.0)
|
||
|
|
- `svbAdultTree`: SVB Adulto (Cap 4.1)
|
||
|
|
- Funciones helper: `getDecisionTreeById`, `getDecisionTreesByCategory`, `getRootNode`, `getNodeById`
|
||
|
|
- **Fuente:** Manual TES Digital (Bloques 4.0, 4.1)
|
||
|
|
|
||
|
|
### 2. `src/components/decision-trees/DecisionTreeViewer.tsx`
|
||
|
|
- **Tipo:** Componente React reutilizable
|
||
|
|
- **Funcionalidad:**
|
||
|
|
- Visualización interactiva de árboles de decisión
|
||
|
|
- Navegación paso a paso (SÍ/NO)
|
||
|
|
- Historial de decisiones (botón "Atrás")
|
||
|
|
- Botón "Reiniciar" para volver al inicio
|
||
|
|
- Redirección automática a procedimientos relacionados
|
||
|
|
- Indicador de progreso (paso actual)
|
||
|
|
- **Dependencias:** Componentes UI existentes (Button, Card, Alert, Badge)
|
||
|
|
|
||
|
|
### 3. Integración en `src/pages/Escena.tsx`
|
||
|
|
- **Cambios realizados:**
|
||
|
|
- ✅ Añadida nueva pestaña "Decisiones" (icono GitBranch)
|
||
|
|
- ✅ Estado local para árbol seleccionado
|
||
|
|
- ✅ Lista de árboles disponibles
|
||
|
|
- ✅ Visualizador de árbol interactivo
|
||
|
|
- **NO modificado:**
|
||
|
|
- ❌ Ninguna pestaña existente
|
||
|
|
- ❌ Ningún componente existente
|
||
|
|
- ❌ Ninguna funcionalidad existente
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 FUNCIONALIDADES IMPLEMENTADAS
|
||
|
|
|
||
|
|
### 1. Árbol de Decisión: Reconocimiento de PCR
|
||
|
|
- **Pregunta 1:** ¿Responde?
|
||
|
|
- SÍ → No es PCR, evaluar ABCDE
|
||
|
|
- NO → Pregunta 2
|
||
|
|
- **Pregunta 2:** ¿Respira con normalidad?
|
||
|
|
- SÍ → No es PCR, PLS
|
||
|
|
- NO → PCR confirmada
|
||
|
|
- **Pregunta 3:** ¿Estoy solo o con equipo?
|
||
|
|
- SOLO → Activar 112 y empezar RCP
|
||
|
|
- CON EQUIPO → Asignar roles y RCP coordinada
|
||
|
|
|
||
|
|
### 2. Árbol de Decisión: SVB Adulto
|
||
|
|
- **Pregunta 1:** ¿ES SEGURO?
|
||
|
|
- NO → Asegurar escena
|
||
|
|
- SÍ → Pregunta 2
|
||
|
|
- **Pregunta 2:** ¿RESPONDE?
|
||
|
|
- SÍ → Evaluar ABCDE
|
||
|
|
- NO → Pregunta 3
|
||
|
|
- **Pregunta 3:** ¿RESPIRA NORMAL?
|
||
|
|
- SÍ → PLS
|
||
|
|
- NO → Iniciar RCP
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔗 INTEGRACIÓN CON EXISTENTE
|
||
|
|
|
||
|
|
### Reutiliza:
|
||
|
|
- ✅ Componentes UI existentes (Button, Card, Alert, Badge)
|
||
|
|
- ✅ Sistema de routing existente (useNavigate)
|
||
|
|
- ✅ Estilos existentes (Tailwind, clases personalizadas)
|
||
|
|
- ✅ Estructura de páginas existente
|
||
|
|
|
||
|
|
### No toca:
|
||
|
|
- ❌ `src/data/procedures.ts` (sin cambios)
|
||
|
|
- ❌ `src/data/drugs.ts` (sin cambios)
|
||
|
|
- ❌ `src/data/calculators.ts` (sin cambios)
|
||
|
|
- ❌ Componentes existentes (sin modificaciones)
|
||
|
|
- ❌ Otras páginas (sin cambios)
|
||
|
|
- ❌ Routing principal (sin cambios)
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📱 USO EN LA APP
|
||
|
|
|
||
|
|
### Acceso:
|
||
|
|
1. Ir a página **"Escena"** (botón inferior)
|
||
|
|
2. Seleccionar pestaña **"Decisiones"**
|
||
|
|
3. Elegir un árbol de decisión
|
||
|
|
4. Responder preguntas SÍ/NO paso a paso
|
||
|
|
5. Llegar a la acción recomendada
|
||
|
|
|
||
|
|
### Características:
|
||
|
|
- ✅ Navegación intuitiva (SÍ/NO)
|
||
|
|
- ✅ Historial de decisiones (botón "Atrás")
|
||
|
|
- ✅ Redirección automática a procedimientos relacionados
|
||
|
|
- ✅ Reinicio rápido del árbol
|
||
|
|
- ✅ Indicador de progreso
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 PRÓXIMOS PASOS (MÓDULOS FUTUROS)
|
||
|
|
|
||
|
|
Este módulo está **completamente funcional** y listo para uso. Los siguientes módulos se añadirán de forma similar:
|
||
|
|
|
||
|
|
- **Módulo 2:** Protocolos Transtelefónicos
|
||
|
|
- **Módulo 3:** Guiones de Comunicación Operativa
|
||
|
|
- **Módulo 4:** Checklists de Material
|
||
|
|
- **Módulo 5:** Material e Inmovilización
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## ✅ CONFIRMACIÓN DE COMPATIBILIDAD
|
||
|
|
|
||
|
|
### ✅ No rompe nada existente:
|
||
|
|
- Todas las pestañas de Escena funcionan igual
|
||
|
|
- Todas las demás páginas sin cambios
|
||
|
|
- Todos los datos existentes intactos
|
||
|
|
- Todos los componentes existentes sin modificaciones
|
||
|
|
|
||
|
|
### ✅ Es completamente aditivo:
|
||
|
|
- Nuevos archivos en nuevas carpetas
|
||
|
|
- Nueva pestaña añadida (no modifica existentes)
|
||
|
|
- Nuevos tipos TypeScript (no conflictos)
|
||
|
|
- Nuevos componentes (no dependencias circulares)
|
||
|
|
|
||
|
|
### ✅ Compatible hacia atrás:
|
||
|
|
- Funciona con estructura existente
|
||
|
|
- Reutiliza componentes UI existentes
|
||
|
|
- Sigue patrones de código existentes
|
||
|
|
- No requiere cambios en configuración
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📝 NOTAS TÉCNICAS
|
||
|
|
|
||
|
|
### Estructura de datos:
|
||
|
|
```typescript
|
||
|
|
DecisionTree {
|
||
|
|
id: string
|
||
|
|
title: string
|
||
|
|
category: 'soporte_vital' | 'escena' | 'material' | 'comunicacion'
|
||
|
|
rootNodeId: string
|
||
|
|
nodes: DecisionNode[]
|
||
|
|
}
|
||
|
|
|
||
|
|
DecisionNode {
|
||
|
|
id: string
|
||
|
|
type: 'question' | 'action' | 'redirect'
|
||
|
|
text: string
|
||
|
|
yes?: string // ID siguiente si SÍ
|
||
|
|
no?: string // ID siguiente si NO
|
||
|
|
action?: string
|
||
|
|
redirectTo?: string
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
### Extensibilidad:
|
||
|
|
- Fácil añadir nuevos árboles: solo añadir a `decisionTrees[]`
|
||
|
|
- Fácil añadir nuevos nodos: solo añadir al array `nodes`
|
||
|
|
- Fácil añadir nuevas categorías: extender tipo `category`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
**✅ MÓDULO 1 COMPLETADO Y LISTO PARA USO**
|