Skip to content
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 microdados das SES #123

Open
3 tasks
turicas opened this issue May 6, 2020 · 8 comments
Open
3 tasks

Estudar microdados das SES #123

turicas opened this issue May 6, 2020 · 8 comments

Comments

@turicas
Copy link
Owner

turicas commented May 6, 2020

  • Definir formato da tabela de microdados (ver sugestão da OKFN - pdf)
  • Alterar BaseSpider para receber microdados (atributo no spider filho dirá se ele consegue ou não coletar microdados)
  • Criar run-microdata.sh e adicionar no deploy.sh

Tarefas relacionadas:

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

@berinhard
Copy link
Collaborator

berinhard commented May 6, 2020

Análise de microdados disponibilizados pelas importações atuais em comparação ao padrão da OKFN: Espírito Santo

Segue um exemplo de código que rodei para analisar os dados:

In [2]: import rows 

In [3]: data = rows.import_from_csv('MICRODADOS.csv', encoding='ISO-8859-9')

In [6]: set([d.statusnotificacao for d in data])                                                                                                                             
Out[6]: {'Em Aberto', 'Encerrado'}
OKFN Planilha Tipo Observação
data_fn_atendimento Data date Consta como YYYY-MM-DD
data_publicacao --- --- ---
data_sintomas --- --- ---
data_in_atendimento --- --- ---
data_confirmacao --- --- ---
classificacao Classificacao text Só tem o valor Confirmado
criterio_confirmacao CriterioConfirmacao text Valores: {'-', 'Clinico', 'Clinico Epdemiologico', 'Laboratorial'}
tipo_teste --- --- ---
evolucao Evolucao text Valores: {'-', 'Cura', 'Ignorado', 'Óbito pelo COVID-19', 'Óbito por outras causas'}
encaminhamento --- --- ---
municipio Municipio text Nomes sem acento e em caixa alta
cod_ibge --- --- Conseguimos info no BaseSpider
estado --- --- Conseguimos info no BaseSpider
municipio_residencia --- --- ---
cod_ibge_res --- --- ---
estado_residencia --- --- ---
idade FaixaEtaria text Valores {'0 a 4 anos', '05 a 9 anos', '10 a 19 anos', '20 a 29 anos', '30 a 39 anos', '40 a 49 anos', '50 a 59 anos', '60 a 69 anos', '70 a 79 anos', '80 a 89 anos', '90 anos ou mais'}
sexo Sexo text Valores {'F', 'I', 'M'}
cor_raca RacaCor text Valores `{'Amarela', 'Branca', 'Ignorado', 'Indigena', 'Parda', 'Preta'}
`
comorbidade_cardio ComorbidadeCardio text Valores: {'Sim', 'Não', '-'}
comorbidade_diabetes ComorbidadeDiabetes text Valores: {'Sim', 'Não', '-'}
sintoma_coriza Coriza bool Valores: {'Sim', 'Não', '-'}
sintoma_tosse Tosse bool Valores: {'Sim', 'Não', '-'}
origem --- --- ---

Os campos abaixos são campos que estão presente na planilha, mas não possui correlação no template da OKFN

Planilha Tipo Observação
StatusNotificacao text Valores: {'Em Aberto', 'Encerrado'}
Bairro text Nomes em caixa alta
Escolaridade text Valores: {'1ª a 4ª série incompleta do EF (antigo primário ou 1º grau)', '4ª série completa do EF (antigo primário ou 1º grau)', '5ª à 8ª série incompleta do EF (antigo ginásio ou 1º grau)', 'Analfabeto', 'Educação superior completa', 'Educação superior incompleta ', 'Ensino fundamental completo (antigo ginásio ou 1º grau) ', 'Ensino médio completo (antigo colegial ou 2º grau ) ', 'Ensino médio incompleto (antigo colegial ou 2º grau )', 'Ignorado', 'Não se aplica'}
Febre text Valores: {'Sim', 'Não', '-'}
DificuldadeRespiratoria text Valores: {'Sim', 'Não', '-'}
DorGarganta text Valores: {'Sim', 'Não', '-'}
Diarreia text Valores: {'Sim', 'Não', '-'}
Cefaleia text Valores: {'Sim', 'Não', '-'}
ComorbidadePulmao text Valores: {'Sim', 'Não', '-'}
ComorbidadeRenal text Valores: {'Sim', 'Não', '-'}
ComorbidadeTabagismo text Valores: {'Sim', 'Não', '-'}
ComorbidadeObesidade text Valores: {'Sim', 'Não', '-'}
FicouInternado text Valores: {'Sim', 'Não', '-'}
ViagemBrasil text Valores: {'Sim', 'Não', '-'}
ViagemInternacional text Valores: {'Sim', 'Não', '-'}

Minhas notas pessoais sobre os dados e a relação com o template da OKFN:

  • O campo origem do template poderia ser populado se fizermos uma avaliação booleana dos campos ViagemBrasil e ViagemInternacional. Não encontrei casos para os dois campos com valor Sim. Na documentação da OKFN, estes seriam os valores possíveis: Viagem nacional; Viagem internacional; Contato com pessoa conhecida contaminada; Transmissão comunitária;
  • Não está claro pra mim se o campo Municipio da planilha é onde o caso foi detectado ou onde a pessoa vive. Assumi que é o primeiro;
  • Assumi que o campo de Data na planilha é referente a data de final de atendimento, mas não sei se isso está coerente;

@berinhard
Copy link
Collaborator

berinhard commented May 6, 2020

Análise de microdados disponibilizados pelas importações atuais em comparação ao padrão da OKFN: Minas Gerais

Segue um exemplo de código que rodei para analisar os dados:

In [2]: import rows 

In [3]: data = rows.import_from_csv('notificacoes-covid19-mg.csv', encoding='utf-8')
OKFN Planilha Tipo Observação
data_publicacao DATA_ATUALIZACAO date No formato YYY-MM-DD
data_sintomas --- --- ---
data_confirmacao --- --- ---
data_in_atendimento DATA_NOTIFICACAO date No formato YYY-MM-DD
data_fn_atendimento --- --- ---
classificacao CLASSIFICACAO_CASO text Valores {'Caso Confirmado', 'Caso Suspeito', 'Descartado', 'Óbito Confirmado'}
criterio_confirmacao --- --- ---
tipo_teste --- --- ---
evolucao --- --- ---
encaminhamento --- --- ---
municipio --- --- ---
cod_ibge --- --- ---
estado --- --- ---
municipio_residencia MUNICIPIO_RESIDENCIA text ---
cod_ibge_res MUNICIPIO_RESIDENCIA_COD int Possui valores None
estado_residencia --- --- ---
idade IDADE int Possui valores None e possui valores negativos
sexo SEXO text Valores {'Feminino', 'Masculino'}
cor_raca --- --- ---
comorbidade_cardio --- --- ---
comorbidade_diabetes --- --- ---
sintoma_coriza --- --- ---
sintoma_tosse --- --- ---
origem --- --- ---

Os campos abaixos são campos que estão presente na planilha, mas não possui correlação no template da OKFN

Planilha Tipo Observação
FAIXA_ETARIA text Valores: {'0 a 9 anos', '10 a 19 anos', '20 a 29 anos', '30 a 39 anos', '40 a 49 anos', '50 a 59 anos', '60 a 69 anos', '70 a 79 anos', '80 a 89 anos', '90 anos ou mais', 'NA'}
COMORBIDADE text Valores: {'NA', 'NÃO', 'NÃO INFORMADO', 'SIM'}

Minhas notas pessoais sobre os dados e a relação com o template da OKFN:

  • Temos duas formas de ver a idade, tanto pela faixa etária quanto pelo número final;
  • Tem bem menos dados em comparação ao ES;
  • Tem um campo chamado CONTADOR que deixei de fora porque, né!?

@berinhard
Copy link
Collaborator

Análise de microdados disponibilizados pelas importações atuais em comparação ao padrão da OKFN: Rio Grande do Norte

Converti o XLSX pra CSV pra me agilizar aqui e segue um exemplo de código que rodei para analisar os dados:

In [2]: import rows 

In [3]: data = rows.import_from_csv('DOC000000000230629.csv', encoding='utf-8')
OKFN Planilha Tipo Observação
data_publicacao --- --- ---
data_sintomas INÍCIO DOS SINTOMAS date FormatoD/M/YYYY c/valores nulos e brancos
data_confirmacao --- --- ---
data_in_atendimento --- --- ---
data_fn_atendimento ENCERRAMENTO date Formato D/M/YYYY c/brancos e nulos
classificacao --- --- ---
criterio_confirmacao --- --- ---
tipo_teste TESTE RÁPIDO? text Valores {'', 'CLINICO EPIDEMIOLOGICO', 'CLÍNICO EPIDEMIOLÓGICO', 'RT-PCR', 'TESTE RÁPIDO - ANTICORPO', 'TESTE RÁPIDO - ANTÃ\x8dGENO'}
evolucao EVOLUÇÃO text Valores {'', '9', 'CURA', 'Cura', 'Em tratamento domiciliar', 'Ignorado', 'Internado'}
encaminhamento --- --- ---
municipio --- --- ---
cod_ibge --- --- ---
estado UF RN Esse campo possui múltiplos valores, então pode indicar o estado de origem
municipio_residencia --- --- ---
cod_ibge_res --- --- ---
estado_residencia --- --- ---
idade IDADE int Possui valores nulos NI e #VALUE
sexo SEXO text Valores {'FEMININO', 'Feminino', 'MASCULINO', 'Masculino', 'NI'}
cor_raca COR/RAÇA text Valores {'', '9', 'Amarela', 'Branca', 'Indigena', 'Parda', 'Preta', 'ÓBITO'}
comorbidade_cardio DOENÇA CARDIOVASCULAR CRÔNICA text Valores {'', '9', 'SIM', 'sim'}
comorbidade_diabetes --- --- ---
sintoma_coriza --- --- ---
sintoma_tosse --- --- ---
origem --- --- ---

