1 Introdução

O presente relato está publicado em https://rpubs.com/labxss/polineuropatia.

2 Método - modelagem da coorte

3 Fonte de dados

Os dados foram extraídos do respositório SABEIS conforme https://rpubs.com/sabeis/etl.

Os dados do repositório são originados do SIA - Sistema de Informações Ambulatoriais do SUS a partir de 2008 em ftp://ftp.datasus.gov.br/dissemin/publicos/SIASUS/200801_/Dados/, cuja estratégia de disseminação TabWin/TabNet, veicula arquivos de dados DBC do tipo DBF (database file) compactado, disponíveis em diretório FTP (protocolo de transferência de arquivos).

## data frame with 0 columns and 0 rows

O repositório SABEIS contem 4.976.101 usuários do SUS com 136.324.463 registros de assistência farmacêutica entre 06/2016 e 03/2022. A base de dados contempla 316 procedimentos SIGTAP de medicamentos para 388 doenças segundo CID-10 primário da dispensação.

3.1 Extração

Foi realizada extração segundo o código CID-10 primário E851 - amiloidose heredofamiliar neuropática da doença principal atribuída ao registro de dispensação. Apenas uma tecnologia foi dispensada sob o CID-10: (SIGTAP): 06.04.54.006-0 - tafamidis 20 mg cápsula

As variáveis extraídas e defindas da base de dispensação foram

  • nu_usuariosus: código do CNS criptografado
  • sg_sexo: sexos distintos apresentados nas dispensações APAC
  • co_ibge_municipio_residencia: municípios distintos apresentados nas dispensações APAC
  • nu_idade: idade na competência de dispensação
  • nu_competencia: competência da dispensação
  • qt_aprovada: quantidade aprovada do tafamidis
  • co_dispensacao: código sequencial da dispensação por usuário
  • qt_dias_proxima_dispensacao: dias entre dispensações
  • st_adesao: adesão considerando intervalo inferior a 90 dias
  • st_exclusao_incidente: exclusão de usuários não incidente (primeiros três meses de observação)
  • st_exclusao_dissidente: inclusão de usuários dissidentes (os usuários que utilizam nos três últimos meses não descontinuaram o tratamento)
  • st_interrupcao: status de interrupção do tratamento
  • st_excluir: exclusao de nao incidentes e de usuarios que ainda utilizam o tratamento

3.2 Critérios de exclusão de usuários

Os critérios de exclusão foram:

  • incidência: não observação de registros nos primeiros três meses observados a partir da data da primeira dispensação de tafamidis.
  • não dissidência: registros nos últimos três meses observados é indício de que não houve abandono do tratamento.
  • três meses de uso: foram excluídos usuários com menos que três registros de dispensação.

4 Critério de interrupção do tratamento

Ainda, foi assinalado o mês com diferença de dispensaçao superior a 92 dias como critério de interrupção do tratamento, visando ignorar os registros subsequentes.

4.1 Montagem da coorte

A coorte final é constituida pelos registros st_excluir = 0, equivalente aos usuários simultaneamente não contemplados com o critério de exclusão e contemplados com o critério de inclusão, bem como os registros de dispensação st_interrupcao = 0, sendo excluídos registros após a interrupção do tratamento.

A tabela 4.1 mostra a série histórica de uma usuária do SUS a título de ilustração do conjunto de dados (dataset) de trabalho.

Table 4.1: Registros extraídos para uma usuária de tafamidis para polineuropatia, com primeiro registro aos 37 anos, do município de São Paulo, SP.
nu competencia qt aprovada co dispensacao qt dias proxima dispensacao st exclusao incidente st exclusao dissidente st exclusao 3registros st excluir st interrupcao
201912 30 1 31 1 1 0 1 0
202001 30 2 31 1 1 0 1 0
202002 30 3 29 1 1 0 1 0
202003 30 4 31 1 1 0 1 0
202004 30 5 30 1 1 0 1 0
202005 30 6 31 1 1 0 1 0
202006 30 7 30 1 1 0 1 0
202007 30 8 31 1 1 0 1 0
202008 30 9 31 1 1 0 1 0
202009 30 10 30 1 1 0 1 0
202010 30 11 31 1 1 0 1 0
202011 30 12 30 1 1 0 1 0
202012 30 13 31 1 1 0 1 0
202101 30 14 31 1 1 0 1 0
202102 30 15 28 1 1 0 1 0
202103 30 16 31 1 1 0 1 0
202104 30 17 30 1 1 0 1 0
202105 30 18 31 1 1 0 1 0
202106 30 19 61 1 1 0 1 0
202108 30 20 31 1 1 0 1 0
202109 30 21 30 1 1 0 1 0
202110 30 22 151 1 1 0 1 1
202203 30 23 0 1 1 0 1 1

5 Resultado

Foram identificados 452 usuários do SUS de 163.136 unidades aprovadas de tafamidis para polineuropatia com 5.453 registros entre 10/2019 e 03/2022.

5.1 Avaliação da persistência no tratamento

Na avaliação da persistência foram incluídos 46 (10%) usuários do SUS de 14.581 unidades aprovadas (9%) de tafamidis para polineuropatia com 487 registros entre 01/2020 e 12/2021.

Quanto à exclusão, 115 usuários (25%) corresponderam ao critério de incidência (registro nos três primeiros meses). 342 usuários (76%) não corresponderam ao critério de dissidência (registros nos últimos três meses observados), ou seja, presumivelmente continuam utilizando o tratamento. 124 usuários (27%) registraram interrupção no período (intervalo de dispensações acima de 90 dias).

A figura 5.1 mostra o quantitativo de
406 usuários (90%) excluídos e respectivos percentuais relativos ao total de excluídos.

Usuários excluídos segundo os critérios de não incidentes, não desistentes e número de dispensaçoes inferior a três.

Figure 5.1: Usuários excluídos segundo os critérios de não incidentes, não desistentes e número de dispensaçoes inferior a três.

5.1.1 Análise de Kaplan-Meier

Curva de Kaplan-Meier para sobrevivência do uso de de tafamidis para polineuropatia.

Figure 5.2: Curva de Kaplan-Meier para sobrevivência do uso de de tafamidis para polineuropatia.

Curva de Kaplan-Meier para sobrevivência do uso de de tafamidis para polineuropatia segundo o sexo.

Figure 5.3: Curva de Kaplan-Meier para sobrevivência do uso de de tafamidis para polineuropatia segundo o sexo.

Apêndice

Funções auxiliares

# OBTEM ARQUIVOS DO REPOSITORIO DO DATASUS E CARREGA NO POSTGRESQL
# Baixa os arquivos DBC do ftp do datasus para o Brasil.
# Recupera a quantidade aprovada do arquivo AM para o PA com procedimento 06
# Incorpora no PostgreSQL

# voce deve rodar no linux tendo instalado:
# wine
# dbview
# postgresql cliente

library("RCurl") # funcao getURL
library("downloader") # funcao download
library("RPostgreSQL") # conexao com SGBF
# library("read.dbc") # leitura de arquivo dbc
# library(foreign)
library(data.table)
library(gsubfn)
library(dplyr)
library(stringr) # para str_replace
library(read.dbc)
library(googledrive)
library(scales)

library(knitr)
library(lubridate)
library(png)  
library(R.utils)
library(kableExtra)

options(scipen = 100) # Evita notacao cientifica

# CONEXAO COM O SGBD
pg_conecta = function(
  dbname,
  host,
  port,
  user,
  password
){
  con = DBI::dbConnect(
    dbDriver(drvName = "PostgreSQL"),
    dbname = dbname,
    host = host,
    port = port,
    user = user,
    password = password
  )
  return(con)
}

conexao = pg_conecta(dbname, host, port, user, password)

pg_roda_query = function(query){
  con = pg_conecta(dbname, host, port, user, password)
  x=dbGetQuery(
    con,
    query
  )
  
  dbDisconnect(con)
  rm(con)
  
  return(x)
}

# adiciona coisa no banco de dados
pg_persiste = function(dataframe, no_banco, no_tabela, overwrite, append){
  
  con = pg_conecta(dbname, host, port, user, password)
  x=dbWriteTable(
    con, 
    c(no_banco,no_tabela), 
    dataframe, 
    overwrite = overwrite,
    append = append
  )
  
  dbDisconnect(con)
  rm(con)
  
  return(x)
}

library(stringr)
set_colnames = function(vetor){
  x=str_replace_all(
    str_replace_all(
      str_replace_all(
        str_replace_all(
        str_replace_all(iconv(tolower(vetor), from = 'UTF-8', 
                              to = 'ASCII//TRANSLIT'),'[^a-z0-9]','_')
        ,'__','_')
      ,'__','_')
    ,'_$','')
,'_',' ')
  
  return(x)
}

