drguilhermeapolinario commited on
Commit
67c605e
·
verified ·
1 Parent(s): 35092b2

Update views/pdf_chat.py

Browse files
Files changed (1) hide show
  1. 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(2)
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
- # 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
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+