Módulo para validação, formatação e parsing de números de processo jurídico brasileiros.
Este módulo fornece funções para:
Um número de processo jurídico brasileiro possui 20 dígitos no total, estruturados da seguinte forma:
NNNNNNNDDAAAAJTTOOOO
NNNNNNN.DD.AAAA.J.TT.OOOO
Exemplo:
| Código | Segmento |
|---|---|
| 1 | Justiça Estadual |
| 2 | Justiça Federal |
| 3 | Justiça do Trabalho |
| 4 | Justiça Eleitoral |
| 5 | Justiça Militar |
| 6 | Tribunais Superiores |
| 7 | Justiça de Paz |
| 8 | Estrutura Judiciária Militar |
| 9 | Estrutura Complementar |
O número de processo utiliza o algoritmo MOD 97-10 para os dígitos verificadores:
(processo/is-valid? process-number)
Valida um número de processo jurídico.
Argumentos:
process-number (string): Número de processo a validar (com ou sem formatação)Retorna:
true se válido, false caso contrárioExemplos:
(processo/is-valid? "0001234-56.7890.1.23.4567") ; => true/false
(processo/is-valid? "00012345678901234567") ; => true/false
(processo/is-valid? "0001234-56.7890.1.23.4568") ; => false (verificador inválido)
(processo/is-valid? "123") ; => false (muito curto)
(processo/format-processo process-number)
Formata um número de processo jurídico no padrão brasileiro.
Argumentos:
process-number (string): Número de processo a formatar (com ou sem formatação)Retorna:
Exemplos:
(processo/format-processo "00012345678901234567")
; => "0001234-56.7890.1.23.4567"
(processo/format-processo "0001234-56.7890.1.23.4567")
; => "0001234-56.7890.1.23.4567"
(processo/parse-processo process-number)
Extrai informações de um número de processo jurídico.
Argumentos:
process-number (string): Número de processo a analisar (com ou sem formatação)Retorna:
{:sequential "0001234" ; 7 dígitos
:verification-digits "56" ; 2 dígitos
:year "7890" ; 4 dígitos (ano)
:segment "1" ; 1 dígito (justiça)
:court "23" ; 2 dígitos (tribunal)
:origin "4567"} ; 4 dígitos (origem)
nil se processo inválidoExemplos:
(processo/parse-processo "0001234-56.7890.1.23.4567")
; => {:sequential "0001234"
; :verification-digits "56"
; :year "7890"
; :segment "1"
; :court "23"
; :origin "4567"}
(processo/parse-processo "INVALID")
; => nil
(processo/validation-errors process-number)
Retorna uma lista de erros de validação do processo.
Argumentos:
process-number (string): Número de processo a validarRetorna:
Exemplos:
(processo/validation-errors "0001234-56.7890.1.23.4567") ; => []
(processo/validation-errors "123") ; => ["Invalid length"]
(processo/validation-errors "0001234-56.7890.1.23.4568") ; => ["Invalid verification digits"]
(processo/validation-errors "123")
; => ["Invalid length"]
(processo/validation-errors "ABCDEFGHIJKLMNOPQRST")
; => ["Invalid format" "Invalid verification digits"]
(processo/validation-errors "0001234-56.7890.1.23.4568")
; => ["Invalid verification digits"]
(defn validate-process-input [process-input]
(if (processo/is-valid? process-input)
{:status :valid
:process (processo/format-processo process-input)
:info (processo/parse-processo process-input)}
{:status :invalid :errors (processo/validation-errors process-input)}))
(validate-process-input "00012345678901234567")
; => {:status :valid
; :process "0001234-56.7890.1.23.4567"
; :info {:sequential "0001234" :verification-digits "56" ...}}
(defn process-info [process-number]
(if-let [info (processo/parse-processo process-number)]
{:sequential (:sequential info)
:year (Integer/parseInt (:year info))
:segment-type (case (:segment info)
"1" :state-court
"2" :federal-court
"3" :labor-court
"4" :electoral-court
:unknown)
:tribunal (:court info)
:origin (:origin info)
:formatted (processo/format-processo process-number)}
nil))
(process-info "0001234-56.7890.1.23.4567")
; => {:sequential "0001234" :year 7890 :segment-type :state-court ...}
(defn validate-process-batch [process-list]
(reduce (fn [acc process]
(assoc acc process
{:valid? (processo/is-valid? process)
:formatted (when (processo/is-valid? process)
(processo/format-processo process))
:errors (processo/validation-errors process)}))
{}
process-list))
(validate-process-batch ["0001234-56.7890.1.23.4567" "INVALID" "00012345678901234567"])
(defn find-processes-by-segment [process-list segment-code]
(filter (fn [process]
(when-let [info (processo/parse-processo process)]
(= (:segment info) segment-code)))
process-list))
(find-processes-by-segment ["0001234-56.7890.1.23.4567" "0005678-90.1234.2.56.7890"]
"1") ; Justiça Estadual
O algoritmo MOD 97-10 requer suporte a números grandes (BigInt) para cálculos precisos:
js/BigInt ou bibliotecas auxiliaresPara validação em lote de processos:
; Bom: Validar múltiplos processos
(def valid-processes
(filter processo/is-valid? process-list))
; Bom: Com mapeamento
(def process-info-map
(reduce (fn [acc p]
(if (processo/is-valid? p)
(assoc acc p (processo/parse-processo p))
acc))
{}
process-list))
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |