---
title: "Introduction to documentosbr / Introdução ao documentosbr"
author: "Rodrigo Borges"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
%\VignetteIndexEntry{Introduction to documentosbr / Introdução ao documentosbr}
%\VignetteEngine{knitr::rmarkdown}
%\VignetteEncoding{UTF-8}
---
```{r, include=FALSE}
oldwidth <- options("width")
options(width = "800")
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.width = 7,
fig.height = 5
)
```

# English
The documentosbr package provides a high-performance suite for validating and handling Brazilian administrative records. It currently supports:
- **CPF** (Individual Taxpayer Registry)
- **CNPJ** (National Registry of Legal Entities)
- **PIS** (Social Integration Program)
- **CNS/CNES** (National Health Card)
The core is implemented in C++ using Rcpp, allowing for extremely fast validation even on datasets with millions of observations.
## Validation Logic
Most Brazilian identifiers use "Module 11" checksums. While CPF and CNPJ share similar weighted-sum structures, the **CNS** (National Health Card) uses a dynamic algorithm that changes based on the starting digit (1-2 or 7-9).
# Português
O pacote documentosbr oferece uma suíte de alta performance para a validação e manipulação de registros administrativos brasileiros. Atualmente, o pacote suporta:
- **CPF** (Cadastro de Pessoa Física)
- **CNPJ** (Cadastro Nacional de Pessoa Jurídica)
- **PIS** (Programa de Integração Social)
- **CNS/CNES** (Cartão Nacional de Saúde)
O núcleo é implementado em C++ via Rcpp, permitindo validações extremamente rápidas mesmo em bases de dados com milhões de observações.
## Lógica de Validação
A maioria dos identificadores brasileiros utiliza o sistema de "Módulo 11". Enquanto CPF e CNPJ compartilham estruturas de somas ponderadas similares, o **CNS** utiliza um algoritmo dinâmico que varia conforme o dígito inicial (1-2 ou 7-9).
Installation / Instalação
```{r eval = FALSE}
# From CRAN / Via CRAN
install.packages("documentosbr")
# Development version / Versão de desenvolvimento
# remotes::install_github("rodrigo-borges/documentosbr")
```
## Basic Usage / Uso Básico
The valida_doc() function is the primary interface. It is vectorized and highly efficient. Use the type argument to specify the document and log = TRUE for detailed error reporting.
A função valida_doc() é a interface principal. Ela é vetorizada e altamente eficiente. Use o argumento type para especificar o documento e log = TRUE para relatórios detalhados de erro.
```{r eval = FALSE}
library(documentosbr)
# Vectorized validation / Validação vetorizada
cpfs <- c("12345678901", "56273869596")
valida_doc(cpfs, type = "cpf")
# Health Card (CNS) / Cartão Nacional de Saúde
valida_doc("123456789012345", type = "cnes")
```
## Performance / Performance
By offloading validation to C++, documentosbr minimizes overhead in ETL pipelines, making it suitable for large-scale data cleaning tasks in administrative records.
Ao delegar a validação para o C++, o documentosbr minimiza o gargalo em fluxos de ETL, sendo ideal para tarefas de limpeza de dados em larga escala em registros administrativos.
Caso deseje uma saída mais verbosa a função pode ser chamada da seguinte forma:
```{r}
library(documentosbr)
d <- valida_doc("56273869595", type = "pis", log = T)
```
```{r, echo=FALSE}
knitr::kable(d)
options(oldwidth)
```