# 🔧 Guía de Solución de Problemas - Códigos SOAT con Gemini

## 🚨 Problema: "No veo la sección de códigos generados en la epicrisis"

### ✅ **SOLUCIÓN IMPLEMENTADA:**

He agregado **DOS formas** de usar la feature:

#### 1️⃣ **Modo Automático** (cuando hay códigos SOAT detectados)
- Se activa automáticamente cuando el sistema detecta códigos SOAT en los documentos
- Aparece la sección completa con todos los códigos generados

#### 2️⃣ **Modo Manual** (cuando NO hay códigos SOAT detectados)
- Aparece un formulario para ingresar códigos SOAT manualmente
- Permite probar la funcionalidad sin necesidad de documentos con SOAT

---

## 🎯 **Cómo Probar la Feature:**

### **Opción A: Con Formulario Manual (Más Fácil)**

1. **Ve a cualquier epicrisis** (incluso sin códigos SOAT):
   ```
   http://localhost:7000/paciente/epicrisis?nombre_paciente=CUALQUIER_PACIENTE
   ```

2. **Verás una sección amarilla** con el título:
   ```
   🤖 Codificación Inteligente desde SOAT (Gemini AI)
   ```

3. **Completa el formulario:**
   - Código SOAT: `90201`
   - Descripción: `Reducción cerrada de fractura de radio distal`
   - Haz clic en "🤖 Generar con Gemini"

4. **¡Verás los resultados!** 🎉

### **Opción B: Con Documentos Reales**

1. **Sube un documento quirúrgico** que contenga códigos SOAT
2. **Ve a la epicrisis** del paciente
3. **Los códigos se generan automáticamente**

---

## 🔍 **Verificar que Todo Funciona:**

### **Paso 1: Verificar Configuración**
```python
# En app/config.py debe estar:
GEMINI_API_KEY = "tu_api_key_real"
```

### **Paso 2: Ejecutar Prueba Rápida**
```bash
python test_rapido_gemini.py
```

### **Paso 3: Verificar en Epicrisis**
1. Ve a cualquier epicrisis
2. Busca la sección con gradiente púrpura
3. Si no aparece, busca la sección amarilla con formulario

---

## 🐛 **Problemas Comunes y Soluciones:**

### ❌ **"No aparece ninguna sección"**

**Causa:** Error en el template o JavaScript
**Solución:**
1. Verificar que el archivo `web/epicrisis.html` esté actualizado
2. Revisar la consola del navegador (F12) para errores JavaScript
3. Recargar la página (Ctrl+F5)

### ❌ **"Error al generar códigos"**

**Causa:** Gemini no configurado o error de API
**Solución:**
1. Verificar `GEMINI_API_KEY` en configuración
2. Obtener API key en: https://makersuite.google.com/app/apikey
3. Reiniciar el servidor después de configurar

### ❌ **"Formulario no responde"**

**Causa:** JavaScript no cargado o error de autenticación
**Solución:**
1. Verificar que estés logueado
2. Revisar consola del navegador
3. Probar con el script de prueba Python

### ❌ **"Códigos incorrectos o sin sentido"**

**Causa:** Prompt necesita ajuste o datos de entrada pobres
**Solución:**
1. Usar descripciones más específicas
2. Incluir contexto médico relevante
3. Validar con criterio clínico

---

## 📋 **Checklist de Verificación:**

### ✅ **Backend:**
- [ ] Endpoint `/soat/generar_codigos_gemini` existe
- [ ] Gemini configurado (`GEMINI_API_KEY`)
- [ ] Servidor corriendo sin errores
- [ ] Autenticación funcionando

### ✅ **Frontend:**
- [ ] Sección aparece en epicrisis
- [ ] Formulario manual funciona
- [ ] JavaScript carga sin errores
- [ ] Resultados se muestran correctamente

### ✅ **Funcionalidad:**
- [ ] Genera códigos CIE-10
- [ ] Genera códigos CUPS
- [ ] Incluye justificaciones
- [ ] Muestra análisis clínico

---

## 🧪 **Casos de Prueba:**

### **Caso 1: Fractura Simple**
```
Código SOAT: 90201
Descripción: Reducción cerrada de fractura de radio distal
```
**Resultado esperado:**
- CIE-10: S52.5 (Fractura de radio)
- CUPS: 270201 (Reducción cerrada)

### **Caso 2: Sutura**
```
Código SOAT: 80101
Descripción: Sutura de herida simple en cara
```
**Resultado esperado:**
- CIE-10: S01.0 (Herida abierta)
- CUPS: 130101 (Sutura simple)

### **Caso 3: Inmovilización**
```
Código SOAT: 90305
Descripción: Inmovilización con yeso braquipalmar
```
**Resultado esperado:**
- CIE-10: Z47.8 (Cuidado de seguimiento)
- CUPS: 270501 (Aplicación de yeso)

---

## 🔧 **Debug Avanzado:**

### **Ver Logs del Servidor:**
```bash
# Buscar errores relacionados con Gemini
grep -i "gemini\|error" logs/servidor.log
```

### **Verificar Request/Response:**
```python
# En el navegador (F12 > Network)
# Buscar requests a /soat/generar_codigos_gemini
# Verificar status code y response
```

### **Probar API Directamente:**
```bash
curl -X POST "http://localhost:7000/soat/generar_codigos_gemini" \
  -H "Authorization: Bearer TU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"descripciones": [{"codigo_soat": "90201", "descripcion": "Test"}]}'
```

---

## 📞 **Soporte:**

### **Si nada funciona:**

1. **Ejecutar prueba completa:**
   ```bash
   python test_rapido_gemini.py
   ```

2. **Verificar configuración:**
   ```python
   # En app/config.py
   print(f"Gemini configurado: {bool(GEMINI_API_KEY)}")
   ```

3. **Revisar logs del servidor:**
   - Buscar errores de Gemini
   - Verificar autenticación
   - Revisar conectividad

4. **Probar con datos mínimos:**
   ```json
   {
     "descripciones": [
       {
         "codigo_soat": "90201",
         "descripcion": "Fractura"
       }
     ]
   }
   ```

---

## 🎉 **¡Debería Funcionar Ahora!**

Con la implementación actual:

1. ✅ **Formulario manual** aparece cuando no hay códigos SOAT automáticos
2. ✅ **Sección automática** aparece cuando hay códigos SOAT detectados
3. ✅ **JavaScript completo** para manejar el formulario
4. ✅ **Backend robusto** con manejo de errores
5. ✅ **Scripts de prueba** para verificar funcionamiento

**Próximo paso:** Ve a cualquier epicrisis y busca la sección con gradiente púrpura o amarilla. ¡Debería estar ahí! 🚀

