-
Notifications
You must be signed in to change notification settings - Fork 128
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Estudar dados consolidados do Ministério da Saúde #140
Comments
eu automatizei o download dos arquivos PDF e CSV (microdados) de Alagoas com um script rodando periodicamente no GitHub Actions e já faz acho válido para garantirmos que estamos baixando os arquivos e para avaliar modificações feitas, https://github.com/endersonmaia/covid19-alagoas/tree/master/sintomas poderíamos fazer algo parecido no Brasil.IO (tem que ver os limites do GitHub) |
@endersonmaia muito bom! Eu acho que podemos manter os arquivos em outro lugar (no storage do Brasil.IO, que é compatível com S3) e uma listagem com os links/datas. Mas para isso precisaríamos de um script que baixa esses dados (daí rodar o script automaticamente e subir no S3 podemos automatizar via GitHub ou de outra forma). |
O seguinte python script pega a url do dia para fazer o download. # Install: pip install helium
# Run: python fetch_consolidados_ms.py
import json
import sys
from time import sleep
from helium import S, click, kill_browser, start_chrome, wait_until
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
opts = webdriver.ChromeOptions()
opts.set_capability("loggingPrefs", {"performance": "ALL"})
driver = start_chrome("https://covid.saude.gov.br/", options=opts)
wait_until(S("ion-button").exists)
sleep(3)
click("Arquivo CSV")
def process_browser_log_entry(entry):
response = json.loads(entry["message"])["message"]
return response
URL = None
def fetch_download_url():
global URL
browser_log = driver.get_log("performance")
events = [process_browser_log_entry(entry) for entry in browser_log]
responses = [event for event in events if "Network.response" in event["method"]]
for r in responses:
if "params" not in r:
continue
params = r["params"]
if "response" not in params:
continue
if "url" not in params["response"]:
continue
url = params["response"]["url"]
if "HIST_PAINEL_COVIDBR" in url:
URL = url
return True
return False
try:
wait_until(fetch_download_url, timeout_secs=15)
except TimeoutException as e:
print("Failed!")
print(e)
else:
print("Success: {}".format(URL))
finally:
kill_browser()
if URL is None:
sys.exit(1) Por examplo, executando aqui no terminal: $ python fetch_consolidados_ms.py
Success: https://mobileapps.saude.gov.br/esus-vepi/files/unAFkcaNDeXajurGB7LChj8SgQYS2ptm/a3d153fe0e95aa7e0d3a585c317a1dc6_HIST_PAINEL_COVIDBR_20mai2020.xlsx Eh util? |
Há um erro terrível nesses dados, que observei para o Estado de Roraima (precisa confirmar se aconteceu a mesma coisa para outros estados): a data que consta como registro é um dia após o efetivo registro na Secretraria de Saúde do Estado. Isso porque baseia-se na data do Boletim Epidemiológico, que sai no dia seguinte pela manhã, sendo que os dados foram informados no dia anterior. |
O código dos municípios na tabela do MS consolidada não bate com o código IBGE. Por exemplo, Brasília está com o código |
O IBGE tem 6 dígitos, o 7o dígito é o dígito verificador. Esse |
Um outro detalhe. No arquivo Excel do MS, alguns códigos de município só tem zeros após o código da UF (ex. 110000, 310000, 290000) e o município não tem nome. Isso é uma codificação interna do próprio DataSUS. Significa "Município ignorado da UF". |
@endersonmaia obrigada pelo aviso! Estou acostumada a a ver sempre com o verificador, tinha até dado uma procurada com os códigos de 6 dígitos no Google mas não tinha nenhuma referência ao município ou IBGE. Vou examinar novamente trincando o número! :) (sim, o .0 é só porque o valor foi lido como float) |
notebook no github: https://github.com/horta/covid19/blob/master/Consolidados%20MS.ipynb Alguem em o arquivo do dia 21? |
@fernandascovino , @endersonmaia viram que no arquivo atual do MS foi acrescentado o dígito verificador no código do ibge só de 19/5 para trás, e que nessas datas os nomes dos municípios ficaram vazios? Ou seja, para cada cidade, dependendo do período tem ou não o dígito verificador e tem ou não o nome do município. |
Oi @fmplim, tem como disponibilizar os arquivos? Gostaria de compara-los tambem. |
Gostaria de hospedar todos os arquivos aqui: https://covid19br.s3-sa-east-1.amazonaws.com/index.html |
Baixei, do histórico de versões do Drive, os arquivos desde o dia 14 até o do dia 21. Do dia 13 não tenho. Só precisa ajustar a nomenclatura aí dos que estou compartilhando contigo. https://drive.google.com/drive/folders/1Ztw1WwDXkkINFCpAt_EJFn09cYnMP6AQ?usp=sharing |
Obrigado, @misaelbr ! Eu mantive o nome original dos arquivos porque aquele hash que esta no nome deve ser alguma forma deles garantirem que o arquivo do dia nao foi alterado. @turicas , nao seria melhor que armazenassemos todos os arquivos, de cada dia, de forma central? Acho que seria interessante que juntassemos o maior numero desses arquivos. De preferencias todos os arquivos que foram disponibilizados ate hoje. Atualizado: https://covid19br.s3-sa-east-1.amazonaws.com/index.html |
@horta, ah sim.. =) |
Legal =) Estou usando o seguinte script para fazer download do dia: #/usr/bin bash
# Requires: [jq](https://stedolan.github.io/jq/)
url=$(curl 'https://xx9p7hp1p7.execute-api.us-east-1.amazonaws.com/prod/PortalGeral' \
-H 'Accept: application/json, text/plain, */*' \
-H 'Accept-Language: en-GB,en;q=0.5' \
--compressed -H 'X-Parse-Application-Id: unAFkcaNDeXajurGB7LChj8SgQYS2ptm' \
-H 'Origin: https://covid.saude.gov.br' -H 'Connection: keep-alive' \
-H 'Referer: https://covid.saude.gov.br/' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' \
-H 'TE: Trailers' -s | jq ".results[0].arquivo.url" | xargs)
(set -x; curl -O "$url") |
@turicas tem algum bucket específico para enviar isso ? quais os dados que precisamos ter para fazer esse upload ? |
Então, esse problema também ocorre no RS. O que tenho percebido é que nem sempre os estados enviam os dados para o MS em tempo hábil. MS publica as infos, com os casos referentes ao dia anterior. Por isso a discrepância. |
Os arquivos https://covid19br.s3-sa-east-1.amazonaws.com/index.html Sou inexperiente nesse assunto, entao eh provavel que eu nao tenha entendido algo. |
A, sim, mas eu só tenho dos dias 15 e 23 de maio. Vi que esses vc já tem, certo, @horta ? |
Certo =) |
Adicionei interatividade para comparar os arquivos de dias diferentes. Os campos de fato mudam. https://hub.gke.mybinder.org/user/horta-covid19-lnnwe0kp/notebooks/covid.saude.gov.br.ipynb Cell -> Run all |
Esse erro encontrei apenas para o arquivo de 02 de Junho ate o momento. |
@horta tá dando 404 essa url. |
https://mybinder.org/v2/gh/horta/covid19.git/master?filepath=covid.saude.gov.br.ipynb Esse eh o link correto. Obrigado @fmplim ! |
o MS tirou do ar para colocar uma versão 2.0, com menos informações agora no link a seguir, o @flpms consegue capturar os dados que não estão visíveis no portal, mas ainda são acessíveis https://github.com/flpms/covid-numeros-br baixei a planilha completa, e os dados estavam lá com histórico por município |
Já era. Reescreveram o JSON da resposta. Não vem mais o endereço da planilha gerada. 'results': [{'arquivo_srag': {'__type': 'File',
|
Dados completos agora disponíveis via OpenDataSUS
…---
George Amaro
(pelo iPhone)
On 8 Jun 2020, at 19:19, Misael Bandeira Silveira ***@***.***> wrote:
Já era. Reescreveram o JSON da resposta. Não vem mais o endereço da planilha gerada.
'results': [{'arquivo_srag': {'__type': 'File',
'name': '0f7290d807e00e3dfe98197d2586f1c2_arquivo_srag20200420.csv',
'url': 'https://mobileapps.saude.gov.br/esus-vepi/files/unAFkcaNDeXajurGB7LChj8SgQYS2ptm/0f7290d807e00e3dfe98197d2586f1c2_arquivo_srag20200420.csv'},
'createdAt': '2020-03-25T16:28:25.593Z',
'dt_atualizacao': '08/06/2020 18:30',
'objectId': 'HXxFBK2BTx',
'texto_rodape': 'HIST_PAINEL_COVIDBR_08jun2020.xlsx',
'total_confirmado': '162.699',
'total_letalidade': '6,8%',
'total_obitos': '11.123',
'updatedAt': '2020-06-08T22:15:20.402Z',
'versao': 'v2.0'}]}
o MS tirou do ar para colocar uma versão 2.0, com menos informações agora
no link a seguir, o @flpms consegue capturar os dados que não estão visíveis no portal, mas ainda são acessíveis
https://github.com/flpms/covid-numeros-br
baixei a planilha completa, e os dados estavam lá com histórico por município
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
https://opendatasus.saude.gov.br/dataset/casos-nacionais
|
Só microdados. Não tem dados consolidados por data. Uma pena. A planilha diária era bem completinha. |
baixa o CSV, importa no Excel, e faz um pivot, PRONTO! |
Tá desatualizado. Conferi os do RS, que são os que me interessa, e tem uma defasagem enorme no número de óbitos notificados.
|
veja aqui : https://opendatasus.saude.gov.br/dataset/painel-da-covid-19 segundo a descrição, estes são os dados utilizados no painel do site https://covid.saude.gov.br |
Esse arquivo também foi entregue ontem, também para registro:
Acredito que não se trata de um hash: |
É um hash, mas provavelmente de um hexa aleatório. O que complica. Se fosse um Hash MD5, gerando aqui e lá, daria a mesma coisa. |
Por mais estranho que pareça, os dados para esses arquivos ainda estão aparecendo na api do site. Fiz um script no colab para obter os links (facilmente adaptavel para execução local) https://colab.research.google.com/drive/179Qx2cVhTEBZt2DVLsrGZ7TYifiPkMHB?usp=sharing |
Então voltaram a publicar, antes |
O site voltou com os dados e gráficos! |
STF determinou a divulgação completa dos dados, como era feito até o dia 04 de junho. |
O STF podia mandar eles aprenderem a diferença entre csv e xlsx!!!! |
hahaha... |
O pandas é um canivete suíço para analise de dados (ainda estou aprendendo). mas até o pandas separa as duas coisas. pd.read_csv() e pd.read_excel() |
O endereço não retorna mais o arquivo atualizado... alguma informação? |
Erro meu.. o endereço agora é |
Boa noite pessoal. Acho sensacional o trabalho de vocês, em especial o do Turicas, pela iniciativa. Então, parabéns a todos que se envolveram com este projeto. Dito isso, vou me apresentar. Não sou programador, não sou analista de dados e nem sou da área. Sou apenas um curioso que gosta de "tentar" coisas nessa área quando sobra um tempo. Meados de abril eu montei uma planilha Google Sheets para visualizar os dados da minha maneira. E com isso, treinar o uso da planilha para manipular os dados. Nesta planilha eu comecei importando os dados totalizados de 15 ou 20 países através do covid19api.com. Depois comecei a pegar os números diários do Brasil baixando a planilha do Ministério da Saúde. Quando deu aquele vai e vem com relação à mudança do tipo de divulgação diária eu comecei a pesquisar fontes alternativas e descobri o brasil.io. Enquanto eu mudava a minha planilha destino para adaptar ao novo formato, o site do ministério voltou a publicar os dados completos. Daí eu deixei a opção de usar os "dados oficiais" ou Brasil.io. Tudo isso está funcionando muito bem. Os dados do brasil.io eu pego com a função =IMPORTDATA("https://brasil.io/dataset/covid19/caso_full/?place_type=state&format=csv"). Faço isso uma vez por dia. (espero não estar fazendo nada que prejudique o fornecimento dos dados) . Os dados do Ministério da Saúde eu pego da planilha baixada todos os dias. Mas eu gostaria de deixar todos os processos online, não quero baixar no PC e depois copiar e colar na planilha online. Outro problema é o tamanho da planilha. Eu só trabalho com os dados ESTADUAIS, porque por município o volume é muito grande. Só pra comentar, apesar de já ter brincado com Python, não tenho conhecimento suficiente. Já li toda a conversa de vocês, testei algumas coisas e não consegui resolver meu problema. Como os comentários aqui estão desatualizados, minha esperança é de que tenha surgido algo novo. Existe uma forma de obter os dados do Ministério sem baixar a planilha? Ou, caso alguém tenha conhecimento com Google Sheets/Scripts, saberia dizer se a minha ideia é viável. Quero criar um script que pegue a planilha diária no Ministério, salve na minha pasta do Google Drive e a partir daí o script extrairia somente as linhas referentes ao números daquele dia. Ou, melhor ainda, fizesse esta atualização diária sem salvar a nova planilha no meu drive. Isso eu já estou tentando e, quando tiver algum progresso ou descubra que não é possível, comento aqui. Agradeço qualquer ajuda. Bom trabalho a todos. Abraço José Luiz |
Opa! Valeu. Amanhã eu vou testar. Mas, já abri o link e vi o conteúdo do .CSV . Acredito que vai funcionar perfeitamente. Apenas vou criar critérios para pegar apenas os dados por UF, para não trazer o conteúdo completo. E acho que também vou criar um menu pra pegar uma cidade específica. Fiquei animado. Assim que testar eu deixo um comentário. Muito obrigado. |
@4llan eu uso o Google Sheets/Scripts porque, pra mim, é o contato mais fácil com a programação. Comecei a usar porque estou muito envolvido com criptomoedas e consigo criar alguns controles e tirar relatórios dali. Mas agradeço muito a dica do Data Studio. Já tinha visto algumas publicações a respeito mas não tinha buscado informações. Agora, com a sua dica, vou começar a estudar. Acaba sendo um incentivo e, com algo concreto (dados COVID), fica bem mais fácil testar. Obrigado Abraço |
@4llan testei importar o CSV. O problema é a limitação nº do Google Planilhas: quantidade de linhas. Vou insistir numa solução por mais um tempo. Independentemente disso, vou dar uma olhada no Data Studio. |
Voltou para .CSV, sem zipar! |
O Ministério da Saúde está disponibilizando dados por município (clicar no link "Arquivo CSV"). Antes de alterarmos nossa rotina de captura de dados (para decidir se adotamos ou não esses), precisamos fazer algumas verificações para entender as diferenças com relação aos dados que já estamos coletando das SES, como:
Algumas pessoas já me relataram que os dados estão levemente atrasados e que há mudança no formato (com perda de dados), como é possível ver nesse tweet (print aqui).
Para automatizar a captura desse arquivo (que, na verdade, é um XLS), temos que pegá-la no resultado da requisição para https://xx9p7hp1p7.execute-api.us-east-1.amazonaws.com/prod/PortalGeral (se essa URL for dinâmica, temos que acessar o painel principal para pegá-la) na chave
response["results"][0]["arquivo"]["url"]
(response
é o JSON de resposta decodificado). Segue um exemplo do arquivo para hoje: HIST_PAINEL_COVIDBR_19mai2020.xlsx.zipEssa issue poderia também ser resolvida de maneira automatizada, consolidando os microdados (quando tivermos eles) e, por isso, está relacionada às seguintes issues:
IMPORTANTE: quando possível, publique trechos de código que foram desenvolvidos para fazer as análises/comparações.
The text was updated successfully, but these errors were encountered: