Cobertura vacinal contra covid-19 por dose e faixa etária (versão preliminar)

De Wiki
Ir para navegação Ir para pesquisar


Introdução

A vacinação contra Covid-19 iniciou em 16/01/2021, quando haviam cerca de mil óbitos diários, os quais chegaram a 3,5 mil óbitos em abril do mesmo ano. Segundo o Sistema de Informações sobre Mortalidade (SIM), em 2019 faleceram 56.666 de doenças infecciosas e parasitárias. Em 2020 foram 267.287 óbitos na mesma categoria.

Paulatinamente, o Brasil foi enfrentando a pandemia graças à imunização, chegando a uma média móvel diária de cem óbitos em dezembro de 2022.

Contudo, ainda que a quantidade de casos e óbitos representem uma fração quando comparada ao contexto que antecedeu a vacinação, reconhecemos que a margem um ano após o início se manteve elevada quando comparada com a quantidade de óbitos por gripe comum, cujo acumulado ultrapassa os cerca de mil óbitos anuais, segundo o SIM.

Até 30/01/2022 o vacinômetro registrou apenas as doses ministradas, totalizando 495.638.225 doses. Entretanto, no painel não foi demonstrado a cobertura vacinal com base na imunização conforme o preconizado quanto ao distanciamento entre as doses para cada faixa-etária.

Endereço eletrônico

A presente nota técnica é acessível pelo endereço https://wiki.conass.org.br/index.php?title=Cobertura_vacinal_contra_covid-19_por_dose_e_faixa_et%C3%A1ria

Objetivo

Monitorar populações segundo o esquema de vacinação contra Covid-19 em função de determinantes sociodemográficos.

Ficha do indicador para o profissional da saúde

Conceituação

Percentual de habitantes imunizados contra covid-19, segundo cada esquema de vacinação, respeitando-se o período mínimo entre as doses.

As vacinas contempladas pela Campanha Nacional de Vacinação contra Covid-19 estão listadas na tabela abaixo. O esquema primário inclui a primeira e a segunda dose. O reforço é realizado da terceira dose em diante.

Vacinas contra covid-19, códigos atribuídos pelo openDataSUS e período de dias preconizado entre as doses.
identificador código opendatasus nomes sigla nome da vacina intervalo de dias preconizados para aplicação da segunda dose intervalo de dias para aplicação do reforço
1 85' '89' COVID-19 ASTRAZENECA - ChAdOx1-S; COVID-19 ASTRAZENECA/FIOCRUZ - COVISHIELD A Asrazeneca Astrazeneca 25 96
2 86' '98' COVID-19 SINOVAC/BUTANTAN - CORONAVAC; COVID-19 SINOVAC - CORONAVAC C Coronacav Coronavac 25 96
3 87' COVID-19 PFIZER - COMIRNATY P Pfizer 19 96
5 99' COVID-19 PFIZER - COMIRNATY PEDIÁTRICA p Pfizer pediátrica 19 96
4 88' COVID-19 JANSSEN - Ad26.COV2.S J Janssen 60 96
6 102' COVID-19 PFIZER - COMIRNATY PEDIÁTRICA MENOR DE 5 ANOS b Pfizer baby 19 50

Interpretação

  • Estima o nível de proteção da população contra a doença evitável por imunização ou cujos efeitos são mitigados, mediante o cumprimento do esquema básico de vacinação.
  • O número de doses necessárias e os intervalos recomendados entre as doses, para cada tipo de vacina, constam de normas nacionais estabelecidas pelo Ministério da Saúde.

Usos

  • Analisar variações geográficas e temporais no percentual usuários do SUS vacinados com cada procedência de imunizante recomendado pelo Programa Nacional de Imunização (PNI).
  • Identificar situações de insuficiência que possam indicar a necessidade de estudos especiais e medidas de intervenção.
  • Contribuir para a avaliação operacional e de impacto dos programas de imunização, bem como para o delineamento de estratégias de vacinação.
  • Avaliar a homogeneidade de coberturas vacinais, calculando o percentual de territórios que alcançam as metas epidemiológicas, estabelecidas para cada vacina.
  • Subsidiar processos de planejamento, execução, monitoramento e avaliação de políticas públicas relativas à atenção a saúde e ao controle de doenças e condições de saúde evitáveis.

Limitações

  • Inconsistência na alimentação dos Sistemas de Informação de Saúde ou na execução da campanha levaram a doses registradas em dias contíguos ou em intervalos abaixo do preconizado. Dessa forma, considerou-se apenas o primeiro registro realizado no dia, bem como imunizações com intervalo equivalente ou acima do preconizado, com uma margem de dois dias em relação à bula.
  • Imprecisão na projeção dos denominadores populacionais devido à não atualização do censo.
  • Existência de mais de uma tabela populacional oficial, com valores agregados diferentes para estados, regiões e Brasil.
  • Valores médios elevados podem encobrir bolsões de baixa cobertura em determinados grupos populacionais, comprometendo o controle das doenças.
  • A demanda da população não residente aos postos de vacinação, principalmente em campanhas, dificulta a avaliação da cobertura vacinal.
Fac-símile do tabulador oficial de dados populacionais do Ministério da Saúde, cujas agregações ofertam valores diferentes em dado período. Disponível em https://datasus.saude.gov.br/populacao-residente/, acessado em 30/01/2023.
Fac-símile do tabulador oficial de dados populacionais do Ministério da Saúde, cujas agregações ofertam valores diferentes em dado período. Disponível em https://datasus.saude.gov.br/populacao-residente/, acessado em 30/01/2023.

Fontes

Ministério da Saúde/SVS/DEVEP/CGPNI: Sistema de Informações do PNI (SI-PNI) e base demográfica do IBGE .

Métodos de Cálculo

[número de imunizados segundo o esquema na idade-alvo para determinado tipo de vacina]÷[residentes]×100

Categorias Sugeridas para Análise

Uma vez que não foram disponibilizadas tabelas de domínios de dados, os mesmos tiveram que ser deduzidos a partir dos valores distintos dentre os atuais 500 milhões de registros.

A nacionalidade foi considerada brasileira caso, em pelo menos um registro, tenha sido assinalado o código 'B'.

A faixa etária de cada usuário do SUS foi calculada com base na data de nascimento paciente_dataNascimento e na data da atualização do banco de dados (data atual). Dessa forma o indivíduo pode avançar de faixa etária e ter modificado o status preconizado de imunizações. Em outras palavras, a extração é a fotografia do momento atual. Quando a data de nascimento estava indisponível ou inconsistente foi utilizada a idade na data de vacinação paciente_idade.

Faixa etária considerada para avaliação da imunização
código sequencial sigla dias - mínimo dias - máximo descrição
1 00d06m 0 183 0 a 6 meses
2 06m02a 184 730 acima de 6 meses a 2 anos
3 03a04a 3 a 4 anos
4 05a11a 5 a 11 anos
5 12a17a 12 a 17 anos
6 18a39a 18 a 39 anos
7 40a59a 40 a 59 anos
8 60a acima de 60 anos
9 NI Não informado

Dados Estatísticos e Comentários

Tabela resumida e comentada, que ilustra a aplicação do indicador em situação real. Idealmente, a tabela apresenta dados para grandes regiões do Brasil, em anos selecionados desde o início da série histórica

Literatura relacionada

A busca no Medline, em 30/01/2023, com a estratégia "Coronavirus"[Mesh] resultou em 159.755 resultados

Ficha do indicador para o cientista de dados

Método de processamento de dados

Os dados disseminados via openDataSUS são coletados automaticamente via Pentaho Data Integration (PDI) a partir dos arquivos tabulados (flatfiles) em formato CSV às segundas-feiras.

A disseminação via openDataSUS não seguiu o padrão tabwin/tabnet nem a Metodologia de Administração de Dados (MAD - DATASUS).


A tabela a seguir mostra, na íntegra, o dicionário de dados mantido pela equipe gestora.

Fac-símile do dicionário de dados disponibilizado via openDataSUS pela equipe gestora do Sistema de Informação do Programa Nacional de Imunizações (SI-PNI). Disponível em https://opendatasus.saude.gov.br/dataset/8e0c325d-2586-4b11-8925-4ba51acd6e6d/resource/a8308b58-8898-4c6d-8119-400c722c71b5/download/dicionario-de-dados-vacinacao.pdf, acessado em 30/01/2023.
Fac-símile do dicionário de dados disponibilizado via openDataSUS pela equipe gestora do Sistema de Informação do Programa Nacional de Imunizações (SI-PNI). Disponível em https://opendatasus.saude.gov.br/dataset/8e0c325d-2586-4b11-8925-4ba51acd6e6d/resource/a8308b58-8898-4c6d-8119-400c722c71b5/download/dicionario-de-dados-vacinacao.pdf, acessado em 30/01/2023.
Dicionário de dados Campanha Nacional de Vacinação contra Covid-19 disponibilizado via openDataSUS. Fonte: Ministério da Saúde. Acesso em 30/01/2023.
variável descrição fornecida
document_id Identificador do documento
paciente_id Identificador do vacinado
paciente_idade Idade do vacinado
paciente_dataNascimento Data de nascimento do vacinado
paciente_enumSexoBiologico Sexo do vacinado. M = Masculino, F = Feminino 1; 2; 3; 4; 99
paciente_racaCor_codigo Código da raça/cor do vacinado. 1= Branca; 2 = Preta; 3 = Parda; 4 = Amarela; 99 = Sem informação
paciente_racaCor_valor Descrição da raça/cor do vacinado
paciente_endereco_colbgeMunicipio Código IBGE do município de endereço do vacinado
paciente_endereco_coPais Código do país de endereço do vacinado
paciente_endereco_nmMunicipio Nome do município de endereço do vacinado
paciente_endereco_nmPais Nome do país de endereço do vacinado
paciente_endereco_uf Sigla da UF de endereço do vacinado
paciente_endereco_cep 5 dígitos para anonimizado e 7 dígitos para identificado
paciente_nacionalidade_enum Nacionalidade Nacionalidade do vacinado
estabelecimento_valor Código do CNES do estabelecimento que realizou a vacinação
estabelecimento_razaoSocial Nome/Razão Social do estabelecimento
estabelecimento_noFantasia Nome fantasia do estabelecimento
estabelecimento_municipio_codigo Código do município do estabelecimento
estabelecimento_municipio_nome Nome do município do estabelecimento
estabelecimento_uf Sigla da UF do estabelecimento
vacina_grupo_atendimento_code Código do grupo de atendimento ao qual pertence o vacinado
vacina_grupo_atendimento_nome Nome do grupo de atendimento ao qual pertence o vacinado
vacina_categoria_code Código da categoria
vacina_categoria_nome Descrição da categoria
vacina_lote Número do lote da vacina
vacina_fabricante_nome Nome do fabricante/fornecedor
vacina_fabricante_referencia CNPJ do fabricante/fornecedor
vacina_dataAplicacao Data de aplicação da vacina
vacina_descricao_dose Descrição da dose
vacina_codigo Código da vacina
vacina_nome Nome da vacina/produto
sistema origem Nome do sistema de origem

O atributo para identificação da vacina é o código da vacina. Foram utilizados os casos distintos dos atributos vacina_codigo e vacina_nomepara inferir o domínio de dados, o qual não foi localizado.

Segundo o Ministério da Saúde,

Tabela de Domínio é uma tabela utilizada para armazenar um conjunto de valores possíveis para um determinado preenchimento de um campo em outra tabela. Fonte: MS 08/08/2019 https://datasus.saude.gov.br/glossario/tabela-de-dominio/ Acesso em 31/01/2023.

Apesar da higienização realizada pelo Ministério da Saúde quanto aos códigos da vacina, registros sem o nome da vacina ainda são identificados nos microdados.

CIEGES em 30/01/2023.
vacina_codigo [sic] vacina_nome [sic] registros usuários do SUS
89 COVID-19 ASTRAZENECA - ChAdOx1-S 7.946.750 6.767.352
85 COVID-19 ASTRAZENECA/FIOCRUZ - COVISHIELD 145.579.478 78.625.021
88 COVID-19 JANSSEN - Ad26.COV2.S 30.991.545 26.756.808
99 COVID-19 PEDIÁTRICA - PFIZER COMIRNATY 11.357.507 6.931.228
87 COVID-19 PFIZER - COMIRNATY 198.701.541 119.487.405
99 COVID-19 PFIZER - COMIRNATY PEDIÁTRICA 489.519 472.356
102 COVID-19 PFIZER - COMIRNATY PEDIÁTRICA MENOR DE 5 ANOS 243.644 206.454
86 COVID-19 SINOVAC/BUTANTAN - CORONAVAC 110.708.829 59.967.916
98 COVID-19 SINOVAC - CORONAVAC 1.820.548 1.650.336
102 Sem informação 26.126 26.101