formata <- function(x) {
  y = format(x, big.mark = ".", decimal.mark = ",", scientific = F)
  return(y)
}

formata_mes <- function(x) {
  y = format(as.Date(paste0(x,"15"),"%Y%m%d"),"%m/%Y")
  return(y)
}


firstup <- function(x) {
  substr(x, 1, 1) <- toupper(substr(x, 1, 1))
  x
}

library(gsheet)
get_gsheet = function(url,planilha){
  ds=as.data.frame(gsheet2tbl(url, sheetid = planiha))
  colnames(ds)=set_colnames(colnames(ds))
  # ds[is.na(ds)] <- 0
  return(ds)
}

Funções de visualização de dados

library(ggplot2)
library(grid)
library(pyramid)
# library(sf)

library(forecast)
library(tseries)

plot_difusao <- function(dataframe, titulo, tipo,rotulo_x, rotulo_y) {
  # dataframe: atributo | tempo | n | p |rotulo |  
  # plot_difusao(dataframe[[2]],"teste","empilhada")
  # dataframe: tempo | categoria | valor | percentual
  # tempo = colnames(dataframe)[1]
  # categoria = colnames(dataframe)[2]
  # percentual = colnames(dataframe)[4]
  
  # dataframe$ano = as.factor(dataframe$ano)
  # dataframe$rotulo = format(dataframe$rotulo, big.mark = ".", decimal.mark = ",")
  
  # eixo_x=sort(levels(as.factor(dataframe[,2])))
  # eixo_x[!1:length(eixo_x) %in% seq(1, length(eixo_x),by = round(length(eixo_x)/12))]=""
  
  # seq(as.Date("2001-01-01"), by = "month", along = foo)
  # obtem escala de milhar, milhao, bilhao, etc
  escala=10^max(seq(3,15, by = 3)[mean(log10(dataframe$n))>seq(3,15, by = 3)])
  if (!is.na(escala) & !is.infinite(escala) & escala>0) {
    dataframe[,3]=dataframe[,3]/escala
    rotulo_y=paste0(rotulo_y, " (×", formata(escala) ,")")
  }
  
  
  if (tipo == 'empilhada') {
    g =ggplot(
      dataframe,
      aes(
        fill = atributo,
        y = p,
        x = ano,
        label = rotulo
      )
    ) +
      geom_bar(stat = "identity") +
      xlab('ano') +
      ylab('usuários (%)') +
      geom_text(size = 4, position = position_stack(vjust = 0.5)) +
      coord_flip() +
      scale_fill_brewer(palette = "Pastel1") +
      theme(
        legend.position = "bottom",
        legend.text = element_text(size = rel(1.3)),
        axis.title.x = element_text(size = rel(1.3)),
        axis.title.y = element_text(size = rel(1.3)),
        axis.text.x = element_text(size = rel(1.3)),
        axis.text.y = element_text(size = rel(1.3))
      )
  } 
  
  if (tipo == 'barras verticais') {
    g = ggplot(dataframe, aes(fill=atributo, y=n/100000, x=ano)) + 
      geom_bar(position="dodge", stat="identity") +
      scale_fill_brewer(palette = "Set2")+
      theme(
        legend.position = "bottom",
        legend.text = element_text(size = rel(1.3)),
        axis.title.x = element_text(size = rel(1.3)),
        axis.title.y = element_text(size = rel(1.3)),
        axis.text.x = element_text(size = rel(1.3)),
        axis.text.y = element_text(size = rel(1.3))
      )+
      xlab('ano') +
      ylab('usuários por 100 mil hab.') 
  }
  
  if (tipo == 'série temporal 1') {

    g = ggplot(dataframe, aes(x=ano, y=n, group=atributo, color=atributo)) +
      geom_line() +
      scale_fill_brewer(palette = "Set2")+
      labs(title = titulo)+
      # scale_x_continuous(breaks = eixo_x) +
      # scale_x_datetime(labels = date_format("%Y-%m"), breaks = date_breaks("months")) + 
      xlab('') +
      ylab(rotulo_y) + 
      scale_y_continuous(labels=function(x) formata(x)) +
      theme(
        legend.position = "none",
        legend.text = element_text(size = rel(1.0)),
        axis.title.x = element_text(size = rel(1.0)),
        axis.title.y = element_text(size = rel(1.0)),
        axis.text.x = element_text(size = rel(1.0), angle = 45),
        axis.text.y = element_text(size = rel(1.3))
        
      )
   
    
     
  }
  
  if (tipo == 'série temporal 2'){
    
    p = ggplot(dataframe) + 
      geom_line(aes(x = ano, y = n, group = atributo, colour = atributo)) + 
      geom_text(data = subset(dataframe, ano == 
                                input$painel_situacao_clinica_inAno[2] ), 
                aes(label = atributo, colour = atributo, x = Inf, y = n), hjust = 1) +
      scale_colour_discrete(guide = 'none')  +    
      # xlab('ano') +
      # ylab('usuários') +
      theme(plot.margin = unit(c(1,3,1,1), "lines"),
            axis.title.x = element_text(size = rel(1.3)),
            axis.title.y = element_text(size = rel(1.3)),
            axis.text.x = element_text(size = rel(1.3)),
            axis.text.y = element_text(size = rel(1.3))
            ,legend.position = "none"
      ) 
    
    # Code to turn off clipping
    gt <- ggplotGrob(p)
    gt$layout$clip[gt$layout$name == "panel"] <- "off"
    g = grid.draw(gt)
  }
  
  if (tipo == 'série temporal 3') {
    
    tsdata=dataframe$n
    names(tsdata)=dataframe$ano
    
    tsdata= forecast(auto.arima(
      tsdata,
      allowmean = TRUE
    ), h = 60)
    
   g = autoplot(tsdata) +
      geom_line() +
      scale_fill_brewer(palette = "Set2")+
      labs(title = titulo)+
      xlab('') +
      ylab(rotulo_y) + 
      scale_y_continuous(labels=function(x) formata(x)) +
      theme(
        legend.position = "none",
        legend.text = element_text(size = rel(1.0)),
        axis.title.x = element_text(size = rel(1.0)),
        axis.title.y = element_text(size = rel(1.0)),
        axis.text.x = element_text(size = rel(1.0), angle = 45),
        axis.text.y = element_text(size = rel(1.3))
      )
   
  }
  
  return(g)
}

plot_arima <- function(dataframe,titulo, rotulo_x, rotulo_y) {
    tsdata=dataframe$n
    names(tsdata)=dataframe$ano
  
  plot(
  forecast(auto.arima(
    tsdata,
    allowmean = TRUE
  ), h = 60),
   xlab = rotulo_x,
  ylab = rotulo_y,
  main = titulo
)
}

SQL para extração

DROP TABLE IF EXISTS tf_medicamento_polineuropatia;
CREATE TABLE tf_medicamento_polineuropatia as
select nu_usuariosus,
       nu_competencia,
       sg_sexo ,
       co_ibge_municipio_residencia ,
       nu_idade ,
       qt_aprovada ,
              DENSE_RANK() OVER(
         PARTITION by nu_usuariosus
             ORDER BY nu_competencia
      ) as co_dispensacao,
              DENSE_RANK() OVER(
             ORDER BY nu_competencia
      ) as co_competencia1,
              DENSE_RANK() OVER(
             ORDER BY nu_competencia desc
      ) as co_competencia2      
  from bd_sabeis.tf_medicamento 
 where co_cidpri = 'E851'
   and qt_aprovada > 0
  order by nu_usuariosus, 
           nu_competencia;

SQL para cálculo de dias entre dispensações

alter table tf_medicamento_polineuropatia
  add qt_dias_proxima_dispensacao INT2 default 0;
  
update tf_medicamento_polineuropatia A
   set qt_dias_proxima_dispensacao = 
        case when B.nu_competencia is not null then 
    TO_DATE(B.nu_competencia::text || '15', 'YYYYMMDD') - 
    TO_DATE(A.nu_competencia::text || '15', 'YYYYMMDD') 
  else  
     (date_trunc(
       'month', TO_DATE(A.nu_competencia::text || '01', 'YYYYMMDD')) + 
       interval '1 month' - interval '1 day')::date - 
     TO_DATE(A.nu_competencia::text || '01', 'YYYYMMDD')
    END
  from tf_medicamento_polineuropatia B
 where  A.nu_usuariosus = B.nu_usuariosus
   and A.co_dispensacao = B.co_dispensacao - 1;

