covid19-br
covid19-br copied to clipboard
RS
Boletins:
Status da checagem (anteriores a 20/03):
- [ ] Boletins
- [ ] Casos
Modo e responsável pela conversão:
- Boletins: manualmente por @paulabracco
- Casos: manualmente por ?
Data Link
27-Feb https://saude.rs.gov.br/upload/arquivos/202002/27193954-informe-epidemiologico-rs-2019-ncov-27-02-2020.pdf
28-Feb
29-Feb
1-Mar
2-Mar https://saude.rs.gov.br/upload/arquivos/202003/03104226-informe-epidemiologico-rs-2019-ncov-02-03-2020-2.pdf
3-Mar https://saude.rs.gov.br/upload/arquivos/202003/03225612-informe-epidemiologico-rs-2019-ncov-03-03-2020.pdf
4-Mar https://saude.rs.gov.br/upload/arquivos/202003/04172316-informe-epidemiologico-rs-2019-ncov-04-03-2020.pdf
5-Mar https://saude-admin.rs.gov.br/upload/arquivos/202003/05162837-informe-epidemiologico-rs-2019-ncov-05-03-2020.pdf
6-Mar 7-Mar 8-Mar
9-Mar https://saude-admin.rs.gov.br/upload/arquivos/202003/09182605-informe-epidemiologico-rs-2019-ncov-09-03-2020.pdf
10-Mar https://saude.rs.gov.br/upload/arquivos/202003/10165428-informe-epidemiologico-rs-2019-ncov-10-03-2020.pdf
11-Mar https://saude.rs.gov.br/upload/arquivos/202003/11185859-informe-epidemiologico-rs-2019-ncov-11-03-2020.pdf
12-Mar https://saude.rs.gov.br/upload/arquivos/202003/12171359-informe-epidemiologico-rs-2019-ncov-12-03-2020.pdf
13-Mar https://saude.rs.gov.br/upload/arquivos/202003/13180958-informe-epidemiologico-rs-2019-ncov-13-03-2020.pdf
14-Mar
15-Mar
16-Mar https://saude.rs.gov.br/upload/arquivos/202003/16185550-informe-epidemiologico-rs-2019-ncov-16-03-2020.pdf
17-Mar https://estado.rs.gov.br/upload/arquivos//informe-epidemiologico-rs-2019-ncov-18-03-2020.pdf (data 18, mas dados de 17)
18-Mar
19-Mar https://saude.rs.gov.br/upload/arquivos/202003/20081553-informe-epidemiologico-rs-2019-ncov-19-03-2020.pdf
20-Mar https://saude.rs.gov.br/upload/arquivos/202003/20205403-informe-epidemiologico-rs-2019-ncov-20-03-2020.pdf
21-Mar
Posso trabalhar na extração das tabelas dos boletins para criar o CSV de casos. Já tem alguém fazendo isso?
Estou com problema para importar a tabela de casos, acredito que seja por causa das colunas mescladas Classificação do caso
table = rows.import_from_pdf(
filename, starts_after='Município Residência', ends_before='Outros Países')
PDF:
Resultado importado pelo rows:
Tentei de diversas formas, mas não consegui nenhum resultado satisfatório. O mais próximo que consegui foi utilizando a primeira linha como starts_after, só q não funcionou para as outras páginas, ficou assim:
@turicas alguma ideia de como poderia contornar isso?
Saiu mais um boletim:
21/03 - https://saude.rs.gov.br/upload/arquivos/202003/21214556-informe-epidemiologico-rs-2019-ncov-21-03-2020.pdf
Mandei um e-mail com o texto de exemplo para secretária de saúde do RS.
@Lrcezimbra tenta passar starts_after="Município Residência"
.
Tem também uma biblioteca chamada camelot que talvez funcione melhor nesse caso.
Já tinha tentado com o starts_after="Município Residência"
e não rolou.
Vou dar uma olhada no camelot hoje.
Tive o mesmo problema com o cametot.
Mas hoje a Secretária do RS lançou essa página bem legal q parece ser bem mais fácil de extrair os dados: http://ti.saude.rs.gov.br/covid19/
Infelizmente a página nova de boletins tem os gráficos em canvas, dificultando scrapping do html. Todavia testei um processo semi manual que consiste em copiar os arrays de dados diretamente do código javascript da página. Com um pouco mais de esforço acredito que dê para raspar os dados de forma automática com scrapping do próprio código fonte.
Exemplo de trecho da página:
var myChart = new Chart(ctx, {type: 'horizontalBar',data: {labels: [" Porto Alegre", " Bagé", " Canoas", " Caxias do Sul", " Torres", " Lajeado", " Sant'Ana do Livramento", " Ivoti", " Erechim", " São Leopoldo", " Serafina Corrêa", " Capão da Canoa", " Pelotas", " Anta Gorda", " Estância Velha", " Santa Maria", " Rio Grande", " Bento Gonçalves", " Campo Bom", " Alvorada", " Marau", " Paraí", " Dom Pedrito", " Osório", " Passo Fundo", " Rolante", " Cachoeira do Sul", " Canguçu", " Santa Rosa", " Nova Palma", " Piratini", " Garibaldi", " Gravataí", " Dois Irmãos", " Charqueadas", " Estrela", " Carlos Barbosa", " Viamão", " Santo Antônio da Patrulha", " Taquara", " Cerro Grande do Sul", " Eldorado do Sul", " Cruzeiro do Sul", " Santiago", " Sapiranga", " Farroupilha"],datasets: [{data: [107,9,7,6,6,5,4,3,3,3,3,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],backgroundColor: 'rgba(166, 58, 58, 0.8)',borderColor: 'rgba(0,0,0,0.8)',borderWidth: 1}]}, options: { "hover": {"animationDuration": 0},"animation": { "duration": 1,"onComplete": function () { var chartInstance = this.chart, ctx = chartInstance.ctx; ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize-1, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily); ctx.textAlign = 'center'; ctx.textBaseline = 'bottom'; this.data.datasets.forEach(function (dataset, i) { var meta = chartInstance.controller.getDatasetMeta(i); meta.data.forEach(function (bar, index) { var data = dataset.data[index]; ctx.fillText(data, bar._model.x + 10, bar._model.y + 7); });});}}, maintainAspectRatio: false,legend: {display: false}, title: {display: true,text: ["Município de Residência","Total de Municípios: 46"]},scales: {yAxes: [{ticks: {beginAtZero: true}}]}}});
Galera, acredito que tenha conseguido um solução inicial para consumir o dataset de casos confirmados do site http://ti.saude.rs.gov.br/covid19. Segue:
var declaredCountyDatasetAsString = document.scripts[11].innerText.split("\n")[2];
var jsonCountyAsText = declaredCountyDatasetAsString.replace("var myChart = new Chart(ctx, {type: 'horizontalBar',data: ","").replace(",backgroundColor: 'rgba(166, 58, 58, 0.8)',borderColor: 'rgba(0,0,0,0.8)',borderWidth: 1","").replace("},","}").replace("{labels:","{\"labels\":").replace(",datasets:",", \"datasets\":").replace("data:","\"data\":");
var countyDataset = JSON.parse(jsonCountyAsText);
console.log(countyDataset.labels[0] + ' : ' + countyDataset.datasets[0].data[0]);
"Porto Alegre : 133"
var declaredTotalCasesDataSet = document.scripts[11].innerText.split("\n")[15];
var jsonAsTextTotalCases = declaredTotalCasesDataSet.replace("var myBarChart = new Chart(ctxB, {type: 'bar',data: { ","{").replace(", backgroundColor: 'rgba(166, 58, 58, 0.8)', borderColor: 'rgba(0,0,0,1)', borderWidth: 1 ","").replace(",options: {","").replace("'total'","\"total\"");
var jsonTotalCases = JSON.parse(jsonAsTextTotalCases.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
console.log(jsonTotalCases.labels[0] + ' : ' + jsonTotalCases.datasets[0].data[0]);
"29/02 : 1"
var prepareText = document.scripts[11].innerText.split("\n")[12].split(";")[1];
var sexDatasetAsString = prepareText.replace("var myPieChart = new Chart(ctxP, {type: 'pie',data: ","").replace(",backgroundColor: [\"#538B21\", \"#F73A30\", \"#ffffff\",],hoverBackgroundColor: [\"#79D826\", \"#FB847D\", \"#ffffff\"]","").replace(",options: {maintainAspectRatio: false,title: {display: true,text: 'Sexo'},responsive: true}})","");
var jsonSexDataSet = JSON.parse(sexDatasetAsString.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
console.log(jsonSexDataSet.labels[0] + ' : ' + jsonSexDataSet.datasets[0].data[0]);
"Masculino : 140"
var prepareTextAgeDataSet = document.scripts[11].innerText.split("\n")[14].split(";")[1];
var jsonAsTextAgeDataSet = prepareTextAgeDataSet.replace("var myChart = new Chart(ctx, {type: 'horizontalBar',data: ","").replace(",backgroundColor: 'rgba(78, 170, 28, 0.8)',borderColor: 'rgba(0,0,0,1)',borderWidth: 1}]},options: {","}]}");
var jsonAgeDataSet = JSON.parse(jsonAsTextAgeDataSet.replace(/(['"])?([a-z0-9A-Z_]+)(['"])?:/g, '"$2": '));
console.log(jsonAgeDataSet.labels[0] + ' : ' + jsonAgeDataSet.datasets[0].data[0]);
"05-09 : 1"
Com certeza dá para fazer melhor! Como posso contribuir? Incluimos na rotina de coletagem? cc/ @turicas
Antes de tudo, gostaria de agradecer pelo trabalho excelente que estão fazendo. Não entendo como funciona a coleta de dados mas uma cidade específica, Gravataí-RS, de código 4309209 no IBGE, está simplesmente fora da API. Poderiam adicionar?
Antes de tudo, gostaria de agradecer pelo trabalho excelente que estão fazendo. Não entendo como funciona a coleta de dados mas uma cidade específica, Gravataí-RS, de código 4309209 no IBGE, está simplesmente fora da API. Poderiam adicionar?
Você está fazendo as requisições de maneira incorreta. Você pode filtrar tanto pelo código IBGE quanto pelo nome da cidade:
- https://brasil.io/api/dataset/covid19/caso/data/?city_ibge_code=4309209
- http://brasil.io/api/dataset/covid19/caso/data?city=Gravata%C3%AD&state=RS
Leia a documentação da API em: https://github.com/turicas/covid19-br/blob/master/api.md
Essa issue não é focada em suporte sobre os dados e por isso vou esconder seu comentário e esse meu.