Os campos abaixos são campos que estão presente na planilha, mas não possui correlação no template da OKFN

Planilha Tipo Observação
SISTEMA DE ORIGEM text Valores: {'A NOTIFICAR', 'A NOTIFICAR NO SIVEP', 'DRIVE', 'E-SUS VE', 'GAL', 'PENDENTE', 'PRIVADO', 'REDCAP', 'SIVEP', 'a notificar'}
DATA DE NOTIFICAÇÃO date No formato D/M/YYYY
FAIXA ETÁRIA text Valores: {'#VALUE!', '1 a 4', '10 a 14', '15 a 19', '20 a 29', '30 a 39', '40 a 49', '5 a 9', '50 a 59', '60 a 69', '70 a 79', '80 a 89', '< 1', '> 89', 'NI'}
REGIÃO DE SAÚDE int Valores: {0, 1, 2, 3, 4, 5, 6, 7, 8}
COLETA date Formado D/M/YYYY e com campos em branco/nulos
DAT_SINT_COL_NOT date Formado D/M/YYYY
CLASSIFICAÇÃO_COVID-19 (3 -CONFIRMADO; 4 - DESCARTADO; 1 - SUSPEITO) int Valores {1, 3, 4}
RESULTADO_1 text Valores {'', 'Negativo', 'Negativo para COVID-19', 'Positivo', 'Positivo para COVID-19', 'Positivo para Influenza', 'Positivo para Influenza B', 'SRAG NÃO ESPECIFICADO'}
ÓBITO? text Valores {'', 'ÓBITO', 'Óbito', 'óbito'}
OCUPAÇÃO text Várias profissões diferentes
PROF DE SAÚDE text Valores {'', '#N/A', '00/01/1900', 'Estudante da área de saúde', 'Não', 'Outros', 'Profissional de laboratório', 'Profissional de saúde', 'Sim', 'Trabalha em contato com animais'}
COMORBIDADE PRÉ-EXISTENTE? text Valores {'', 'NÃO', 'SIM', 'não', 'sim'}
HAS text Valores {'', 'HAS', 'SIM', 'has', 'sim'}
DM text Valores {'', '9', 'DM', 'SIM', 'sim'}
OUTRA text Valores {'', 'ALZHEIMER', 'ANEMIA', 'DISLIPIDEMIA', 'DPOC', 'ELA', 'EX-FUMANTE', 'IMUNOSUPRESSÃO', 'SÍNDROME DE DOWN', 'doença pulmonar obstrutiva crônica - dpoc', 'doença pulmonar obstrutiva crônica -dpoc', 'etilista crônico', 'mielodisplasia', 'paciente psiquiatrico'}
OBESIDADE text Valores {'', '9', 'OBESIDADE', 'OBESIDADE MÓRBIDA', 'SIM'}
DOENÇA RENAL CRÔNICA text Valores {'', '9', 'SIM', 'sim'}
HIPOTIREOIDISMO text Valores {'', 'HIPOTIREOIDISMO', 'sim'}
NEOPLASIA text Valores {'', 'NEOPLASIA'}

Minhas notas pessoais sobre os dados e a relação com o template da OKFN:

  • Não sei em qual data encaixar a coluna DATA DE NOTIFICAÇÃO;
  • A coluna de FAIXA ETÁRIA também pode ser relacionada com a coluna idade do template;
  • Não sei onde encaixar a coluna MUNICÍPIO porque possuem cidades que não são do RN. Como, por exemplo, essa entrada Row(sistema_de_origem='REDCAP', data_de_notificacao='', sexo='Masculino', idade='38', faixa_etaria='30 a 39', uf='SP', municipio='São Paulo', regiao_de_saude=0, coleta='22/3/2020', inicio_dos_sintomas='14/3/2020', dat_sint_col_not='14/3/2020', classificacao_covid_19_3_confirmado_4_descartado_1_suspeito=4, teste_rapido='RT-PCR', resultado_1='', obito='', encerramento='', evolucao='', ocupacao='COMISSARIO DE BORDO', prof_de_saude='Outros', cor_raca='', comorbidade_pre_existente='', has='', dm='', outra='', obesidade='', doenca_cardiovascular_cronica='', doenca_renal_cronica='', hipotireoidismo='', neoplasia='')
  • Não sei com que data relacionar a coluna COLETA;
  • Não sei com que data relacionar a coluna DAT_SINT_COL_NOT;
  • Podemos relacionar a coluna CLASSIFICAÇÃO_COVID-19 (3 -CONFIRMADO; 4 - DESCARTADO; 1 - SUSPEITO) com o template em classificacao;
  • Não sei o que as colunas HAS e DM significam;

