# EPICA: EPIC-CL-010 - Telemedicina

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-010 |
| **Nombre** | Telemedicina |
| **Modulo** | telemedicina |
| **Fase** | Fase 2 - Extensión |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 11-14 |

---

## Descripcion

Módulo 100% nuevo para consultas médicas remotas. Videoconsultas con WebRTC, sala de espera virtual, compartir pantalla para resultados, prescripción electrónica a distancia y grabación de consultas con consentimiento.

---

## Objetivo de Negocio

- Ampliar alcance geográfico
- Atención sin desplazamiento
- Seguimiento de crónicos remoto
- Nuevas fuentes de ingreso
- Adaptación post-pandemia

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL010-001 | Como paciente, quiero agendar teleconsulta desde el portal | P0 | 5 | Backlog |
| US-CL010-002 | Como paciente, quiero entrar a sala de espera virtual antes de la consulta | P0 | 5 | Backlog |
| US-CL010-003 | Como médico, quiero iniciar videollamada cuando el paciente esté listo | P0 | 8 | Backlog |
| US-CL010-004 | Como médico, quiero compartir pantalla para mostrar resultados al paciente | P0 | 5 | Backlog |
| US-CL010-005 | Como médico, quiero documentar nota clínica durante la videoconsulta | P0 | 3 | Backlog |
| US-CL010-006 | Como médico, quiero generar receta electrónica al finalizar | P0 | 3 | Backlog |
| US-CL010-007 | Como paciente, quiero recibir recordatorio 10 min antes de la consulta | P0 | 3 | Backlog |
| US-CL010-008 | Como paciente, quiero grabar la consulta con consentimiento del médico | P2 | 8 | Backlog |
| US-CL010-009 | Como paciente, quiero enviar fotos de síntomas antes de la consulta | P1 | 5 | Backlog |
| US-CL010-010 | Como médico, quiero terminar la videollamada y cerrar consulta | P0 | 2 | Backlog |
| US-CL010-011 | Como admin, quiero ver reportes de teleconsultas realizadas | P1 | 3 | Backlog |
| US-CL010-012 | Como paciente, quiero evaluar la calidad de la teleconsulta | P2 | 5 | Backlog |

**Total Story Points:** 55 SP

---

## Flujo de Teleconsulta

```
┌─────────────┐
│   AGENDAR   │  ← Paciente selecciona teleconsulta
└──────┬──────┘
       │
       ▼ (-10 min)
┌─────────────┐
│ RECORDATORIO│  ← Email/WhatsApp con link
└──────┬──────┘
       │
       ▼
┌─────────────┐
│SALA_ESPERA  │  ← Paciente espera en sala virtual
└──────┬──────┘
       │
       ▼ (Médico inicia)
┌─────────────┐
│ VIDEOLLAMADA│  ← WebRTC activo
└──────┬──────┘
       │
       ├── Chat de texto
       ├── Compartir pantalla
       ├── Enviar archivos
       │
       ▼
┌─────────────┐
│   CERRAR    │  ← Médico termina llamada
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   RECETA    │  ← Envío electrónico
│   + NOTA    │  ← Documentación
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  ENCUESTA   │  ← Satisfacción del paciente
└─────────────┘
```

---

## Arquitectura WebRTC