SQL para Exclusão de usuários

alter table tf_medicamento_polineuropatia
  add st_exclusao_incidente int2 default 0,
  add st_exclusao_dissidente int2 default 0,
  add st_exclusao_3registros int2 default 0,
  add st_excluir int2 default 0;
  
 update tf_medicamento_polineuropatia
    set st_exclusao_incidente = 1,
        st_excluir = 1 
  where nu_usuariosus in 
        (select nu_usuariosus 
           from tf_medicamento_polineuropatia 
          where co_competencia1 <=3);

 update tf_medicamento_polineuropatia
    set st_exclusao_dissidente = 1,
        st_excluir = 1 
  where nu_usuariosus in 
        (select nu_usuariosus 
           from tf_medicamento_polineuropatia 
          where co_competencia2 <=3);
         
 update tf_medicamento_polineuropatia
    set st_exclusao_3registros = 1,
        st_excluir = 1 
  where nu_usuariosus in 
        (select nu_usuariosus 
           from tf_medicamento_polineuropatia 
          group by 1
          having count(*) <3);

SQL para status de registros a partir da descontinuidade

alter table tf_medicamento_polineuropatia
  add st_interrupcao int2 default 0;
         
 update tf_medicamento_polineuropatia A
    set st_interrupcao = 1
   from (select nu_usuariosus, 
                min(co_dispensacao) co_dispensacao
           from tf_medicamento_polineuropatia 
          where qt_dias_proxima_dispensacao > 92
          group by 1) B
where A.nu_usuariosus = B.nu_usuariosus
  and A.co_dispensacao >= B.co_dispensacao;

SQL para montagem da coorte

SQL para avaliação de persistência

drop materialized view if exists bd_sabeis.vw_medicamento_polineuropatia_coorte_kaplan;
create materialized view bd_sabeis.vw_medicamento_polineuropatia_coorte_kaplan as
select x.*,
       co_ibge_municipio_residencia,
       nu_idade_min,
       nu_idade_max,
       qt_aprovada,
       qt_registros,
       dt_min,
       nu_competencia_min,
       nu_competencia_max,
       dt_max,
       qt_dias_tratamento,
       st_exclusao_incidente,
       st_exclusao_dissidente,
       st_excluir,
       case when qt_registros <=3 then 1 else 0 end as st_exclusao_3meses
from 
(
select nu_usuariosus, 
      string_agg(distinct sg_sexo, '') sg_sexo, 
      string_agg(distinct co_ibge_municipio_residencia::text, ' ') co_ibge_municipio_residencia_t, 
      min(nu_idade) nu_idade_min_t,
      max(nu_idade) nu_idade_max_t,
      sum(qt_aprovada) qt_aprovada_t,
      count(*) qt_registros_t,
      TO_DATE(min(nu_competencia)::text || '01', 'YYYYMMDD') as dt_min_t,
      min(nu_competencia) nu_competencia_min_t,
      max(nu_competencia) nu_competencia_max_t,
      (date_trunc('month', TO_DATE(max(nu_competencia)::text || '01', 'YYYYMMDD')) + 
        interval '1 month' - interval '1 day')::date as dt_max_t,
      (date_trunc('month', TO_DATE(max(nu_competencia)::text || '01', 'YYYYMMDD')) + 
        interval '1 month' - interval '1 day')::date - 
        TO_DATE(min(nu_competencia)::text || '01', 'YYYYMMDD') qt_dias_tratamento_t
  from tf_medicamento_polineuropatia
group by 1
) x
left join 
(
select nu_usuariosus, 
      string_agg(distinct co_ibge_municipio_residencia::text, ' ') co_ibge_municipio_residencia, 
      min(nu_idade) nu_idade_min,
      max(nu_idade) nu_idade_max,
      sum(qt_aprovada) qt_aprovada,
      count(*) qt_registros,
      TO_DATE(min(nu_competencia)::text || '01', 'YYYYMMDD') as dt_min,
      min(nu_competencia) nu_competencia_min,
      max(nu_competencia) nu_competencia_max,
      (date_trunc('month', TO_DATE(max(nu_competencia)::text || '01', 'YYYYMMDD')) + 
        interval '1 month' - interval '1 day')::date as dt_max,
      (date_trunc('month', TO_DATE(max(nu_competencia)::text || '01', 'YYYYMMDD')) + 
        interval '1 month' - interval '1 day')::date - 
        TO_DATE(min(nu_competencia)::text || '01', 'YYYYMMDD') qt_dias_tratamento,
      sum(distinct st_exclusao_incidente) as st_exclusao_incidente,
      sum(distinct st_exclusao_dissidente) as st_exclusao_dissidente,
      sum(distinct st_excluir) st_excluir
  from tf_medicamento_polineuropatia
 where st_interrupcao = 0
group by 1
) y
on x.nu_usuariosus = y.nu_usuariosus
order by 1;

