turicas / covid19-br

Dados diários mais recentes do coronavírus por município brasileiro
https://brasil.io/dataset/covid19
GNU Lesser General Public License v3.0
530 stars 128 forks source link

Estudar microdados do Ministério da Saúde #139

Open turicas opened 4 years ago

turicas commented 4 years ago

O @augusto-herrmann comentou que existem microdados disponíveis no CKAN do Ministério da Saúde. Precisamos verificar se:

Relacionado às seguintes issues:

IMPORTANTE: quando possível, publique trechos de código que foram desenvolvidos para fazer as análises/comparações.

misaelbr commented 4 years ago

@turicas Eu tenho acompanhado e comparado os casos, com as informações do Gov. Federal e da SES-RS. O que tenho percebido é que nem sempre a base do Gov. Federal consolida as infos da SES no mesmo dia, por conta dos horários. Com relação aos casos do RS, em geral tem uma defasagem de um dia nos dados.

turicas commented 4 years ago

@endersonmaia comentou sobre o formato dos registros:

{
          "source_id" : "NB73NHduwm",
          "dataSintomas" : "2020-03-26T03:00:00.000Z",
          "dataRegistro" : "2020-03-26T03:00:00.000Z",
          "dataAtualizacao" : "2020-03-30T15:45:09.584Z",
          "dataNascimento" : "1988-07-26T03:00:00.000Z",
          "numeroNotificacao" : "272000027972",
          "municipio" : "MACEIÓ",
          "estado" : "ALAGOAS",
          "municipioNotificacao" : "MACEIÓ",
          "estadoNotificacao" : "ALAGOAS",
          "cep" : "",
          "comorbidades" : true,
          "numeroCnes" : "2005689",
          "confirmado" : false,
          "sexo" : "Feminino",
          "excluido" : false,
          "fonte" : "esusve",
          "geo" : {
            "lon" : -35.720010699999996,
            "lat" : -9.6358461
          },
          "idade" : 31,
          "sinaisGravidade" : true,
          "sinaisRespiratorios" : true
}

