drguilhermeapolinario commited on
Commit
3d6ec9a
·
verified ·
1 Parent(s): fc033f4

Update views/rci.py

Browse files
Files changed (1) hide show
  1. views/rci.py +135 -96
views/rci.py CHANGED
@@ -424,6 +424,32 @@ def create_word_doc(markdown_content):
424
  # Retornar o objeto BytesIO contendo o documento Word
425
  return docx_file
426
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  # Função para gerar a análise inicial
428
  def generate_initial_analysis(resumo_rci):
429
  """
@@ -458,42 +484,67 @@ def generate_initial_analysis(resumo_rci):
458
  {
459
  "role": "user",
460
  "content": f"""
461
- Aqui estão os dados para análise:
462
- <resumo_rci>
463
- {resumo_rci}
464
- </resumo_rci>
465
-
466
- Analise cuidadosamente os dados fornecidos e crie um relatório
467
- seguindo o modelo apresentado. O relatório deve incluir as seguintes
468
- seções:
469
- 1. Cabeçalho com informações gerais (data, cidadãos ativos, saída,
470
- mudança de território, óbito)
471
- 2. Análise de Faixa Etária (Crianças de 0 a 2 anos, 0 a 4 anos, mulheres
472
- na faixa etária de preventivo 25 a 64 anos, mulheres na faixa etária de
473
- mamomagrafia 50a 69 anos, idosos acima de 60 anos total, masculino e feminino)
474
- 3. Comparação de Sexo
475
- 4. Análise de Raça / Cor
476
- 5. Análise de Escolaridade
477
- 6. Orientação Sexual
478
- 7. Deficiências
479
- 8. Situações de Saúde Gerais
480
-
481
- Para cada seção:
482
- - Calcule os totais e percentuais relevantes
483
- - Faça comparações quando apropriado (por exemplo, entre masculino
484
- e feminino)
485
- - Destaque, ao final as 4 informações mais significativas
486
-
487
- Formate seu relatório em markdown, usando negrito para títulos de seções e subtítulos.
488
- Use o título de Análise parcial, use listas com marcadores quando apropriado
489
- para melhorar a legibilidade.
490
-
491
- """,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
492
  },
493
  ],
494
  model="llama3-70b-8192",
495
  temperature=0.2,
496
- max_tokens=1500,
497
  )
498
  return initial_analysis.choices[0].message.content
499
  except Exception as e:
@@ -528,77 +579,31 @@ col1, col2 = st.columns(2)
528
 
529
  with col1:
530
  with st.expander("Resumo Inicial", expanded=True):
531
- if "initial_analysis" in st.session_state:
532
  st.write("**Panorama Geral dos Dados:**")
533
  markdown_content = st.session_state.initial_analysis
534
 
535
- html_content = f'''
536
- <div style="height:600px; overflow-y: auto; padding: 10px; border: 1px solid #CCC;">
537
- {markdown_content}
538
- </div>
539
- '''
 
540
 
541
- st.markdown(html_content, unsafe_allow_html=True)
542
 
543
- # Botão para baixar o documento em formato Word
544
- docx_file = create_word_doc(markdown_content)
545
- st.download_button(
546
- label="Baixar em formato Word",
547
- data=docx_file.getvalue(),
548
- file_name="analise_inicial.docx",
549
- mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
550
- )
 
 
551
  else:
552
  st.write("**Clique em 'Gerar Resumo' para analisar os dados.**")
553
-
554
- # with st.expander("Resumo Inicial", expanded=True):
555
- # if "initial_analysis" in st.session_state:
556
- # st.write("**Panorama Geral dos Dados:**")
557
- # markdown_content = st.session_state.initial_analysis
558
-
559
- # html_content = f'''
560
- # <div style="height:600px; overflow-y: auto; padding: 10px; border: 1px solid #CCC;">
561
- # {markdown_content}
562
- # </div>
563
- # '''
564
-
565
- # st.markdown(html_content, unsafe_allow_html=True)
566
-
567
- # # Botão para baixar o documento em formato Word
568
- # docx_file = create_word_doc(markdown_content)
569
- # st.download_button(
570
- # label="Baixar em formato Word",
571
- # data=docx_file,
572
- # file_name="analise_inicial.docx",
573
- # mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
574
- # )
575
- # else:
576
- # st.write("**Clique em 'Gerar Resumo' para analisar os dados.**")
577
-
578
- # if "initial_analysis" in st.session_state:
579
- # st.write("**Panorama Geral dos Dados:**")
580
- # markdown_content = st.session_state.initial_analysis
581
-
582
- # html_content = f'''
583
- # <div style="height:500px; overflow-y: auto; padding: 10px; border: 1px solid #CCC;">
584
- # {markdown_content}
585
- # </div>
586
- # '''
587
-
588
- # st.markdown(html_content, unsafe_allow_html=True)
589
- # else:
590
- # st.write("**Clique em 'Gerar Resumo' para analisar os dados.**")
591
-
592
- # if "initial_analysis" in st.session_state:
593
- # st.write("**Panorama Geral dos Dados:**")
594
- # st.text_area(
595
- # "Análise Inicial",
596
- # value=st.session_state.initial_analysis,
597
- # height=300,
598
- # disabled=False,
599
- # )
600
- # else:
601
- # st.write("**Clique em 'Gerar Resumo' para analisar os dados.**")
602
 
603
  with col2:
604
  with st.expander("Converse com o 🤖 Zé Flamengo", expanded=True):
@@ -704,3 +709,37 @@ with col2:
704
  st.session_state.groq_chat_history = []
705
  st.rerun()
706
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
424
  # Retornar o objeto BytesIO contendo o documento Word
425
  return docx_file
426
 
427
+ dados_contagem = """
428
+ Aqui estão os dados demográficos e socioeconômicos relevantes da cidade
429
+ de Contagem, Minas Gerais, com base no Censo 2022 e outras fontes oficiais:
430
+
431
+ - População total: 621.863 habitantes
432
+ - Densidade demográfica: 3.193,21 hab/km²
433
+ - Área territorial: 194,746 km²
434
+ - PIB per capita: R$ 54.136,41 (2021)
435
+ - 3º maior PIB de Minas Gerais
436
+ - Importante polo industrial da Região Metropolitana de Belo Horizonte
437
+ - Sede do CEASA-MG, o maior entreposto de hortifrutigranjeiros do Brasil
438
+ - 3ª cidade mais populosa de Minas Gerais
439
+ - 16ª cidade mais populosa da região Sudeste
440
+ - 33ª cidade mais populosa do Brasil
441
+ - Estimativa de população em idade escolar (4 a 17 anos): 22% do total
442
+ - Estimativa de idosos (60 anos ou mais): 14% do total
443
+ - Estimativa de distribuição por sexo: 52% mulheres, 48% homens
444
+ - Estimativa de distribuição racial: 50% pardos, 40% brancos, 9% pretos,
445
+ 1% outros
446
+ - Estimativa de pessoas com pelo menos uma deficiência: 8% da população
447
+ - Estimativa de prevalência de doenças crônicas: 25% da população adulta
448
+ - Número estimado de unidades de saúde: 80
449
+ """
450
+
451
+
452
+
453
  # Função para gerar a análise inicial
454
  def generate_initial_analysis(resumo_rci):
455
  """
 