Usuários incluídos

Table 5.1: Usuários incluídos.
nu usuariosus qt dias tratamento aderente nu idade min aderente nu idade max aderente qt aprovada aderente qt registros aderente dt min aderente dt max aderente
304404484034513 60 70 70 120 4 2021-10-01 2021-11-30
300306510491335 88 71 71 120 4 2021-02-01 2021-04-30
304804243969210 120 56 56 120 4 2020-01-01 2020-04-30
304003840125346 121 55 56 120 4 2021-06-01 2021-09-30
302408451806589 121 31 31 150 5 2020-08-01 2020-11-30
151000428294336 150 57 58 150 5 2020-12-01 2021-04-30
304003830621845 152 38 38 120 4 2020-08-01 2020-12-31
151002828894998 180 32 33 120 4 2020-11-01 2021-04-30
904046242140002 181 54 54 121 4 2020-01-01 2020-06-30
304105618342346 211 80 81 210 7 2021-02-01 2021-08-31
306004493228364 211 42 42 210 7 2020-11-01 2021-05-31
306004436293663 213 81 81 180 6 2021-03-01 2021-09-30
300205440621490 242 31 31 240 8 2020-10-01 2021-05-31
151002228690364 242 48 49 240 8 2020-08-01 2021-03-31
151060088424992 243 52 53 209 7 2020-01-01 2020-08-31
304902631383943 244 75 75 210 7 2021-05-01 2021-12-31
302902059838220 272 76 77 300 10 2020-08-01 2021-04-30
305906908480481 274 43 44 270 9 2021-03-01 2021-11-30
309204342498150 303 32 33 270 9 2020-05-01 2021-02-28
186608093584134 303 62 63 270 9 2020-11-01 2021-08-31
304804381183330 333 73 74 300 10 2021-01-01 2021-11-30
301602862201635 333 42 43 330 11 2020-09-01 2021-07-31
151002413821334 333 73 74 330 11 2021-02-01 2021-12-31
304905354222614 334 39 40 272 9 2020-01-01 2020-11-30
905445046500002 364 78 78 360 12 2020-12-01 2021-11-30
151008966035046 364 67 68 330 11 2020-11-01 2021-10-31
309403902119249 365 74 75 360 12 2020-01-01 2020-12-31
304500296660383 365 46 47 300 10 2020-02-01 2021-01-31
102440441510920 425 28 29 360 12 2020-05-01 2021-06-30
308406032468283 456 61 63 390 13 2020-07-01 2021-09-30
309409016292694 456 49 50 390 13 2020-03-01 2021-05-31
309806289615029 456 66 67 390 13 2020-03-01 2021-05-31
151008324119334 456 34 35 420 15 2020-03-01 2021-05-31
300408510941041 456 60 61 360 12 2020-10-01 2021-12-31
309404831555480 456 45 46 390 13 2020-03-01 2021-05-31
300609822384860 485 68 69 450 15 2020-01-01 2021-04-30
304904948806412 485 77 78 390 13 2020-01-01 2021-04-30
304300320832485 486 24 25 360 12 2020-03-01 2021-06-30
301005866008496 486 60 62 480 16 2020-03-01 2021-06-30
306002126641968 517 61 62 390 13 2020-07-01 2021-11-30
301900203290149 517 58 60 480 16 2020-07-01 2021-11-30
301400604963511 668 18 20 540 18 2020-02-01 2021-11-30
151000012695862 668 67 68 570 19 2020-02-01 2021-11-30
151000081623233 669 49 50 599 20 2020-01-01 2021-10-31
151002438896128 670 41 42 600 20 2020-03-01 2021-12-31
186608024106094 730 33 35 690 23 2020-01-01 2021-12-31