Status: 🚧 Work In Progress (WIP) SIA-PA Limpeza está ok, mas não de todos os dados do sistema! Próximo passo: Limpar os dados do SIA-PS.
Um script em R desenvolvido para realizar a limpeza e o processamento de dados da Produção Ambulatorial (PA) do Sistema de Informações Ambulatoriais (SIA/DATASUS).
Este script não existiria sem os ombros de gigantes da comunidade R no Brasil e no mundo. Toda minha admiração aos pacotes abaixo:
- tidyverse <3 - Pela gramática elegante e funcional de manipulação de dados.
- microdatasus - Um pacote incrível que democratizou e facilitou o acesso aos dados de saúde no Brasil!
- geobr - Outro pacote pelo qual tenho muita admiração, essencial para a espacialização dos dados.
Por conta da RAM, ele opera sob uma lógica de ETL, baixando os arquivos do mês e filtrando logo em seguida, nos picos durantes os testes, atingiu 3 gb de ram, contra cerca de 8-9 sem essa lógica. O foco da extração atual são os atendimentos no estado do Ceará (CE) no ano de 2025, filtrando especificamente diagnósticos primários que iniciam com "F2" (Esquizofrenia, transtornos esquizotípicos e transtornos delirantes). Entretanto, é possível alterar o tipo de dado requerido dentro do script!
O pipeline unifica os microdados com tabelas auxiliares (CNES, SIGTAP, CBO e IBGE) para traduzir códigos em nomes legíveis e gerar indicativos de deslocamento de pacientes (invasão municipal/estadual).
- Cria um diretório local chamado
meses/. - Itera sobre os 12 meses baixando os dados, filtrando pelo CID principal (
PA_CIDPRIiniciando em "F2"). - Salva o resultado de cada mês em arquivos
.rds(cache) para evitar refazer downloads em caso de falha, unificando tudo ao final.
Verifica se as tabelas de domínio já existem localmente. Se não, realiza o download e processamento:
- CNES-ST: Busca o nome "Fantasia" e o tipo das unidades de saúde.
- SIGTAP: Traduz os códigos de procedimentos.
- CBO: Traduz os códigos de ocupação dos profissionais.
- IBGE (
geobr): Extrai a relação de códigos de municípios e estados para padronizar as localidades.
- Realiza
left_joinpara enriquecer a tabela principal com descrições legíveis. - Decodificação: Traduz categorias padronizadas do SUS (Documento, Sexo, Raça/Cor, Financiamento).
- Deslocamento (Invasão): Calcula se o paciente foi atendido fora do seu município ou estado de residência.
- Normalização: Trunca o CID para os 3 primeiros caracteres, mitigando preenchimentos errôneos.
| Coluna | Descrição | Origem |
|---|---|---|
| FANTASIA | Nome fantasia do estabelecimento de saúde. | CNES |
| TP_UNID | Tipo de unidade de saúde. | CNES |
| MUNICIPIO_RESPONSAVEL | Município gestor do atendimento. | IBGE / geobr |
| UF_GESTAO | Estado gestor do atendimento. | IBGE / geobr |
| MUNICIPIO_PACIENTE | Município de residência do paciente. | IBGE / geobr |
| UF_PACIENTE | Estado de residência do paciente. | IBGE / geobr |
| MUNICIPIO_CNES | Município onde o estabelecimento está localizado. | IBGE / geobr |
| UF_CNES | Estado onde o estabelecimento está localizado. | IBGE / geobr |
| tipo_de_documento | Instrumento de registro (Ex: BPA, APAC). | SIA-PA |
| sexo | Sexo do paciente (Masculino/Feminino). | SIA-PA |
| nome_proced | Nome completo do procedimento realizado. | SIGTAP |
| PROFISSIONAL | Profissão do responsável pelo atendimento. | CBO |
| raca_cor | Raça/Cor autodeclarada do paciente. | SIA-PA |
| financiamento | Tipo de financiamento do procedimento no SUS. | SIA-PA |
| invasao_municipial | Indica atendimento fora do município (sim/não/indeterminado). | Calculado |
| invasao_estadual | Indica atendimento fora do estado (sim/não). | Calculado |
| CID | Código Internacional de Doenças (3 caracteres). | SIA-PA |
Desenvolvido com muito café e MPB ☕🎶