484
  {
485
  "role": "user",
486
  "content": f"""
487
+ Aqui estão os dados para análise:
488
+ <resumo_rci>
489
+ {resumo_rci}
490
+ </resumo_rci>
491
+
492
+ Analise cuidadosamente os dados fornecidos e os dados de Contagem:
493
+ <resumo_contagem>
494
+ {dados_contagem}
495
+ </resumo_contagem>
496
+
497
+ Crie um relatório seguindo o modelo apresentado. O relatório deve
498
+ incluir as seguintes seções:
499
+
500
+ 1. Informações gerais (data, cidadãos ativos, saída,
501
+ mudança de território, óbito)
502
+
503
+ 2. Faixa Etária (Crianças de 0 a 2 anos, 0 a 4 anos,
504
+ mulheres na faixa etária de preventivo 25 a 64 anos,
505
+ mulheres na faixa etária de mamografia 50 a 69 anos,
506
+ idosos acima de 60 anos total, masculino e feminino)
507
+
508
+ 3. Comparação de Sexo
509
+ 4. Análise de Raça / Cor
510
+ 5. Análise de Escolaridade
511
+ 6. Orientação Sexual
512
+ 7. Deficiências
513
+ 8. Situações de Saúde
514
+
515
+ Para cada seção:
516
+ - Calcule os totais e percentuais relevantes
517
+ - Faça comparações quando apropriado (por exemplo,
518
+ entre masculino e feminino)
519
+ - Destaque, ao final, as 4 informações mais significativas
520
+ - Formate seu relatório em markdown, usando negrito para títulos
521
+ de seções e subtítulos. Use o título de Análise parcial, use listas
522
+ com marcadores quando apropriado para melhorar a legibilidade.
523
+
524
+ Após o relatório, forneça 5 insights relevantes, abordando:
525
+ **Principais desafios de saúde pública para Contagem**
526
+ **Necessidades específicas dos grupos etários (crianças, adultos e idosos)**
527
+ **Implicações da distribuição racial e de gênero para políticas de saúde locais**
528
+ **Estratégias de prevenção e promoção da saúde adequadas ao perfil da população**
529
+ **Desafios educacionais e sua relação com a saúde da população de Contagem**
530
+
531
+ Para cada insight:
532
+
533
+ - Explique sua importância no contexto específico de Contagem
534
+ - Sugira uma ação ou política que poderia ser implementada pela
535
+ administração municipal
536
+ - Indique quais dados adicionais seriam úteis para uma análise
537
+ mais aprofundada da situação em Contagem
538
+ - Considere as particularidades desta amostra da população de
539
+ Contagem em relação aos desafios típicos de cidades de porte
540
+ médio em Minas Gerais, quando possível.
541
+ """,
542
+
543
  },