A tabela vw_vacinas_br_01_coorte transpõe os dados originais, corrigindo a codificação, atribuindo a faixa etária e avaliando as imunizações anteriores assinalando na variável st_imunização o valor 1 para as procedentes em relação ao intervalo preconizado em dias.

-- covid19.vw_vacinas_br_01_coorte source

CREATE MATERIALIZED VIEW covid19.vw_vacinas_br_01_coorte
TABLESPACE pg_default
AS WITH subset AS (
         SELECT a_1.cnes,
            t1.co_seq_territorio AS co_seq_territorio_estabelecimento,
            dense_rank() OVER (ORDER BY a_1.paciente_id) AS nu_usuario,
                CASE
                    WHEN a_1.paciente_endereco_coibgemunicipio IS NULL THEN t1.co_seq_territorio
                    ELSE t2.co_seq_territorio
                END AS co_seq_territorio_residencia,
                CASE
                    WHEN a_1.paciente_enumsexobiologico = 1 THEN 'M'::text
                    WHEN a_1.paciente_enumsexobiologico = 2 THEN 'F'::text
                    ELSE '?'::text
                END AS paciente_enumsexobiologico,
            a_1.paciente_datanascimento,
                CASE
                    WHEN (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) >= 1 AND (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) <= 183 THEN 1
                    WHEN (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) >= 184 AND (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) <= 730 THEN 2
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 3::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 4::double precision THEN 3
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 5::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 11::double precision THEN 4
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 12::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 17::double precision THEN 5
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 18::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 39::double precision THEN 6
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 40::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 59::double precision THEN 7
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 60::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 69::double precision THEN 8
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 70::double precision AND date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 79::double precision THEN 9
                    WHEN date_part('years'::text, age(a_1.vacina_dataaplicacao::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 80::double precision THEN 10
                    ELSE 0
                END AS faixa_etaria_dose,
                CASE
                    WHEN (CURRENT_DATE - a_1.paciente_datanascimento) >= 1 AND (CURRENT_DATE - a_1.paciente_datanascimento) <= 183 THEN 1
                    WHEN (CURRENT_DATE - a_1.paciente_datanascimento) >= 184 AND (CURRENT_DATE - a_1.paciente_datanascimento) <= 730 THEN 2
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 3::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 4::double precision THEN 3
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 5::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 11::double precision THEN 4
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 12::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 17::double precision THEN 5
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 18::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 39::double precision THEN 6
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 40::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 59::double precision THEN 7
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 60::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 69::double precision THEN 8
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 70::double precision AND date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) <= 79::double precision THEN 9
                    WHEN date_part('years'::text, age(CURRENT_DATE::timestamp with time zone, a_1.paciente_datanascimento::timestamp with time zone)) >= 80::double precision THEN 10
                    ELSE 0
                END AS faixa_etaria_hoje,
                CASE
                    WHEN upper(btrim(a_1.paciente_nacionalidade_enumnacionalidade::text)) = 'B'::text THEN 1
                    ELSE 0
                END AS paciente_nacionalidade_enumnacionalidade,
            d.co_seq_vacina,
            a_1.vacina_dataaplicacao,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN 0
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END AS nu_dia_aplicacao_2021_01_16,
            dense_rank() OVER (PARTITION BY a_1.paciente_id ORDER BY a_1.vacina_dataaplicacao) AS nu_dose,
            row_number() OVER (PARTITION BY a_1.paciente_id, (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN 100000
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS nu_registro,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v1,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v2,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v3,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v4,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v5,
            lag(COALESCE(d.co_seq_vacina::integer, 0)) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS co_seq_vacina_v6,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 1) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior1,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 2) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior2,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 3) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior3,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 4) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior4,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 5) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior5,
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END - lag(
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END, 6) OVER (PARTITION BY a_1.paciente_id ORDER BY (
                CASE
                    WHEN a_1.vacina_dataaplicacao < '2021-01-16'::date OR a_1.vacina_dataaplicacao > CURRENT_DATE THEN '-1'::integer
                    ELSE a_1.vacina_dataaplicacao - '2021-01-16'::date
                END)) AS qt_dias_dose_anterior6,
                CASE
                    WHEN a_1.vacina_descricao_dose::text = '4ª Dose'::text THEN '2a Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '2ª Dose Revacinação'::text THEN '2a Dose'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Tratamento com quatro doses'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = '5ª Dose'::text THEN 'Dose Adicional'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Tratamento com dezessete doses'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = '1º Reforço'::text THEN 'Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '3º Reforço'::text THEN 'Dose Adicional'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Tratamento com doze doses'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Tratamento com duas doses'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = '4º Reforço'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = '3ª Dose Revacinação'::text THEN 'Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '6º Reforço'::text THEN '?'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Única'::text THEN 'Dose Única'::text
                    WHEN a_1.vacina_descricao_dose::text = '2ª Dose'::text THEN '2a Dose'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Dose Adicional'::text THEN 'Dose Adicional'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Dose Inicial'::text THEN '1a Dose'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Tratamento com uma dose'::text THEN 'Dose Única'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Revacinação'::text THEN '2a Dose'::text
                    WHEN a_1.vacina_descricao_dose::text = '2º Reforço'::text THEN '2a Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '1ª Dose'::text THEN '1a Dose'::text
                    WHEN a_1.vacina_descricao_dose::text = '3ª Dose'::text THEN 'Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '4ª Dose Revacinação'::text THEN '2a Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Dose'::text THEN 'Dose Única'::text
                    WHEN a_1.vacina_descricao_dose::text = 'Reforço'::text THEN 'Dose Reforco'::text
                    WHEN a_1.vacina_descricao_dose::text = '1ª Dose Revacinação'::text THEN '2a Dose'::text
                    ELSE '?'::text
                END AS no_dose_localizasus,
                CASE
                    WHEN (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) >= 1 AND (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) <= 183 THEN '00|0 a 6 meses'::text
                    WHEN (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) >= 184 AND (a_1.vacina_dataaplicacao - a_1.paciente_datanascimento) <= 730 THEN '01|6 meses a 2 anos'::text
                    WHEN a_1.paciente_idade >= 3 AND a_1.paciente_idade <= 4 THEN '02|3 a 4 anos'::text
                    WHEN a_1.paciente_idade >= 5 AND a_1.paciente_idade <= 11 THEN '03|5 a 11 anos'::text
                    WHEN a_1.paciente_idade >= 12 AND a_1.paciente_idade <= 17 THEN '04|12 a 17 anos'::text
                    WHEN a_1.paciente_idade >= 18 AND a_1.paciente_idade <= 19 THEN '05|18 a 19 anos'::text
                    WHEN a_1.paciente_idade >= 20 AND a_1.paciente_idade <= 24 THEN '06|20 a 24 anos'::text
                    WHEN a_1.paciente_idade >= 25 AND a_1.paciente_idade <= 26 THEN '07|25 a 29 anos'::text
                    WHEN a_1.paciente_idade >= 30 AND a_1.paciente_idade <= 34 THEN '08|30 a 34 anos'::text
                    WHEN a_1.paciente_idade >= 35 AND a_1.paciente_idade <= 39 THEN '09|35 a 39 anos'::text
                    WHEN a_1.paciente_idade >= 40 AND a_1.paciente_idade <= 44 THEN '10|40 a 44 anos'::text
                    WHEN a_1.paciente_idade >= 45 AND a_1.paciente_idade <= 49 THEN '11|45 a 49 anos'::text
                    WHEN a_1.paciente_idade >= 50 AND a_1.paciente_idade <= 54 THEN '12|50 a 54 anos'::text
                    WHEN a_1.paciente_idade >= 55 AND a_1.paciente_idade <= 59 THEN '13|55 a 59 anos'::text
                    WHEN a_1.paciente_idade >= 60 AND a_1.paciente_idade <= 64 THEN '14|60 a 64 anos'::text
                    WHEN a_1.paciente_idade >= 65 AND a_1.paciente_idade <= 69 THEN '15|65 a 69 anos'::text
                    WHEN a_1.paciente_idade >= 70 AND a_1.paciente_idade <= 74 THEN '16|70 a 74 anos'::text
                    WHEN a_1.paciente_idade >= 75 AND a_1.paciente_idade <= 79 THEN '17|75 a 79 anos'::text
                    WHEN a_1.paciente_idade >= 80 THEN '18|≥80 anos'::text
                    ELSE '?'::text
                END AS no_faixa_etaria_localizasus
           FROM covid19.tb_vacinas_br a_1
             LEFT JOIN bd_geral.td_territorio t1 ON a_1.estabelecimento_municipio_codigo = t1.co_municipio_ibge
             LEFT JOIN bd_geral.td_territorio t2 ON a_1.paciente_endereco_coibgemunicipio = t2.co_municipio_ibge
             LEFT JOIN covid19.td_vacina_covid19 d ON a_1.vacina_codigo::text::tsquery @@ d.co_vacina
        )
 SELECT a.cnes,
    a.co_seq_territorio_estabelecimento,
    a.nu_usuario,
    a.co_seq_territorio_residencia,
    a.paciente_enumsexobiologico,
    a.paciente_datanascimento,
    a.faixa_etaria_dose,
    a.faixa_etaria_hoje,
    a.paciente_nacionalidade_enumnacionalidade,
    a.co_seq_vacina,
    a.vacina_dataaplicacao,
    a.nu_dia_aplicacao_2021_01_16,
    a.nu_dose,
    a.nu_registro,
    a.no_dose_localizasus,
    a.no_faixa_etaria_localizasus,
    COALESCE(
        CASE
            WHEN a.nu_dose = 1 AND a.nu_registro = 1 THEN 1
            WHEN a.nu_dose = 2 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_primario THEN 1
            WHEN a.nu_dose = 3 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior2 >= v2.nu_dias_esquema_primario AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 4 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior3 >= v3.nu_dias_esquema_primario AND a.qt_dias_dose_anterior2 >= v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 >= v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 >= v3.nu_dias_esquema_primario AND a.qt_dias_dose_anterior2 >= v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 3 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior2 < v2.nu_dias_esquema_primario AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_primario THEN 1
            WHEN a.nu_dose = 4 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior3 < v3.nu_dias_esquema_primario AND a.qt_dias_dose_anterior2 < v2.nu_dias_esquema_primario AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_primario THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 < v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 < v3.nu_dias_esquema_primario AND a.qt_dias_dose_anterior2 <= v2.nu_dias_esquema_primario AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_primario THEN 1
            WHEN a.nu_dose = 4 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior3 >= v3.nu_dias_esquema_primario AND a.qt_dias_dose_anterior2 < v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 >= v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 >= v3.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior2 < v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 >= v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 >= v3.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior2 >= v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 >= v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 < v3.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior2 >= v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            WHEN a.nu_dose = 5 AND a.nu_registro = 1 AND a.qt_dias_dose_anterior4 >= v4.nu_dias_esquema_primario AND a.qt_dias_dose_anterior3 < v3.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior2 < v2.nu_dias_esquema_reforco AND a.qt_dias_dose_anterior1 >= v1.nu_dias_esquema_reforco THEN 1
            ELSE NULL::integer
        END, 0) AS st_imunizacao
   FROM subset a
     LEFT JOIN covid19.td_vacina_covid19 v1 ON a.co_seq_vacina_v1 = v1.co_seq_vacina
     LEFT JOIN covid19.td_vacina_covid19 v2 ON a.co_seq_vacina_v2 = v2.co_seq_vacina
     LEFT JOIN covid19.td_vacina_covid19 v3 ON a.co_seq_vacina_v3 = v3.co_seq_vacina
     LEFT JOIN covid19.td_vacina_covid19 v4 ON a.co_seq_vacina_v4 = v4.co_seq_vacina
