Classificar Condições Sensíveis à Atenção Primária
Pacote em R para a classificação de códigos da CID-10 (Classificação
Internacional de Doenças, 10ª Revisão) segundo a Lista Brasileira de
Condições Sensíveis à Atenção Primária (CSAP). É particularmente voltado
ao trabalho com as bases de dados do Sistema de Informações Hospitalares
do SUS, o Sistema Único de Saúde brasileiro. Tais bases (BD-SIH/SUS)
contêm os “arquivos da AIH” (RD??????.DBC
), que podem ser expandidos
para o formato DBF (RD??????.DBF
), com as informações de cada
hospitalização ocorrida pelo SUS num período determinado. Assim, embora
o pacote permita a classificação de qualquer listagem de códigos da
CID-10, tem também algumas funcionalidades para facilitar o trabalho com
os “arquivos da AIH” e, atualmente, do Sistema de Informações sobre
Mortalidade (SIM).
A hospitalização por CSAP é um indicador da qualidade do sistema de saúde em sua primeira instância de atenção, uma vez que a internação por tais condições —pneumonia, infecção urinária, sarampo, diabetes etc.— só acontecerá se houver uma falha do sistema nesse âmbito de atenção, seja por não prevenir a ocorrência da doença (caso das doenças preveníveis por vacinação, como o sarampo), não diagnosticá-la ou tratá-la a tempo (como na pneumonia ou infeccão urinária) ou por falhar no seu controle clínico (como é o caso da diabete).
O Ministério da Saúde brasileiro estabeleceu em 2008, após amplo processo de validação, uma lista com várias causas de internação hospitalar consideradas CSAP, definindo em portaria a Lista Brasileira. A Lista envolve vários códigos da CID-10 e classifica as CSAP em 19 subgrupos de causa, o que torna complexa e trabalhosa a sua decodificação. Há alguns anos o Departamento de Informática do SUS (DATASUS) incluiu em seu excelente programa de tabulação de dados TabWin a opção de tabulação por essas causas, apresentando sua frequência segundo a tabela definida pelo usuário.
Entretanto, muitas vezes a pesquisa exige a classificação de cada internação individual como uma variável na base de dados. E não conheço outro programa ou script (além do que tive de escrever em minha tese) que automatize esse trabalho.
O pacote csapAIH
pode ser instalado no R de duas maneiras:
install.packages()
sobre os arquivos de instalação no
SourceForge:install.packages("https://sourceforge.net/projects/csapaih/files/csapAIH_0.0.4.tar.gz/download", type = "source", repos = NULL)
#> Installing package into 'C:/Users/fulvi/AppData/Local/Temp/RtmpiMqJXT/temp_libpath825416681318'
#> (as 'lib' is unspecified)
ou
remotes
sobre os arquivos-fonte da função em
desenvolvimento, no GitHub:# install.packages("remotes") # desnecessário se o pacote já estiver instalado
remotes::install_github("fulvionedel/csapAIH")
#> Downloading GitHub repo fulvionedel/csapAIH@HEAD
#>
#> ── R CMD build ─────────────────────────────────────────────────────────────────
#> checking for file 'C:\Users\fulvi\AppData\Local\Temp\RtmpEFUz0e\remotesc0d075b445d2\fulvionedel-csapAIH-8c3b3b9/DESCRIPTION' ... checking for file 'C:\Users\fulvi\AppData\Local\Temp\RtmpEFUz0e\remotesc0d075b445d2\fulvionedel-csapAIH-8c3b3b9/DESCRIPTION' ... ✔ checking for file 'C:\Users\fulvi\AppData\Local\Temp\RtmpEFUz0e\remotesc0d075b445d2\fulvionedel-csapAIH-8c3b3b9/DESCRIPTION'
#> ─ preparing 'csapAIH':
#> checking DESCRIPTION meta-information ... checking DESCRIPTION meta-information ... ✔ checking DESCRIPTION meta-information
#> ─ checking for LF line-endings in source and make files and shell scripts
#> ─ checking for empty or unneeded directories
#> ─ building 'csapAIH_0.0.4.tar.gz'
#>
#>
#> Installing package into 'C:/Users/fulvi/AppData/Local/Temp/RtmpiMqJXT/temp_libpath825416681318'
#> (as 'lib' is unspecified)
Na sua primeira versão, o pacote csapAIH
continha apenas uma função,
homônima: csapAIH
.
Na versão 0.0.2, foram acrescentadas as funções descreveCSAP
,
desenhaCSAP
e nomesgruposCSAP
, para a representação gráfica e
tabular das CSAP pela lista brasileira. Esta versão também permite a
leitura de arquivos da AIH em formato .DBC, sem necessidade de prévia
expansão a .DBF. Isso é possível pelo uso do pacote read.dbc
, de
Daniela Petruzalek
(https://cran.r-project.org/web/packages/read.dbc/index.html).
A partir da versão 0.0.3, a função desenhaCSAP
permite o detalhamento
do gráfico por categorias de outros fatores do banco de dados, com o uso
das funções facet_wrap()
e facet_grid()
, de ggplot2
, e permite
ainda o desenho de gráficos com as funções básicas, sem a instalação do
pacote ggplot2
. Foi ainda criada uma função para o cálculo da idade
nos arquivos da AIH: a função idadeSUS é usada internamente por
csapAIH
e pode ser chamada pelo usuário para calcular a idade sem a
necessidade de classificar as CSAP.
A versão 0.0.4
A ajuda sobre o pacote oferece mais detalhes sobre sua evolução. Veja no
manual
ou, no R, com ?'csapAIH-package'
.
A leitura de arquivos .DBC exige a instalação prévia do pacote
read.csap
. Sua falta não impede o funcionamento das demais funções do
pacote (inclusive de leitura, mas em outro formato). A função
desenhaCSAP
tem melhor desempenho com o pacote ggplot2
instalado,
mas sua instalação não é necessária para que ela funcione.
A partir de um arquivo “RD??????.DBF” salvo no mesmo diretório da sessão de trabalho do R:
csap <- csapAIH::csapAIH("RD??????.DBF")
A partir de um arquivo “RD??????.DBC” salvo no mesmo diretório da sessão de trabalho do R:
csap <- csapAIH::csapAIH("RD??????.DBC")
A paritr de um banco de dados com a estrutura da AIH já carregado no ambiente de trabalho:
csap <- csapAIH::csapAIH(bancodedados)
A partir de uma variável com códigos da CID-10:
csap <- csapAIH::csapAIH(variavel)
Resumo de importação de dados
csap <- csapAIH("RDRS1801.dbc") # cria o data.frame
Importados 60.488 registros.
Excluídos 8.239 (13,6%) registros de procedimentos obstétricos.
Excluídos 366 (0,6%) registros de AIH de longa permanência.
Exportados 51.883 (85,8%) registros.
Tabela “bruta”
descreveCSAP(csap)
Grupo Casos %Total %CSAP
1 1.Prev. vacinação 117 0,23 1,08
2 2.Gastroenterite 798 1,54 7,36
3 3.Anemia 73 0,14 0,67
4 4.Def. nutricion. 241 0,46 2,22
5 5.Infec. ouvido, nariz e garganta 168 0,32 1,55
6 6.Pneumonias bacterianas 653 1,26 6,02
7 7.Asma 234 0,45 2,16
8 8.Pulmonares (DPOC) 1.209 2,33 11,15
9 9.Hipertensão 146 0,28 1,35
10 10.Angina 1.004 1,94 9,26
11 11.Insuf. cardíaca 1.393 2,68 12,84
12 12.Cerebrovasculares 1.373 2,65 12,66
13 13.Diabetes mellitus 739 1,42 6,81
14 14.Epilepsias 330 0,64 3,04
15 15.Infec. urinária 1.358 2,62 12,52
16 16.Infec. pele e subcutâneo 459 0,88 4,23
17 17.D. infl. órgãos pélvicos femininos 133 0,26 1,23
18 18.Úlcera gastrointestinal 195 0,38 1,80
19 19.Pré-natal e parto 222 0,43 2,05
20 Total CSAP 10.845 20,90 100
21 não-CSAP 41.038 79,10 --
22 Total de internações 51.883 100 --
Tabela para apresentação ou impressão (com a função kable
, do pacote
knitr
)
knitr::kable(descreveCSAP(csap), align = c('l', rep('r', 3)))
| Grupo | Casos | %Total | %CSAP | |:--------------------------------------|-------:|-------:|------:| | 1.Prev. vacinação | 118 | 0,23 | 1,09 | | 2.Gastroenterite | 802 | 1,54 | 7,38 | | 3.Anemia | 73 | 0,14 | 0,67 | | 4.Defic. nutricionais | 241 | 0,46 | 2,22 | | 5.Infec. ouvido, nariz e garganta | 168 | 0,32 | 1,55 | | 6.Pneumonias bacterianas | 653 | 1,26 | 6,01 | | 7.Asma | 234 | 0,45 | 2,15 | | 8.Pulmonares (DPOC) | 1.213 | 2,34 | 11,17 | | 9.Hipertensão | 147 | 0,28 | 1,35 | | 10.Angina | 1.005 | 1,94 | 9,25 | | 11.Insuf. cardíaca | 1.394 | 2,68 | 12,83 | | 12.Cerebrovasculares | 1.373 | 2,64 | 12,64 | | 13.Diabetes mellitus | 743 | 1,43 | 6,84 | | 14.Epilepsias | 331 | 0,64 | 3,05 | | 15.Infec. urinária | 1.360 | 2,62 | 12,52 | | 16.Infec. pele e subcutâneo | 459 | 0,88 | 4,22 | | 17.D. infl. órgãos pélvicos femininos | 133 | 0,26 | 1,22 | | 18.Úlcera gastrointestinal | 195 | 0,38 | 1,79 | | 19.Pré-natal e parto | 222 | 0,43 | 2,04 | | Total CSAP | 10.864 | 20,92 | 100 | | não-CSAP | 41.059 | 79,08 | – | | Total de internações | 51.923 | 100 | – |
Gráfico
gr \<- desenhaCSAP(csap, titulo = “auto”, onde = “RS”)
gr
Estratificado por categorias de outra variável presente no banco de dados:
Observe que ao estratificar o gráfico mantém a ordenação por frequência
da variável em seu todo, sem a estratificação, quando o argumento
ordenar = TRUE
(padrão).
gr + ggplot2::facet_grid(\~sexo)
gr + ggplot2::facet_wrap(\~ munres == “431490”, labeller = as_labeller(c(“FALSE” = “Interior”, “TRUE” = “Capital”)))
Veja o manual do pacote em: https://github.com/fulvionedel/csapAIH/blob/master/docs/csapAIH_0.0.4.pdf
The goal of csapAIH is to …
This is a basic example which shows you how to solve a common problem:
library(csapAIH)
## basic example code
What is special about using README.Rmd
instead of just README.md
?
You can include R chunks like so:
summary(cars)
#> speed dist
#> Min. : 4.0 Min. : 2.00
#> 1st Qu.:12.0 1st Qu.: 26.00
#> Median :15.0 Median : 36.00
#> Mean :15.4 Mean : 42.98
#> 3rd Qu.:19.0 3rd Qu.: 56.00
#> Max. :25.0 Max. :120.00
You’ll still need to render README.Rmd
regularly, to keep README.md
up-to-date. devtools::build_readme()
is handy for this. You could also
use GitHub Actions to re-render README.Rmd
every time you push. An
example workflow can be found here:
https://github.com/r-lib/actions/tree/v1/examples.
You can also embed plots, for example:
In that case, don’t forget to commit and push the resulting figure files, so they display on GitHub and CRAN.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.