A Avaliação de Tecnologias em Saúde deve lidar com bilhões de registros
administrativos para apoiar a tomada de decisão de incorporação ou
desincorporação de tecnologias do SUS com dados de mundo real.
A Sabeis - Sala Aberta de Inteligência em Saúde foi criada para estabelecer
marcos de ciência de dados de modo a orfercer dados e análises
com ciência aberta, divulgando códigos-fonte e microdados processados.
O presente relato tem como objetivo demonstrar a aplicação da Sabeis
no cálculo do percentual de uso de procedimentos do SUS ao longo do tempo.
Foram anotados 113
protocolos clínicos, viabilizando a avaliação de
735
procedimentos. Foi demonstrado o passo a passo de como realizar a apresentação
da difusão percentual de uso (market share) em linguagem R.
Espera-se que a documentação oferecida seja instrumento para avaliação
sistemática de todos os protocolos clínicos de SUS.
O Sistema Único de Saúde (SUS) apresenta uma infoestrutura com desafios, devido sobretudo à fragmentação das centenas de Sistemas de Informação em Saúde e oportunidades, por afigurar-se como um repositório com bilhões de registros administrativos com informações clínicas(Ferré 2021).
Encontra-se em vigor a Política Nacional de Informação e Informática (PNIIS), a qual está estruturando um repositório de informações clínicas vinculadas ao mesmo cidadão a cada contato assistencial (BRASIL 2021).
Enquanto não estão disponíveis dados clíicos a Rede Nacional de Dados em Saúde (RNDS), no bojo da Estratégia da Saúde Digital (ESD) promovida pela PNIIS, o gestor deve lidar com os dados administrativos originados do Sistema de Informações Ambulatoriais para realizar Avaliação de Tecnologias em Saúde, sobretudo de medicamentos e tratamentos oncológicos. Por esta razão foi proposta pela Secretaria Executiva da Conitec a Sabeis - Sala Aberta de Inteligência em Saúde (Ferré et al. 2020).
O presente relato foi editado em R Markdown, disponível em https://rpubs.com/labxss/difusao,
e constitui uma série de relatos de
ciência de dados no escopo da Sabeis, uma vez que o grupo não objetiva apenas
entregar dados, mas organizar o conhecimento de modo que outros atores possam
realizar as próprias análises, porém, com um apoio metodológico comum que
resulte em avaliações compatíveis entre si, reprodutíveis e instaciáveis
em outros cenários.
Extração e cálculo do indicador de difusão de uso (market-share), dos registros de dispensação regidos por Protocolo Clínico e Diretriz Terapêutica, contidos na Sala Aberta de Inteligência em Saúde - Sabeis.
Trata-se de uma prova de conceito pontuando o percurso metodológico de ciência de dados para estudo descritivo do quantitativo de usuários do SUS e valor em reais de cada tecnologia ao ano em relação ao total realizado sob data diretriz clínica.
As agregações foram realizadas com Linguagem de Consulta Estruturada, do inglês, Structured Query Language - SQL sob os paradigmas da modelagem de processamento analítico online, do inglês, Online Analytical Processing (OLAP) e normas de nomenclatura do Departamento de Informática do SUS (DATASUS).
Os dados foram transpostos em tabelas de dimensão e fatos de modo que cada agregação constitui a soma simples da frequência e valores em Reais relativos a eventos discretos (procedimento, diagnóstico, território, características sociodemográficas). A performance de consultas foi otimizada com o recurso da desnormalização das tabelas fato, de modo a reduzir a demanda por cruzamentos com tabelas de dimensão.
A Extração, Transformação e Carga (extract, transform and load - ETL) de dados de dispensação de medicamentos de usuários com medicamentos biológicos em linguagem estruturada de consulta (structured query language - SQL) utilizando-se o Sistema Gerenciador de Banco de Dados (SGBD) PostgreSQL 10.10 (Ubuntu 10.10-0ubuntu0.18.04.1). Na wiki é disponibilizado o endereço para baixar o código-fonte e repositório de dados sob a licença General Public License - GPL 3.014 e Open Database License (ODbL).
Os dados foram processados em computador LG® Gram 7,6 GB RAM, Intel® Core™ i7-7500U CPU @ 2.70GHz × 4, 256,1 GB SSD, Ubuntu 20.04.3 LTS e servidor em nuvem linux Ubuntu 20.04.1 LTS (Focal Fossa) 5.4.0-109-generic x86_64 Quad Core 2300 MHz Common KVM 64 bits L2 cache 16.0 MiB 150.00 GB SSS 12Gb ram.
O método detalhado de extração, transformação e carga encontra-se em https://rpubs.com/labxss/etlsabeis.
Os dados originais do Sistema de Informação Ambulatorial SIA são
coletados a partir do sítio ftp://ftp.datasus.gov.br/dissemin/publicos/SIASUS/200801_/.
O formato original é um arquivo DBC, o qual é descompactado com o dbf2dbc.exe,
disponível na pasta compactada do tabwin disponível em ftp://ftp.datasus.gov.br/tabwin/tabwin/TAB415.zip
emulado no linux com auxílio do wine.
O DBD resultante é convertido para CSV utilizando-se dbview e carregado
no Sistema Gerenciador de Banco de Dados PostgreSQL com script em linguagem bash.
O wine, dbview e o PostgreSQL 10.10 foram instalados a partir do comando apt get
disponível no Ubuntu 20.04.3 LTS.
Remark. Os links de diretórios ftp são atualmente acessíveis pelo navegador de arquivos, não pelo
navegador de internet.
Os dados do SIA são armazenados nas filhas da tabela tf_siasus_pa_diretriz,
as quais herdam as características da mãe.
Além de ser particionadas nas filhas,
a tabela máe é normalizada, isto é, recebe apenas um identificador sequencial
das respectivas tabelas de domínio conforme mostrado na figura 3.1.
Figure 3.1: Diagrama de entidades e relacionamentos da Sala Aberta de Inteligência em Saúde - módulo de medicamentos e oncológicos
A tabela 3.1 mostra as variáveis da SABEIS e respectivas origens
nos arquivos DBC, sumariamente descritos no
arquivo ftp://ftp.datasus.gov.br/dissemin/publicos/SIASUS/200801_/Doc/Informe_Tecnico_SIASUS_2019_07.pdf
e nas definições, em formato DEF, e domínios, em formato CNV e DBF
contidos na pasta compactada ftp://ftp.datasus.gov.br/dissemin/publicos/SIASUS/200801_/Auxiliar/TAB_SIA.zip.
| ano | ano.de.atendimento | origem.Tabwin |
|---|---|---|
| co carater atendimento | Caráter do Atendimento | catend |
| co cep residencia | CEP do paciente | ap ceppcn, cep |
| co cidpri | CID Principal | ap cidpri, causabas, cidpri, diag princ, pa cidpri, sp cidpri |
| co cidsec | CID Secundário | ap cidsec, diag sec, diagsec1, diagsec2, diagsec3, diagsec4, diagsec5, diagsec6, diagsec7, diagsec8, diagsec9, pa cidsec, sp cidsec |
| co cnes estabelecimento | Código do Estabelecimento no CNES (Cadastro Nacional de Estabelecimentos de Saúde) | ap coduni, cnes, cnes exec, co cnescon, coduni, id unidade, pa coduni, sp cnes |
| co gestao | Código da Unidade de Federação + Código Município de Gestão ou UF0000 se a Unidade está sob Gestão Estadual | ap gestao, gestao, pa gestao, sp gestor, uf zi |
| co ibge municipio evento | Código da Unidade da Federação + Código do Município do Estabelecimento | ap ufmun, codmunocor, codufmun, id municip, munic mov, pa munat, pa ufmun, ufmun |
| co ibge municipio residencia | Código da UF + Código do Município de Residência do paciente | ap munpcn, codmunres, co munres, munic res, munpac, mun res, pa munpcn, ufmunres |
| co procedimento | Código SIGTAP do procedimento | ap pripal, co procede, pa codpro, pa proc id, proc id, proc rea, sp procrea |
| co seq diretriz | diretriz CONITEC | |
| co seq procedimento | procedimento SIGTAP sequencial | |
| co tipo atendimento | Caráter do Atendimento | ap_catend, catend |
| ds esquema 1 | ESQUEMA (Sigla ou abrev.) - 5 primeiras posições | aq esqu p1 |
| ds esquema 2 | ESQUEMA (Sigla ou abrev.) - 10 últimas posições | aq esqu p2 |
| ds nascimento | Data de nascimento do paciente | dt nasc, dtnasc, nasc |
| dt fim | Data de Início | ap dtfim, dt saida, fim, sp dtsaida, dt_fim |
| dt inicio | Data de Fim | ap dtinic, inicio |
| no abreviado | Nome abreviado da diretriz | |
| no diretriz50 | Nome da diretriz com 50 caracteres | |
| no procedimento | Nome do procedimento SIGTAP | |
| nu apac | Número da APAC. Lei de formação: UFAATsssssssd, onde UF – Unid. da Federação, AA – ano, T – tipo, sssssss – sequencial, d – dígito | ap autoriz, autoriz, pa autoriz, pa numapa |
| nu cnspcn | Número do CNS (Cartão Nacional de Saúde) do paciente | ap cnspcn, cns pac |
| nu competencia | Mês de atendimento | ap cmp, cmpt, cmpt ini, pa cmp, dt_atend |
| nu competencia max | Competência mínima do procedimento, diretriz e ano | |
| nu competencia min | Competência mínima do procedimento, diretriz e ano | |
| nu competencia movimentacao | Data de Processamento / Movimento (AAAAMM) | ap mvm, pa mvm |
| nu idade | Idade do paciente | ap nuidade, idade, idadepac, nu idade n, pa idade |
| pa condic | Sigla do Tipo de Gestão no qual o Estado ou Município está habilitado | ap condic, condic, pa condic |
| qt aprovada | Quantidade aprovada do procedimento | pa qtdapr, qt aprov |
| qt cnspcn | Quantidade de usuários segundo cartão de saúde | |
| qt cnspcn total | Quantidade de usuários atendidos para a diretriz no ano | |
| sg sexo | Sexo do paciente | ap sexo, co sexo, cs sexo, pa sexo, sexo, sexopac |
| vl altura | Altura do paciente em cm | am altura, an altura |
| vl aprovado | Valor Total da APAC Aprovado | pa valapr, qt proced, val tot, vl aprov, ap_vl_ap |
| vl peso | Peso do paciente em kg | am peso, an peso, peso, pesonasc |
Atributos selecionados e valores de um usuário do SUS são ilustrados na tabela 3.2.
| co seq competencia | co seq procedimento | co seq municipio residencia | nu cnspcn | nu apac | sg sexo | nu idade | qt aprovada |
|---|---|---|---|---|---|---|---|
| 1.301 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.002.185 | M | 61 | 12 |
| 1.301 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.002.185 | M | 61 | 10 |
| 1.302 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.022.524 | M | 60 | 10 |
| 1.302 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.022.524 | M | 60 | 12 |
| 1.303 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.022.524 | M | 60 | 10 |
| 1.303 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.022.524 | M | 60 | 12 |
| 1.306 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.053.390 | M | 60 | 8 |
| 1.306 | 4.317 | 42 | 102.484.890.160.306 | 1.208.200.053.390 | M | 60 | 30 |
| 1.307 | 4.317 | 42 | 102.484.890.160.306 | 1.208.200.053.390 | M | 60 | 30 |
| 1.307 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.053.390 | M | 60 | 8 |
| 1.309 | 4.317 | 42 | 102.484.890.160.306 | 1.208.200.081.308 | M | 60 | 30 |
| 1.309 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.081.308 | M | 60 | 12 |
| 1.311 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.081.308 | M | 60 | 4 |
| 1.311 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.081.308 | M | 60 | 12 |
| 1.312 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.095.047 | M | 61 | 12 |
| 1.313 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.095.047 | M | 61 | 4 |
| 1.313 | 4.109 | 42 | 102.484.890.160.306 | 1.208.200.095.047 | M | 61 | 4 |
| 1.314 | 4.317 | 42 | 102.484.890.160.306 | 1.208.200.095.047 | M | 61 | 60 |
| 1.314 | 4.104 | 42 | 102.484.890.160.306 | 1.208.200.095.047 | M | 61 | 10 |
| 1.315 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 60 |
| 1.316 | 4.104 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 2 |
| 1.316 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 30 |
| 1.316 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 12 |
| 1.317 | 4.104 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 2 |
| 1.317 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.011.459 | M | 61 | 12 |
| 1.318 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 12 |
| 1.318 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 30 |
| 1.318 | 4.104 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 4 |
| 1.319 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 12 |
| 1.319 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 30 |
| 1.320 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 30 |
| 1.320 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.052.632 | M | 61 | 12 |
| 1.321 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 8 |
| 1.321 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 60 |
| 1.321 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 30 |
| 1.321 | 4.104 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 2 |
| 1.322 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 8 |
| 1.322 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 60 |
| 1.323 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 60 |
| 1.323 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 12 |
| 1.323 | 4.317 | 42 | 102.484.890.160.306 | 1.209.200.077.030 | M | 61 | 15 |
| 1.324 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 12 |
| 1.324 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 90 |
| 1.325 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 12 |
| 1.325 | 4.288 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 60 |
| 1.325 | 4.104 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 3 |
| 1.326 | 4.109 | 42 | 102.484.890.160.306 | 1.209.200.095.620 | M | 62 | 12 |
| 1.329 | 4.706 | 42 | 102.484.890.160.306 | 1.210.200.068.792 | M | 62 | 30 |
| 1.329 | 4.652 | 42 | 102.484.890.160.306 | 1.210.200.068.792 | M | 62 | 12 |
| 1.329 | 4.526 | 42 | 102.484.890.160.306 | 1.210.200.068.792 | M | 62 | 10 |
A consulta SQL a seguir mostra a agregação que orgina o conjunto de dados
de trabalho legível no R
com o comando read.csv("data/difusao2022-11-15 - dataset.csv").
select A.*, B.qt_cnspcn qt_cnspcn_total
from (
-- calcula o total de usuarios ao ano para a diretriz e o procedimento
select
m.ano,
a.co_seq_procedimento,
a.co_seq_diretriz ,
count(DISTINCT a.nu_cnspcn) AS qt_cnspcn,
sum(a.qt_aprovada) AS qt_aprovada,
sum(a.vl_aprovado) AS vl_aprovado,
min(m.co_mes_ano) AS nu_competencia_min,
max(m.co_mes_ano) AS nu_competencia_max
FROM bd_sabeis.tf_siasus_pa_diretriz a
LEFT JOIN bd_geral.td_tempo_ano_mes m ON a.co_seq_competencia = m.co_seq_mes_ano
group by 1,2,3
-- -----------
) A
left join (
-- calcula o total de usuarios ao ano para a diretriz
select m.ano,
a.co_seq_diretriz ,
count(DISTINCT a.nu_cnspcn) AS qt_cnspcn,
min(m.co_mes_ano) AS nu_competencia_min,
max(m.co_mes_ano) AS nu_competencia_max
FROM bd_sabeis.tf_siasus_pa_diretriz a
LEFT JOIN bd_geral.td_tempo_ano_mes m ON a.co_seq_competencia = m.co_seq_mes_ano
group by 1,2
-- -----------
) B
on A.ano = B.ano and A.co_seq_diretriz=B.co_seq_diretriz;
Observe a como foi realizada junção com as tabelas relacionais
e a preparação dos dados de modo
a obter o produto observado no arquivo CSV do conjunto de dados de trabalho.
select
ano,
co_seq_diretriz,
no_abreviado,
no_diretriz50,
atributo,
sum(qt_cnspcn) qt_cnspcn,
sum(qt_aprovada) qt_aprovada,
sum(vl_aprovado) vl_aprovado,
min(nu_competencia_min) nu_competencia_min,
min(nu_competencia_max) nu_competencia_max,
sum(distinct qt_cnspcn_total) qt_cnspcn_total,
round(sum(qt_cnspcn)::numeric/sum(distinct qt_cnspcn_total)*100,3) indicador,
string_agg(distinct co_seq_procedimento::text, ', ') co_seq_procedimento,
string_agg(distinct co_procedimento::text, ', ') co_procedimento,
string_agg(distinct no_procedimento::text, ', ') no_procedimento,
string_agg(distinct sg_procedimento::text, ', ') sg_procedimento
from (
select a.*,
case when qt_cnspcn::numeric/qt_cnspcn_total*100 < 10
then ' outro(s)'
else no_procedimento
end as atributo,
s.co_procedimento,
s.no_procedimento,
trim(split_part(s.sg_procedimento, '|',1)) sg_procedimento,
d.no_abreviado,
d.no_diretriz50
from bd_sabeis.tf_siasus_pa_diretriz_difusao a
LEFT JOIN bd_geral.td_sigtap s ON a.co_seq_procedimento = s.co_seq_procedimento
LEFT JOIN bd_geral.td_diretriz d ON a.co_seq_diretriz = d.co_seq_diretriz
) a
group by ano,
co_seq_diretriz,
no_abreviado,
no_diretriz50,
atributo
O script R abaixo ilustra como carregar a tabela CSV de trabalho presente no github.
# le arquivo CSV
ds=read.csv("data/difusao2022-11-15 - dataset.csv")
# certifica-se de que detenha apenas diretrizes e procedimentos válidos
ds=subset(ds,ds$co_seq_diretriz>0 & ds$co_procedimento > 0)
O conteúdo do conjunto de dados é ilustrado na tabela 3.3.
| no_abreviado | ano | qt_cnspcn | qt_cnspcn_total | vl_aprovado | nu_competencia_min | nu_competencia_max | co_procedimento |
|---|---|---|---|---|---|---|---|
| acne | 2008 | 5310 | 5380 | 415574 | 200801 | 200812 | 601140044 |
| acne | 2008 | 378 | 5380 | 13182 | 200801 | 200801 | 601140010, 601140028, 601140036 |
| acromegali | 2008 | 565 | 895 | 167061 | 200801 | 200812 | 601310020 |
| acromegali | 2008 | 142 | 895 | 881336 | 200801 | 200801 | 601180011, 601180194, 601260015, 601300017, 601300025, 601300033, 601330048, 601350073 |
| acromegali | 2008 | 136 | 895 | 1376310 | 200801 | 200812 | 601300041 |
| acromegali | 2008 | 128 | 895 | 9286 | 200801 | 200812 | 601310012 |
| adrenal_co | 2008 | 160 | 161 | 3475 | 200801 | 200812 | 601340019 |
| adrenal_co | 2008 | 1 | 161 | 13 | 200801 | 200801 | 601280016 |
| adrenal_pr | 2008 | 2132 | 2512 | 3157682 | 200801 | 200812 | 601320026 |
| adrenal_pr | 2008 | 545 | 2512 | 750979 | 200801 | 200812 | 601320018 |
O usuário do SUS pode utilizar mais de um medicamento, assim, a soma
do número de usuários de cada medicamento pode resultar num denominador do indicador
superior ao real.
A equação (método de cálculo) do indicador de percentual de uso é \(p=n/N\times 100\),
onde \(p\) é o percentual, \(n\) é o número de usuários
do procedimento e \(N\) é o total de usuários para dada doença ou diretriz clínica.
Dessa forma, o \(N\) é obtido com o número de usuários distintos ou
count(DISTINCT nu_cnspcn) agrupado por ano e co_seq_diretriz,
enquanto o \(n\) é agrupado, inclusive, por co_seq_procedimento.
ds2=ds[
sample(x = 1:nrow(ds), size = 10, replace = FALSE),
c("no_abreviado","ano","no_procedimento","qt_cnspcn","qt_cnspcn_total")
]
ds2$p=round(ds2$qt_cnspcn/ds2$qt_cnspcn_total*100,2)
O cálculo do percentual de uso do procedimento é ilustrado na tabela 3.4.
| no_abreviado | ano | no_procedimento | qt_cnspcn | qt_cnspcn_total | p |
|---|---|---|---|---|---|
| bipolar | 2019 | OLANZAPINA 5 MG (POR COMPRIMIDO) | 7295 | 62729 | 11.63 |
| glaucoma | 2020 | BIMATOPROSTA 0,3 MG/ML SOLUÇÃO OFTÁLMICA (POR FRASCO DE 3 ML) | 33425 | 172841 | 19.34 |
| acne | 2019 | ISOTRETINOINA 10 MG (POR CAPSULA) | 1361 | 39433 | 3.45 |
| leimioma | 2018 | GOSSERRELINA 10,80 MG INJETAVEL (POR SERINGA PREENCHIDA) | 7487 | 9100 | 82.27 |
| c_prostata | 2011 | HORMONIOTERAPIA DO ADENOCARCINOMA DE PRÓSTATA AVANÇADO - 1ª LINHA | 3528 | 5465 | 64.56 |
| renal | 2011 | CICLOSPORINA 25 MG (POR CAPSULA) | 562 | 4450 | 12.63 |
| artrite_ju | 2017 | METOTREXATO 2,5 MG (POR COMPRIMIDO) | 1070 | 4761 | 22.47 |
| c_tireoide | 2018 | QUIMIOTERAPIA DO CARCINOMA DE TIREOIDE AVANÇADO | 222 | 844 | 26.30 |
| artrite_ps | 2019 | ETANERCEPTE 50 MG INJETAVEL (POR FRASCO-AMPOLA) | 4207 | 20531 | 20.49 |
| anemia_ren | 2012 | ALFAEPOETINA 3.000 UI INJETAVEL (POR FRASCO-AMPOLA) | 2335 | 19918 | 11.72 |
A linha de comando abaixo aloca na variável diretrizes o resultado de mapeamento
dos Protocolos Clínicos e Diretrizez Terapêuticas.
diretrizes=read.csv("data/difusao2022-11-15 - diretriz.csv")
Foram anotadas 113 diretrizes, listadas na tabela 4.1. Anotar significa que as distrizes estão mapedas e podem ser lidas por humanos e por máquinas. Assim é possível extrair de forma automatizada os tratamentos medicamentosos e oncológicos do SIA.
| co_pcdt | no_abreviado | no_diretriz50 | co_cid_hash |
|---|---|---|---|
| ACR | acromegali | Acromegalia | E220 |
| EST | c_estomago | Adenocarcinoma de estômago | C160 C161 C163 C164 C165 C166 C168 C169 |
| PRO | c_prostata | Adenocarcinoma de Próstata | C61 D75 |
| AMN | anemia_apl | Anemia Aplástica, Mielodisplasia e Neutropenia | D460 D461 D467 D610 D611 D612 D613 D618 D70 Z948 |
| AHA | anemia_hem | Anemia Hemolítica Autoimune | D590 D591 |
| ANI | anemia_ren | Anemia na Doença Renal Crônica | N180 N188 |
| FER | anemia_fer | Anemia por Deficiência de Ferro | D500 D508 |
| AC1 | angiodema | Angioedema | D841 |
| APA | aplasia | Aplasia Pura Adquirida Crônica da série vermelha | D600 |
| AIJ | artrite_ju | Artrite Idiopática Juvenil | M080 M081 M082 M083 M084 M088 M089 |
| APS | artrite_ps | Artrite Psoríaca | M070 M072 M073 |
| ART | artrite_re | Artrite Reativa | M023 M032 M036 M021 |
| AR | artrite_re | Artrite Reumatoide e Artrite Idiopática Juvenil | M050 M051 M052 M053 M058 M060 M068 |
| ASM | asma | Asma | J450 J451 J458 |
| AME | atrofia | Atrofia Muscular Espinhal | G120 G121 |
| CCP | c_cabeca | Câncer de Cabeça e Pescoço | C00 C01 C02 C03 C04 C05 C06 C09 C10 C11 C12 C13 C14 C32 |
| CCR | c_colon | Câncer de Cólon e Reto | C18 C180 C181 C182 C183 C184 C185 C186 C187 C188 C189 C19 C20 |
| CFI | c_figado | Câncer de Fígado - Adultos | C220 |
| CPU | c_pulmao | Câncer de Pulmão | C34 C340 C341 C342 C343 C348 C349 |
| CRE | c_renal | Carcinoma de Células Renais | C64 |
| ESO | c_esofago | Carcinoma de Esôfago | C150 C151 C152 C153 C154 C155 C158 C159 |
| CMA | c_mama | Carcinoma de Mama | C500 C501 C502 C503 C504 C505 C506 C508 C509 |
| CTI | c_tireoide | Carcinoma Diferenciado de Tireóide | C73 |
| CBI | colangite | Colangite Biliar Primária | K743 |
| AUT | autismo | Comportamento Agressivo no Autismo | F840 F841 F843 F845 F848 |
| DBI | biotinidas | Deficiência de Biotinidase | E889 |
| DP | dermatomio | Dermatomiosite e Polimiosite | M330 M331 M332 |
| DM1 | diabetes_1 | Diabete Melito Tipo 1 | E100 E101 E102 E103 E104 E105 E106 E107 E108 E109 |
| DM2 | diabetes_2 | Diabete Melito Tipo 2 | E11 E112 E113 E114 E115 E116 E117 E118 E119 |
| DI | diabetes_i | Diabetes Insípido | E232 |
| MMP | mesot_mag | Diagnóstico do Mesotelioma Maligno de Pleura | C450 C459 |
| ICR | insuf_card | Insuficiência Cardíaca - Fração de Ejeção Reduzida | I500 I501 I509 |
| COV | covid_19 | COVID-19 | B342 U04 U049 U071 U072 |
| LLA | leucemia_l | Leucemia Linfoblástica Aguda Philadelphia | C910 C835 |
| DIS | dislipidem | Dislipidemia para a Prevenção de Eventos Cardiov. | E780 E781 E782 E783 E784 E785 E786 E788 |
| DFE | distonias | Distonias focais e Espasmo Hemifacial | G243 G244 G245 G248 G513 G518 |
| DMO | osseo | Distúrbio Mineral Ósseo na Doença Renal Crônica | E833 N180 N250 |
| DA | alzheimer | Doença de Alzheimer | F000 F001 F002 G300 G301 G308 |
| CRN | crohn | Doença de Crohn | K500 K501 K508 |
| GAU | gaucher | Doença de Gaucher | E752 |
| PAG | paget | Doença de Paget | M880 M888 |
| PKS | parkinson | Doença de Parkinson | G20 |
| POP | pompe | Doença de Pompe | E740 |
| WIL | wilson | Doença de Wilson | E830 |
| FAL | falciforme | Doença Falciforme | D561 D568 D570 D571 D572 |
| DPO | dpoc | Doença Pulmonar Obstrutiva Crônica -DPOC | J440 J441 J448 |
| CRO | dor_cronic | Dor Crônica | R521 R522 |
| END | endometrio | Endometriose | N800 N801 N802 N803 N804 N805 N808 |
| EPI | epilepsia | Epilepsia | G400 G401 G402 G403 G404 G405 G406 G407 G408 |
| ELA | esclerose | Esclerose Lateral Amiotrófica | G122 |
| EM | esclerose | Esclerose Múltipla | G35 |
| ES | esclerose | Esclerose Sistêmica | M340 M341 M348 |
| ESP | espasticid | Espasticidade | G041 G800 G801 G802 G811 G821 G824 I690 I691 I692 I693 I694 I698 T905 T908 |
| ANC | espondilit | Espondilite Ancilosante | M45 M468 |
| ESS | espondilos | Espondilose | M471 M472 M478 |
| EQZ | esquizofre | Esquizofrenia | F200 F201 F202 F203 F204 F205 F206 F208 |
| FEN | fenilceton | Fenilcetonúria | E700 E701 |
| FPP | fibrose_ci | Fibrose Cística - Pulmonar e Ins. Pancreatica | E840 E841 E848 |
| GLA | glaucoma | Glaucoma | H401 H402 H403 H404 H405 H406 H408 Q150 |
| HEI | hemangioma | Hemangioma Infantil | D180 |
| HA | hepatite_a | Hepatite Autoimune | K754 |
| HPC | hep_b_tran | Hep B – Coinfecções, Reinfec Profilaxia pós-transp | B160 B162 B180 B181 |
| HCC | hepatite_c | Hepatite C e coinfecções | B171 B182 |
| HIS | hidradenit | Hidradenite Supurativa | L732 |
| HAC | adrenal_co | Hiperplasia Adrenal Congênita | E250 |
| HIC | hiperprola | Hiperprolactinemia | E221 |
| HAP | hipertensa | Hipertensão Arterial Pulmonar | I270 I272 I278 |
| HIP | hipopparat | Hipoparatireoidismo | E200 E201 E208 E892 |
| HPC | hipotireoi | Hipotireoidismo Congênito | E030 E031 |
| IH | ictiose | Ictioses Hereditárias | Q800 Q801 Q802 Q803 Q808 Q809 |
| ANT | imunosufic | Imunodeficiência Primária | D800 D801 D803 D805 D806 D807 D808 D830 D832 D838 |
| CAR | cardiaco | Imunossupressão no Transplante Cardíaco | T862 Z941 |
| HAP | hepatico_a | Imunossup. no Transpl. Hepático em Adulto e Pediat | T864 Z944 |
| REN | renal | Imunossupressão no Transplante Renal | T861 Z940 |
| INF | infarto | Infarto Agudo do Miocárdio | I200 I201 I210 I211 I212 I213 I214 I219 I220 I221 I228 I229 I230 I231 I232 I233 I234 I235 I236 I238 I240 I248 I249 |
| IAP | adrenal_pr | Insuficiência Adrenal | E230 E233 E271 E272 E273 E274 |
| IPE | insuficien | Insuficiência Pancreática Exócrina | K860 K861 K903 |
| ACN | acne | Acne grave | L700 L701 L708 |
| LU | leimioma | Leimioma de útero | D250 D251 D252 |
| LKA | c_leucemia | Leucemia Linfoblástica Aguda Cromossoma Philadelph | C910 |
| LMA | c_leucemia | Leucemia Mieloide Aguda - Adultos | C920 C921 C923 C924 C925 C927 C930 C931 C937 C940 C942 C943 |
| LIM | linfangiol | Linfangioleiomiomatose | J848 |
| LHA | c_linfoma | Linfoma de Hodgkin no Adulto | C810 C811 C812 C813 C817 C819 |
| LCB | c_celula_b | Linfoma Difuso de Grandes Células B - Adultos | C833 |
| LF | c_folicula | Linfoma Folicular | C820 C821 C822 C827 C829 |
| LES | lupus | Lúpus Eritematoso Sistêmico | L930 L931 M321 M328 |
| MC | c_cutaneo | Melanoma Cutâneo | C43 C430 C431 C432 C433 C434 C436 C437 C438 C439 D03 D030 D031 D032 D033 D034 D035 D036 D037 |
| MG | miastenia | Miastenia Gravis | G700 |
| MM | c_mieloma | Mieloma Múltiplo | C900 C901 C902 D472 |
| M1 | mucopoliss | Mucopolissacaridose tipo I | E760 |
| M2 | mucopoliss | Mucopolissacaridose tipo II | E761 |
| M467 | mucopoliss | Mucopolissacaridose tipo IV A VI VII | E762 |
| OVA | c_ovario | Neoplasia Maligna Epitelial de Ovário | C56 C570 C786 |
| OST | osteoporos | Osteoporose | M800 M801 M802 M803 M804 M805 M808 M810 M811 M812 M813 M814 M815 M816 M818 M820 M821 M828 |
| PAF | polineurop | Polineuropatia Amiloidótica Familiar | E851 |
| PSO | psoriase | Psoríase | L400 L401 L404 L408 |
| PUB | puberdade | Puberdade Precoce Central | E228 |
| PTI | purpura | Púrpura Trombocitopênica Idiopática | D693 |
| RO | raquitismo | Raquitismo e Osteomalácia | E550 E559 E643 E833 M830 M831 M832 M833 M838 |
| RU | retocolite | Retocolite Ulcerativa | K510 K512 K513 K515 K518 |
| SGB | guillain_b | Síndrome de Guillain-Barré | G610 |
| SOP | ovario_pol | Síndrome de Ovários Policísticos | E282 L680 |
| TUR | turner | Síndrome de Turner | Q960 Q961 Q962 Q963 Q964 Q968 |
| NAC | nefrotica_ | Síndrome Nefrótica Primária em Adultos e crianças | N040 N041 N042 N043 N044 N045 N046 N047 N048 N049 |
| SF | sobrecarga | Sobrecarga de Ferro | E831 T454 |
| MIE | mielodispl | Síndrome Mielodisplásica | D460 D461 D464 |
| BIP | bipolar | Transtorno Afetivo Bipolar do tipo I | F311 F312 F313 F314 F315 F316 F317 |
| TEZ | esquizoafe | Transtorno Esquizoafetivo | F250 F251 F252 |
| TVG | tromboembo | Tromboembolismo Venoso em Gestantes com Trombofili | D688 I820 I821 I822 I823 I828 O223 O225 |
| TC | c_cerebral | Tumor Cerebral - Adultos | C710 C711 C712 C713 C714 C715 C716 C717 C718 C719 |
| TEG | c_gastro | Tumor do Estroma Gastrointestinal | C150 C151 C152 C153 C154 C155 C158 C159 C160 C161 C162 C163 C164 C165 C166 C168 C169 C170 C171 C172 C173 C178 C179 C180 C181 C182 C183 C184 C185 C186 C187 C188 C189 C19 C20 C268 C474 C481 C493 |
| UVE | uveite | Uveítes Não-Infecciosas | H150 H201 H301 H302 H308 |
| LHT | c_leucemia | Leucemia/Linfoma Associação ao Vírus HTLV-1 | C844 C915 |
Logo, é possível gerar número igual ou superior de gráficos de difusão ao do número de diretrizes anotadas.
Porém, a difusão do percentual de uso pode não ser fidedigna se compararmos medicamentos de linhas terapêuticas distintas, sendo necessário selecionar ou remover para tornar a visualização mais acurada.
A função subset extrai os dados da diretriz
escolhida com o filtro artrite_ps.
# obtem apenas dados referentes à diretriz atrite psoríaca
ds4=read.csv("data/difusao2022-11-15 - dataset completo.csv")
ds4=subset(
ds4,
ds4$no_abreviado == 'artrite_ps'
)
ds4$p=0
Agora precisamos listar os medicamentos diferentes para saber quais vamos excluir.
linhas_distintas <- !duplicated(ds4[,c("co_procedimento","atributo")])
procedimento <- ds4[linhas_distintas,c("co_procedimento","atributo")]
A tabela @ref{tab:tabprocedimento} mostra os procedimentos distintos para a diretriz selecionada.
| co_procedimento | atributo |
|---|---|
| 604010095 | SULF500 SULFASSALAZINA 500 MG (POR COMPRIMIDO) |
| 604320043 | LEFL20 LEFLUNOMIDA 20 MG (POR COMPRIMIDO) |
| 604380011 | ADAL40 ADALIMUMABE 40 MG INJETAVEL (POR SERINGA PREENCHID |
| 604380020 | ETAN25 ETANERCEPTE 25 MG INJETAVEL (POR FRASCO-AMPOLA) |
| 604380038 | ETAN50 ETANERCEPTE 50 MG INJETAVEL (POR FRASCO-AMPOLA) |
| 604380054 | INFL1010 INFLIXIMABE 10 MG/ML INJETAVEL (POR FRASCO-AMPOLA |
| 604530021 | METO25 METOTREXATO 2,5 MG (POR COMPRIMIDO) |
| 604340036 | CICLOSP50 CICLOSPORINA 50 MG (POR CAPSULA) |
| 604340044 | CICLOSP100 CICLOSPORINA 100 MG (POR CAPSULA) |
| 604530030 | METO252 METOTREXATO 25 MG/ML INJETAVEL (POR AMPOLA DE 2 ML |
| 604340052 | CICLOSP10050 CICLOSPORINA 100 MG/ML SOLUCAO ORAL (POR FRASCO DE |
| 604340028 | CICLOSP25 CICLOSPORINA 25 MG (POR CAPSULA) |
| 604380089 | GOLI50 GOLIMUMABE 50 MG INJETÁVEL (POR SERINGA PREENCHIDA |
| 604720017 | NAPR250 NAPROXENO 250 MG (POR COMPRIMIDO) |
| 604720025 | NAPR500 NAPROXENO 500 MG (POR COMPRIMIDO) |
| 604690029 | SECU150 SECUQUINUMABE 150 MG/ML SOLUÇÃO INJETÁVEL (POR SER |
| 604380100 | ETAN50A ETANERCEPTE 50 MG INJETÁVEL (POR FRASCO-AMPOLA OU |
| 604320159 | CITR5 CITRATO DE TOFACIFITINIBE 5 MG (POR COMPRIMIDO) |
| 604380070 | CERT200 CERTOLIZUMABE PEGOL 200 MG/ML INJETÁVEL (POR SERIN |
| 604380119 | INMGMLIN1010 (INFLIXIMABE 10 MG /ML INJETÁVEL(POR FRASCO-AMPOLA |
| 604380127 | ADMGINPO40 ADALIMUMABE 40 MG INJETÁVEL ( POR SERINGA PREENCHI |
Agora, basta listar e filtrar os desejados. Abaixo é filtrado tando pelo número de biológicos, quanto pela categoria “outro(s)”.
procedimentos_selecionados=c(
604380011, # ADAL40 ADALIMUMABE 40 MG INJETAVEL (POR SERINGA PREENCHID
604380020, # ETAN25 ETANERCEPTE 25 MG INJETAVEL (POR FRASCO-AMPOLA)
604380038, # ETAN50 ETANERCEPTE 50 MG INJETAVEL (POR FRASCO-AMPOLA)
604380054, # INFL1010 INFLIXIMABE 10 MG/ML INJETAVEL (POR FRASCO-AMPOLA
604380089, # GOLI50 GOLIMUMABE 50 MG INJETÁVEL (POR SERINGA PREENCHIDA
604690029, # SECU150 SECUQUINUMABE 150 MG/ML SOLUÇÃO INJETÁVEL (POR SER
604380100, # ETAN50A ETANERCEPTE 50 MG INJETÁVEL (POR FRASCO-AMPOLA OU
604320159, # CITR5 CITRATO DE TOFACIFITINIBE 5 MG (POR COMPRIMIDO)
604380070, # CERT200 CERTOLIZUMABE PEGOL 200 MG/ML INJETÁVEL (POR SERIN
604380119, # INMGMLIN1010 (INFLIXIMABE 10 MG /ML INJETÁVEL(POR FRASCO-AMPOLA
604380127 # ADMGINPO40 ADALIMUMABE 40 MG INJETÁVEL ( POR SERINGA PREENCHI
)
ds4=subset(
ds4, co_procedimento %in% procedimentos_selecionados &
grupo != "outro(s)"
)
Agora é necessário redistribuir o fator p do empilhamento das
barras horizontais.
# para cada ano,calcula o fator de visualização
for (vano in levels(as.factor(ds4$ano))) {
soma=sum(subset(ds4,ano==vano)$indicador)
ds4[ds4$ano==vano,"p"]=ds4[ds4$ano==vano,"indicador"]/soma
}
ds4$p=round(ds4$p*100,3)
ds4$qt_cnspcn=format(
ds4$qt_cnspcn, big.mark = ".", decimal.mark = ",", scientific = F
)
# atribuio uma variavel como rotulo
colnames(ds4)[colnames(ds4)=="qt_cnspcn"]="rotulo"
# ds4$atributo=ds4$grupo
dataframe=ds4
A figura ?? mostra o resultado da difusão com itens selecionados.
plot_difusao <- function(dataframe, titulo, rotulo_x, rotulo_y) {
g = ggplot(
dataframe,
aes(
fill = atributo,
y = p,
x = ano,
label = rotulo
)
) +
geom_bar(stat = "identity") +
xlab(rotulo_y) +
ylab(rotulo_x) +
labs(x="")+
scale_x_continuous(breaks = round(seq(min(dataframe$ano), max(dataframe$ano), by = 1),1)) +
scale_y_continuous(breaks = seq(0, 10, by = 10)) +
geom_text(size = 3, position = position_stack(vjust = 0.5)) +
coord_flip() +
# scale_fill_brewer(palette = "Pastel1") +
theme(
legend.position = "top",
legend.text = element_text(size = rel(0.6)),
axis.title.x = element_text(size = rel(1.0)),
axis.title.y = element_text(size = rel(1.0)),
axis.text.x = element_text(size = rel(1.0)),
axis.text.y = element_text(size = rel(1.0))
) +
scale_fill_discrete(name=NULL)
return(g)
}
plot_difusao(
ds4,
"",
"usuários (%)",
"ano"
)
Figure 4.1: Difusão percentual de uso de medicamentos biológicos para artrite psoríaca.
O código-fonte encontra-se depositado no github e está à disposição da equipe da Sabeis, como mostrado na figura 4.2
Figure 4.2: Diagrama de entidades e relacionamentos da Sala Aberta de Inteligência em Saúde - módulo de medicamentos e oncológicos
O denominador pré-calculado com o total de usuários associados à diretriz é um artifício que não compromete o recurso gráfico das barras empilhadas, uma vez que, ainda que venhamos a selecionar grupos de medicamentos ou oncológicos para comparação, o denominador persiste o mesmo para todos. Dessa forma, o percentual recalculado com base nos itens presentes sempre será 100%, ainda que os valores sejam o número de usuários.
Outro recurso proposto é a frequência de usuários distintos no período escolhido para o cálculo do denominador. Assim, é assegurado que não há repetição no denominador, o que poderia distorcer quando dois itens são mais frequentemente associados do que os demais.
O recurdo wiki em Rmarkdown trouxe transparência na extração,
transformação, carga e análise e apresentação de resultados,
algo essencial para a gestão do conhecimento de ciência de dados.
Assim, espera-se que a equipe possa evoluir os algoritmos,
automatizar relatórios e estabelecer novos patamares
na Avaliação de Tecnologias em Saúde (ATS).