WITH DATA;

Método de processamento analítico

Cada usuário na coorte é contabilizado apenas uma vez na tabela vw_vacinas_br_02_usuario, onde consta a síntese do status vacinal e respectiva imunização.

-- covid19.vw_vacinas_br_02_usuario source

CREATE MATERIALIZED VIEW covid19.vw_vacinas_br_02_usuario
TABLESPACE pg_default
AS SELECT vw_vacinas_br_01_coorte.nu_usuario,
    split_part(string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.co_seq_territorio_residencia::text
            ELSE NULL::text
        END, ' '::text 
        ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16), ' '::text, 1)::integer AS co_seq_territorio,
    string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.cnes::text
            ELSE NULL::text
        END, ' '::text ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS cnes,
    string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.co_seq_territorio_estabelecimento::text
            ELSE NULL::text
        END, ' '::text ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS co_seq_territorio_estabelecimento,
    string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.co_seq_territorio_residencia::text
            ELSE NULL::text
        END, ' '::text ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS co_seq_territorio_residencia,
    string_agg(DISTINCT
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.paciente_enumsexobiologico
            ELSE NULL::text
        END, ''::text) AS paciente_enumsexobiologico,
    min(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.faixa_etaria_dose
            ELSE 0
        END ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS faixa_etaria_inicio,
    max(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.faixa_etaria_hoje
            ELSE 0
        END ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS faixa_etaria_hoje,
    sum(DISTINCT
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.paciente_nacionalidade_enumnacionalidade
            ELSE 0
        END) AS paciente_nacionalidade_enumnacionalidade,
    string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.co_seq_vacina::text
            ELSE NULL::text
        END, ''::text ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS vacina,
    min(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16
            ELSE NULL::integer
        END ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS nu_dia_aplicacao_2021_01_16_min,
    max(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16
            ELSE NULL::integer
        END ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS nu_dia_aplicacao_2021_01_16_max,
    string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16::text
            ELSE NULL::text
        END, ' '::text ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16) AS nu_dia_aplicacao_2021_01_16,
    sum(vw_vacinas_br_01_coorte.st_imunizacao) AS qt_imunizacao,
    count(*) AS qt_registro,
    string_agg(replace(vw_vacinas_br_01_coorte.no_dose_localizasus, ' '::text, '_'::text), ' '::text ORDER BY vw_vacinas_br_01_coorte.nu_registro) AS no_dose_localizasus
   FROM covid19.vw_vacinas_br_01_coorte
  GROUP BY vw_vacinas_br_01_coorte.nu_usuario
  ORDER BY (split_part(string_agg(
        CASE
            WHEN vw_vacinas_br_01_coorte.st_imunizacao = 1 
            THEN vw_vacinas_br_01_coorte.co_seq_territorio_residencia::text
            ELSE NULL::text
        END, ' '::text 
        ORDER BY vw_vacinas_br_01_coorte.nu_dia_aplicacao_2021_01_16), ' '::text, 1)::integer), vw_vacinas_br_01_coorte.nu_usuario
WITH DATA;

O painel analítico conta com agregação por município na tabela vw_vacinas_br_03_municipio.

-- covid19.vw_vacinas_br_03_municipio source

CREATE MATERIALIZED VIEW covid19.vw_vacinas_br_03_municipio
TABLESPACE pg_default
AS WITH subset AS (
         SELECT a.nu_usuario AS co_seq_usuario_sus,
            COALESCE(a.co_seq_territorio, 0) AS co_seq_territorio,
            COALESCE(a.faixa_etaria_hoje, 0) AS co_seq_faixa_etaria,
            a.qt_imunizacao AS qt_dose,
            a.qt_registro
           FROM covid19.vw_vacinas_br_02_usuario a
        )
 SELECT subset.co_seq_territorio,
    subset.co_seq_faixa_etaria,
    subset.qt_dose,
    count(*) AS qt_usuario,
    sum(subset.qt_registro) AS qt_registro
   FROM subset
  GROUP BY subset.co_seq_territorio, subset.qt_dose, subset.co_seq_faixa_etaria
WITH DATA;

O painel analítico necessita do produto cartesiano das variáveis, ainda que não tenham ocorrido a utilização de dado imunizante. A tabela de apresentação dos dados em painel analítico é a vw_vacinas_br_04_municipio_cartesiano.

-- covid19.vw_vacinas_br_04_municipio_cartesiano source

CREATE MATERIALIZED VIEW covid19.vw_vacinas_br_04_municipio_cartesiano
TABLESPACE pg_default
AS SELECT a.co_seq_territorio,
    a.co_seq_faixa_etaria,
    a.qt_dose,
    COALESCE(b.qt_usuario, 0::bigint) AS qt_usuario,
    COALESCE(b.qt_registro, 0::numeric) AS qt_registro
   FROM ( SELECT a_1.co_seq_territorio,
            b_1.co_seq_faixa_etaria,
            c.qt_dose
           FROM bd_geral.td_territorio a_1,
            ( SELECT DISTINCT vw_vacinas_br_03_municipio.co_seq_faixa_etaria
                   FROM covid19.vw_vacinas_br_03_municipio) b_1,
            ( SELECT DISTINCT vw_vacinas_br_03_municipio.qt_dose
                   FROM covid19.vw_vacinas_br_03_municipio) c) a
     LEFT JOIN covid19.vw_vacinas_br_03_municipio b 
       ON a.co_seq_territorio = b.co_seq_territorio 
      AND a.co_seq_faixa_etaria = b.co_seq_faixa_etaria 
      AND a.qt_dose = b.qt_dose
WITH DATA;

Método de apresentação de dados

Foi elaborado painelTableau para navegação pelas categorias de análise.

Método de análise matemática e estatística

Exemplos de código-fonte e respectiva explicação deve ser detalhado, citando a ferramenta, como projeto R, python, matlab, scilab, Stata, SPSS, PSPP, Epiinfo, etc.

Método de descoberta de conhecimento em bancos de dados (KDD)

Não foi aplicado método para mineração de dados.

Base de dados

Não estão disponíveis os microdados processados pelo CONASS|CIEGES.

Apêndice

Avaliação da metodologia proposta em relação aos dados do localizaSUS

Foi realizada avaliação, em 30/01/2023, para comparação dos quantitativos divulgados pelo vacinômetro Covid-19, disponível em https://infoms.saude.gov.br/extensions/DEMAS_C19_Vacina_v2/DEMAS_C19_Vacina_v2.html#.

Foi necessário fazer engenharia reversa para atingir valores semelhantes a partir dos microdados disponibilizados via openDataSUS.

Fac-símile das informações técnicas prestadas no painel localizaSUS Vacinômetro Covid-19. Disponível em https://infoms.saude.gov.br/extensions/DEMAS_C19_Vacina_v2/DEMAS_C19_Vacina_v2.html#. Acesso em 30/01/2023
Fac-símile das informações técnicas prestadas no painel localizaSUS Vacinômetro Covid-19. Disponível em https://infoms.saude.gov.br/extensions/DEMAS_C19_Vacina_v2/DEMAS_C19_Vacina_v2.html#. Acesso em 30/01/2023

Categoria e número de doses

Os totais reportados no sítio do Ministério da Saúde Foram:

  • Total de Doses Aplicadas: 501.587.151
  • 1ª Dose: 181.921.290
  • 2ª Dose: 164.503.069
  • Dose Única: 5.038.961
  • Dose Reforço: 103.562.746
  • 2ª Dose Reforço: 41.569.758
  • Dose Adicional: 4.991.327

Entretanto, os registros disponíveis via openDataSUS em 24/01/2023 foram 507.865.487. Não havendo marcação de exclusão lógica nos microdados, nem tendo sido localizada nota técnica detalhando o percurso metodológico para higienização, as comparações foram realizadas considerando todos o total de 507.865.487 registros. O método de cálculo da idade também não é explicitado, sobretudo algo crítico para a faixa-etária "6 meses a 2 anos".

Importante salientar que o vacinômetro aborda o número de registros e não o número de usuários. Salienta-se que cada gráfico do vacinômetro possibilita baixar os respectivos dados agregados, como mostrado na tabela a seguir.

LocalizaSUS Vacinômetro Covid-19 - Doses aplicadas por faixa etária
no_faixa 1ª Dose 2ª Dose 2ª Dose Reforço Dose Adicional Dose Reforço Dose Única Total geral
01|6 meses a 2 anos 215.961 67.011 307 81 778 62 284.200
02|3 a 4 anos 1.402.322 646.183 1.099 164 1.493 139 2.051.400
03|5 a 11 anos 14.835.321 10.698.495 5.940 2.727 142.746 1.050 25.686.279
04|12 a 17 anos 16.840.124 14.311.611 56.203 199.962 5.188.701 5.097 36.601.698
05|18 a 19 anos 5.920.622 5.189.346 383.044 114.637 2.676.761 85.550 14.369.960
06|20 a 24 anos 15.548.057 13.692.070 1.335.058 313.102 7.173.122 263.178 38.324.587
07|25 a 29 anos 15.553.978 14.001.009 1.677.688 353.666 7.930.407 319.492 39.836.240
08|30 a 34 anos 15.357.221 14.062.879 2.250.185 393.054 8.631.731 472.285 41.167.355
09|35 a 39 anos 15.293.282 14.080.332 2.842.458 455.474 9.565.254 1.124.889 43.361.689
10|40 a 44 anos 14.093.877 13.253.056 4.143.201 517.075 9.965.541 1.348.292 43.321.042
11|45 a 49 anos 12.615.055 11.964.900 3.975.369 471.360 9.012.031 813.753 38.852.468
12|50 a 54 anos 11.976.355 11.402.177 4.269.268 463.886 8.615.920 352.465 37.080.071
13|55 a 59 anos 11.194.318 10.812.431 4.503.689 472.540 8.455.191 164.709 35.602.878
14|60 a 64 anos 9.617.539 9.404.565 4.546.357 364.152 7.768.427 40.123 31.741.163
15|65 a 69 anos 7.525.266 7.487.973 3.988.934 291.252 6.487.420 20.836 25.801.681
16|70 a 74 anos 5.485.153 5.420.609 3.138.752 224.418 4.906.500 11.558 19.186.990
17|75 a 79 anos 3.651.261 3.555.705 2.057.552 152.287 3.247.951 6.984 12.671.740
18|≥80 anos 4.795.578 4.452.717 2.394.654 201.490 3.792.772 8.499 15.645.710
Total geral 181.921.290 164.503.069 41.569.758 4.991.327 103.562.746 5.038.961 501.587.151

Entretanto, as categorias disponíveis no vacinômetro não sãos as mesmas disponíveis no opendatasus. Não foi identificado o critério de transposição das categorias.

Registros de vacinação contra Covid-19 segundo as variáveis do opendatasus vacina_descricao_dose e co_estabelecimento_uf, em 31/01/2023.
sg_uf NI 1ª Dose 1ª Dose

Revacinação

1º Reforço 2ª Dose 2ª Dose Revacinação 2º Reforço 3ª Dose 3ª Dose Revacinação 3º Reforço 4ª Dose 4ª Dose

Revacinação

Reforço

Dose

Reforço

Dose DoseAdicional DoseInicial Reforço Revacinação Tratamento com

dezessete doses

Tratamento com

doze doses

Tratamento com duas

doses

Tratamento

com quatro doses

Tratamento com uma

dose

Única Total geral
NI 2.040 2.975 1.478 11 123 6.743 13.370
AC 1 687.968 784 575.970 657 87.521 1 398 1.239 627 13.686 22.667 289.772 607 1.681.898
AL 9 2.638.575 302 1 2.297.721 426 426.139 4 366 2.531 572 56.031 11.671 1 1.258.758 250 6.693.357
AM 3.287.621 2.028 17 2.792.882 1.182 226.781 853.115 1.601 2.128 438.672 2.088 1.552 32.114 21.651 2 770.839 464 26.184 8.460.921
AP 613.573 571 496.827 437 63.543 190 784 136 11.346 26.528 241.981 755 1.456.671
BA 818 12.519.446 12.594 1.461 11.041.366 24.286 3.092.528 80.135 13.834 45.809 15 26.705 285.676 457.997 64 7.062.402 6.942 1 1.556 34.673.635
CE 4 8.144.542 3.615 194.471 7.042.738 8.579 2.080.712 58 3.290 114.795 114 8.656 4.458 26.161 239.783 5 4.498.631 4.077 140.224 22.514.913
DF 11 2.535.573 2.007 2 2.363.361 2.427 624.204 28 1.058 6.145 10 1.100 65.609 63.705 2 1.448.253 459 395 7.114.349
ES 3.460.243 14 23 3.080.041 11 946.267 10 4 22.474 248.595 1 90.073 88.296 1.870.439 22.230 9.828.721
GO 96 5.917.326 5.630 2 5.174.942 7.532 1.062.395 8 4.681 15.774 7.753 1 165.815 206.406 6 2.789.242 2.436 15.360.045
MA 719 5.203.041 2.519 3 4.359.545 2.703 764.228 13 3.825 34.418 6 5.026 125.236 143.886 2 2.142.482 1.164 12.788.816
MG 213 18.287.170 21.072 341 16.778.208 25.405 4.126.795 516 13.547 55.478 62 19.118 488.920 918.591 44 10.846.992 5.522 1 35.655 51.623.650
MS 36 2.280.388 2.092 1 2.017.906 1.888 199.567 438.053 1.718 5.573 159.332 2.203 26 187.675 85.420 822.396 750 1 6.205.025
MT 653 2.845.727 4.658 83 2.439.219 4.420 344.617 6.882 3.929 10.325 1.089 5.778 100.579 112.278 4 1.123.957 1.107 3.077 7.008.382
PA 447 6.348.319 5.781 3 5.288.086 6.163 646.284 390 5.072 35.774 849 5.603 1 148.119 229.278 5 2.351.012 2.721 1 1 15.073.909
PB 7 3.492.138 2.115 3.189.428 4.522 679.026 5 1.468 3.778 72 2.774 46.991 58.385 1.062 1.998.331 607 86 9.480.795
PE 1.563 8.299.363 6.257 3 7.338.814 6.896 1.539.602 213.863 4.345 267.469 8 5.148 115.486 1 141.507 140.858 7 4.373.173 1.373 22.455.736
PI 2.963.892 1.406 1 2.722.053 3.079 989.367 57 473 5.342 7 1.799 56.526 40.129 11 1.930.384 265 8.714.791
PR 199 10.233.654 13.059 4.047 9.445.996 22.684 1.698.683 182.360 5.172 16.309 38.088 12.025 199 1 316.254 455.408 1 6.387.718 3.754 1 22.792 28.858.404
RJ 551 14.611.462 14.509 35 13.292.179 21.021 3.729.340 1.090 11.336 52.862 243 19.854 396.758 400.206 28 8.146.706 3.375 1 5.587 40.707.143
RN 5 2.957.399 19 13 2.651.473 11 849.083 25 129.945 199.012 13 1 6.502 162.884 8 1.729.944 61.419 8.747.756
RO 9 1.324.834 1.384 1.129.545 1.241 161.815 15.454 897 2.516 1.745 33.923 48.156 502.080 858 3.224.457
RR 464.446 1.194 352.676 557 31.900 2 804 776 762 12.859 9.921 133.199 342 1.009.438
RS 361 9.845.103 5.618 1.415 9.109.486 16.571 2.461.361 4.439 5.185 15.083 32 11.734 309.395 268.237 3 5.828.498 2.220 1 2.798 27.887.540
SC 39 6.286.968 3.437 31.969 5.734.205 5.036 999.884 14.766 1.481 10.344 2 2.920 251.606 99.898 1 3.036.948 1.510 2.504 16.483.518
SE 6 1.979.395 1.025 1.777.562 509 560.068 24 450 18.138 2 809 42.681 25.857 1.138.767 455 5.545.748
SP 1 44.798.101 57 12 41.229.837 86 13.294.298 3.796 5 14.351 1.042 2 89 1.275.785 583.372 395 30.214.116 10 1 13 23.719 131.439.088
TO 42 1.175.849 1.787 1 993.853 1.703 125.065 1 819 2.499 987 32.025 25.947 1 452.149 683 2.813.411
Total geral 5790 183.204.156 115.534 233904 164.718.894 170.032 41.812.551 1.815.095 85948 892.659 1.087.252 145.925 115499 6.328 1 4.719.863 4.947.538 1652 103.395.912 42696 1 1 12 1 15 348.228 507.865.487

Foi realizada uma engenharia reversa arbitrária da variável vacina_descricao_dose do opendatasus para as mesmas categorias do vacinômetro, minimizando a diferença das frequências totais,

obtendo-se os valores a seguir:

OpendataSUS - Doses aplicadas por faixa etária.
faixa_etaria_localizasus ? 1a Dose 2a Dose 2a Dose Reforco Dose Adicional Dose Reforco Dose Única Total geral
Sem informação 1.283 9.563.692 8.466.904 1.047.546 245.276 4.887.049 193.110 24.404.860
00|0 a 6 meses 549 274 56 22 132 7 1.040
01|6 meses a 2 anos 1 108.419 29.828 135 44 363 23 138.813
02|3 a 4 anos 6 1.369.224 618.440 1.137 207 1.532 145 1.990.691
03|5 a 11 anos 18 14.416.820 10.635.572 6.104 2.881 116.294 947 25.178.636
04|12 a 17 anos 63 17.675.331 14.502.519 56.748 214.114 5.321.052 4.949 37.774.776
05|18 a 19 anos 95 5.986.365 5.208.932 386.934 133.215 2.742.419 85.729 14.543.689
06|20 a 24 anos 1.492 15.684.802 13.713.301 1.354.367 362.008 7.328.417 263.791 38.708.178
07|25 a 29 anos 834 6.434.515 5.714.409 658.496 159.459 3.221.466 127.425 16.316.604
08|30 a 34 anos 2.273 15.455.097 14.117.055 2.276.970 452.060 8.802.966 475.059 41.581.480
09|35 a 39 anos 2.645 15.442.198 14.130.422 2.877.605 522.955 9.750.778 1.135.590 43.862.193
10|40 a 44 anos 4.889 14.197.729 13.312.703 4.199.071 609.997 10.163.292 1.356.542 43.844.223
11|45 a 49 anos 4.499 12.696.541 12.026.172 4.033.275 550.086 9.187.870 819.132 39.317.575
12|50 a 54 anos 11.706 12.037.168 11.456.847 4.356.921 531.793 8.770.065 353.415 37.517.915
13|55 a 59 anos 13.527 11.246.608 10.859.877 4.606.084 536.580 8.594.857 165.272 36.022.805
14|60 a 64 anos 21.164 9.669.711 9.428.061 4.817.327 436.122 7.880.695 39.903 32.292.983
15|65 a 69 anos 18.506 7.555.357 7.509.838 4.260.111 353.246 6.597.982 20.703 26.315.743
16|70 a 74 anos 14.886 5.501.700 5.433.927 3.355.269 278.476 5.008.491 11.495 19.604.244
17|75 a 79 anos 9.698 3.663.434 3.565.713 2.196.168 187.454 3.310.414 6.891 12.939.772
18|≥80 anos 13.720 4.500.548 4.316.362 2.555.404 270.530 3.844.725 7.978 15.509.267
Total geral 121.305 183.205.808 165.047.156 43.045.728 5.846.525 105.530.859 5.068.106 507.865.487
Doses aplicadas por faixa etária estabelecida pelo Conass.
faixa etária ? 1a Dose 2a Dose 2a Dose Reforco Dose Adicional Dose Reforco Dose Única Total geral
não informado 0 209.233 121.827 2.956 151 6.430 278 340.875
0 a 6 meses 0 549 274 56 22 132 7 1.040
acima de 6 meses a 2 anos 1 108.419 29.828 135 44 363 23 138.813
3 a 4 anos 3 745.157 297.229 540 113 954 74 1.044.070
5 a 11 anos 21 13.009.136 9.315.186 5.759 2.241 92.888 862 22.426.093
12 a 17 anos 52 16.868.489 13.722.363 45.666 177.350 4.438.959 3.391 35.256.270
18 a 39 anos 7.982 67.985.007 60.690.190 7.971.017 1.794.930 35.503.085 1.975.068 175.927.279
40 a 59 anos 32.357 51.227.587 48.504.763 16.880.984 2.236.824 37.127.468 2.976.272 158.986.255
60 a 69 anos 39.098 17.986.217 17.650.871 9.218.894 832.041 14.931.935 82.398 60.741.454
70 a 79 anos 26.355 9.944.122 9.787.287 5.977.423 499.049 8.994.483 20.584 35.249.303
80 anos ou mais 15.436 5.121.892 4.927.338 2.942.298 303.760 4.434.162 9.149 17.754.035
Total 121.305 183.205.808 165.047.156 43.045.728 5.846.525 105.530.859 5.068.106 507.865.487

Avaliando as categorias do localizasus com a sucessão cronológica relativa à variável vacina_dataaplicacao, obteve-se o resultado a seguir.

As colunas relativa ao CIEGES apresentam dados com a higienização, sendo desconsideradas doses subsequentes no mesmo dia e doses que não respeitaram o intervalo preconizado.

Registros e imunizações contra covid-19, em 30/01/2023
nu dose nu dose registros imunizacaoCIEGES registros 80anos localizasus st imunizacao 80anos localizasus registros 80anosopedatasus st imunizacao

80anos

CIEGES

registros

80anos

opendatasus

st imunizacao

80anos

CIEGES

1 1a Dose 181.984.676 179.059.970 4.438.112 4.359.654 4.438.113 4.359.655 5.614.400 5.521.867
1 Dose Única 4.948.418 4.834.199 4.849 4.726 4.849 4.726 5.864 5.725
1 2a Dose 3.522.274 3.405.654 123.219 116.031 123.219 116.031 150.760 141.923
1 Dose Reforco 912.079 899.360 36.360 36.026 36.360 36.026 41.431 41.048
2 2a Dose 160.016.442 147.683.466 4.105.432 3.020.341 4.105.432 3.020.341 5.150.121 3.664.364
2 Dose Reforco 7.185.311 7.086.523 182.489 180.528 182.489 180.528 210.100 207.793
2 1a Dose 758.695 372.269 47.936 16.768 47.936 16.768 56.839 19.061
2 Dose Adicional 557.973 537.757 10.515 10.252 10.515 10.252 11.818 11.513
2 2a Dose Reforco 457.510 447.102 30.542 29.836 30.542 29.836 32.683 31.910
3 Dose Reforco 93.517.867 92.255.975 3.356.317 3.330.090 3.356.317 3.330.090 3.965.157 3.934.442
3 2a Dose Reforco 3.944.471 3.826.385 251.102 239.841 251.102 239.841 270.418 258.141
3 Dose Adicional 3.909.502 3.550.767 108.463 105.216 108.463 105.216 125.942 122.111
3 2a Dose 1.063.313 469.614 76.565 36.191 76.565 36.191 91.047 41.870
4 2a Dose Reforco 38.039.147 37.131.994 2.217.881 2.125.311 2.217.881 2.125.311 2.445.731 2.343.224
4 Dose Reforco 3.791.476 3.221.814 256.815 217.291 256.815 217.291 284.328 240.768
4 Dose Adicional 1.060.429 996.224 97.476 92.987 97.476 92.987 105.078 100.123
4 2a Dose 309.563 238.028 10.048 6.217 10.048 6.217 11.451 6.841
5 2a Dose Reforco 419.267 341.061 40.077 32.515 40.077 32.515 42.517 34.411
5 Dose Adicional 233.043 222.507 49.754 48.501 49.754 48.501 50.424 49.069
outro outro 1.234.031 667.058 65.314 49.401 65.314 49.401 74.089 54.386
Total 507.865.487 487.247.727 15.509.266 14.057.723 15.509.267 14.057.724 18.740.198 16.830.590

Transição demográfica

A coorte concorrente avalia o status de imunização na data da última extração. Logo, é esperada a transição de usuários para as faixas de idade mais elevadas, conforme demonstrado na tabela abaixo.

Número de usuários do SUS de vacina contra Covid-19 registrados nos dados abertos do OpenDataSUS em 31/01/2023.
início (primeira dose) faixa idade em 31/01/2023 diferença %
890 01 00d06m 136 -754 -554,4%
109.328 02 06m02a 109.830 502 0,5%
1.392.661 03 03a04a 1.136.335 -256.326 -22,6%
14.508.616 04 05a11a 12.866.817 -1.641.799 -12,8%
16.973.739 05 12a17a 15.537.786 -1.435.953 -9,2%
70.611.101 06 18a39a 69.017.652 -1.593.449 -2,3%
53.248.955 07 40a59a 54.883.229 1.634.274 3,0%
16.889.544 08 60a69 18.473.031 1.583.487 8,6%
9.626.542 09 70a79 10.596.290 969.748 9,2%
4.988.734 10 80+ 5.729.004 740.270 12,9%
188.350.110 total 188.350.110 0 0,0%


Ver também

Ligações externas

Rastreabilidade

atributo valor
Identificador
Código RIPSA
Nome RIPSA
URL RIPSA
tabela CIEGES