JairoCesar commited on
Commit
85370b4
·
verified ·
1 Parent(s): 0fa5d81

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -4
app.py CHANGED
@@ -1370,7 +1370,26 @@ INTEGRATED_NEURO_FOOD_MAP = {
1370
  }
1371
  }
1372
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1373
  # --- GENERADOR DE INFORME LOCAL AUTOMÁTICO (SIN IA) ---
 
1374
  def generate_local_fallback_analysis(query, match, entities, food_compound_map, neuro_map):
1375
  saludo = "### 📋 Informe de Análisis Clínico-Nutricional (Modo Local / Alta Disponibilidad)\n"
1376
  hipotesis = f"**Hipótesis Probable:** Es muy probable que tus síntomas estén relacionados con **{match.get('condicion_asociada', 'una sensibilidad a compuestos alimentarios')}**.\n"
@@ -1398,14 +1417,30 @@ def generate_local_fallback_analysis(query, match, entities, food_compound_map,
1398
  elif match.get('mecanismo_fisiologico'):
1399
  causa += f"\n**Mecanismo fisiológico:** {match.get('mecanismo_fisiologico')}\n"
1400
 
1401
- evitar = f"\n### 🛑 Alimentos a Moderar o Evitar\n- **Alimentos evaluados:** {', '.join(user_foods).capitalize()}\n- Alimentos ricos en **{compuestos_str}** o fermentados que contengan aminas vasoactivas similares.\n"
1402
 
1403
- alternativas = "\n### 💡 Sugerencias y Alternativas\n- Llevar un diario de síntomas registrando alimentos, hora de consumo y aparición de molestias.\n- Reducir temporalmente la ingesta del alimento sospechoso para verificar la remisión del síntoma.\n- Consultar con un nutricionista funcional o médico especialista si las molestias persisten.\n"
1404
 
1405
- consejo = "\n### 📌 Consejo Práctico Final\nCada organismo posee una capacidad individual diferente para metabolizar aminas e histamina según la actividad de enzimas como la DAO (Diamino Oxidasa) o la MAO-MTHFR.\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1406
 
1407
  return saludo + hipotesis + causa + evitar + alternativas + consejo + TEXTO_BANDERAS_ROJAS
1408
-
1409
  # --- FUNCIONES DE APOYO Y EXTRACCIÓN ---
1410
  @st.cache_data(show_spinner=False)
1411
  def generate_word_report_cached(report_text):
 
1370
  }
1371
  }
1372
 
1373
+ # --- DICCIONARIO ESCALABLE DE CONSEJOS CLÍNICOS POR COMPUESTO ---
1374
+ CONSEJOS_POR_COMPUESTO = {
1375
+ "gluten": "La respuesta al gluten varía según el grado de sensibilidad o compromiso inmunitario; se recomienda evaluar marcadores serológicos (Ac. anti-transglutaminasa IgA) antes de retirarlo permanentemente.",
1376
+ "caseína": "La sensibilidad a la caseína involucra una respuesta proteica; considera alternativas vegetales o lácteos fermentados bajo supervisión.",
1377
+ "lactosa": "La tolerancia a la lactosa depende de la actividad de la enzima lactasa y de la salud intestinal; se pueden evaluar productos deslactosados o suplementos de lactasa.",
1378
+ "histamina": "La acumulación de histamina se relaciona con la capacidad de degradación enzimática (DAO); moderar alimentos madurados o conservados suele aliviar la carga sistémica.",
1379
+ "tiramina": "La tiramina es una amina vasoactiva; controlar la ingesta de alimentos añejados o fermentados ayuda a reducir episodios vascular-migrañosos.",
1380
+ "fructosa": "La malabsorción de fructosa depende de la capacidad de transporte intestinal (GLUT5); ajustar la carga por toma ayuda a estabilizar el eje digestivo.",
1381
+ "fodmaps": "La tolerancia a carbohidratos fermentables varía según el microbioma intestinal; una estrategia de eliminación y reintroducción pausada define tu umbral personal.",
1382
+ "cafeína": "La sensibilidad a la cafeína depende del aclaramiento hepático (CYP1A2); moderar su consumo antes de mitad de tarde protege la arquitectura del sueño.",
1383
+ "sulfitos": "Los sulfitos pueden inducir sensibilidad respiratoria o vascular; verificar etiquetas en vinos, desecados y conservas evita reacciones de sobrecarga.",
1384
+ "oxalatos": "Los oxalatos pueden formar microcristales en presencia de disbiosis o baja hidratación; combinarlos con calcio dietético reduce su absorción intestinal.",
1385
+ "saponinas": "Las saponinas alteran la tensión superficial de la mucosa intestinal; el remojo prolongado y lavado intensivo de granos reduce significativamente su impacto.",
1386
+ "solanina": "La solanina en solanáceas puede afectar a personas con alta visceropercepción; consumir tubérculos bien maduros y cocidos minimiza su contenido."
1387
+ }
1388
+
1389
+ CONSEJO_GENERICO_DEFAULT = "Cada organismo posee una individualidad bioquímica única según su perfil enzimático y digestivo. Monitorear tus respuestas personales te permitirá adaptar la dieta a tu umbral de tolerancia."
1390
+
1391
  # --- GENERADOR DE INFORME LOCAL AUTOMÁTICO (SIN IA) ---
