Spaces:
Running
Running
Update views/pdf_chat.py
Browse files- views/pdf_chat.py +164 -164
views/pdf_chat.py
CHANGED
@@ -865,7 +865,7 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
865 |
st.markdown("Recomendado pela Sociedade Brasileira de Cardiologia")
|
866 |
|
867 |
# Criando colunas para organizar o layout
|
868 |
-
col1, col2 = st.columns(
|
869 |
|
870 |
# Inputs
|
871 |
with col1:
|
@@ -885,171 +885,171 @@ elif nested_menu == "Escore de Risco Global (ERG)":
|
|
885 |
min_value=0,
|
886 |
value=120)
|
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 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
927 |
else: pontos += 3
|
928 |
-
|
929 |
-
# HDL
|
930 |
-
if hdl < 40: pontos += 2
|
931 |
-
elif 40 <= hdl <= 49: pontos += 1
|
932 |
-
elif 50 <= hdl <= 59: pontos += 0
|
933 |
-
else: pontos -= 2
|
934 |
-
|
935 |
-
# Pressão Arterial Sistólica
|
936 |
-
if pas < 120: pontos += 0
|
937 |
-
elif 120 <= pas <= 129: pontos += 0
|
938 |
-
elif 130 <= pas <= 139: pontos += 1
|
939 |
-
elif 140 <= pas <= 159: pontos += 2
|
940 |
-
else: pontos += 3
|
941 |
-
|
942 |
-
# Diabetes
|
943 |
-
if diabetes:
|
944 |
-
if sexo == "Masculino": pontos += 2
|
945 |
-
else: pontos += 4
|
946 |
-
|
947 |
-
# Tabagismo
|
948 |
-
if tabagismo:
|
949 |
-
if sexo == "Masculino": pontos += 2
|
950 |
-
else: pontos += 2
|
951 |
-
|
952 |
-
return pontos
|
953 |
-
|
954 |
-
|
955 |
-
# Botão para calcular o risco
|
956 |
-
if st.button("Calcular Risco"):
|
957 |
-
pontos = calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total,
|
958 |
-
hdl, pas)
|
959 |
-
|
960 |
-
# Interpretação do risco
|
961 |
-
if sexo == "Masculino":
|
962 |
-
if pontos <= 5:
|
963 |
-
risco = "Baixo"
|
964 |
-
classe_css = "risk-baixo"
|
965 |
-
probabilidade = "< 5%"
|
966 |
-
elif 6 <= pontos <= 10:
|
967 |
-
risco = "Intermediário"
|
968 |
-
classe_css = "risk-intermediario"
|
969 |
-
probabilidade = "5 a 10%"
|
970 |
-
elif 11 <= pontos <= 14:
|
971 |
-
risco = "Alto"
|
972 |
-
classe_css = "risk-alto"
|
973 |
-
probabilidade = "10 a 20%"
|
974 |
-
else:
|
975 |
-
risco = "Muito Alto"
|
976 |
-
classe_css = "risk-muito-alto"
|
977 |
-
probabilidade = "> 20%"
|
978 |
-
else: # Feminino
|
979 |
-
if pontos <= 7:
|
980 |
-
risco = "Baixo"
|
981 |
-
classe_css = "risk-baixo"
|
982 |
-
probabilidade = "< 5%"
|
983 |
-
elif 8 <= pontos <= 12:
|
984 |
-
risco = "Intermediário"
|
985 |
-
classe_css = "risk-intermediario"
|
986 |
-
probabilidade = "5 a 10%"
|
987 |
-
elif 13 <= pontos <= 17:
|
988 |
-
risco = "Alto"
|
989 |
-
classe_css = "risk-alto"
|
990 |
-
probabilidade = "10 a 20%"
|
991 |
-
else:
|
992 |
-
risco = "Muito Alto"
|
993 |
-
classe_css = "risk-muito-alto"
|
994 |
-
probabilidade = "> 20%"
|
995 |
-
|
996 |
-
# Exibição do resultado
|
997 |
-
st.markdown(f"""
|
998 |
-
<div class='risk-result {classe_css}'>
|
999 |
-
Risco Cardiovascular: {risco}<br>
|
1000 |
-
Pontuação: {pontos}<br>
|
1001 |
-
Probabilidade de evento cardiovascular em 10 anos: {probabilidade}
|
1002 |
-
</div>
|
1003 |
-
""",
|
1004 |
-
unsafe_allow_html=True)
|
1005 |
-
|
1006 |
-
# Tabela de detalhes
|
1007 |
-
st.subheader("Detalhes da Pontuação")
|
1008 |
-
detalhes = [{
|
1009 |
-
"Fator": "Idade",
|
1010 |
-
"Valor": f"{idade} anos"
|
1011 |
-
}, {
|
1012 |
-
"Fator": "Sexo",
|
1013 |
-
"Valor": sexo
|
1014 |
-
}, {
|
1015 |
-
"Fator": "Colesterol Total",
|
1016 |
-
"Valor": f"{colesterol_total} mg/dL"
|
1017 |
-
}, {
|
1018 |
-
"Fator": "HDL Colesterol",
|
1019 |
-
"Valor": f"{hdl} mg/dL"
|
1020 |
-
}, {
|
1021 |
-
"Fator": "Pressão Arterial Sistólica",
|
1022 |
-
"Valor": f"{pas} mmHg"
|
1023 |
-
}, {
|
1024 |
-
"Fator": "Diabetes",
|
1025 |
-
"Valor": "Sim" if diabetes else "Não"
|
1026 |
-
}, {
|
1027 |
-
"Fator": "Tabagismo",
|
1028 |
-
"Valor": "Sim" if tabagismo else "Não"
|
1029 |
-
}]
|
1030 |
-
df_detalhes = pd.DataFrame(detalhes)
|
1031 |
-
st.table(df_detalhes)
|
1032 |
-
|
1033 |
-
with st.expander("Sobre o Escore de Risco Global (ERG)", icon='❤️', expanded=False):
|
1034 |
-
st.markdown("""
|
1035 |
-
---
|
1036 |
-
### Sobre o Escore de Risco Global (ERG)
|
1037 |
|
1038 |
-
|
|
|
|
|
|
|
1039 |
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
- Níveis de colesterol total e HDL
|
1045 |
-
- Pressão arterial sistólica
|
1046 |
|
1047 |
-
|
1048 |
-
- **Baixo Risco**: Probabilidade < 5% de eventos cardiovasculares em 10 anos
|
1049 |
-
- **Risco Intermediário**: Probabilidade de 5 a 10% de eventos cardiovasculares em 10 anos
|
1050 |
-
- **Alto Risco**: Probabilidade de 10 a 20% de eventos cardiovasculares em 10 anos
|
1051 |
-
- **Muito Alto Risco**: Probabilidade > 20% de eventos cardiovasculares em 10 anos
|
1052 |
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
865 |
st.markdown("Recomendado pela Sociedade Brasileira de Cardiologia")
|
866 |
|
867 |
# Criando colunas para organizar o layout
|
868 |
+
col1, col2, col3 = st.columns(3)
|
869 |
|
870 |
# Inputs
|
871 |
with col1:
|
|
|
885 |
min_value=0,
|
886 |
value=120)
|
887 |
|
888 |
+
with col3:
|
889 |
+
# Função para calcular o ERG
|
890 |
+
def calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total, hdl, pas):
|
891 |
+
pontos = 0
|
892 |
+
|
893 |
+
# Idade
|
894 |
+
if sexo == "Masculino":
|
895 |
+
if idade < 35: pontos -= 1
|
896 |
+
elif 35 <= idade <= 39: pontos += 0
|
897 |
+
elif 40 <= idade <= 44: pontos += 1
|
898 |
+
elif 45 <= idade <= 49: pontos += 2
|
899 |
+
elif 50 <= idade <= 54: pontos += 3
|
900 |
+
elif 55 <= idade <= 59: pontos += 4
|
901 |
+
elif 60 <= idade <= 64: pontos += 5
|
902 |
+
elif 65 <= idade <= 69: pontos += 6
|
903 |
+
else: pontos += 7
|
904 |
+
else: # Feminino
|
905 |
+
if idade < 35: pontos -= 9
|
906 |
+
elif 35 <= idade <= 39: pontos -= 4
|
907 |
+
elif 40 <= idade <= 44: pontos += 0
|
908 |
+
elif 45 <= idade <= 49: pontos += 3
|
909 |
+
elif 50 <= idade <= 54: pontos += 6
|
910 |
+
elif 55 <= idade <= 59: pontos += 7
|
911 |
+
elif 60 <= idade <= 64: pontos += 8
|
912 |
+
elif 65 <= idade <= 69: pontos += 8
|
913 |
+
else: pontos += 8
|
914 |
+
|
915 |
+
# Colesterol Total
|
916 |
+
if sexo == "Masculino":
|
917 |
+
if colesterol_total < 160: pontos -= 3
|
918 |
+
elif 160 <= colesterol_total <= 199: pontos += 0
|
919 |
+
elif 200 <= colesterol_total <= 239: pontos += 1
|
920 |
+
elif 240 <= colesterol_total <= 279: pontos += 2
|
921 |
+
else: pontos += 3
|
922 |
+
else: # Feminino
|
923 |
+
if colesterol_total < 160: pontos -= 2
|
924 |
+
elif 160 <= colesterol_total <= 199: pontos += 0
|
925 |
+
elif 200 <= colesterol_total <= 239: pontos += 1
|
926 |
+
elif 240 <= colesterol_total <= 279: pontos += 1
|
927 |
+
else: pontos += 3
|
928 |
+
|
929 |
+
# HDL
|
930 |
+
if hdl < 40: pontos += 2
|
931 |
+
elif 40 <= hdl <= 49: pontos += 1
|
932 |
+
elif 50 <= hdl <= 59: pontos += 0
|
933 |
+
else: pontos -= 2
|
934 |
+
|
935 |
+
# Pressão Arterial Sistólica
|
936 |
+
if pas < 120: pontos += 0
|
937 |
+
elif 120 <= pas <= 129: pontos += 0
|
938 |
+
elif 130 <= pas <= 139: pontos += 1
|
939 |
+
elif 140 <= pas <= 159: pontos += 2
|
940 |
else: pontos += 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
941 |
|
942 |
+
# Diabetes
|
943 |
+
if diabetes:
|
944 |
+
if sexo == "Masculino": pontos += 2
|
945 |
+
else: pontos += 4
|
946 |
|
947 |
+
# Tabagismo
|
948 |
+
if tabagismo:
|
949 |
+
if sexo == "Masculino": pontos += 2
|
950 |
+
else: pontos += 2
|
|
|
|
|
951 |
|
952 |
+
return pontos
|
|
|
|
|
|
|
|
|
953 |
|
954 |
+
|
955 |
+
# Botão para calcular o risco
|
956 |
+
if st.button("Calcular Risco"):
|
957 |
+
pontos = calcular_erg(sexo, idade, tabagismo, diabetes, colesterol_total,
|
958 |
+
hdl, pas)
|
959 |
+
|
960 |
+
# Interpretação do risco
|
961 |
+
if sexo == "Masculino":
|
962 |
+
if pontos <= 5:
|
963 |
+
risco = "Baixo"
|
964 |
+
classe_css = "risk-baixo"
|
965 |
+
probabilidade = "< 5%"
|
966 |
+
elif 6 <= pontos <= 10:
|
967 |
+
risco = "Intermediário"
|
968 |
+
classe_css = "risk-intermediario"
|
969 |
+
probabilidade = "5 a 10%"
|
970 |
+
elif 11 <= pontos <= 14:
|
971 |
+
risco = "Alto"
|
972 |
+
classe_css = "risk-alto"
|
973 |
+
probabilidade = "10 a 20%"
|
974 |
+
else:
|
975 |
+
risco = "Muito Alto"
|
976 |
+
classe_css = "risk-muito-alto"
|
977 |
+
probabilidade = "> 20%"
|
978 |
+
else: # Feminino
|
979 |
+
if pontos <= 7:
|
980 |
+
risco = "Baixo"
|
981 |
+
classe_css = "risk-baixo"
|
982 |
+
probabilidade = "< 5%"
|
983 |
+
elif 8 <= pontos <= 12:
|
984 |
+
risco = "Intermediário"
|
985 |
+
classe_css = "risk-intermediario"
|
986 |
+
probabilidade = "5 a 10%"
|
987 |
+
elif 13 <= pontos <= 17:
|
988 |
+
risco = "Alto"
|
989 |
+
classe_css = "risk-alto"
|
990 |
+
probabilidade = "10 a 20%"
|
991 |
+
else:
|
992 |
+
risco = "Muito Alto"
|
993 |
+
classe_css = "risk-muito-alto"
|
994 |
+
probabilidade = "> 20%"
|
995 |
+
|
996 |
+
# Exibição do resultado
|
997 |
+
st.markdown(f"""
|
998 |
+
<div class='risk-result {classe_css}'>
|
999 |
+
Risco Cardiovascular: {risco}<br>
|
1000 |
+
Pontuação: {pontos}<br>
|
1001 |
+
Probabilidade de evento cardiovascular em 10 anos: {probabilidade}
|
1002 |
+
</div>
|
1003 |
+
""",
|
1004 |
+
unsafe_allow_html=True)
|
1005 |
+
|
1006 |
+
# Tabela de detalhes
|
1007 |
+
st.subheader("Detalhes da Pontuação")
|
1008 |
+
detalhes = [{
|
1009 |
+
"Fator": "Idade",
|
1010 |
+
"Valor": f"{idade} anos"
|
1011 |
+
}, {
|
1012 |
+
"Fator": "Sexo",
|
1013 |
+
"Valor": sexo
|
1014 |
+
}, {
|
1015 |
+
"Fator": "Colesterol Total",
|
1016 |
+
"Valor": f"{colesterol_total} mg/dL"
|
1017 |
+
}, {
|
1018 |
+
"Fator": "HDL Colesterol",
|
1019 |
+
"Valor": f"{hdl} mg/dL"
|
1020 |
+
}, {
|
1021 |
+
"Fator": "Pressão Arterial Sistólica",
|
1022 |
+
"Valor": f"{pas} mmHg"
|
1023 |
+
}, {
|
1024 |
+
"Fator": "Diabetes",
|
1025 |
+
"Valor": "Sim" if diabetes else "Não"
|
1026 |
+
}, {
|
1027 |
+
"Fator": "Tabagismo",
|
1028 |
+
"Valor": "Sim" if tabagismo else "Não"
|
1029 |
+
}]
|
1030 |
+
df_detalhes = pd.DataFrame(detalhes)
|
1031 |
+
st.table(df_detalhes)
|
1032 |
+
|
1033 |
+
with st.expander("Sobre o Escore de Risco Global (ERG)", icon='❤️', expanded=False):
|
1034 |
+
st.markdown("""
|
1035 |
+
---
|
1036 |
+
### Sobre o Escore de Risco Global (ERG)
|
1037 |
+
|
1038 |
+
O Escore de Risco Global (ERG) é a ferramenta principal recomendada pela Sociedade Brasileira de Cardiologia para avaliação do risco cardiovascular. Foi desenvolvido com base em dados da população brasileira e considera os seguintes fatores:
|
1039 |
+
|
1040 |
+
- Idade
|
1041 |
+
- Sexo
|
1042 |
+
- Tabagismo
|
1043 |
+
- Diabetes
|
1044 |
+
- Níveis de colesterol total e HDL
|
1045 |
+
- Pressão arterial sistólica
|
1046 |
+
|
1047 |
+
#### Como interpretar os resultados:
|
1048 |
+
- **Baixo Risco**: Probabilidade < 5% de eventos cardiovasculares em 10 anos
|
1049 |
+
- **Risco Intermediário**: Probabilidade de 5 a 10% de eventos cardiovasculares em 10 anos
|
1050 |
+
- **Alto Risco**: Probabilidade de 10 a 20% de eventos cardiovasculares em 10 anos
|
1051 |
+
- **Muito Alto Risco**: Probabilidade > 20% de eventos cardiovasculares em 10 anos
|
1052 |
+
|
1053 |
+
Esta calculadora é uma ferramenta de apoio e não substitui a avaliação profissional. Consulte sempre um médico para interpretação adequada dos resultados e recomendações personalizadas.
|
1054 |
+
""")
|
1055 |
+
|