Open turicas opened 4 years ago
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:
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
;Municipio
da planilha é onde o caso foi detectado ou onde a pessoa vive. Assumi que é o primeiro;Data
na planilha é referente a data de final de atendimento, mas não sei se isso está coerente;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:
CONTADOR
que deixei de fora porque, né!?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:
DATA DE NOTIFICAÇÃO
;FAIXA ETÁRIA
também pode ser relacionada com a coluna idade
do template;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='')
COLETA
;DAT_SINT_COL_NOT
;CLASSIFICAÇÃO_COVID-19 (3 -CONFIRMADO; 4 - DESCARTADO; 1 - SUSPEITO)
com o template em classificacao
;HAS
e DM
significam;Vocês estão pegando esses dados daqui? https://shiny.hmg.saude.gov.br/dataset/casos-nacionais
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.
como comentei em https://github.com/turicas/covid19-br/issues/140#issuecomment-631514536, 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 ?
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.
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
;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
...
BaseSpider
para receber microdados (atributo no spider filho dirá se ele consegue ou não coletar microdados)run-microdata.sh
e adicionar nodeploy.sh
Tarefas relacionadas:
IMPORTANTE: quando possível, publique trechos de código que foram desenvolvidos para fazer as análises/comparações.