drguilhermeapolinario commited on
Commit
66237ff
·
verified ·
1 Parent(s): 5fe4934

Update views/rci.py

Browse files
Files changed (1) hide show
  1. views/rci.py +212 -202
views/rci.py CHANGED
@@ -13,7 +13,7 @@ from io import BytesIO
13
  from docx import Document
14
  from html2docx import html2docx
15
  import markdown
16
-
17
 
18
  #################################
19
  ############ BANNER #############
@@ -424,32 +424,129 @@ def create_word_doc(markdown_content):
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
- - Taxa de escolarização de 6 a 14 anos de idade [2010]: 97,4 %
435
- - Homens: 297729 - 48,13%
436
- - Mulheres: 324134 - 51,87%
437
- - Crianças de 0 a 4 anos: 34,870
438
- - Mulheres na faixa etária de preventivo (25 a 64 anos): 188,545
439
- - Mulheres na faixa etária de mamografia (50 a 69 anos): 73,631
440
- - Idosos acima de 60 anos (total): 97,549
441
- - Idosos acima de 60 anos (masculino): 41,349
442
- - Idosos acima de 60 anos (feminino): 56,200
443
- - Branca: 35,47%
444
- - Preta: 14,08%
445
- - Amarela: 0,12%
446
- - Parda: 50,23%
447
- - Indígena: 0,10%
448
- - Estimativa de pessoas com pelo menos uma deficiência: 8% da população
449
- - Estimativa de prevalência de doenças crônicas: 25% da população adulta
450
- - Número estimado de unidades de saúde: 80
451
- """
452
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
453
 
454
 
455
  # Função para gerar a análise inicial
@@ -474,101 +571,22 @@ def generate_initial_analysis(resumo_rci):
474
  quando apropriado para melhorar a legibilidade. Apresente seu relatório final dentro de tags
475
  <relatorio></relatorio>."
476
  """
 
 
477
  try:
