3.7 Pacote abjutils

3.7.1 Trabalhando com números de processos

O número identificador de um processo judicial utilizado atualmente pelos tribunais é chamado número CNJ, criado na Resolução 65 do CNJ. A resolução define o padrão NNNNNNN-DD.AAAA.J.TR.OOOO, descrito abaixo.

  • NNNNNNN: Número identificador do processo.
  • DD: Dígito verificador gerado a partir da aplicação do algoritmo Módulo 97 Base 10, conforme Norma ISO 7064:2003.
  • AAAA: Ano do ajuizamento do processo.
  • J: Segmento do poder judiciário. No nosso caso, esse número é sempre 8, que identifica a Justiça Estadual.
  • TR: Identifica o tribunal. No nosso caso, esse número é sempre 26 (TJSP).
  • OOOO: Identifica a unidade de origem do processo. No nosso caso, as possíveis configurações identificam os foros de São Paulo. Na maioria dos casos, o número também identifica a comarca, pois existem poucas comarcas com mais de um foro (e.g. a comarca de São Paulo, que possui mais de dez foros regionais).
id_montado <- "0000009-15.2015.8.26.0558"
id_limpo_dig <- "00000091520158260558"
id_limpo_ndig <- "000000920158260558"

As funções abjutils::build_id() e abjutils::clean_id() montam ou limpam o número do processo.

abjutils::build_id(id_limpo_dig)
#> [1] "0000009-15.2015.8.26.0558"
abjutils::clean_id(id_montado)
#> [1] "00000091520158260558"

A função abjutils::extract_parts() extrai todos os componentes do número do processo.

abjutils::extract_parts(id_montado)
#> [[1]]
#>         N         D         A         J         T         O 
#> "0000009"      "15"    "2015"       "8"      "26"    "0558"

A função abjutils::separate_cnj() faz o mesmo, mas em uma coluna do banco de dados

d_cjsg %>% 
  abjutils::separate_cnj("id_lawsuit", remove = FALSE) %>% 
  dplyr::glimpse()
#> Observations: 40
#> Variables: 19
#> $ file              <chr> "data-raw/cjsg/page1.html", "data-raw/cjsg/p...
#> $ id_page           <chr> "1", "2", "3", "4", "5", "6", "7", "8", "9",...
#> $ id_decision       <chr> "11471226", "11471101", "11471322", "1147123...
#> $ id_lawsuit        <chr> "9000112-30.2018.8.26.0050", "0035378-08.201...
#> $ N                 <chr> "9000112", "0035378", "2065637", "0058979", ...
#> $ D                 <chr> "30", "08", "34", "77", "08", "65", "49", "8...
#> $ A                 <chr> "2018", "2010", "2018", "2015", "2013", "201...
#> $ J                 <chr> "8", "8", "8", "8", "8", "8", "8", "8", "8",...
#> $ T                 <chr> "26", "26", "26", "26", "26", "26", "26", "2...
#> $ O                 <chr> "0050", "0506", "0000", "0050", "0032", "042...
#> $ class_subject     <chr> "Classe/Assunto:\n\t\t\t\t\t\t\t\t\t\t\t Agr...
#> $ district          <chr> "São Paulo", "Ribeirão Preto", "Guarulhos", ...
#> $ court             <chr> "2ª Câmara de Direito Criminal", "2ª Câmara ...
#> $ date_decision     <chr> "21/05/2018", "21/05/2018", "17/05/2018", "2...
#> $ date_publication  <chr> "21/05/2018", "21/05/2018", "21/05/2018", "2...
#> $ date_registration <chr> "21/05/2018", "21/05/2018", "21/05/2018", "2...
#> $ rapporteur        <chr> "Luiz Fernando Vaggione", "Luiz Fernando Vag...
#> $ summary           <chr> "Agravo em execução. Progressão de regime. E...
#> $ txt_summary       <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...

A função abjutils::calc_dig() calcula o dígito verificador do processo a partir do número incompleto. A função abjutils::check_dig() checa se o dígito do processo está correto. Essas funções são úteis para i) gerar números de processo aleatórios e ii) arrumar erros de parse, por exemplo, o resultado da leitura de um DJE ou de um PDF escaneado.

abjutils::calc_dig(id_limpo_ndig)
#> [1] "15"
abjutils::check_dig(id_montado)
#> [1] TRUE

Finalmente, a função abjutils::sample_cnj() serve para criar amostras de números de processos. Esses pocessos podem ser manifestos ou não. Em algumas pesquisas mais complicadas (e.g. nossa pesquisa sobre processamento de homicídios) esse tipo de abordagem é necessária.

set.seed(1)
abjutils::sample_cnj(n = 10, foros = "0001", anos = 2015:2017, 
                     orgao = "8", tr = "26", 
                     first_dig = 0, return_df = FALSE) %>% 
  abjutils::build_id()
#>  [1] "0205974-12.2015.8.26.0001" "0176556-92.2016.8.26.0001"
#>  [3] "0687022-88.2016.8.26.0001" "0384103-68.2017.8.26.0001"
#>  [5] "0769841-19.2015.8.26.0001" "0497699-30.2017.8.26.0001"
#>  [7] "0717618-21.2017.8.26.0001" "0991906-87.2016.8.26.0001"
#>  [9] "0380035-12.2016.8.26.0001" "0777445-31.2015.8.26.0001"

3.7.2 Trabalhando com acentos

A função abjutils::rm_accent() serve para tirar acentos de um texto

abjutils::rm_accent("Têxto cóm açèntõs")
#> [1] "Texto com acentos"

Só isso! Mas extremamente útil.

Outra versão dessa função pode ser encontrada no pacote rslp.

Para quem é desenvolvedor de pacotes, a função abjutils::escape_unicode() é muito útil: ela transforma todos os acentos em códigos do tipo \uxxxx, permitindo que o pacote funcione em diferentes plataformas, sem os famosos problemas de encoding. Essa função não é para ser utilizada diretamente, mas sim como um addin do RStudio.

3.7.3 Exercício

  1. Faça uma tabela contando as combinações dos números OOOO e as comarcas de origem. O que podemos concluir?