Spaces:
Sleeping
Sleeping
import colorsys | |
from datetime import datetime | |
import pandas as pd | |
import plotly.express as px | |
import plotly.graph_objects as go | |
import pyperclip | |
import streamlit as st | |
from plotly.subplots import make_subplots | |
from streamlit_extras.add_vertical_space import add_vertical_space | |
from streamlit_extras.stylable_container import stylable_container | |
from streamlit_option_menu import option_menu | |
# Configuração da página | |
st.set_page_config( | |
page_title="Transtornos de Ansiedade - Guia Médico", | |
layout="wide", | |
page_icon=":brain:", | |
initial_sidebar_state="expanded", | |
) | |
def apply_neumorphic_style(): | |
""" | |
Aplica estilos CSS para criar um tema neumórfico light na aplicação Streamlit. | |
Inclui estilos para elementos gerais, sidebar, sliders, e outros componentes específicos. | |
""" | |
st.markdown( | |
""" | |
<style> | |
/* Estilo geral neumórfico */ | |
.neuromorphic { | |
background: #f0f0f0; | |
border-radius: 50px; | |
box-shadow: 20px 20px 60px #cccccc, | |
-20px -20px 60px #ffffff; | |
padding: 20px; | |
margin: 10px; | |
} | |
.stMetric { | |
background: #ffffff; | |
border-radius: 20px; | |
box-shadow: inset 5px 5px 10px #d9d9d9, | |
inset -5px -5px 10px #ffffff; | |
padding: 10px; | |
} | |
.stApp { | |
background-color: #e0e5ec; | |
} | |
.stButton>button { | |
color: #5a5a5a; | |
border-radius: 10px; | |
border: none; | |
padding: 10px 20px; | |
font-weight: bold; | |
box-shadow: 5px 5px 10px #b8b9be, -5px -5px 10px #ffffff; | |
} | |
/* Estilo para a sidebar neumórfica */ | |
.neuromorphic-sidebar { | |
background: #f0f0f0; | |
border-radius: 20px; | |
box-shadow: 5px 5px 10px #cccccc, | |
-5px -5px 10px #ffffff; | |
padding: 20px; | |
margin: 10px; | |
} | |
.neuromorphic-sidebar .nav-link { | |
background: #f0f0f0; | |
border-radius: 10px; | |
box-shadow: 3px 3px 6px #cccccc, | |
-3px -3px 6px #ffffff; | |
margin-bottom: 10px; | |
transition: all 0.3s ease; | |
} | |
.neuromorphic-sidebar .nav-link:hover, | |
.neuromorphic-sidebar .nav-link.active { | |
background: #e0e0e0; | |
box-shadow: inset 3px 3px 6px #cccccc, | |
inset -3px -3px 6px #ffffff; | |
} | |
.neuromorphic-sidebar .nav-link-text { | |
font-weight: 500; | |
} | |
/* Estilos adicionais para sliders e containers */ | |
.slider-container { | |
background: #81D0F9; | |
border-radius: 10px; | |
padding: 10px; | |
margin-bottom: 10px; | |
} | |
.slider-cont { | |
background: #8CCE90; | |
border-radius: 10px; | |
padding: 8px; | |
margin-bottom: 8px; | |
} | |
.stSlider { | |
padding-top: 1rem; | |
padding-bottom: 1rem; | |
} | |
.vertical-line { | |
border-left: 1px solid #cccccc; | |
height: 100%; | |
position: absolute; | |
left: 50%; | |
} | |
/* Estilo para imagens */ | |
img { | |
width: 400px; | |
height: 200px; | |
overflow: hidden; | |
position: relative; | |
object-fit: cover; | |
border-radius: 18px; | |
mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0)); | |
-webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1), rgba(0, 0, 0, 0)); | |
} | |
</style> | |
""", | |
unsafe_allow_html=True, | |
) | |
# Aplicar o estilo | |
apply_neumorphic_style() | |
def copy_to_clipboard(text): | |
pyperclip.copy(text) | |
def create_copy_button(text, button_text="Copiar para o Prontuário"): | |
copy_button = st.button(button_text) | |
if copy_button: | |
copy_to_clipboard(text) | |
st.success("Texto copiado para a área de transferência!") | |
# Menu lateral | |
with st.sidebar: | |
st.markdown('<div class="neuromorphic-sidebar">', unsafe_allow_html=True) | |
selected = option_menu( | |
menu_title="Menu Principal", | |
options=[ | |
"Home", | |
"Escalas de Ansiedade", | |
"Tratamentos", | |
"Efeitos Colaterais", | |
"Chatbot Dr. Karl", | |
], | |
icons=[ | |
"house", | |
"clipboard-check", | |
"capsule", | |
"exclamation-triangle", | |
"chat-dots", | |
], | |
menu_icon="cast", | |
default_index=0, | |
styles={ | |
"container": {"padding": "0!important", "background-color": "transparent"}, | |
"icon": {"color": "#0066cc", "font-size": "18px"}, | |
"nav-link": { | |
"font-size": "16px", | |
"text-align": "left", | |
"margin": "0px", | |
"--hover-color": "#e0e0e0", | |
}, | |
"nav-link-selected": {"background-color": "#e0e0e0"}, | |
}, | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
############################################################################################################### | |
############################################################################################################### | |
# Conteúdo principal baseado na seleção do menu | |
if selected == "Home": | |
st.title("Transtornos de Ansiedade - Dashboard") | |
def prevalencia(): | |
""" | |
Função para calcular a prevalência de transtornos psiquiátricos | |
Gráfico de barras com a prevalência global, feminina e masculina | |
Estatísticas chave com a prevalência global, custo anual global e idade média de início | |
Informações adicionais sobre os transtornos psiquiátricos | |
""" | |
# Dados das prevalências dos transtornos psiquiátricos | |
prevalence_data = { | |
"Transtorno": ["TAG", "Pânico", "Fobia Social", "TOC", "TEPT"], | |
"Prevalência Global (%)": [3.1, 2.7, 6.8, 1.2, 3.6], | |
"Prevalência Mulheres (%)": [4.2, 3.5, 8.2, 1.4, 5.3], | |
"Prevalência Homens (%)": [2.0, 1.8, 5.3, 1.0, 1.9], | |
} | |
# Criar gráfico | |
fig = go.Figure() | |
# Adicionar barras para cada categoria de prevalência | |
fig.add_trace( | |
go.Bar( | |
x=prevalence_data["Transtorno"], | |
y=prevalence_data["Prevalência Global (%)"], | |
name="Prevalência Global", | |
marker_color="rgba(54, 162, 235, 0.8)", | |
hoverinfo="text", | |
text=[f"{x}%" for x in prevalence_data["Prevalência Global (%)"]], | |
textposition="auto", | |
) | |
) | |
fig.add_trace( | |
go.Bar( | |
x=prevalence_data["Transtorno"], | |
y=prevalence_data["Prevalência Mulheres (%)"], | |
name="Prevalência Mulheres", | |
marker_color="rgba(255, 99, 132, 0.8)", | |
hoverinfo="text", | |
text=[f"{x}%" for x in prevalence_data["Prevalência Mulheres (%)"]], | |
textposition="auto", | |
) | |
) | |
fig.add_trace( | |
go.Bar( | |
x=prevalence_data["Transtorno"], | |
y=prevalence_data["Prevalência Homens (%)"], | |
name="Prevalência Homens", | |
marker_color="rgba(75, 192, 192, 0.8)", | |
hoverinfo="text", | |
text=[f"{x}%" for x in prevalence_data["Prevalência Homens (%)"]], | |
textposition="auto", | |
) | |
) | |
# Atualizar layout do gráfico | |
fig.update_layout( | |
title={ | |
"text": "Prevalência de Transtornos Psiquiátricos", | |
"y": 0.95, | |
"x": 0.5, | |
"xanchor": "center", | |
"yanchor": "top", | |
}, | |
barmode="group", | |
template="plotly_white", | |
xaxis_title="Transtorno", | |
yaxis_title="Prevalência (%)", | |
legend_title="Categorias", | |
font=dict(family="Arial", size=12), | |
margin=dict(l=50, r=50, t=80, b=50), | |
width=900, | |
height=600, | |
paper_bgcolor="#f0f0f0", | |
plot_bgcolor="#f0f0f0", | |
shapes=[ | |
dict( | |
type="rect", | |
xref="paper", | |
yref="paper", | |
x0=0, | |
y0=0, | |
x1=1, | |
y1=1, | |
line=dict(color="#e0e0e0", width=2), | |
fillcolor="#f0f0f0", | |
layer="below", | |
) | |
], | |
) | |
# Adicionar sombras para efeito neumórfico | |
fig.update_layout( | |
shapes=[ | |
dict( | |
type="rect", | |
xref="paper", | |
yref="paper", | |
x0=-0.05, | |
y0=-0.05, | |
x1=1.05, | |
y1=1.05, | |
line=dict(color="#ffffff", width=5), | |
fillcolor="rgba(255,255,255,0)", | |
layer="below", | |
), | |
dict( | |
type="rect", | |
xref="paper", | |
yref="paper", | |
x0=-0.05, | |
y0=-0.05, | |
x1=1.05, | |
y1=1.05, | |
line=dict(color="#d0d0d0", width=5), | |
fillcolor="rgba(255,255,255,0)", | |
layer="below", | |
), | |
] | |
) | |
# Configurar interatividade | |
fig.update_traces( | |
hovertemplate="<b>%{x}</b><br>%{y}%<extra></extra>", | |
hoverlabel=dict(bgcolor="white", font_size=12), | |
) | |
return st.plotly_chart(fig) | |
c1, c2, c3 = st.columns([3, 0.5, 3]) | |
with c1: | |
prevalencia() | |
with c2: | |
st.write("") | |
with c3: | |
# Dados atualizados do estudo | |
st.markdown("<div class='neuromorphic'>", unsafe_allow_html=True) | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
st.metric( | |
label="Prevalência Global", | |
value="3.8%", | |
delta="0.2%", | |
delta_color="normal", | |
) | |
with col2: | |
st.metric(label="Custo Anual Global", value="$1 Trilhão", delta="-") | |
with col3: | |
st.metric(label="Idade Média de Início", value="21-35 anos", delta="-") | |
st.markdown("</div>", unsafe_allow_html=True) | |
st.write("") | |
# Informações adicionais do estudo | |
st.markdown( | |
""" | |
<div class='neuromorphic'> | |
<h3>Informações Adicionais:</h3> | |
<ul> | |
<li>Os transtornos de ansiedade afetam cerca de 301 milhões de pessoas globalmente.</li> | |
<li>A fobia social é o transtorno de ansiedade mais comum, com prevalência global de 6.8%.</li> | |
<li>Mulheres têm maior prevalência de transtornos de ansiedade comparado aos homens.</li> | |
<li>A prevalência varia significativamente entre diferentes regiões e países.</li> | |
</ul> | |
</div> | |
""", | |
unsafe_allow_html=True, | |
) | |
# Informações adicionais | |
st.info( | |
""" | |
Fonte: | |
Javaid, S.F., Hashim, I.J., Hashim, M.J. et al. Epidemiology of anxiety disorders: global burden and sociodemographic | |
associations.Middle East Curr Psychiatry 30, 44 (2023). | |
Acesse: https://doi.org/10.1186/s43045-023-00315-3""" | |
) | |
################################################################################################## | |
if selected == "Escalas de Ansiedade": | |
st.title("Escalas de Avaliação de Ansiedade") | |
# Usando option_menu para selecionar as escalas | |
scale_selected = option_menu( | |
menu_title=None, | |
options=["Escala de Hamilton (HAM-A)", "Escala GAD-7", "Inventário de Beck (BAI)"], | |
icons=["clipboard-check", "list-check", "clipboard-pulse"], # Você pode escolher ícones apropriados | |
menu_icon="cast", | |
default_index=0, | |
orientation="horizontal", | |
styles={ | |
"container": {"padding": "0!important", "background-color": "transparent"}, | |
"icon": {"color": "#0066cc", "font-size": "18px"}, | |
"nav-link": { | |
"font-size": "16px", | |
"text-align": "center", | |
"margin": "0px", | |
"--hover-color": "#e0e0e0", | |
}, | |
"nav-link-selected": {"background-color": "#e0e0e0"}, | |
}, | |
) | |
if scale_selected == "Escala de Hamilton (HAM-A)": | |
st.title(":blue[Guia de Diagnóstico Interativo] :stethoscope:") | |
st.write("##### :notebook: Escala de Ansiedade de Hamilton (HAM-A)") | |
st.divider() | |
add_vertical_space(2) | |
# Divisão em três colunas | |
col1, col_divider, col2 = st.columns([3, 0.5, 3]) | |
with col1: | |
st.write("Intensidade dos sintomas nas últimas semanas :calendar:") | |
# Campos para nome e data | |
cx1, cx2 = st.columns(2) | |
with cx1: | |
nome = st.text_input("Nome da Pessoa:") | |
with cx2: | |
data = st.date_input("Data:", datetime.now(), format="DD/MM/YYYY") | |
# Itens da Escala de Ansiedade de Hamilton | |
ham_a_items = [ | |
"Humor ansioso", | |
"Tensão", | |
"Medos", | |
"Insônia", | |
"Dificuldades intelectuais", | |
"Humor deprimido", | |
"Sintomas somáticos gerais (musculares)", | |
"Sintomas somáticos gerais (sensoriais)", | |
"Sintomas cardiovasculares", | |
"Sintomas respiratórios", | |
"Sintomas gastrointestinais", | |
"Sintomas gênito-urinários", | |
"Sintomas autonômicos", | |
"Comportamento na entrevista", | |
] | |
add_vertical_space(2) | |
st.divider() | |
# Dicionário para armazenar as respostas | |
responses = {} | |
# Criar o questionário em duas colunas | |
subcol1, subcol2 = st.columns(2) | |
for i, item in enumerate(ham_a_items): | |
with subcol1 if i % 2 == 0 else subcol2: | |
st.markdown('<div class="slider-container">', unsafe_allow_html=True) | |
responses[item] = st.select_slider( | |
item, | |
options=["Ausente", "Leve", "Moderado", "Grave", "Muito grave"], | |
value="Ausente", | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
with col_divider: | |
st.markdown('') | |
with col2: | |
st.image("psiq1.jpg") | |
st.subheader("Resultado") | |
# Botão para calcular o resultado | |
if st.button( | |
"Calcular Resultado", | |
key="ham_calculate_button", | |
help="Clique para calcular o resultado", | |
): | |
# Converter respostas para pontuação numérica | |
score_map = { | |
"Ausente": 0, | |
"Leve": 1, | |
"Moderado": 2, | |
"Grave": 3, | |
"Muito grave": 4, | |
} | |
total_score = sum(score_map[resp] for resp in responses.values()) | |
# Interpretação do resultado | |
if total_score < 17: | |
severity = "Ansiedade leve" | |
elif 18 <= total_score <= 24: | |
severity = "Ansiedade moderada" | |
elif 25 <= total_score <= 30: | |
severity = "Ansiedade grave" | |
else: | |
severity = "Ansiedade muito grave" | |
# Exibir resultado | |
st.success(f"Pontuação total: {total_score}") | |
st.info(f"Interpretação: {severity}") | |
result_ham = {} | |
# Texto para copiar | |
result_ham = ( | |
f"Nome da Pessoa: {nome}\n" | |
f"Data: {data.strftime('%d/%m/%Y')}\n" | |
f"Escala de Ansiedade de Hamilton (HAM-A)\n" | |
f"Pontuação total: {total_score}\n" | |
f"Interpretação: {severity}" | |
) | |
st.text_area("## Resultado detalhado:", value=result_ham, height=200, key="ham_result_text") | |
if result_ham is not None: | |
st.button("Copiar",key="ham_copy_button", on_click=copy_to_clipboard(result_ham)) | |
# Informações adicionais sobre a escala | |
st.markdown('<div class="slider-cont">', unsafe_allow_html=True) | |
with st.expander("Mais informações sobre a Escala de Ansiedade de Hamilton"): | |
st.write( | |
""" | |
A Escala de Ansiedade de Hamilton (HAM-A) é uma das escalas de avaliação de ansiedade mais amplamente utilizadas em contextos clínicos e de pesquisa. Desenvolvida por Max Hamilton em 1959, ela avalia a gravidade dos sintomas de ansiedade. | |
**Pontos importantes:** | |
- A escala consiste em 14 itens, cada um avaliado de 0 (não presente) a 4 (muito grave). | |
- A pontuação total varia de 0 a 56. | |
- É particularmente útil para avaliar a gravidade do Transtorno de Ansiedade Generalizada (TAG). | |
- A escala avalia tanto sintomas psíquicos quanto somáticos da ansiedade. | |
**Limitações:** | |
- Não é uma ferramenta diagnóstica, mas sim uma medida de gravidade. | |
- Pode ser influenciada por sintomas depressivos coexistentes. | |
- Requer treinamento para administração adequada em contextos clínicos. | |
Sempre consulte um profissional de saúde mental para interpretação adequada dos resultados e diagnóstico. | |
""" | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
st.warning( | |
""" | |
Nota:\n | |
Esta escala é uma ferramenta de triagem e não substitui uma avaliação clínica completa.\n | |
Um diagnóstico preciso requer avaliação por um profissional de saúde qualificado.""" | |
) | |
st.markdown('<div class="neuromorphic">', unsafe_allow_html=True) | |
st.markdown("</div>", unsafe_allow_html=True) | |
elif scale_selected == "Escala GAD-7": | |
st.title(":blue[Escala GAD-7] :stethoscope:") | |
st.divider() | |
add_vertical_space(2) | |
# Divisão em três colunas | |
col1, col_divider, col2 = st.columns([3, 0.5, 3]) | |
with col1: | |
st.write("Intensidade dos sintomas nas últimas duas semanas :calendar:") | |
# Campos para nome e data | |
cx1, cx2 = st.columns(2) | |
with cx1: | |
nome = st.text_input("Nome da Pessoa:", key="gad7_nome") | |
with cx2: | |
data = st.date_input("Data:", datetime.now(), format="DD/MM/YYYY", key="gad7_data") | |
# Função para calcular os resultados do GAD-7 | |
def gad7_calculate(responses): | |
score = sum(responses.values()) | |
if score < 5: | |
severity = "Ansiedade mínima" | |
elif 5 <= score < 10: | |
severity = "Ansiedade leve" | |
elif 10 <= score < 15: | |
severity = "Ansiedade moderada" | |
else: | |
severity = "Ansiedade severa" | |
return score, severity | |
# Questionário GAD-7 | |
gad7_items = [ | |
"Sentir-se nervoso, ansioso ou muito tenso", | |
"Não ser capaz de impedir ou de controlar as preocupações", | |
"Preocupar-se muito com diversas coisas", | |
"Dificuldade para relaxar", | |
"Ficar tão agitado que se torna difícil permanecer sentado", | |
"Ficar facilmente aborrecido ou irritado", | |
"Sentir medo como se algo terrível fosse acontecer" | |
] | |
add_vertical_space(2) | |
st.divider() | |
# Dicionário para armazenar as respostas | |
responses = {} | |
# Criar o questionário em duas colunas | |
subcol1, subcol2 = st.columns(2) | |
for i, item in enumerate(gad7_items): | |
with subcol1 if i % 2 == 0 else subcol2: | |
st.markdown('<div class="slider-container">', unsafe_allow_html=True) | |
responses[item] = st.select_slider( | |
item, | |
options=["Nenhuma vez", "Vários dias", "Mais da metade dos dias", "Quase todos os dias"], | |
value="Nenhuma vez", | |
key=f"gad7_{i}" | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
with col_divider: | |
st.markdown('') | |
with col2: | |
st.image("psiq1.jpg") # Você pode querer substituir esta imagem por uma específica para GAD-7 | |
st.subheader("Resultado") | |
# Botão para calcular o resultado | |
if st.button( | |
"Calcular Resultado", | |
key="gad7_calculate_button", | |
help="Clique para calcular o resultado", | |
): | |
score_map = {"Nenhuma vez": 0, "Vários dias": 1, "Mais da metade dos dias": 2, "Quase todos os dias": 3} | |
numeric_responses = {k: score_map[v] for k, v in responses.items()} | |
total_score, severity = gad7_calculate(numeric_responses) | |
result_gad7 = {} | |
# Texto para copiar | |
result_gad7 = ( | |
f"Nome: {nome}\n" | |
f"Data: {data.strftime('%d/%m/%Y')}\n" | |
f"Escala GAD-7\n" | |
f"Pontuação total: {total_score}\n" | |
f"Interpretação: {severity}" | |
) | |
st.text_area("## Resultado detalhado:", value=result_gad7, height=200, key="gad7_result_text") | |
if result_gad7 is not None: | |
st.button("Copiar", key="gad7_copy_button", on_click=copy_to_clipboard(result_gad7)) | |
# Informações adicionais sobre a escala | |
st.markdown('<div class="slider-cont">', unsafe_allow_html=True) | |
with st.expander("Mais informações sobre a Escala GAD-7"): | |
st.write( | |
""" | |
A Escala de Transtorno de Ansiedade Generalizada (GAD-7) é um instrumento de triagem para ansiedade generalizada. Desenvolvida por Spitzer et al. em 2006, é amplamente utilizada na prática clínica e em pesquisas. | |
**Pontos importantes:** | |
- A escala consiste em 7 itens, cada um avaliado de 0 (não apresentou) a 3 (quase todos os dias). | |
- A pontuação total varia de 0 a 21. | |
- É uma ferramenta eficaz para avaliar a gravidade dos sintomas de ansiedade generalizada. | |
- Pode ser usada para monitorar a resposta ao tratamento ao longo do tempo. | |
**Interpretação dos resultados:** | |
- 0-4: Ansiedade mínima | |
- 5-9: Ansiedade leve | |
- 10-14: Ansiedade moderada | |
- 15-21: Ansiedade severa | |
**Limitações:** | |
- Não é uma ferramenta diagnóstica definitiva, mas um instrumento de triagem. | |
- Deve ser usado em conjunto com avaliação clínica para diagnóstico preciso. | |
Sempre consulte um profissional de saúde mental para interpretação adequada dos resultados e diagnóstico. | |
""" | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
st.warning( | |
""" | |
Nota:\n | |
Esta escala é uma ferramenta de triagem e não substitui uma avaliação clínica completa.\n | |
Um diagnóstico preciso requer avaliação por um profissional de saúde qualificado.""" | |
) | |
st.markdown('<div class="neuromorphic">', unsafe_allow_html=True) | |
st.markdown("</div>", unsafe_allow_html=True) | |
elif scale_selected == "Inventário de Beck (BAI)": | |
st.title(":blue[Inventário de Beck (BAI)] :stethoscope:") | |
st.divider() | |
add_vertical_space(2) | |
# Divisão em três colunas | |
col1, col_divider, col2 = st.columns([3, 0.5, 3]) | |
with col1: | |
st.write("Intensidade dos sintomas na última semana :calendar:") | |
# Campos para nome e data | |
cx1, cx2 = st.columns(2) | |
with cx1: | |
nome = st.text_input("Nome da Pessoa:", key="bai_nome") | |
with cx2: | |
data = st.date_input("Data:", datetime.now(), format="DD/MM/YYYY", key="bai_data") | |
# Função para calcular os resultados do BAI | |
def bai_calculate(responses): | |
score = sum(responses.values()) | |
if score <= 7: | |
severity = "Ansiedade mínima" | |
elif 8 <= score <= 15: | |
severity = "Ansiedade leve" | |
elif 16 <= score <= 25: | |
severity = "Ansiedade moderada" | |
else: | |
severity = "Ansiedade grave" | |
return score, severity | |
bai_items = [ | |
"Dormência ou formigamento", | |
"Sensação de calor", | |
"Tremores nas pernas", | |
"Incapaz de relaxar", | |
"Medo que aconteça o pior", | |
"Atordoado ou tonto", | |
"Palpitação ou aceleração do coração", | |
"Sem equilíbrio", | |
"Aterrorizado", | |
"Nervoso", | |
"Sensação de sufocação", | |
"Tremores nas mãos", | |
"Trêmulo", | |
"Medo de perder o controle", | |
"Dificuldade de respirar", | |
"Medo de morrer", | |
"Assustado", | |
"Indigestão ou desconforto no abdômen", | |
"Sensação de desmaio", | |
"Rosto afogueado", | |
"Suor (não devido ao calor)" | |
] | |
add_vertical_space(2) | |
st.divider() | |
# Dicionário para armazenar as respostas | |
responses = {} | |
# Criar o questionário em duas colunas | |
subcol1, subcol2 = st.columns(2) | |
for i, item in enumerate(bai_items): | |
with subcol1 if i % 2 == 0 else subcol2: | |
st.markdown('<div class="slider-container">', unsafe_allow_html=True) | |
responses[item] = st.select_slider( | |
item, | |
options=["Absolutamente não", "Levemente", "Moderadamente", "Gravemente"], | |
value="Absolutamente não", | |
key=f"bai_{i}" | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
with col_divider: | |
st.markdown('') | |
with col2: | |
st.image("psiq1.jpg") | |
st.subheader("Resultado") | |
# Botão para calcular o resultado | |
if st.button( | |
"Calcular Resultado", | |
key="bai_calculate_button", | |
help="Clique para calcular o resultado", | |
): | |
score_map = {"Absolutamente não": 0, "Levemente": 1, "Moderadamente": 2, "Gravemente": 3} | |
numeric_responses = {k: score_map[v] for k, v in responses.items()} | |
total_score, severity = bai_calculate(numeric_responses) | |
result_bai = {} | |
# Texto para copiar | |
result_bai = ( | |
f"Nome: {nome}\n" | |
f"Data: {data.strftime('%d/%m/%Y')}\n" | |
f"Escala de Ansiedade de Hamilton (HAM-A)\n" | |
f"Pontuação total: {total_score}\n" | |
f"Interpretação: {severity}" | |
) | |
st.text_area("## Resultado detalhado:", value=result_bai, height=200, key="bai_result_text") | |
if result_bai is not None: | |
st.button("Copiar", key="bai_copy_button", on_click=copy_to_clipboard(result_bai)) | |
# Informações adicionais sobre a escala | |
st.markdown('<div class="slider-cont">', unsafe_allow_html=True) | |
with st.expander("Mais informações sobre o Inventário de Ansiedade de Beck (BAI)"): | |
st.write( | |
""" | |
O Inventário de Ansiedade de Beck (BAI) é uma escala de auto-relato amplamente utilizada para medir a severidade da ansiedade em adolescentes e adultos. Desenvolvido por Aaron T. Beck e colegas, o BAI foi publicado em 1988 e desde então tem sido uma ferramenta valiosa na avaliação clínica e na pesquisa. | |
**Pontos importantes:** | |
- O BAI consiste em 21 itens, cada um descrevendo um sintoma comum de ansiedade. | |
- Cada item é avaliado em uma escala de 4 pontos, variando de 0 (não apresentou) a 3 (gravemente). | |
- A pontuação total varia de 0 a 63. | |
- O BAI foi projetado para minimizar a sobreposição com sintomas depressivos. | |
**Interpretação dos resultados:** | |
- 0-7: Ansiedade mínima | |
- 8-15: Ansiedade leve | |
- 16-25: Ansiedade moderada | |
- 26-63: Ansiedade grave | |
**Aplicações:** | |
- Avaliação da severidade dos sintomas de ansiedade em contextos clínicos. | |
- Monitoramento da resposta ao tratamento ao longo do tempo. | |
- Ferramenta de triagem em pesquisas sobre ansiedade. | |
**Limitações:** | |
- Como todas as escalas de auto-relato, as respostas podem ser influenciadas pela subjetividade do respondente. | |
- Não é um instrumento diagnóstico, mas uma medida de severidade dos sintomas. | |
- Pode não capturar todos os aspectos da ansiedade, especialmente os cognitivos. | |
Sempre consulte um profissional de saúde mental para interpretação adequada dos resultados e diagnóstico. | |
""" | |
) | |
st.markdown("</div>", unsafe_allow_html=True) | |
st.warning( | |
""" | |
Nota:\n | |
Este inventário é uma ferramenta de avaliação e não substitui uma avaliação clínica completa.\n | |
Um diagnóstico preciso requer avaliação por um profissional de saúde qualificado.""" | |
) | |
st.markdown('<div class="neuromorphic">', unsafe_allow_html=True) | |
st.markdown("</div>", unsafe_allow_html=True) | |
########################################################################################################################## | |
########################################################################################################################## | |
elif selected == "Tratamentos": | |
st.title("Opções de Tratamento Farmacológico") | |
st.write("### ") | |
# Dados dos tratamentos | |
treatments = { | |
"ISRSs": { | |
"Descrição": "Inibidores Seletivos da Recaptação de Serotonina. Primeira linha de tratamento para a maioria dos transtornos de ansiedade.", | |
"Medicamentos": { | |
"Sertralina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "200 mg/dia", | |
"Meia-vida": "26 horas", | |
}, | |
"Escitalopram": { | |
"Dose inicial": "10 mg/dia", | |
"Dose máxima": "20 mg/dia", | |
"Meia-vida": "27-32 horas", | |
}, | |
"Fluoxetina": { | |
"Dose inicial": "10-20 mg/dia", | |
"Dose máxima": "60 mg/dia", | |
"Meia-vida": "1-4 dias (norfluoxetina: 7-15 dias)", | |
}, | |
"Fluvoxamina": { | |
"Dose inicial": "50-100 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "9-28 horas", | |
}, | |
"Citalopram": { | |
"Dose inicial": "10-20 mg/dia", | |
"Dose máxima": "60 mg/dia", | |
"Meia-vida": "35 horas", | |
}, | |
"Paroxetina": { | |
"Dose inicial": "10-20 mg/dia", | |
"Dose máxima": "60 mg/dia", | |
"Meia-vida": "21 horas", | |
}, | |
"Vilazodona": { | |
"Dose inicial": "10 mg/dia", | |
"Dose máxima": "40 mg/dia", | |
"Meia-vida": "25 horas", | |
}, | |
"Vortioxetina": { | |
"Dose inicial": "10 mg/dia", | |
"Dose máxima": "20 mg/dia", | |
"Meia-vida": "66 horas", | |
}, | |
}, | |
}, | |
"IRSNs": { | |
"Descrição": "Inibidores da Recaptação de Serotonina e Noradrenalina. Eficazes em casos resistentes aos ISRSs.", | |
"Medicamentos": { | |
"Venlafaxina": { | |
"Dose inicial": "37,5-75 mg/dia", | |
"Dose máxima": "225 mg/dia", | |
"Meia-vida": "5 horas", | |
}, | |
"Desvenlafaxina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "200 mg/dia", | |
"Meia-vida": "11 horas", | |
}, | |
"Duloxetina": { | |
"Dose inicial": "30 mg/dia", | |
"Dose máxima": "120 mg/dia", | |
"Meia-vida": "12 horas", | |
}, | |
}, | |
}, | |
"Tricíclicos": { | |
"Descrição": "Antidepressivos tricíclicos. Eficazes, mas com mais efeitos colaterais que ISRSs e IRSNs.", | |
"Medicamentos": { | |
"Amitriptilina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "10-50 horas", | |
}, | |
"Nortriptilina": { | |
"Dose inicial": "25 mg/dia", | |
"Dose máxima": "150 mg/dia", | |
"Meia-vida": "18-44 horas", | |
}, | |
"Imipramina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "8-20 horas", | |
}, | |
"Desipramina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "12-24 horas", | |
}, | |
"Clomipramina": { | |
"Dose inicial": "25 mg/dia", | |
"Dose máxima": "250 mg/dia", | |
"Meia-vida": "19-37 horas", | |
}, | |
"Doxepina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "8-24 horas", | |
}, | |
"Trimipramina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "300 mg/dia", | |
"Meia-vida": "20-24 horas", | |
}, | |
"Protriptilina": { | |
"Dose inicial": "10-20 mg/dia", | |
"Dose máxima": "60 mg/dia", | |
"Meia-vida": "67-89 horas", | |
}, | |
}, | |
}, | |
"Benzodiazepínicos": { | |
"Descrição": "Uso de curto prazo devido ao risco de dependência. Eficazes para alívio rápido de sintomas.", | |
"Medicamentos": { | |
"Alprazolam": { | |
"Dose inicial": "0.25-0.5 mg 2-3x/dia", | |
"Dose máxima": "4 mg/dia", | |
"Meia-vida": "6-27 horas", | |
}, | |
"Clonazepam": { | |
"Dose inicial": "0.25 mg 2x/dia", | |
"Dose máxima": "4 mg/dia", | |
"Meia-vida": "18-50 horas", | |
}, | |
"Diazepam": { | |
"Dose inicial": "2-10 mg 2-4x/dia", | |
"Dose máxima": "40 mg/dia", | |
"Meia-vida": "20-50 horas", | |
}, | |
"Lorazepam": { | |
"Dose inicial": "1-3 mg 2-3x/dia", | |
"Dose máxima": "10 mg/dia", | |
"Meia-vida": "10-20 horas", | |
}, | |
"Bromazepam": { | |
"Dose inicial": "1.5-3 mg 2-3x/dia", | |
"Dose máxima": "6-12 mg/dia", | |
"Meia-vida": "10-20 horas", | |
}, | |
"Clobazam": { | |
"Dose inicial": "10 mg/dia", | |
"Dose máxima": "30 mg/dia", | |
"Meia-vida": "18-42 horas", | |
}, | |
"Temazepam": { | |
"Dose inicial": "7.5-15 mg ao deitar", | |
"Dose máxima": "30 mg/dia", | |
"Meia-vida": "8-22 horas", | |
}, | |
"Triazolam": { | |
"Dose inicial": "0.125-0.25 mg ao deitar", | |
"Dose máxima": "0.5 mg/dia", | |
"Meia-vida": "1.5-5.5 horas", | |
}, | |
"Midazolam": { | |
"Dose inicial": "1-2 mg (pré-operatório)", | |
"Dose máxima": "10 mg/dia", | |
"Meia-vida": "1.5-2.5 horas", | |
}, | |
"Oxazepam": { | |
"Dose inicial": "10-15 mg 3-4x/dia", | |
"Dose máxima": "120 mg/dia", | |
"Meia-vida": "5-15 horas", | |
}, | |
"Chlordiazepoxide": { | |
"Dose inicial": "5-10 mg 3-4x/dia", | |
"Dose máxima": "100 mg/dia", | |
"Meia-vida": "5-30 horas", | |
}, | |
"Flurazepam": { | |
"Dose inicial": "15-30 mg ao deitar", | |
"Dose máxima": "30 mg/dia", | |
"Meia-vida": "40-250 horas", | |
}, | |
}, | |
}, | |
"Outros": { | |
"Descrição": "Medicamentos alternativos ou adjuvantes para tratamento de ansiedade.", | |
"Medicamentos": { | |
"Mirtazapina": { | |
"Dose inicial": "15 mg/dia", | |
"Dose máxima": "45 mg/dia", | |
"Meia-vida": "20-40 horas", | |
}, | |
"Bupropiona": { | |
"Dose inicial": "150 mg/dia", | |
"Dose máxima": "450 mg/dia", | |
"Meia-vida": "21 horas", | |
}, | |
"Trazodona": { | |
"Dose inicial": "50 mg/dia", | |
"Dose máxima": "400 mg/dia (ambulatorial) / 600 mg/dia (hospitalar)", | |
"Meia-vida": "7-13 horas", | |
}, | |
"Buspirona": { | |
"Dose inicial": "7.5 mg duas vezes ao dia", | |
"Dose máxima": "60 mg/dia", | |
"Meia-vida": "2-3 horas", | |
}, | |
"Hidroxizina": { | |
"Dose inicial": "25-50 mg/dia", | |
"Dose máxima": "400 mg/dia", | |
"Meia-vida": "3-20 horas", | |
}, | |
"Pregabalina": { | |
"Dose inicial": "150 mg/dia", | |
"Dose máxima": "600 mg/dia", | |
"Meia-vida": "6.3 horas", | |
}, | |
}, | |
}, | |
} | |
# Função para gerar cores baseadas no valor | |
def get_color(value, min_value, max_value): | |
normalized = (value - min_value) / (max_value - min_value) if max_value > min_value else 0 | |
hue = (1 - normalized) * 0.7 | |
rgb = colorsys.hsv_to_rgb(hue, 0.8, 0.9) | |
return f'rgb({int(rgb[0]*255)},{int(rgb[1]*255)},{int(rgb[2]*255)})' | |
# Função para extrair valor numérico da meia-vida | |
def extract_numeric_value(meia_vida_str): | |
try: | |
return float(meia_vida_str.split()[0].split("-")[0]) | |
except (ValueError, IndexError): | |
return None | |
col1, col2, col3, col4, col5 = st.columns([1, 3, 0.5, 3, 1]) | |
with col1: | |
selected_class = st.selectbox( | |
" :pill: Classe de medicamentos:", list(treatments.keys()) | |
) | |
with col2: | |
if selected_class: | |
st.subheader(selected_class) | |
st.write(treatments[selected_class]["Descrição"]) | |
with col3: | |
st.write("") | |
with col4: | |
st.write("") | |
# with col5: | |
# st.write('') | |
# Tabela de medicamentos | |
data = [] | |
for med, info in treatments[selected_class]["Medicamentos"].items(): | |
row = [ | |
med, | |
info.get("Dose inicial", "N/A"), | |
info.get("Dose máxima", "N/A"), | |
info.get("Meia-vida", "N/A"), | |
] | |
data.append(row) | |
columns = ["Medicamento", "Dose Inicial", "Dose Máxima", "Meia-vida"] | |
cs1,cs2 = st.columns(2) | |
with cs1: | |
st.write( | |
pd.DataFrame(data, columns=columns).to_html(index=False), unsafe_allow_html=True | |
) | |
with cs2: | |
# Considerações especiais | |
st.subheader("Considerações Especiais") | |
cj1,cj2,cj3 = st.columns([1,1,1]) | |
with cj1: | |
with st.expander("Gestantes", expanded=False, icon="🤰"): | |
st.info( | |
"A American College of Obstetricians and Gynecologists (ACOG) recomenda ISRSs como primeira linha para ansiedade perinatal, com sertralina e escitalopram sendo opções preferenciais." | |
) | |
with cj2: | |
with st.expander("Crianças e Adolescentes", expanded=False, icon="🧒"): | |
st.info( | |
"A American Academy of Child and Adolescent Psychiatry recomenda ISRSs como primeira linha para crianças e adolescentes." | |
) | |
with cj3: | |
with st.expander("Idosos", expanded=False, icon="👴"): | |
st.info( | |
"A AGS recomenda ISRSs como primeira linha para ansiedade em idosos, com sertralina e escitalopram sendo opções preferenciais." | |
) | |
st.warning( | |
"Essas dosagens são ajustadas com base na resposta clínica e tolerabilidade do paciente. O monitoramento contínuo é essencial para otimizar o tratamento e minimizar efeitos adversos." | |
) | |
# Gráfico de meia-vida | |
st.subheader(f"Meia-vida dos {selected_class}") | |
meia_vidas = {} | |
for med, info in treatments[selected_class]["Medicamentos"].items(): | |
meia_vida = info.get("Meia-vida", "N/A") | |
if meia_vida != "N/A": | |
meia_vida_num = extract_numeric_value(meia_vida) | |
if meia_vida_num is not None: | |
meia_vidas[med] = meia_vida_num | |
if meia_vidas: | |
medicamentos = list(meia_vidas.keys()) | |
valores = list(meia_vidas.values()) | |
min_valor = min(valores) | |
max_valor = max(valores) | |
cores = [get_color(valor, min_valor, max_valor) for valor in valores] | |
fig = go.Figure() | |
fig.add_trace( | |
go.Bar( | |
x=medicamentos, | |
y=valores, | |
marker_color=cores, | |
text=[f"{valor:.2f}" for valor in valores], | |
textposition='auto', | |
) | |
) | |
fig.update_layout( | |
title=f'Comparação da Meia-vida dos {selected_class}', | |
plot_bgcolor='rgba(240,240,240,1)', | |
paper_bgcolor='rgba(240,240,240,1)', | |
font_color='#444', | |
title_font_color='#444', | |
height=600, | |
margin=dict(t=100, b=50, l=50, r=50), | |
xaxis=dict( | |
title='Medicamento', | |
tickangle=45, | |
tickfont=dict(size=10), | |
gridcolor='white' | |
), | |
yaxis=dict( | |
title='Meia-vida (horas)', | |
gridcolor='white' | |
), | |
) | |
fig.update_traces( | |
marker=dict( | |
line=dict(width=0), | |
color=cores, | |
), | |
hoverlabel=dict(bgcolor="white", font_size=12), | |
) | |
fig.update_layout( | |
shapes=[ | |
dict( | |
type="rect", | |
xref="paper", | |
yref="paper", | |
x0=0, | |
y0=0, | |
x1=1, | |
y1=1, | |
fillcolor="white", | |
opacity=0.3, | |
layer="below", | |
line_width=0, | |
), | |
] | |
) | |
st.plotly_chart(fig, use_container_width=True) | |
else: | |
st.info(f"Dados de meia-vida não disponíveis para {selected_class}") | |
st.info( | |
"Nota: As meias-vidas apresentadas são valores aproximados e podem variar dependendo de fatores individuais." | |
) | |
elif selected == "Efeitos Colaterais": | |
st.title("🧠 Efeitos Colaterais e Receptores Associados") | |
add_vertical_space(3) | |
cp1,cp2,cp3 = st.columns([1,1,1]) | |
with cp1: | |
st.image("ser.jpg") | |
with cp2: | |
st.image("nor.jpg") | |
with cp3: | |
st.image("dop.jpg") | |
add_vertical_space(3) | |
# Dados dos efeitos colaterais e receptores associados | |
receptor_effects = { | |
"Serotoninérgicos (5-HT)": { | |
"Ícone": "😊", | |
"Descrição": "Relacionados à modulação da serotonina, afetando humor, ansiedade e funções gastrointestinais.", | |
"Efeitos": { | |
"Náusea 🤢": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Geralmente transitória", | |
"Manejo": "Tomar com alimentos, iniciar com doses baixas", | |
}, | |
"Disfunção sexual 💔": { | |
"Gravidade": "Moderada a grave", | |
"Duração": "Pode persistir durante o tratamento", | |
"Manejo": "Ajuste de dose, troca de medicação, tratamento adjuvante", | |
}, | |
"Alterações de apetite 🍽️": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Variável", | |
"Manejo": "Monitoramento do peso, orientação nutricional", | |
}, | |
}, | |
}, | |
"Noradrenérgicos (NA)": { | |
"Ícone": "⚡", | |
"Descrição": "Associados à modulação da noradrenalina, afetando atenção, vigília e pressão arterial.", | |
"Efeitos": { | |
"Boca seca 🏜️": { | |
"Gravidade": "Leve", | |
"Duração": "Persistente", | |
"Manejo": "Hidratação frequente, goma de mascar sem açúcar", | |
}, | |
"Sudorese 💦": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Variável", | |
"Manejo": "Roupas leves, antitranspirantes", | |
}, | |
"Tremor 🤕": { | |
"Gravidade": "Leve", | |
"Duração": "Geralmente transitória", | |
"Manejo": "Redução da dose, se necessário", | |
}, | |
}, | |
}, | |
"Muscarínicos (M1)": { | |
"Ícone": "🔍", | |
"Descrição": "Relacionados à ação anticolinérgica, afetando secreções, motilidade intestinal e visão.", | |
"Efeitos": { | |
"Constipação 🚽": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Pode persistir", | |
"Manejo": "Aumento da ingestão de fibras e líquidos", | |
}, | |
"Visão turva 👁️": { | |
"Gravidade": "Leve", | |
"Duração": "Geralmente transitória", | |
"Manejo": "Avaliação oftalmológica se persistente", | |
}, | |
"Retenção urinária 🚱": { | |
"Gravidade": "Moderada", | |
"Duração": "Variável", | |
"Manejo": "Ajuste de dose, monitoramento da função urinária", | |
}, | |
}, | |
}, | |
"Histamínicos (H1)": { | |
"Ícone": "💤", | |
"Descrição": "Associados à ação anti-histamínica, afetando o estado de alerta e o apetite.", | |
"Efeitos": { | |
"Sonolência 😴": { | |
"Gravidade": "Moderada", | |
"Duração": "Pode diminuir com o tempo", | |
"Manejo": "Administração noturna, ajuste de dose", | |
}, | |
"Aumento de apetite 🍔": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Variável", | |
"Manejo": "Monitoramento do peso, orientação nutricional", | |
}, | |
"Tontura 🌀": { | |
"Gravidade": "Leve", | |
"Duração": "Geralmente transitória", | |
"Manejo": "Levantar-se lentamente, evitar mudanças bruscas de posição", | |
}, | |
}, | |
}, | |
"Dopaminérgicos (D2)": { | |
"Ícone": "🎭", | |
"Descrição": "Relacionados à modulação da dopamina, afetando movimento, cognição e secreção de prolactina.", | |
"Efeitos": { | |
"Aumento de prolactina 🥛": { | |
"Gravidade": "Moderada", | |
"Duração": "Persistente durante o uso", | |
"Manejo": "Monitoramento dos níveis de prolactina, ajuste de dose", | |
}, | |
"Alterações motoras 🚶": { | |
"Gravidade": "Moderada a grave", | |
"Duração": "Pode ser persistente", | |
"Manejo": "Ajuste de dose, troca de medicação", | |
}, | |
"Alterações cognitivas 🧠": { | |
"Gravidade": "Leve a moderada", | |
"Duração": "Variável", | |
"Manejo": "Avaliação cognitiva, ajuste de dose", | |
}, | |
}, | |
}, | |
} | |
# Seletor de receptor | |
col1, col2, col3 = st.columns([1, 3, 1]) | |
with col1: | |
selected_receptor = st.selectbox( | |
"🔬 Selecione um receptor:", list(receptor_effects.keys()) | |
) | |
with col2: | |
if selected_receptor: | |
st.subheader(f"{receptor_effects[selected_receptor]['Ícone']} {selected_receptor}") | |
st.write(receptor_effects[selected_receptor]["Descrição"]) | |
# Tabela de efeitos colaterais | |
data = [] | |
for effect, info in receptor_effects[selected_receptor]["Efeitos"].items(): | |
row = [ | |
effect, | |
info.get("Gravidade", "N/A"), | |
info.get("Duração", "N/A"), | |
info.get("Manejo", "N/A"), | |
] | |
data.append(row) | |
columns = ["Efeito Colateral", "Gravidade", "Duração", "Manejo"] | |
st.write( | |
pd.DataFrame(data, columns=columns).to_html(index=False), unsafe_allow_html=True | |
) | |
add_vertical_space(3) | |
# Visualização interativa | |
st.subheader("📊 Comparação de Efeitos Colaterais entre Receptores") | |
add_vertical_space(1) | |
effect_options = list(set([effect for receptor in receptor_effects.values() for effect in receptor["Efeitos"].keys()])) | |
selected_effects = st.multiselect("🔍 Selecione os efeitos colaterais para comparar:", effect_options) | |
if selected_effects: | |
comparison_data = [] | |
for receptor, effects in receptor_effects.items(): | |
for effect in selected_effects: | |
comparison_data.append({ | |
"Receptor": f"{effects['Ícone']} {receptor}", | |
"Efeito Colateral": effect, | |
"Presença": 1 if effect in effects["Efeitos"] else 0 | |
}) | |
fig = px.bar(comparison_data, x="Receptor", y="Presença", color="Efeito Colateral", | |
title="Comparação de Efeitos Colaterais entre Receptores", | |
barmode="group") | |
st.plotly_chart(fig) | |
# Considerações especiais | |
st.subheader("⚠️ Considerações Especiais") | |
add_vertical_space(2) | |
col1, col2, col3 = st.columns(3) | |
with col1: | |
with st.expander("💊 Interações Medicamentosas", expanded=False): | |
st.info( | |
"Medicamentos que afetam os mesmos receptores podem potencializar efeitos colaterais. Por exemplo, combinar medicamentos serotoninérgicos pode aumentar o risco de síndrome serotoninérgica." | |
) | |
with col2: | |
with st.expander("🛑 Descontinuação", expanded=False): | |
st.info( | |
"A descontinuação abrupta de medicamentos que afetam certos receptores (como serotoninérgicos) pode levar a sintomas de descontinuação. A redução gradual é geralmente recomendada." | |
) | |
with col3: | |
with st.expander("👤 Variabilidade Individual", expanded=False): | |
st.info( | |
"A resposta aos medicamentos e a ocorrência de efeitos colaterais podem variar significativamente entre indivíduos devido a diferenças genéticas e outros fatores." | |
) | |
st.warning( | |
"⚠️ Importante: A ocorrência e gravidade dos efeitos colaterais podem variar. Sempre consulte um médico para orientações específicas e manejo adequado dos efeitos colaterais." | |
) | |
elif selected == "Chatbot Dr. Karl": | |
st.title("Chatbot Dr. Karl") | |
st.write( | |
"Bem-vindo ao Chatbot Dr. Karl, seu assistente virtual para dúvidas sobre transtornos de ansiedade." | |
) | |
# Área de entrada do usuário | |
user_input = st.text_input("Faça sua pergunta aqui:") | |
if user_input: | |
# Aqui você pode integrar a lógica do chatbot | |
st.write( | |
"Dr. Karl: Obrigado pela sua pergunta. Estou processando sua solicitação..." | |
) | |
# Placeholder para a resposta do chatbot | |
st.write( | |
"Dr. Karl: Esta é uma resposta de exemplo. A integração completa do chatbot será implementada posteriormente." | |
) | |
st.info( | |
"Nota: O Chatbot Dr. Karl está em desenvolvimento. Por favor, consulte um profissional de saúde para orientações médicas específicas." | |
) | |
# Aqui irá a estrutura para o chatbot | |
footer="""<style> | |
a:link , a:visited{ | |
color: blue; | |
background-color: transparent; | |
text-decoration: underline; | |
} | |
a:hover, a:active { | |
color: red; | |
background-color: transparent; | |
text-decoration: underline; | |
} | |
.footer { | |
position: fixed; | |
left: 0; | |
bottom: 0; | |
width: 100%; | |
background-color: white; | |
color: black; | |
text-align: center; | |
} | |
</style> | |
<div class="footer"> | |
<p>Desenvolvido por <a style='display: block; text-align: center;' href="https://dr-guilhermeapolinario.com/Dr.+Guilherme+Apolin%C3%A1rio" target="_blank">Dr. Guilherme Apolinário</a></p> | |
</div> | |
""" | |
st.markdown(footer,unsafe_allow_html=True) | |