DHEIVER's picture
Update app.py
de232cf verified
raw
history blame
11.8 kB
import gradio as gr
import cv2
import numpy as np
from PIL import Image
import io
from collections import defaultdict
# Mapeamento detalhado de sinais para doenças específicas
SINAIS_DOENÇAS = {
"congestao_inflamacao": {
"Doenças Autoimunes": {
"Artrite Reumatoide": {
"prob": 0.75,
"sinais_adicionais": ["simetria", "anéis de tensão"],
"exames": ["Fator Reumatóide", "Anti-CCP", "PCR", "VHS"],
"tratamentos": ["Imunossupressores", "Anti-inflamatórios", "Fisioterapia"]
},
"Lúpus": {
"prob": 0.70,
"sinais_adicionais": ["manchas em borboleta", "lacunas"],
"exames": ["FAN", "Anti-DNA", "Complemento"],
"tratamentos": ["Corticoides", "Antimaláricos", "Protetor Solar"]
}
},
"Doenças Inflamatórias": {
"Doença de Crohn": {
"prob": 0.65,
"sinais_adicionais": ["radiais intestinais", "hiperpigmentação"],
"exames": ["Calprotectina", "Colonoscopia", "PCR"],
"tratamentos": ["Imunomoduladores", "Biológicos", "Dieta"]
}
}
},
"deficiencia_hipofuncao": {
"Doenças Endócrinas": {
"Hipotireoidismo": {
"prob": 0.80,
"sinais_adicionais": ["anéis nervosos", "pigmentação clara"],
"exames": ["TSH", "T4 livre", "Anti-TPO"],
"tratamentos": ["Levotiroxina", "Suplementação de Iodo", "Selenium"]
},
"Diabetes": {
"prob": 0.75,
"sinais_adicionais": ["radiais pancreáticos", "manchas açúcar"],
"exames": ["Glicemia", "HbA1c", "Peptídeo C"],
"tratamentos": ["Insulina", "Metformina", "Dieta"]
}
}
},
"atrofia_degeneracao": {
"Doenças Neurológicas": {
"Alzheimer": {
"prob": 0.70,
"sinais_adicionais": ["lesões cerebrais", "manchas escuras"],
"exames": ["Mini-Mental", "Ressonância", "Beta Amilóide"],
"tratamentos": ["Inibidores Colinesterase", "Memantina", "Estimulação"]
}
},
"Doenças Ósseas": {
"Osteoporose": {
"prob": 0.75,
"sinais_adicionais": ["anéis cálcio", "lacunas ósseas"],
"exames": ["Densitometria", "Vitamina D", "CTX"],
"tratamentos": ["Bisfosfonatos", "Cálcio", "Exercícios"]
}
}
},
"irritacao_estresse": {
"Doenças Psiquiátricas": {
"Ansiedade Generalizada": {
"prob": 0.85,
"sinais_adicionais": ["anéis nervosos", "manchas adrenal"],
"exames": ["Cortisol", "ACTH", "Neurotransmissores"],
"tratamentos": ["Ansiolíticos", "Psicoterapia", "Meditação"]
},
"Depressão": {
"prob": 0.80,
"sinais_adicionais": ["manchas escuras", "anéis profundos"],
"exames": ["Serotonina", "Cortisol", "BDNF"],
"tratamentos": ["Antidepressivos", "Psicoterapia", "Exercícios"]
}
}
}
}
# Correlações entre regiões da íris e sistemas corporais
CORRELAÇÕES_SISTEMAS = {
"Cerebro": {
"sistema": "Sistema Nervoso Central",
"doenças_associadas": [
"Enxaqueca", "Epilepsia", "Parkinson",
"Esclerose Múltipla", "Alzheimer"
]
},
"Sistema Nervoso": {
"sistema": "Sistema Nervoso Periférico",
"doenças_associadas": [
"Neuropatia Diabética", "Síndrome do Túnel do Carpo",
"Neuralgia do Trigêmeo"
]
},
"Pulmao": {
"sistema": "Sistema Respiratório",
"doenças_associadas": [
"Asma", "DPOC", "Bronquite Crônica",
"Fibrose Pulmonar", "Enfisema"
]
}
}
def analisar_doencas(dados_analise):
"""
Analisa os dados para identificar possíveis doenças
"""
resultados = defaultdict(list)
padroes = defaultdict(int)
# Análise por região
regiao_atual = None
sinais_atuais = set()
for linha in dados_analise.split('\n'):
if 'Região:' in linha:
if regiao_atual and sinais_atuais:
# Processar região anterior
for sinal in sinais_atuais:
if sinal in SINAIS_DOENÇAS:
for categoria, doenças in SINAIS_DOENÇAS[sinal].items():
for doença, info in doenças.items():
resultados[regiao_atual].append({
'doença': doença,
'categoria': categoria,
'probabilidade': info['prob'],
'exames': info['exames'],
'tratamentos': info['tratamentos']
})
regiao_atual = linha.split('Região:')[1].strip()
sinais_atuais = set()
if regiao_atual:
if 'congestão/inflamação' in linha:
sinais_atuais.add('congestao_inflamacao')
if 'deficiência/hipofunção' in linha:
sinais_atuais.add('deficiencia_hipofuncao')
if 'atrofia/degeneração' in linha:
sinais_atuais.add('atrofia_degeneracao')
if 'irritação/estresse' in linha:
sinais_atuais.add('irritacao_estresse')
return dict(resultados)
def criar_interface():
"""
Cria a interface moderna do Gradio com tema verde piscina
"""
def analisar(texto_analise):
resultados = analisar_doencas(texto_analise)
# Gerar relatório estruturado
saida = "ANÁLISE DETALHADA DE DOENÇAS POR IRIDOLOGIA\n\n"
# Agrupar por sistemas
sistemas = {
"Sistema Nervoso": ["Cerebro", "Sistema Nervoso"],
"Sistema Digestivo": ["Estomago", "Figado", "Vesicula", "Pancreas",
"Sistema Digestivo", "Intestino Grosso", "Intestino Delgado"],
"Sistema Circulatório": ["Coracao"],
"Sistema Respiratório": ["Pulmao", "Bronquios"],
"Sistema Endócrino": ["Tireoide"],
"Sistema Urinário": ["Rim Direito", "Rim Esquerdo", "Bexiga"]
}
for sistema, orgaos in sistemas.items():
saida += f"\n{sistema.upper()}\n{'='*len(sistema)}\n"
doenças_sistema = []
for orgao in orgaos:
if orgao in resultados:
for resultado in resultados[orgao]:
doenças_sistema.append({
'orgao': orgao,
**resultado
})
if doenças_sistema:
# Ordenar por probabilidade
doenças_sistema.sort(key=lambda x: x['probabilidade'], reverse=True)
for doença in doenças_sistema:
prob_percent = doença['probabilidade'] * 100
saida += f"\n• {doença['doença']} ({doença['categoria']})\n"
saida += f" Órgão: {doença['orgao']}\n"
saida += f" Probabilidade: {prob_percent:.1f}%\n"
saida += f" Exames Recomendados: {', '.join(doença['exames'])}\n"
saida += f" Tratamentos Sugeridos: {', '.join(doença['tratamentos'])}\n"
else:
saida += " Sem alterações significativas\n"
return saida
# Tema personalizado verde piscina
theme = gr.themes.Soft(
primary_hue="teal",
secondary_hue="green",
).set(
body_text_color="#2A9D8F",
block_title_text_color="#264653",
block_label_text_color="#2A9D8F",
input_background_fill="#E9F5F3",
button_primary_background_fill="#2A9D8F",
button_primary_background_fill_dark="#264653",
button_primary_text_color="#FFFFFF",
button_primary_text_color_dark="#FFFFFF",
)
# Interface com abas
with gr.Blocks(theme=theme, title="Análise Avançada de Doenças por Iridologia") as interface:
gr.Markdown("""
# Sistema Avançado de Análise de Doenças por Iridologia
### Análise detalhada com probabilidades e recomendações específicas
""")
with gr.Tabs():
# Aba de Análise Principal
with gr.Tab("Análise de Doenças"):
input_text = gr.Textbox(
label="Dados da Análise Iridológica",
lines=10,
placeholder="Cole os dados da análise aqui..."
)
analysis_btn = gr.Button("Analisar Doenças", variant="primary")
output_text = gr.Textbox(
label="Relatório de Doenças",
lines=30
)
analysis_btn.click(
fn=analisar,
inputs=[input_text],
outputs=[output_text]
)
# Aba de Interpretação
with gr.Tab("Guia de Interpretação"):
gr.Markdown("""
## Interpretação dos Resultados
### Níveis de Probabilidade
- **>80%**: Alta probabilidade - Investigação prioritária
- **60-80%**: Probabilidade moderada - Investigação recomendada
- **40-60%**: Probabilidade média - Monitoramento
- **<40%**: Baixa probabilidade - Observação
### Categorias de Doenças Analisadas
1. **Doenças Autoimunes**
- Artrite Reumatoide
- Lúpus
- Esclerose Múltipla
2. **Doenças Endócrinas**
- Hipotireoidismo
- Diabetes
- Doença de Addison
3. **Doenças Degenerativas**
- Alzheimer
- Parkinson
- Osteoporose
4. **Doenças Inflamatórias**
- Doença de Crohn
- Colite Ulcerativa
- Artrite
""")
# Aba de Recomendações
with gr.Tab("Recomendações"):
gr.Markdown("""
## Recomendações Gerais
### Exames Complementares
- Exames laboratoriais específicos
- Exames de imagem
- Avaliações funcionais
### Abordagens Terapêuticas
1. **Convencionais**
- Medicamentos específicos
- Acompanhamento médico
- Fisioterapia
2. **Complementares**
- Fitoterapia
- Acupuntura
- Homeopatia
3. **Mudanças de Estilo de Vida**
- Alimentação
- Exercícios
- Gestão do estresse
""")
return interface
if __name__ == "__main__":
interface = criar_interface()
interface.launch(share=True)