DEV Community

Leonardo Vilela
Leonardo Vilela

Posted on

Construindo algoritmo para consumir a API pública do CNJ (conselho nacional de justiça) - 2a parte (validação do número CNJ)

Este artigo faz parte de uma série onde irei apresentar especificidades sobre a implementação de sistemas para gestão de processos judiciais utilizando a API pública do CNJ (Conselho Nacional de Justiça). (https://datajud-wiki.cnj.jus.br/api-publica)

Ao final do texto há o link para meu github onde postei o código em PHP

No primeiro artigo da série, expliquei como funciona a metodologia da numeração única de processo pelo CNJ

Neste segundo artigo, vamos tratar da etapa de validação do número informado.

Conforme ja foi explicado, o número CNJ de um processo possui 20 dígitos, no seguinte formato: NNNNNNN-DD.AAAA.J.TR.OOOO
A numeração começa com 7 dígitos que identifica o número sequencial do processo por unidade de origem, seguido por 2 dígitos verificadores, 4 dígitos relativos ao ano de criação/distribuição do processo, 1 digito relativo ao tipo de justiça (jurisdição), 2 relativos ao tribunal naquela jurisdição e por fim, 4 dígitos que identificam a unidade de origem do processo.

Para validar o número informado, inicialmente é necessário separar os dígitos em strings de acordo com seu campo.
A título de exemplo, será utilizado como nome da string a letra do grupo de digitos conforme foi exposto acima.
É importante ressaltar a importância de tratar o número CNJ como string pois ele pode conter 0 à esquerda.

**NNNNNNN-DD.AAAA.J.TR.OOOO**:
$n: número sequencial de identificação do processo (7 primeiros caracteres)
$d: digitos verificador (2 caracteres após o $n)
$a: Ano do processo (4 caracteres após o $d)
$j: código do tipo de justiça (1 caractere após o $a)
$tr: identificação do Tribunal (2 caracteres após o $j)
$o: código da comarca (cidade) do processo (4 caracteres após o $tr)
Enter fullscreen mode Exit fullscreen mode

Esta separação do número CNJ em várias strings pode ser facilmente elaborado com metodo do tipo substr (PHP) ou subtring (java).

A validação do número CNJ é feita pela aplicação do algoritmo
Módulo 97 Base 10, conforme Norma ISO 7064:2003.

No anexo da resolução 65/2008 do CNJ, há uma forma de calcular a validação do número, mas entendo que uma forma mais fácil foi ensinada no canal do Grupo de Estudos GOlang (https://www.youtube.com/@grupodeestudosdegolang) e funciona da seguinte forma:

legenda:
% = resto
. = concatenar

$operacao1 = $n % 97
$operacao2 = ($operacao1 . $a . $j . $tr) % 97
$operacaoFinal = ($operacao2 . $o . $d) % 97
Enter fullscreen mode Exit fullscreen mode

Se o número informado for válido, o resultado da $operacaoFinal, será 1.

Logo, qualquer resultado diferente de 1 significa que o número é inválido.

Você pode ver o código desta validação em PHP no github: https://github.com/leonardomv1981/consulta-processo-judicial-apicnj
Ele está no metodo validarNumeroCnj dentro da Class apicnjClass.php

No próximo artigo iremos começar a analisar os headers necessários para a consulta e opções de consulta.

Top comments (1)

Collapse
 
aroldobarrosobrz profile image
Aroldobarroso

Olá meu amigo, teria disponibilidade e interesse em implementar essa API em um sistema proprietário meu de advocacia que é feito em PHP / Laravel? Estou procurando um profissional para fazer está ação, obrigado