```
┌─────────────────────────────────────────────────────────┐
│              ARQUITECTURA TELEMEDICINA                  │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   PACIENTE                         MÉDICO               │
│  ┌──────────┐                    ┌──────────┐          │
│  │ Browser  │                    │ Browser  │          │
│  │ (WebRTC) │                    │ (WebRTC) │          │
│  └────┬─────┘                    └────┬─────┘          │
│       │                               │                 │
│       │    ┌──────────────────┐      │                 │
│       └────┤   TURN/STUN      ├──────┘                 │
│            │   Server         │                         │
│            └────────┬─────────┘                         │
│                     │                                   │
│            ┌────────┴─────────┐                         │
│            │  Signaling       │                         │
│            │  Server          │                         │
│            │  (WebSockets)    │                         │
│            └────────┬─────────┘                         │
│                     │                                   │
│            ┌────────┴─────────┐                         │
│            │   Backend API    │                         │
│            │   (Express)      │                         │
│            └──────────────────┘                         │
│                                                         │
│  CARACTERÍSTICAS:                                       │
│  ├── Video HD (720p/1080p)                              │
│  ├── Audio bidireccional                                │
│  ├── Compartir pantalla                                 │
│  ├── Chat de texto                                      │
│  ├── Transferencia de archivos                          │
│  └── Grabación (opcional)                               │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Agendar teleconsulta
- [ ] Sala de espera virtual
- [ ] Videollamada WebRTC
- [ ] Compartir pantalla
- [ ] Chat durante consulta
- [ ] Enviar archivos
- [ ] Documentación de consulta
- [ ] Prescripción electrónica
- [ ] Grabación con consentimiento
- [ ] Encuesta de satisfacción

**No Funcionales:**
- [ ] Latencia < 200ms
- [ ] Video HD estable
- [ ] Funciona en móvil y desktop
- [ ] Conexión cifrada (SRTP)

**Tecnicos:**
- [ ] WebRTC con TURN/STUN
- [ ] WebSockets para signaling
- [ ] Integración con consultas
- [ ] Almacenamiento de grabaciones

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-003 Citas | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
| EPIC-CL-005 Recetas | Backlog | Si |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `telemedicine`
- [ ] Tablas: 6 (teleconsultations, waiting_rooms, recordings, chat_messages, file_shares, satisfaction_surveys)
- [ ] Funciones: 2 (generate_room_token, log_session)
- [ ] Indices: Por médico, paciente, fecha, estado

**Backend:**
- [ ] Modulo: `telemedicine`
- [ ] Entities: 5 (Teleconsultation, WaitingRoom, Recording, ChatMessage, Survey)
- [ ] WebSocket Server para signaling
- [ ] Endpoints: 15
- [ ] Tests: 25

**Frontend:**
- [ ] Paginas: 4 (WaitingRoom, VideoCall, PreCallCheck, PostCallSurvey)
- [ ] Componentes: 15 (VideoPlayer, ScreenShare, ChatBox, FileShare, Controls, etc.)
- [ ] WebRTC implementation
- [ ] Stores: 1 (telemedicineStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/telemedicine/sessions | Crear sesión |
| GET | /api/telemedicine/sessions/:id | Estado de sesión |
| POST | /api/telemedicine/sessions/:id/join | Unirse a sala |
| POST | /api/telemedicine/sessions/:id/signal | Señalización WebRTC |
| POST | /api/telemedicine/sessions/:id/end | Terminar llamada |
| POST | /api/telemedicine/sessions/:id/chat | Enviar mensaje |
| POST | /api/telemedicine/sessions/:id/files | Subir archivo |
| POST | /api/telemedicine/sessions/:id/record | Iniciar grabación |
| POST | /api/telemedicine/sessions/:id/survey | Enviar encuesta |

---

## Integraciones Externas

| Servicio | Propósito | Alternativas |
|----------|-----------|--------------|
| Twilio | TURN/STUN + Video | Daily.co, Vonage |
| AWS S3 | Almacenamiento de grabaciones | GCP, Azure |
| WebRTC nativo | Comunicación P2P | - |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Conexión inestable | Media | Alto | Reconexión automática |
| Problemas de audio/video | Media | Alto | Pre-call check |
| Privacidad de grabaciones | Baja | Alto | Encriptación + RBAC |

---

## Nota Técnica

Este módulo es **100% nuevo** y no tiene equivalente en el ERP-Core. Requiere infraestructura especializada para streaming de video y cumplimiento de regulaciones de datos médicos.

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Proveedor de video seleccionado
- [ ] Infraestructura TURN/STUN lista

## Definition of Done (DoD)

- [ ] Videollamada funcionando
- [ ] Sala de espera operativa
- [ ] Integración con consultas
- [ ] Grabación opcional
- [ ] Tests E2E pasando
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