544
  ],
545
  model="llama3-70b-8192",
546
  temperature=0.2,
547
+ max_tokens=4000,
548
  )
549
  return initial_analysis.choices[0].message.content
550
  except Exception as e:
 
579
 
580
  with col1:
581
  with st.expander("Resumo Inicial", expanded=True):
582
+ if "initial_analysis" in st.session_state and st.session_state.initial_analysis:
583
  st.write("**Panorama Geral dos Dados:**")
584
  markdown_content = st.session_state.initial_analysis
585
 
586
+ if markdown_content and markdown_content.strip():
587
+ html_content = f'''
588
+ <div style="height:300px; overflow-y: auto; padding: 10px; border: 1px solid #CCC;">
589
+ {markdown_content}
590
+ </div>
591
+ '''
592
 
593
+ st.markdown(html_content, unsafe_allow_html=True)
594
 
595
+ # Botão para baixar o documento em formato Word
596
+ docx_file = create_word_doc(markdown_content)
597
+ st.download_button(
598
+ label="Baixar em formato Word",
599
+ data=docx_file.getvalue(),
600
+ file_name="analise_inicial.docx",
601
+ mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
602
+ )
603
+ else:
604
+ st.warning("Não há conteúdo disponível para gerar o documento.")
605
  else:
606
  st.write("**Clique em 'Gerar Resumo' para analisar os dados.**")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
607
 
608
  with col2:
609
  with st.expander("Converse com o 🤖 Zé Flamengo", expanded=True):
 
709
  st.session_state.groq_chat_history = []
710
  st.rerun()
711
 
712
+
713
+
714
+ # f"""
715
+ # Aqui estão os dados para análise:
716
+ # <resumo_rci>
717
+ # {resumo_rci}
718
+ # </resumo_rci>
719
+
720
+ # Analise cuidadosamente os dados fornecidos e crie um relatório
721
+ # seguindo o modelo apresentado. O relatório deve incluir as seguintes
722
+ # seções:
723
+ # 1. Informações gerais (data, cidadãos ativos, saída,
724
+ # mudança de território, óbito)
725
+ # 2. Faixa Etária (Crianças de 0 a 2 anos, 0 a 4 anos, mulheres
726
+ # na faixa etária de preventivo 25 a 64 anos, mulheres na faixa etária de
727
+ # mamomagrafia 50a 69 anos, idosos acima de 60 anos total, masculino e feminino)
728
+ # 3. Comparação de Sexo
729
+ # 4. Análise de Raça / Cor
730
+ # 5. Análise de Escolaridade
731
+ # 6. Orientação Sexual
732
+ # 7. Deficiências
733
+ # 8. Situações de Saúde Gerais
734
+
735
+ # Para cada seção:
736
+ # - Calcule os totais e percentuais relevantes
737
+ # - Faça comparações quando apropriado (por exemplo, entre masculino
738
+ # e feminino)
739
+ # - Destaque, ao final as 4 informações mais significativas
740
+
741
+ # Formate seu relatório em markdown, usando negrito para títulos de seções e subtítulos.
742
+ # Use o título de Análise parcial, use listas com marcadores quando apropriado
743
+ # para melhorar a legibilidade.
744
+
745
+ # """,