478
  initial_analysis = client.chat.completions.create(
479
  messages=[
480
  {
481
  "role": "system",
482
- "content": "Você é um assistente de análise de dados de saúde. "
483
- "Sua tarefa é analisar os dados fornecidos e criar um relatório "
484
- "detalhado seguindo o modelo especificado. O relatório deve ser escrito em português.",
485
  },
486
  {
487
  "role": "user",
488
- "content": f"""
489
- Você é um assistente especializado em análise de dados
490
- de saúde para territórios e microáreas. Sua tarefa é
491
- analisar dados de uma microárea de saúde específica e
492
- compará-los com os dados gerais da cidade de Contagem,
493
- Minas Gerais, Brasil. Use os seguintes dados como
494
- referência para Contagem:
495
-
496
- <dados_contagem>
497
- População total: 621.863 habitantes
498
- Densidade demográfica: 3.193,21 hab/km²
499
- Área territorial: 194,746 km²
500
- Taxa de escolarização de 6 a 14 anos de idade [2010]: 97,4 %
501
- Homens: 297729 - 48,13%
502
- Mulheres: 324134 - 51,87%
503
- Crianças de 0 a 4 anos: 34,870
504
- Mulheres na faixa etária de preventivo (25 a 64 anos): 188,545
505
- Mulheres na faixa etária de mamografia (50 a 69 anos): 73,631
506
- Idosos acima de 60 anos (total): 97,549
507
- Idosos acima de 60 anos (masculino): 41,349
508
- Idosos acima de 60 anos (feminino): 56,200
509
- Branca: 35,47%
510
- Preta: 14,08%
511
- Amarela: 0,12%
512
- Parda: 50,23%
513
- Indígena: 0,10%
514
- Estimativa de pessoas com pelo menos uma deficiência: 8% da população
515
- Estimativa de prevalência de doenças crônicas: 25% da população adulta
516
- Número estimado de unidades de saúde: 80
517
- </dados_contagem>
518
-
519
- Agora, analise os seguintes dados da microárea:
520
-
521
- <resumo_rci>
522
- {resumo_rci}
523
- </resumo_rci>
524
-
525
- Com base nesses dados, crie um relatório seguindo este modelo:
526
-
527
- 1. Crie um título "# Análise de Microárea de Saúde em Contagem, MG"
528
-
529
- 2. Crie as seguintes seções, usando subtítulos em markdown (##):
530
-
531
- ## Informações Gerais
532
- ## Faixa Etária
533
- ## Comparação de Sexo
534
- ## Análise de Raça / Cor
535
- ## Análise de Escolaridade
536
- ## Orientação Sexual
537
- ## Deficiências
538
- ## Situações de Saúde
539
-
540
- 3. Para cada seção:
541
- - Calcule os totais e percentuais relevantes
542
- - Faça comparações quando apropriado (por exemplo, entre masculino e feminino)
543
- - Compare os dados da microárea com os dados gerais de Contagem
544
- - Destaque, ao final de cada seção, as 2 informações mais significativas
545
- - Use listas com marcadores quando apropriado para melhorar a legibilidade
546
-
547
- 4. Após o relatório, crie uma seção chamada "## Insights e Recomendações"
548
-
549
- 5. Nesta seção, forneça 5 insights relevantes, abordando:
550
- - Principais desafios de saúde pública para a microárea
551
- - Necessidades específicas dos grupos etários (crianças, adultos e idosos)
552
- - Implicações da distribuição racial e de gênero para políticas de saúde locais
553
- - Estratégias de prevenção e promoção da saúde adequadas ao perfil da população
554
- - Desafios educacionais e sua relação com a saúde da população da microárea
555
-
556
- 6. Para cada insight:
557
- - Explique sua importância no contexto comparativo entre a microárea e Contagem
558
- - Sugira uma ação ou política de saúde que poderia ser implementada pela equipe
559
- de saúde da família
560
-
561
- 7. Conclua o relatório com uma seção "## Conclusão", resumindo os principais pontos
562
- e recomendações.
563
-
564
- Formate todo o relatório em markdown, usando negrito, itálico e listas quando apropriado
565
- para melhorar a legibilidade e estrutura.
566
- """,
567
-
568
  },
569
  ],
570
  model="llama-3.1-70b-versatile",
571
- temperature=0.2,
572
  max_tokens=8000,
573
  top_p=0.5,
574
  stream=True,
@@ -612,14 +630,7 @@ if uploaded_file is not None:
612
  # Botão para gerar o resumo
613
  if st.button("Gerar Resumo"):
614
  resumo_final()
615
- # with st.spinner("Gerando resumo..."):
616
- # st.session_state.resumo_rci = (
617
- # gerar_resumo_df()
618
- # ) # Gera o resumo do DataFrame
619
- # st.session_state.initial_analysis = generate_initial_analysis(
620
- # st.session_state.resumo_rci
621
- # )
622
- # st.success("Resumo gerado com sucesso!")
623
 
624
  col1, col2 = st.columns(2)
625
 
@@ -757,95 +768,94 @@ with col2:
757
 
758
 
759
 
 
760
  # f"""
761
- # Aqui estão os dados para análise:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
762
  # <resumo_rci>
763
  # {resumo_rci}
764
  # </resumo_rci>
765
 
766
- # Analise cuidadosamente os dados fornecidos e crie um relatório
767
- # seguindo o modelo apresentado. O relatório deve incluir as seguintes
768
- # seções:
769
- # 1. Informações gerais (data, cidadãos ativos, saída,
770
- # mudança de território, óbito)
771
- # 2. Faixa Etária (Crianças de 0 a 2 anos, 0 a 4 anos, mulheres
772
- # na faixa etária de preventivo 25 a 64 anos, mulheres na faixa etária de
773
- # mamomagrafia 50a 69 anos, idosos acima de 60 anos total, masculino e feminino)
774
- # 3. Comparação de Sexo
775
- # 4. Análise de Raça / Cor
776
- # 5. Análise de Escolaridade
777
- # 6. Orientação Sexual
778
- # 7. Deficiências
779
- # 8. Situações de Saúde Gerais
780
-
781
- # Para cada seção:
782
- # - Calcule os totais e percentuais relevantes
783
- # - Faça comparações quando apropriado (por exemplo, entre masculino
784
- # e feminino)
785
- # - Destaque, ao final as 4 informações mais significativas
786
-
787
- # Formate seu relatório em markdown, usando negrito para títulos de seções e subtítulos.
788
- # Use o título de Análise parcial, use listas com marcadores quando apropriado
789
- # para melhorar a legibilidade.
790
-
791
- # """,
792
 
 
793
 
 
794
 
 
 
 
 
 
 
 
 
795
 
796
- # Aqui estão os dados da microárea de saúde para análise:
797
- # <resumo_rci>
798
- # {resumo_rci}
799
- # </resumo_rci>
800
-
801
- # Analise cuidadosamente os dados fornecidos, abaixo forneço
802
- # os dados da cidade de Contagem/mg:
803
- # <resumo_contagem>
804
- # {dados_contagem}
805
- # </resumo_contagem>
806
-
807
- # Crie um relatório seguindo o modelo apresentado. O relatório deve
808
- # incluir as seguintes seções:
809
-
810
- # 1. Informações gerais (data, cidadãos ativos, saída,
811
- # mudança de território, óbito)
812
-
813
- # 2. Faixa Etária (Crianças de 0 a 2 anos, 0 a 4 anos,
814
- # mulheres na faixa etária de preventivo 25 a 64 anos,
815
- # mulheres na faixa etária de mamografia 50 a 69 anos,
816
- # idosos acima de 60 anos total, masculino e feminino)
817
-
818
- # 3. Comparação de Sexo
819
- # 4. Análise de Raça / Cor
820
- # 5. Análise de Escolaridade
821
- # 6. Orientação Sexual
822
- # 7. Deficiências
823
- # 8. Situações de Saúde
824
-
825
- # Para cada seção:
826
- # - Calcule os totais e percentuais relevantes
827
- # - Faça comparações quando apropriado (por exemplo,
828
- # entre masculino e feminino)
829
- # - Destaque, ao final, as 4 informações mais significativas
830
- # - Formate seu relatório em markdown, usando negrito para títulos
831
- # de seções e subtítulos. Use o título de Análise parcial, use listas
832
- # com marcadores quando apropriado para melhorar a legibilidade.
833
-
834
- # Após o relatório, e sabendo que aqui estamos comparando
835
- # dados de microareas de saúde em relação a contagem, forneça 5 insights relevantes, abordando:
836
- # **Principais desafios de saúde pública para Contagem**
837
- # **Necessidades específicas dos grupos etários (crianças, adultos e idosos)**
838
- # **Implicações da distribuição racial e de gênero para políticas de saúde locais**
839
- # **Estratégias de prevenção e promoção da saúde adequadas ao perfil da população**
840
- # **Desafios educacionais e sua relação com a saúde da população de Contagem**
841
-
842
- # Para cada insight:
843
-
844
- # - Explique sua importância no contexto específico de Contagem
845
- # - Sugira uma ação ou política que poderia ser implementada pela
846
- # administração municipal
847
- # - Indique quais dados adicionais seriam úteis para uma análise
848
- # mais aprofundada da situação em Contagem
849
- # - Considere as particularidades desta amostra da população de
850
- # Contagem em relação aos desafios típicos de cidades de porte
851
- # médio em Minas Gerais, quando possível.
 
13
  from docx import Document
14
  from html2docx import html2docx
15
  import markdown
16
+ import json
17
 
18
  #################################
19
  ############ BANNER #############
 
424
  # Retornar o objeto BytesIO contendo o documento Word
425
  return docx_file
426
 
427
+ json_prompt = f'''
428
+ {
429
+ "role": "Assistente especializado em análise de dados de saúde pública",
430
+ "foco": "Microáreas",
431
+ "tarefa_principal": "Realizar análise comparativa entre indicadores de saúde das microáreas e dados gerais de Contagem, Minas Gerais",
432
+ "dados_contagem": {
433
+ "populacao_total": 621863,
434
+ "homens": {
435
+ "quantidade": 297729,
436
+ "percentual": "48.13%"
437
+ },
438
+ "mulheres": {
439
+ "quantidade": 324134,
440
+ "percentual": "51.87%"
441
+ },
442
+ "criancas_0_4_anos": {
443
+ "quantidade": 34870,
444
+ "percentual": "5.61%"
445
+ },
446
+ "mulheres_preventivo_25_64_anos": {
447
+ "quantidade": 188545,
448
+ "percentual": "30.32%"
449
+ },
450
+ "mulheres_mamografia_50_69_anos": {
451
+ "quantidade": 73631,
452
+ "percentual": "11.84%"
453
+ },
454
+ "idosos_60_mais": {
455
+ "total": {
456
+ "quantidade": 97549,
457
+ "percentual": "15.68%"
458
+ },
459
+ "masculino": {
460
+ "quantidade": 41349,
461
+ "percentual": "6.65%"
462
+ },
463
+ "feminino": {
464
+ "quantidade": 56200,
465
+ "percentual": "9.03%"
466
+ }
467
+ },
468
+ "raca_cor": {
469
+ "branca": "35.47%",
470
+ "preta": "14.08%",
471
+ "amarela": "0.12%",
472
+ "parda": "50.23%",
473
+ "indigena": "0.10%"
474
+ },
475
+ "deficiencias": [
476
+ {"tipo": "Auditiva", "quantidade": 29312, "percentual": "4.71%"},
477
+ {"tipo": "Cognitiva", "quantidade": 7647, "percentual": "1.23%"},
478
+ {"tipo": "Motora", "quantidade": 35445, "percentual": "5.70%"},
479
+ {"tipo": "Visual", "quantidade": 123259, "percentual": "19.82%"},
480
+ {"tipo": "Outros", "quantidade": 1924, "percentual": "0.31%"}
481
+ ],
482
+ "escolaridade": [
483
+ {"nivel": "Sem instrução e fundamental incompleto", "quantidade": 223573, "percentual": "35.95%"},
484
+ {"nivel": "Fundamental completo e médio incompleto", "quantidade": 99192, "percentual": "15.95%"},
485
+ {"nivel": "Médio completo e superior incompleto", "quantidade": 157168, "percentual": "25.28%"},
486
+ {"nivel": "Superior completo", "quantidade": 35309, "percentual": "5.68%"},
487
+ {"nivel": "Não determinado", "quantidade": 7013, "percentual": "1.13%"}
488
+ ]
489
+ },
490
+ "dados_microarea": "{resumo_rci}",
491
+ "estrutura_relatorio": {
492
+ "titulo": "# Análise de Microárea de Saúde em Contagem, MG",
493
+ "secoes": [
494
+ "Informações Gerais",
495
+ "Faixa Etária",
496
+ "Comparação de Sexo",
497
+ "Análise de Raça / Cor",
498
+ "Análise de Escolaridade",
499
+ "Orientação Sexual",
500
+ "Deficiências",
501
+ "Situações de Saúde"
502
+ ],
503
+ "instrucoes_secao": [
504
+ "Calcule totais e percentuais relevantes",
505
+ "Compare, quando aplicável, os dados entre masculino e feminino",
506
+ "Compare os dados da microárea com os dados gerais de Contagem (quando disponível)",
507
+ "Destaque as 2 informações mais significativas de cada seção",
508
+ "Utilize listas com marcadores para melhorar a legibilidade"
509
+ ],
510
+ "insights_recomendacoes": {
511
+ "quantidade": 3,
512
+ "temas": [
513
+ "Principais desafios de saúde pública da microárea",
514
+ "Necessidades específicas dos grupos etários (crianças, adultos, idosos)",
515
+ "Estratégias de prevenção e promoção de saúde adequadas ao perfil da população",
516
+ "Desafios educacionais e sua relação com a saúde da microárea"
517
+ ]
518
+ },
519
+ "conclusao": "Resumo dos principais pontos e recomendações",
520
+ "formatacao": "Markdown, utilizando negrito, itálico e listas para melhorar a estrutura e legibilidade"
521
+ },
522
+ "contexto_adicional": {
523
+ "descricao": "Contagem, MG, cidade na região metropolitana de Belo Horizonte, com mais de 600.000 habitantes, é marcada por sua diversidade socioeconômica, com áreas altamente urbanizadas e regiões periurbanas que carecem de infraestrutura básica.",
524
+ "microareas": "As microáreas são territórios onde equipes de Saúde da Família atuam diretamente, cobrindo áreas vulneráveis e com diferentes níveis de acesso a recursos de saúde.",
525
+ "particularidades": "A distribuição desigual de renda e a presença de áreas periurbanas afetam o acesso aos serviços de saúde, principalmente em regiões mais distantes das UBS.",
526
+ "dados_historicos": "Nos últimos anos, Contagem enfrentou desafios significativos em áreas de vacinação e prevenção de doenças crônicas, devido à falta de recursos em algumas microáreas.",
527
+ "limitacoes_analise": [
528
+ {
529
+ "descricao": "Qualidade dos dados",
530
+ "impacto": "Possíveis cadastros desatualizados podem gerar estimativas imprecisas para alguns indicadores, especialmente para populações mais vulneráveis."
531
+ },
532
+ {
533
+ "descricao": "Fatores não quantificados",
534
+ "impacto": "Aspectos como condições de vida e transporte não são capturados diretamente, o que pode influenciar as desigualdades no acesso a serviços de saúde."
535
+ },
536
+ {
537
+ "descricao": "Dados desagregados",
538
+ "impacto": "A comparação entre microáreas e a média geral pode ser limitada, especialmente em grupos demográficos menores."
539
+ },
540
+ {
541
+ "descricao": "Tempo e contexto dos dados",
542
+ "impacto": "Mudanças recentes na política de saúde ou pandemia podem não estar refletidas nos dados mais antigos."
543
+ }
544
+ ]
545
+ }
546
+ }
547
+ '''
548
+
549
+ json_data = json.loads(json_prompt)
550
 
551
 
552
  # Função para gerar a análise inicial
 
571
  quando apropriado para melhorar a legibilidade. Apresente seu relatório final dentro de tags
572
  <relatorio></relatorio>."
573
  """
574
+
575
+
576
  try:
577
  initial_analysis = client.chat.completions.create(
578
  messages=[
579
  {
580
  "role": "system",
581
+ "content": json.dumps(json_data) # O JSON completo no campo 'content' do role 'system'
 
 
582
  },
583
  {
584
  "role": "user",
585
+ "content": resumo_rci,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
586
  },
587
  ],
588
  model="llama-3.1-70b-versatile",
589
+ temperature=0.1,
590
  max_tokens=8000,
591
  top_p=0.5,
592
  stream=True,
 
630
  # Botão para gerar o resumo
631
  if st.button("Gerar Resumo"):
632
  resumo_final()
633
+
 
 
 
 
 
 
 
634
 
635
  col1, col2 = st.columns(2)
636
 
 
768
 
769
 
770
 
771
+
772
  # f"""
773
+ # Você é um assistente especializado em análise de dados de saúde
774
+ # pública, com foco em microáreas. Sua principal tarefa é realizar
775
+ # uma análise comparativa entre os indicadores de saúde das microáreas
776
+ # vinculadas a uma unidade básica de saúde e os dados de saúde
777
+ # consolidados de Contagem, Minas Gerais. Utilize os seguintes dados
778
+ # de referência de Contagem para orientar sua análise:
779
+
780
+
781
+ # <dados_contagem>
782
+ # População total: 621.863 habitantes
783
+
784
+ # Homens: 297729 - 48,13%
785
+ # Mulheres: 324134 - 51,87%
786
+ # Crianças de 0 a 4 anos: 34870 - 5.61%
787
+ # Mulheres Preventivo (25 a 64 anos): 188545 - 30.32%
788
+ # Mulheres Mamografia (50 a 69 anos): 73631 - 11.84%
789
+ # Idosos + 60 anos (total): 97549 - 15.68%
790
+ # Idosos + 60 anos (masculino): 41349 - 6.65%
791
+ # Idosos + 60 anos (feminino): 56200 - 9.03%
792
+
793
+ # Raça e cor:
794
+ # Branca: 35,47%
795
+ # Preta: 14,08%
796
+ # Amarela: 0,12%
797
+ # Parda: 50,23%
798
+ # Indígena: 0,10%
799
+
800
+ # Deficiências:
801
+ # Auditiva: 29312 - 4.71%
802
+ # Cognitiva: 7647 - 1.23%
803
+ # Motora: 35445 - 5.70%
804
+ # Visual: 123259 - 19.82%
805
+ # Outros: 1924 - 0.31%
806
+
807
+ # Escolaridade:
808
+ # Sem instrução e fundamental incompleto: 223,573 - 35.95%
809
+ # Fundamental completo e médio incompleto: 99,192 - 15.95%
810
+ # Médio completo e superior: 192477 - 30.95%
811
+ # Não determinado: 7,013 - 1.13%
812
+
813
+ # </dados_contagem>
814
+
815
+ # Agora, analise os seguintes dados da microárea:
816
+
817
  # <resumo_rci>
818
  # {resumo_rci}
819
  # </resumo_rci>
820
 
821
+ # Com base nesses dados, crie um relatório seguindo este modelo:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
822
 
823
+ # 1. Título "# Análise de Microárea de Saúde em Contagem, MG"
824
 
825
+ # 2. Crie as seguintes seções, usando subtítulos em markdown (##):
826
 
827
+ # ## Informações Gerais
828
+ # ## Faixa Etária
829
+ # ## Comparação de Sexo
830
+ # ## Análise de Raça / Cor
831
+ # ## Análise de Escolaridade
832
+ # ## Orientação Sexual
833
+ # ## Deficiências
834
+ # ## Situações de Saúde
835
 
836
+ # 3. Para cada seção:
837
+ # - Calcule os totais e percentuais relevantes
838
+ # - Faça comparações quando apropriado (por exemplo, entre masculino e feminino)
839
+ # - Compare os dados da microárea com os dados gerais de Contagem (Somente se existirem)
840
+ # - Destaque, ao final de cada seção, as 2 informações mais significativas
841
+ # - Use listas com marcadores quando apropriado para melhorar a legibilidade
842
+
843
+ # 4. Após o relatório, crie uma seção chamada "## Insights e Recomendações"
844
+
845
+ # 5. Nesta seção, forneça 3 insights relevantes, abordando:
846
+ # - Principais desafios de saúde pública para a microárea
847
+ # - Necessidades específicas dos grupos etários (crianças, adultos e idosos)
848
+ # - Estratégias de prevenção e promoção da saúde adequadas ao perfil da população
849
+ # - Desafios educacionais e sua relação com a saúde da população da microárea
850
+
851
+ # 6. Para cada insight:
852
+ # - Explique sua importância no contexto comparativo entre a microárea e Contagem
853
+ # - Sugira uma ação ou política de saúde que poderia ser implementada pela equipe
854
+ # de saúde da família
855
+
856
+ # 7. Conclua o relatório com uma seção "## Conclusão", resumindo os principais pontos
857
+ # e recomendações.
858
+
859
+ # Formate todo o relatório em markdown, usando negrito, itálico e listas quando apropriado
860
+ # para melhorar a legibilidade e estrutura.
861
+ # """,