1392
+ # --- GENERADOR DE INFORME LOCAL ESCALABLE POR DICCIONARIO ---
1393
  def generate_local_fallback_analysis(query, match, entities, food_compound_map, neuro_map):
1394
  saludo = "### 📋 Informe de Análisis Clínico-Nutricional (Modo Local / Alta Disponibilidad)\n"
1395
  hipotesis = f"**Hipótesis Probable:** Es muy probable que tus síntomas estén relacionados con **{match.get('condicion_asociada', 'una sensibilidad a compuestos alimentarios')}**.\n"
 
1417
  elif match.get('mecanismo_fisiologico'):
1418
  causa += f"\n**Mecanismo fisiológico:** {match.get('mecanismo_fisiologico')}\n"
1419
 
1420
+ evitar = f"\n### 🛑 Alimentos a Moderar o Evitar\n- **Alimentos evaluados:** {', '.join(user_foods).capitalize()}\n- Alimentos ricos en **{compuestos_str}** o derivados que contengan los mismos componentes desencadenantes.\n"
1421
 
1422
+ alternativas = "\n### 💡 Sugerencias y Alternativas\n- Llevar un diario de síntomas registrando alimentos, hora de consumo y aparición de molestias.\n- Reducir temporalmente la ingesta del alimento sospechoso para evaluar la remisión del síntoma.\n- Consultar con un nutricionista funcional o médico especialista si las molestias persisten.\n"
1423
 
1424
+ # 1. Prioridad: Buscar consejo directo en el diccionario de compuestos (O(1))
1425
+ consejo_texto = None
1426
+ for comp in compuestos_detectados:
1427
+ comp_clean = comp.lower().strip()
1428
+ if comp_clean in CONSEJOS_POR_COMPUESTO:
1429
+ consejo_texto = CONSEJOS_POR_COMPUESTO[comp_clean]
1430
+ break
1431
+
1432
+ # 2. Si no hay en el diccionario, usar la recomendación de tu JSON si existe
1433
+ if not consejo_texto and match.get("recomendaciones_examenes"):
1434
+ consejo_texto = f"Recomendación específica de la base de datos: {match.get('recomendaciones_examenes')}"
1435
+
1436
+ # 3. Fallback genérico si no se encuentra ninguna específica
1437
+ if not consejo_texto:
1438
+ consejo_texto = CONSEJO_GENERICO_DEFAULT
1439
+
1440
+ consejo = f"\n### 📌 Consejo Práctico Final\n{consejo_texto}\n"
1441
 
1442
  return saludo + hipotesis + causa + evitar + alternativas + consejo + TEXTO_BANDERAS_ROJAS
1443
+
1444
  # --- FUNCIONES DE APOYO Y EXTRACCIÓN ---
1445
  @st.cache_data(show_spinner=False)
1446
  def generate_word_report_cached(report_text):