Olhando rapidamente e comparando com os microdados das SES que já estudamos (#123), parece que:

endersonmaia commented 4 years ago

https://opendatasus.saude.gov.br/dataset/casos-nacionais

Limitações dos dados:

Os dados disponíveis não apresentam informações de estados e municípios que utilizam sistemas próprios de notificação de casos suspeitos de Covid-19 e, portanto, os dados para esses locais podem apresentar informações distintas.

Estes dados são preliminares, sujeitos a avaliação.

As bases estão sendo avaliadas e harmonizadas, com o objetivo de ser verificada sua consistência, principalmente em relação a atualização dos dados.

Para maiores informações, consultar a Ficha de Investigação e o Instrutivo de preenchimento da ficha, disponíveis por meio do link: https://datasus.saude.gov.br/notifica/

augusto-herrmann commented 4 years ago

Uma informação a descobrir também é ao que se refere esse ponto geográfico latitude e longitude. Se é o local de atendimento, de testagem, de internação ou de residência do paciente (espero que não), ou se é apenas um centroide do município ou algo assim.

Segundo a documentação do dataset, as informações disponíveis são as da Ficha de Investigação Covid-19. Nas instruções de preenchimento da ficha há descrições para os campos que podem servir como uma espécie de dicionário de dados, mas nem na ficha e nem das instruções há o campo latitude e longitude. Suponho que essa informação deva ser provavelmente derivada do centroide do município ou CEP informados.

Metadados

Os metadados podem ser derivados das instruções presentes no documento "Instrutivo de preenchimento da ficha de notificação", embora os nomes dos campos não se alinhem perfeitamente. Outra diferença presente é que os campos que identificam a pessoa ou que comprometeriam a intimidade da pessoa, como o CPF, CNS, nome, endereço e telefone, é claro, estão suprimidos nos dados.

Campo Descrição
(Número da notificação): campo interno gerado automaticamente pelo sistema.
UF (Unidade Federada): corresponde à UF que realizou a notificação; campo interno gerado automaticamente pelo sistema, a partir do operador logado.
Município de notificação corresponde ao município que realizou a notificação; campo interno gerado automaticamente pelo sistema, a partir do operador logado.
Tem CPF? Informar se o paciente tem CPF (Sim/Não). CAMPO OBRIGATÓRIO. Se selecionado “Sim”, preencher campo“CPF”. Se não, preencher os campos “Estrangeiro” (Sim /Não), “CNS”e Nome Completo da Mãe.
CPF Anotar o CPF do paciente. CAMPO OBRIGATÓRIO. OBS: Ao digitar um CPF, o sistema preenche automaticamente os campos nome completo, data de nascimento, sexo, raça/cor e endereço a partir dos dados da RFB/CNS. Somente o último campo citado poderá ser editado pelo operador.
Estrangeiro Informar se o paciente é estrangeiro (Sim/Não). CAMPO OBRIGATÓRIO. Se selecionado “Sim”, preencher os campos “País de origem” e “Passaporte”
CNS Preencher com o número do Cartão Nacional de Saúde do paciente.
País de origem Se estrangeiro, informar o país de origem. CAMPO OBRIGATÓRIO.
Passaporte Se estrangeiro, informar o número do passaporte. CAMPO OBRIGATÓRIO.
É profissional de saúde? Informar se o paciente é profissional de saúde (Sim/Não). CAMPO OBRIGATÓRIO. Se o paciente for profissional de saúde, informar o CBO.
Profissional de Segurança Informar se o paciente é profissional de segurança(Sim/Não).
CBO Selecionar o código/ocupação do paciente quando for profissional de saúde. CAMPO OBRIGATÓRIO.
Nome Completo preencher com o nome completo do paciente (sem abreviações). CAMPO OBRIGATÓRIO.
Nome Completo da Mãe preencher com o nome completo da mãe do paciente (sem abreviações). CAMPO OBRIGATÓRIO, se variável “TemCPF?” for preenchido como não.
Data de nascimento informar a data de nascimento do paciente (dia/mês/ano). CAMPO OBRIGATÓRIO.
Sexo informar o sexo do paciente (Masculino/Feminino). CAMPO OBRIGATÓRIO.
Raça/cor informar a raça/cor declarada pelo paciente (Branca/Preta/Amarela/Parda/Indígena).
CEP informar o CEP – código de endereçamento postal do logradouro da residência do paciente. Indivíduo não sabe o CEP, preencher com 00000-000. CAMPO OBRIGATÓRIO.
Logradouro Anotar o tipo (avenida, rua, travessa, etc) e o nome completo do logradouro da residência do paciente. Se pessoa em situação de rua, cigano ou análogo, preencher com o termo "inexistente", caso a pessoa não tenha endereço. Se estrangeiro, preencher com dados do endereço onde esteja hospedado. CAMPO OBRIGATÓRIO.
Número (SN) preencher com o número do logradouro daresidência do paciente. Se não houver, preencher com SN.
Complemento Anotar o complemento do logradouro (ex. Bloco B, apto 402, lote 25, casa 14, etc).Se pessoa em situação de rua, cigano ou análogo,preencher com a informação equivalente ao grupo populacional que pertence (situação de rua, cigano, circense, ribeirinho, do campo...)
Bairro Anotar o nome do bairro de residência do paciente. CAMPO OBRIGATÓRIO.
UF/Estado de residência Selecionar a unidade de federação da residência do paciente. CAMPO OBRIGATÓRIO.
Município de residência Selecionar o município de residência do paciente. CAMPO OBRIGATÓRIO.
Telefone celular Informar o telefone celular do paciente.
Telefone de contato Informar o telefone celular do paciente.
Data da Notificação Anotar a data da notificação (data de preenchimento da ficha de notificação). CAMPO OBRIGATÓRIO.
Sintomas Selecionar os sintomas (Dor de garganta, Dispneia, Febre, Tosse e Outros)relatados pelo paciente ou aferido pelo profissional de saúde. Se sintomas “Outros” que não os listados, especificar (campo aberto). CAMPO OBRIGATÓRIO. OBS: Se o paciente for assintomático, porém com resultado positivo para COVID-19, selecionar “Outros”, e preencher com “Assintomático”
Data do início dos sintomas informar a data de início dos sintomas relatados pelo paciente. CAMPO OBRIGATÓRIO. OBS: Se o paciente for assintomático, porém com resultado positivo para COVID-19, informar a data da notificação.
Condições selecionar as condições associadas.
Estado do teste informar se o exame foi solicitado, coletado ou concluído.Se selecionada a categoria “Coletado”, preencher a data da coleta do teste. Se selecionada a categoria “Concluído”, preencher os campos “Data da Coleta do Teste”, “Tipo de Teste” e “Resultado do Teste”.
Data da coleta do teste informar a data da coleta do exame. CAMPO OBRIGATÓRIO.
Tipo de teste Selecionar o teste que foi realizado (Teste rápido –anticorpo, Teste rápido –antígeno, RT-PCR). CAMPO OBRIGATÓRIO. OBS: Caso o paciente tenha resultado positivo ou negativo tanto para teste rápido quanto para RT-PCR, selecionar a opção RT-PCR.
Resultado do teste Informar se o resultado do exame foi negativo ou positivo para COVID-19. CAMPO OBRIGATÓRIO.
Classificação final
  • Selecionar “Confirmação laboratorial”, se o paciente teve resultado positivo para COVID-19;
  • Selecionar “Confirmação clínico-epidemiológica”, se não houve realização de exame, mas o paciente relata histórico de contato próximo ou domiciliar, nos últimos 7 dias antes do aparecimento dos sintomas, com caso confirmado laboratorialmente para COVID-19; e
  • Selecionar “Descartado”, se o exame foi negativo para COVID-19.
Evolução do caso Informar a evolução do caso, independentemente do resultado do teste e da classificação final do paciente. OBS: A categoria “Cancelado” significa excluir ficha.
Data de encerramento Informar a data do encerramento. CAMPO OBRIGATÓRIO, se o campo “Evolução do caso” for preenchido.
endersonmaia commented 4 years ago

@augusto-herrmann o geo parece se referir Estabelecimento de Saúde

fiz o teste com o exemplo do comentário https://github.com/turicas/covid19-br/issues/139#issuecomment-631438436

...
  "numeroCnes" : "2005689",
  "geo" : {
    "lon" : -35.720010699999996,
    "lat" : -9.6358461
  },
...

essa consulta fiz no CSV que baixei do site do CNES

sqlite> SELECT CO_UNIDADE ,NO_FANTASIA, NO_LOGRADOURO, NO_BAIRRO, NU_LATITUDE, NU_LONGITUDE FROM tbEstabelecimento WHERE CO_CNES = '2005689';
CO_UNIDADE,NO_FANTASIA,NO_LOGRADOURO,NO_BAIRRO,NU_LATITUDE,NU_LONGITUDE
2704302005689,"UNIDADE DE SAUDE DA FAMILIA JOSE ARAUJO SILVA 5 DS","RUA PASTOR EURICO CALHEIROS",JACINTINHO,-9.6361538,-35.7206729

link para o cadastro no CNES

http://cnes2.datasus.gov.br/cabecalho_reduzido.asp?VCod_Unidade=2704302005689

Xukinorris commented 4 years ago

Fiz um código simples e capturei os dados do estado onde moro:

from elasticsearch import Elasticsearch
from elasticsearch_dsl import Search
import pandas as pd

# criando conexão com ES
client = Elasticsearch(hosts='https://user-public-notificacoes:Za4qNXdyQNSa9YaA@elasticsearch-saps.saude.gov.br')

# configurando a consulta
s = Search(using=client, index='desc-notificacoes-esusve-df')

# usando método scan para capturar todos os registros do index
df = pd.concat([pd.DataFrame(hit.to_dict(), index=[i]) for i, hit in enumerate(s.scan())])

Fiz esse código apenas para testar o acesso. Aqui na minha residência a carga dos dados do DF levou 2m e 25s, para ingerir 24980 registros, com as 23 colunas.

Vou tentar calcular algumas análises descritivas e postar aqui mais tarde.

Espero ter sido útil.

endersonmaia commented 4 years ago

@Xukinorris é importante baixar os dados todos, e trabalhar com eles localmente

mas tb se possível, sugiro uma abordagem alternativa, é possível fazer as agregações direto na consulta ao ES, e já retornaria os dados agregados

assim é possível usar um filtro como dataAtualizacao e fazer a consulta com maior frequência e manter-se atualizado durante o dia

até tentei o endpoint /_sql, mas o usuário não tem permissão suficiente

Xukinorris commented 4 years ago

Boa @endersonmaia , vou tentar dar uma estudada no ÉS, não é a minha “ferramenta padrão” de uso.

Se conseguir algo retorno aqui...

geamaro commented 4 years ago

Os dados disponibilizados não podem ser utilizados para questões relacionadas à COVID-19. Há pouco tempo havia uma tabela exclusiva com informações detalhadas de casos de COVID-19. Essa tabela deixou de estar disponível nos últimos 15 dias.

endersonmaia commented 4 years ago

@endersonmaia comentou sobre o formato dos registros: ... Olhando rapidamente e comparando com os microdados das SES que já estudamos (#123), parece que:

  • Tem informação da unidade de saúde onde a pessoa foi atendida (numeroCnes), isso não parece existir nos microdados das SES
  • Nos microdados das SES parece que temos mais informações que no MS, como algumas comorbidades

percebi que há diferenças entre os schemas dos Estados, nem todos os campos são preenchidos sempre

segue script pra baixar o mapping do ES e um documento de exemplo

#!/usr/bin/env bash

ESTADOS="ac al am ap az ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp te to uf"

for uf in $ESTADOS; do
    mkdir -p ./elastic/$uf
    curl -sSL -XGET -H "Content-Type: application/json" "https://user-public-notificacoes:Za4qNXdyQNSa9YaA@elasticsearch-saps.saude.gov.br/desc-notificacoes-esusve-$uf/_mapping" | jq . > ./elastic/$uf/mapping.json
    curl -sSL -XPOST -H "Content-Type: application/json" "https://user-public-notificacoes:Za4qNXdyQNSa9YaA@elasticsearch-saps.saude.gov.br/desc-notificacoes-esusve-$uf/_search" -d '{"query":{"match_all":{}},"size":1,"sort":[{"@timestamp":{"order":"desc"}}]}' | jq '.hits.hits[0]._source' > ./elastic/$uf/sample.json
done
endersonmaia commented 4 years ago

script de exemplo para baixar tudo

#!/usr/bin/env bash

ESTADOS="ac al am ap az ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp te to uf"

for uf in $ESTADOS; do
    mkdir -p ./opendatasus/$uf
    curl -sSL "https://s3-sa-east-1.amazonaws.com/ckan.saude.gov.br/dados-$uf.csv" -o ./opendatasus/$uf/dados-$uf-$(date +%Y%m%d%H%M%S)Z.csv
done

csv sample

id;dataNotificacao;dataInicioSintomas;dataNascimento;sintomas;profissionalSaude;cbo;condicoes;estadoTeste;dataTeste;tipoTeste;resultadoTeste;paisOrigem;sexo;bairro;estado;municipio;origem;cnes;estadoNotificacao;municipioNotificacao;numeroNotificacao;excluido;validado;idade;dataEncerramento;evolucaoCaso;classificacaoFinal
cEGtnbqd2K;2020-05-19T03:00:00.000Z;2020-05-12T03:00:00.000Z;2002-11-02T03:00:00.000Z;Dispneia, Febre, Tosse;Não;null;null;Concluído;2020-05-19T03:00:00.000Z;TESTE RÁPIDO - ANTICORPO;Negativo;undefined;Feminino;CENTRO;ALAGOAS;Arapiraca;undefined;2004798;Alagoas;Arapiraca;272001809596;undefined;undefined;17;;;
RUbOsgjCE9;2020-05-21T14:35:31.276Z;2020-05-10T03:00:00.000Z;1956-12-08T03:00:00.000Z;Tosse, Febre, Outros;Não;null;Doenças cardíacas crônicas;Concluído;2020-05-20T03:00:00.000Z;TESTE RÁPIDO - ANTICORPO;Negativo;undefined;Feminino;Novo Mundo;ALAGOAS;Maceió;undefined;undefined;Alagoas;Maceió;272001809746;undefined;undefined;63;;;
EYdWGgRDnk;2020-05-21T14:38:44.135Z;2020-05-05T03:00:00.000Z;1969-05-04T03:00:00.000Z;Tosse;Não;null;null;null;null;null;null;undefined;Masculino;CLIMA BOM;ALAGOAS;Maceió;undefined;2005727;Alagoas;Maceió;272001809755;undefined;undefined;51;;;
Xz34YcOPPp;2020-05-17T19:20:29.957Z;2020-05-15T03:00:00.000Z;1983-10-14T03:00:00.000Z;Outros;Sim;2236 - Fisioterapeuta;null;Concluído;2020-05-15T03:00:00.000Z;TESTE RÁPIDO - ANTICORPO;Positivo;undefined;Masculino;TAPERAGUA;ALAGOAS;Marechal Deodoro;undefined;980016002123992 ;Alagoas;São Miguel dos Campos;272001437321;undefined;undefined;36;2020-05-21T03:00:00.000Z;Em tratamento domiciliar;Confirmado Laboratorial
...