Spaces:
Running
Running
drguilhermeapolinario
commited on
Update views/pdf_chat.py
Browse files- views/pdf_chat.py +135 -194
views/pdf_chat.py
CHANGED
@@ -44,7 +44,7 @@ if nested_menu == "Incidências radiológicas":
|
|
44 |
##### ✅ **Vamos melhorar a visualização das incidências médicas!**
|
45 |
""")
|
46 |
|
47 |
-
|
48 |
def exibir_incidencias(regiao, incidencias):
|
49 |
st.markdown(f"## {regiao}")
|
50 |
for incidencia in incidencias:
|
@@ -825,98 +825,64 @@ elif nested_menu == "Escala de Risco de Coelho e Savassi":
|
|
825 |
st.write('')
|
826 |
|
827 |
elif nested_menu == "Escore de Risco Global (ERG)":
|
828 |
-
import streamlit as st
|
829 |
-
import pandas as pd
|
830 |
import numpy as np
|
831 |
-
|
832 |
-
|
833 |
-
# st.markdown("""
|
834 |
-
# <style>
|
835 |
-
# .stRadio > label {
|
836 |
-
# font-weight: bold;
|
837 |
-
# color: #4A4A4A;
|
838 |
-
# }
|
839 |
-
# .stButton > button {
|
840 |
-
# width: 100%;
|
841 |
-
# }
|
842 |
-
# .risk-result {
|
843 |
-
# font-size: 24px;
|
844 |
-
# font-weight: bold;
|
845 |
-
# padding: 10px;
|
846 |
-
# border-radius: 5px;
|
847 |
-
# margin-top: 20px;
|
848 |
-
# text-align: center;
|
849 |
-
# }
|
850 |
-
# .risk-baixo {
|
851 |
-
# background-color: #2ecc71;
|
852 |
-
# color: white;
|
853 |
-
# }
|
854 |
-
# .risk-intermediario {
|
855 |
-
# background-color: #f39c12;
|
856 |
-
# color: white;
|
857 |
-
# }
|
858 |
-
# .risk-alto {
|
859 |
-
# background-color: #e74c3c;
|
860 |
-
# color: white;
|
861 |
-
# }
|
862 |
-
# .risk-muito-alto {
|
863 |
-
# background-color: #c0392b;
|
864 |
-
# color: white;
|
865 |
-
# }
|
866 |
-
# </style>
|
867 |
-
# """,
|
868 |
-
# unsafe_allow_html=True)
|
869 |
-
|
870 |
|
|
|
871 |
# Título
|
872 |
-
|
873 |
-
|
874 |
-
|
|
|
|
|
|
|
|
|
875 |
# CSS melhorado
|
876 |
st.markdown("""
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
|
921 |
def get_recomendacao_estatina(risco, pontos, idade, diabetes):
|
922 |
"""
|
@@ -975,9 +941,8 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
975 |
"""
|
976 |
|
977 |
|
978 |
-
|
979 |
# Criando colunas para organizar o layout
|
980 |
-
col1, col2, col3, col4, col5 = st.columns([1,0.5,1,0.
|
981 |
|
982 |
with col1:
|
983 |
st.subheader("Dados Pessoais")
|
@@ -1010,7 +975,6 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1010 |
|
1011 |
with col5:
|
1012 |
st.subheader("Calcular resultado")
|
1013 |
-
|
1014 |
def calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total, hdl, pas):
|
1015 |
pontos = 0
|
1016 |
|
@@ -1123,8 +1087,6 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1123 |
else:
|
1124 |
pontos = calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total,
|
1125 |
hdl, pas)
|
1126 |
-
|
1127 |
-
# Interpretação do risco (mesma para ambos os sexos)
|
1128 |
if pontos < 5:
|
1129 |
risco = "Baixo"
|
1130 |
classe_css = "risk-baixo"
|
@@ -1144,85 +1106,85 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1144 |
|
1145 |
|
1146 |
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
""")
|
1165 |
-
|
1166 |
-
recomendacao = get_recomendacao_estatina(risco, pontos, idade, diabetes)
|
1167 |
-
st.markdown(recomendacao)
|
1168 |
-
|
1169 |
-
st.info("""
|
1170 |
-
**Observações importantes:**
|
1171 |
-
1. Esta é uma recomendação baseada em diretrizes, mas a decisão final deve ser individualizada pelo médico.
|
1172 |
-
2. Monitorar níveis de transaminases antes de iniciar as estatinas.
|
1173 |
-
3. Reavaliar níveis lipídicos 1-3 meses após início da terapia.
|
1174 |
-
4. Em caso de intolerância, considerar alternativas como ácido bempedoico ou inibidores de PCSK9.
|
1175 |
-
5. Estatinas são contraindicadas na gestação.
|
1176 |
""")
|
1177 |
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
|
|
|
|
|
|
1193 |
""")
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1226 |
|
1227 |
|
1228 |
@st.fragment
|
@@ -1277,9 +1239,9 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1277 |
# Estatinas
|
1278 |
<div style="text-align: justify">
|
1279 |
|
1280 |
-
- Diretrizes
|
1281 |
|
1282 |
-
- Evidências
|
1283 |
|
1284 |
## Início da Terapia com Estatinas
|
1285 |
|
@@ -1356,34 +1318,12 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1356 |
Grundy SM, Stone NJ, Bailey AL, et al.
|
1357 |
Journal of the American College of Cardiology. 2019;73(24):e285-e350. doi:10.1016/j.jacc.2018.11.003.
|
1358 |
</sup>
|
1359 |
-
<br><br>
|
1360 |
-
<sup>
|
1361 |
-
5. 2013 ACC/AHA Guideline Recommends Fixed-Dose Strategies Instead of Targeted Goals to Lower Blood Cholesterol.
|
1362 |
-
Smith SC, Grundy SM.
|
1363 |
-
Journal of the American College of Cardiology. 2014;64(6):601-12. doi:10.1016/j.jacc.2014.06.1159.
|
1364 |
-
</sup>
|
1365 |
-
<br><br>
|
1366 |
-
|
1367 |
-
<sup>
|
1368 |
-
6. 2018 AHA/ACC/AACVPR/AAPA/ABC/ACPM/ADA/AGS/APhA/ASPC/NLA/PCNA Guideline on the Management of Blood Cholesterol: A Report of the American College of Cardiology/American Heart Association Task Force on Clinical Practice Guidelines.
|
1369 |
-
Grundy SM, Stone NJ, Bailey AL, et al.
|
1370 |
-
Circulation. 2019;139(25):e1082-e1143. doi:10.1161/CIR.0000000000000625.
|
1371 |
-
</sup>
|
1372 |
-
<br><br>
|
1373 |
-
|
1374 |
-
|
1375 |
-
<sup>
|
1376 |
-
7. High-Intensity Statins Benefit High-Risk Patients: Why and How to Do Better.
|
1377 |
-
Grundy SM, Stone NJ, Blumenthal RS, et al.
|
1378 |
-
Mayo Clinic Proceedings. 2021;96(10):2660-2670. doi:10.1016/j.mayocp.2021.02.032.
|
1379 |
-
</sup>
|
1380 |
-
|
1381 |
</div>
|
1382 |
|
1383 |
""", unsafe_allow_html=True
|
1384 |
)
|
1385 |
|
1386 |
-
cft1, cft2, cft3 = st.columns(
|
1387 |
|
1388 |
with cft1:
|
1389 |
estat()
|
@@ -1394,3 +1334,4 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
1394 |
with cft3:
|
1395 |
st.write('')
|
1396 |
|
|
|
|
44 |
##### ✅ **Vamos melhorar a visualização das incidências médicas!**
|
45 |
""")
|
46 |
|
47 |
+
@st.fragment
|
48 |
def exibir_incidencias(regiao, incidencias):
|
49 |
st.markdown(f"## {regiao}")
|
50 |
for incidencia in incidencias:
|
|
|
825 |
st.write('')
|
826 |
|
827 |
elif nested_menu == "Escore de Risco Global (ERG)":
|
|
|
|
|
828 |
import numpy as np
|
829 |
+
import pandas as pd
|
830 |
+
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
831 |
|
832 |
+
cxc1, cxc2, cxc3 = st.columns([2, 1.5, 1.5])
|
833 |
# Título
|
834 |
+
with cxc1:
|
835 |
+
st.header("Escore de Risco Global (ERG)")
|
836 |
+
st.markdown("Recomendado pela Sociedade Brasileira de Cardiologia ❤️")
|
837 |
+
with cxc2:
|
838 |
+
st.image("icon/cardio.svg", width=100)
|
839 |
+
|
840 |
+
|
841 |
# CSS melhorado
|
842 |
st.markdown("""
|
843 |
+
<style>
|
844 |
+
.st-key-risco button {
|
845 |
+
width: 30%;
|
846 |
+
}
|
847 |
+
|
848 |
+
.st-key-veridade input {
|
849 |
+
display: grid;
|
850 |
+
width: 100px;
|
851 |
+
border: 1px solid #ccc;
|
852 |
+
}
|
853 |
+
|
854 |
+
.risk-result {
|
855 |
+
padding: 20px;
|
856 |
+
border-radius: 10px;
|
857 |
+
margin: 20px 0;
|
858 |
+
font-size: 1.1em;
|
859 |
+
}
|
860 |
+
|
861 |
+
.risk-baixo {
|
862 |
+
background-color: #d4edda;
|
863 |
+
color: #155724;
|
864 |
+
border: 1px solid #c3e6cb;
|
865 |
+
}
|
866 |
+
|
867 |
+
.risk-intermediario {
|
868 |
+
background-color: #fff3cd;
|
869 |
+
color: #856404;
|
870 |
+
border: 1px solid #ffeeba;
|
871 |
+
}
|
872 |
+
|
873 |
+
.risk-alto {
|
874 |
+
background-color: #fff3cd;
|
875 |
+
color: #856404;
|
876 |
+
border: 1px solid #ffeeba;
|
877 |
+
}
|
878 |
+
|
879 |
+
.risk-muito-alto {
|
880 |
+
background-color: #f8d7da;
|
881 |
+
color: #721c24;
|
882 |
+
border: 1px solid #f5c6cb;
|
883 |
+
}
|
884 |
+
</style>
|
885 |
+
""", unsafe_allow_html=True)
|
886 |
|
887 |
def get_recomendacao_estatina(risco, pontos, idade, diabetes):
|
888 |
"""
|
|
|
941 |
"""
|
942 |
|
943 |
|
|
|
944 |
# Criando colunas para organizar o layout
|
945 |
+
col1, col2, col3, col4, col5 = st.columns([1,0.5,1,0.2,2.5])
|
946 |
|
947 |
with col1:
|
948 |
st.subheader("Dados Pessoais")
|
|
|
975 |
|
976 |
with col5:
|
977 |
st.subheader("Calcular resultado")
|
|
|
978 |
def calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total, hdl, pas):
|
979 |
pontos = 0
|
980 |
|
|
|
1087 |
else:
|
1088 |
pontos = calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total,
|
1089 |
hdl, pas)
|
|
|
|
|
1090 |
if pontos < 5:
|
1091 |
risco = "Baixo"
|
1092 |
classe_css = "risk-baixo"
|
|
|
1106 |
|
1107 |
|
1108 |
|
1109 |
+
# Exibição do resultado
|
1110 |
+
st.markdown(f"""
|
1111 |
+
<div class='risk-result {classe_css}'>
|
1112 |
+
<strong>Risco Cardiovascular:</strong> {risco}<br>
|
1113 |
+
<strong>Pontuação:</strong> {pontos}<br>
|
1114 |
+
<strong>Probabilidade de evento cardiovascular em 10 anos:</strong> {probabilidade}
|
1115 |
+
</div>
|
1116 |
+
""", unsafe_allow_html=True)
|
1117 |
+
|
1118 |
+
# Após exibir o resultado do risco, adicionar:
|
1119 |
+
st.markdown("---")
|
1120 |
+
st.subheader("💊 Recomendação de Estatinas")
|
1121 |
+
|
1122 |
+
if idade > 75:
|
1123 |
+
st.warning("""
|
1124 |
+
**Atenção:** Para pacientes acima de 75 anos, a terapia com estatinas deve ser individualizada,
|
1125 |
+
considerando benefícios e riscos potenciais. Recomenda-se geralmente estatinas de intensidade moderada.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1126 |
""")
|
1127 |
|
1128 |
+
recomendacao = get_recomendacao_estatina(risco, pontos, idade, diabetes)
|
1129 |
+
st.markdown(recomendacao)
|
1130 |
+
|
1131 |
+
st.info("""
|
1132 |
+
**Observações importantes:**
|
1133 |
+
1. Recomendações baseadas em diretrizes, mas a decisão final deve ser individualizada pelo médico.
|
1134 |
+
2. Monitorar níveis de transaminases antes de iniciar as estatinas.
|
1135 |
+
3. Reavaliar níveis lipídicos 1-3 meses após início da terapia.
|
1136 |
+
4. Em caso de intolerância, considerar alternativas como ácido bempedoico ou inibidores de PCSK9.
|
1137 |
+
5. Estatinas são contraindicadas na gestação.
|
1138 |
+
""")
|
1139 |
+
|
1140 |
+
# Se diabetes presente, adicionar informação específica
|
1141 |
+
if diabetes:
|
1142 |
+
st.markdown("""
|
1143 |
+
**Nota sobre Diabetes:**
|
1144 |
+
- Para pacientes com diabetes entre 40-75 anos, é recomendada pelo menos estatina de intensidade moderada.
|
1145 |
+
- Se houver múltiplos fatores de risco, considerar estatina de alta intensidade com meta de redução ≥50% do LDL-C.
|
1146 |
""")
|
1147 |
+
|
1148 |
+
# Informações adicionais
|
1149 |
+
st.info("""
|
1150 |
+
**Interpretação das Faixas de Risco:**
|
1151 |
+
- **Baixo:** < 5% de chance de evento cardiovascular em 10 anos
|
1152 |
+
- **Intermediário:** 5-10% de chance de evento cardiovascular em 10 anos
|
1153 |
+
- **Alto:** 10-20% de chance de evento cardiovascular em 10 anos
|
1154 |
+
- **Muito Alto:** > 20% de chance de evento cardiovascular em 10 anos
|
1155 |
+
""")
|
1156 |
+
|
1157 |
+
@st.fragment
|
1158 |
+
def tab_final(idade, sexo, colesterol_total, hdl, pas, diabetes, tabagismo):
|
1159 |
+
# Tabela de detalhes
|
1160 |
+
st.subheader("Detalhes da Avaliação")
|
1161 |
+
detalhes = [{
|
1162 |
+
"Fator de Risco": "Idade",
|
1163 |
+
"Valor": f"{idade} anos"
|
1164 |
+
}, {
|
1165 |
+
"Fator de Risco": "Sexo",
|
1166 |
+
"Valor": sexo
|
1167 |
+
}, {
|
1168 |
+
"Fator de Risco": "Colesterol Total",
|
1169 |
+
"Valor": f"{colesterol_total} mg/dL"
|
1170 |
+
}, {
|
1171 |
+
"Fator de Risco": "HDL Colesterol",
|
1172 |
+
"Valor": f"{hdl} mg/dL"
|
1173 |
+
}, {
|
1174 |
+
"Fator de Risco": "Pressão Arterial Sistólica",
|
1175 |
+
"Valor": f"{pas} mmHg"
|
1176 |
+
}, {
|
1177 |
+
"Fator de Risco": "Diabetes",
|
1178 |
+
"Valor": "Sim" if diabetes else "Não"
|
1179 |
+
}, {
|
1180 |
+
"Fator de Risco": "Tabagismo",
|
1181 |
+
"Valor": "Sim" if tabagismo else "Não"
|
1182 |
+
}]
|
1183 |
+
df_detalhes = pd.DataFrame(detalhes)
|
1184 |
+
df_paciente = st.dataframe(df_detalhes, hide_index=True)
|
1185 |
+
return df_paciente
|
1186 |
+
|
1187 |
+
tab_final(idade, sexo, colesterol_total, hdl, pas, diabetes, tabagismo)
|
1188 |
|
1189 |
|
1190 |
@st.fragment
|
|
|
1239 |
# Estatinas
|
1240 |
<div style="text-align: justify">
|
1241 |
|
1242 |
+
- Diretrizes 2024: American College of Cardiology (ACC), American Heart Association (AHA) e American Diabetes Association (ADA).
|
1243 |
|
1244 |
+
- Evidências de ensaios clínicos randomizados e meta-análises: Eficácia das estatinas na redução de eventos cardiovasculares ateroscleróticos (ASCVD).
|
1245 |
|
1246 |
## Início da Terapia com Estatinas
|
1247 |
|
|
|
1318 |
Grundy SM, Stone NJ, Bailey AL, et al.
|
1319 |
Journal of the American College of Cardiology. 2019;73(24):e285-e350. doi:10.1016/j.jacc.2018.11.003.
|
1320 |
</sup>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1321 |
</div>
|
1322 |
|
1323 |
""", unsafe_allow_html=True
|
1324 |
)
|
1325 |
|
1326 |
+
cft1, cft2, cft3 = st.columns([1, 2, 1])
|
1327 |
|
1328 |
with cft1:
|
1329 |
estat()
|
|
|
1334 |
with cft3:
|
1335 |
st.write('')
|
1336 |
|
1337 |
+
|