@capyvara
Copy link
Collaborator

capyvara commented May 10, 2020

Vocês estão pegando esses dados daqui?
https://shiny.hmg.saude.gov.br/dataset/casos-nacionais

@turicas
Copy link
Owner Author

turicas commented May 20, 2020

Vocês estão pegando esses dados daqui?
https://shiny.hmg.saude.gov.br/dataset/casos-nacionais

Essas análises eram de microdados que as próprias secretarias estão disponibilizando.

@endersonmaia
Copy link
Collaborator

como comentei em #140 (comment), estou armazenando os arquivos históricos do CSV de microdados

uma coisa que já identifiquei rodando um diff entre alguns arquivos de microdados é que se não mantivermos os arquivos históricos ou processá-los com maior frequência, a gente perde a evolução dos casos, que são atualizadas retroativamente

ex.:

diff sintomas/sintomas-2020-05-20-06:08:16.1589954896.csv sintomas/sintomas-2020-05-20-12:07:47.1589976467.csv                                              [11:32:52]
695c695
< "694","","Mascuino","Maceió","Confirmado","Encerramento do Isolamento Domiciliar","2020-04-27T03:00:00.000Z","","2020-04-24T03:00:00.000Z","Swab nasofaringe + RT-PCR","70","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
---
> "694","","Mascuino","Maceió","Confirmado","Internação UTI","2020-04-27T03:00:00.000Z","","2020-04-24T03:00:00.000Z","Swab nasofaringe + RT-PCR","70","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
883c883
< "882","Preta","Mascuino","Maceió","Confirmado","Internação UTI","2020-04-28T03:00:00.000Z","","2020-04-25T03:00:00.000Z","Swab nasofaringe + RT-PCR","64","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
---
> "882","Preta","Mascuino","Maceió","Confirmado","Alta Hospitalar","2020-04-28T03:00:00.000Z","","2020-04-25T03:00:00.000Z","Swab nasofaringe + RT-PCR","64","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
988c988
< "987","","Feminino","Maceió","Confirmado","Alta Hospitalar","2020-04-29T03:00:00.000Z","","2020-04-26T03:00:00.000Z","Swab nasofaringe + RT-PCR","50","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
---
> "987","","Feminino","Maceió","Confirmado","Internação UTI","2020-04-29T03:00:00.000Z","","2020-04-26T03:00:00.000Z","Swab nasofaringe + RT-PCR","50","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""
1684c1684
...

não sei para qual tipo de análise seria relevante registrar esse histórico de alterações, de "Alta Hospitalar" para "Internação UTI" como evidenciado no registro 897 acima, por ex.

e tb, qual modelo de dados deveríamos manter no Brasil.IO para salvar esse histórico ?

@turicas
Copy link
Owner Author

turicas commented May 20, 2020

e tb, qual modelo de dados deveríamos manter no Brasil.IO para salvar esse histórico ?

@endersonmaia acho que podemos salvar os arquivos brutos no histórico, dessa forma temos os dados oficiais e conseguimos fazer o script de normalização depois.

@endersonmaia
Copy link
Collaborator

Análise de microdados disponibilizados pelas importações atuais em comparação ao padrão da OKFN: Minas Gerais

não ficou claro qual URL tu usou aqui, mas vi no portal um CSV e tá diferente desse que tu apurou

https://www.saude.mg.gov.br/images/noticias_e_eventos/000_2020/coronavirus-dados-csv/notificacoes-covid19-mg.csv

;ID;CONTADOR;DATA_NOTIFICACAO;CLASSIFICACAO_CASO;SEXO;IDADE;FAIXA_ETARIA;MUNICIPIO_RESIDENCIA_COD;MUNICIPIO_RESIDENCIA;COMORBIDADE;EVOLUCAO;INTERNACAO;UTI;DATA_ATUALIZACAO
1;3074;136395;07/05/2020;Caso Confirmado;Masculino;53;50 a 59 anos;310890;Brasópolis;SIM;RECUPERADO;NÃO;NÃO;24/05/2020
2;3341;136396;10/05/2020;Caso Confirmado;Masculino;36;30 a 39 anos;315895;Santana do Paraíso;Não Informado;EM ACOMPANHAMENTO;SIM;SIM;24/05/2020
3;5;136397;16/03/2020;Caso Confirmado;Masculino;45;40 a 49 anos;310620;Belo Horizonte;Não Informado;RECUPERADO;NÃO;NÃO;24/05/2020
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants