O tempo médio de permanência hospitalar representa o tempo médio em dias que os pacientes permanecem internados no hospital. É um indicador clássico de desempenho hospitalar e está associado a gestão eficiente do leito operacional. A padronização preconizada é a baseada na nomenclatura e definição de leito estabelecida pela Portaria nº 312/2002 (Ministério da Saúde, 2002a)
\[Tempo\;médio\;de\;permanência (TMP) = \frac{\sum_{} {\text nº\;de\;pacientes-dia\;no\;período}} {\sum{}{\text nº\;de\;saídas\;no\;período}}\] #### Paciente-dia Unidade de medida que representa a assistência prestrada a um paciente internado durante 1 dia hospitalar. O número de pacientes-dia corresponde ao número de pacintes que estão pernoitando no hospital em cada dia. O número de pacientes dia em um período será a somatória de pacintes-dia de cada dia do período.
É o somatório do número de saídas hospitalares em um determinado período, que é o número de altas(independente do motivo da alta), óbitos e transferências externas ocoorridas no hospital.
Ambos o númerador e o denominador da formula do cálculo do tempo médio de permanência não são informados diretamente pelos hospitais, entretanto este dado pode ser computado através das informações existentes na AIH de cada paciente que internou.
O objetivo deste relatório é descrever a série de passos de transformação nos dados disponíveis no SIH (Sistema de informações hospitalares) para criação de uma série histórica que permita calcular o Tempo Médio de Permanência de diferentes grupos de pacientes na cidade de Porto Alegre.
Os dados foram obtidos atráves do download dos pacotes de dados do SIH (Sistema de informações hospitalares), disponíveis neste endereço.. Nestes pacotes, no formato .dbc (DBF comprimido) estão armazenados os dados das AIHs (Autorização de Internação Hospitalar), uma AIH em cada linha. Cada pacote .dbc corresponde as AIHs processadas pelo DataSus em um determinado mês. É importante salientar que o mês no qual a AIH foi processada não necessariamente corresponde ao mês em que o paciente foi internado ou teve alta hospitalar, pois as contas hospitalares são apresentadas em diferentes momentos, por diversos motivos (atraso no processamento no hospital, reapresentação de contas glosadas, etc.)
O pacotes do DataSus foram então importados para o rStudio, utilizando-se o pacote read.dbc (disponível no CRAN), descompactados e concatenados em um data frame. Este banco contem as infromações sobre as NULL internações SUS no estado do Rio Grande do sul entre, o final de 2007 e a data atual.
A seguir foram filtrados todos os registros onde o atendimento foi realizado em Porto Alegre, através do código do municipio (431490), eliminadas variáveis que não são de interesse para estudo e adicionadas variáveis que não estavam no banco original como nome do hospital (proveniente da lista de estabelecimento do CNES no DataSus), nome da cidade de origem do paciente (Proveniente da Lista de Municipios do Brasil) e corrigidas distorções encontradas (por exemplo, municipios que deixaram de existir no período). O banco final foi gravado como RDS e está disponível para ser analisado.
Para o cálculo do tempo médio de permanência é preciso calcular a quantidade de pessoas internadas em Porto Alegre durante cada dia do período. O banco disponível no DataSus nos fornece a data da internação e a data da alta. Foi necessária então uma expansão deste banco, onde cada linha representa 1 dia de internação de 1 paciente (cada linha é portanto 1 paciente-dia).
Para fins de agrupamento e cálculo, acompanha cada linha neste novo banco o número da AIH, do nome do hospital que internou a data da internação, a data da alta e a data de cada dia que ele ocupou um leito no hospital.
O número de linhas deste banco final é igual ao número de pacientes-dia em Porto Alegre durante o período.
pacientes_dia <- poa %>%
select(N_AIH, DT_INTER, DT_SAIDA, hospital) %>%
transmute(N_AIH,
dt = map2(DT_INTER, DT_SAIDA, seq, by = '1 day'),
DT_INTER,
DT_SAIDA, hospital) %>%
unnest()
head(pacientes_dia, 30)
## N_AIH DT_INTER DT_SAIDA hospital dt
## 1 4307108059694 2007-12-10 2007-12-12 Hospital Femina 2007-12-10
## 2 4307108059694 2007-12-10 2007-12-12 Hospital Femina 2007-12-11
## 3 4307108059694 2007-12-10 2007-12-12 Hospital Femina 2007-12-12
## 4 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-01
## 5 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-02
## 6 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-03
## 7 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-04
## 8 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-05
## 9 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-06
## 10 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-07
## 11 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-08
## 12 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-09
## 13 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-10
## 14 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-11
## 15 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-12
## 16 4307108059771 2007-12-01 2007-12-13 Hospital Femina 2007-12-13
## 17 4307108059848 2007-12-10 2007-12-13 Hospital Femina 2007-12-10
## 18 4307108059848 2007-12-10 2007-12-13 Hospital Femina 2007-12-11
## 19 4307108059848 2007-12-10 2007-12-13 Hospital Femina 2007-12-12
## 20 4307108059848 2007-12-10 2007-12-13 Hospital Femina 2007-12-13
## 21 4307108059903 2007-12-10 2007-12-13 Hospital Femina 2007-12-10
## 22 4307108059903 2007-12-10 2007-12-13 Hospital Femina 2007-12-11
## 23 4307108059903 2007-12-10 2007-12-13 Hospital Femina 2007-12-12
## 24 4307108059903 2007-12-10 2007-12-13 Hospital Femina 2007-12-13
## 25 4307108059969 2007-12-10 2007-12-13 Hospital Femina 2007-12-10
## 26 4307108059969 2007-12-10 2007-12-13 Hospital Femina 2007-12-11
## 27 4307108059969 2007-12-10 2007-12-13 Hospital Femina 2007-12-12
## 28 4307108059969 2007-12-10 2007-12-13 Hospital Femina 2007-12-13
## 29 4307108059991 2007-12-11 2007-12-13 Hospital Femina 2007-12-11
## 30 4307108059991 2007-12-11 2007-12-13 Hospital Femina 2007-12-12
A quantidade de internações é igual a quantidade de altas porque só dispomos de dados de internações que foram finalizadas, portanto o dado mais recente (ultimos 3 meses e em maior intensidade o último mês) o tempo médio de permanência será sempre subestimado.
Utilizando-se o banco de dados de todas as internações SUS de Porto Alegre de 2007 até a data corrente, partimos para a criação de regras de filtragem para obtenção de um novo banco de dados somento com as informações das internações clínicas (baseado em filtro de procedimentos SIGTAP realizado que estão relacionados a internações clínicas, criado na SMS POA) de pacientes maiores de 12 anos de idade, de outubro de 2013 em diante, em hospitais de Porto Alegre que não sejam hospitais de trauma e tipos de leito relacionados a internações clínicas.
# O banco final foi carregado na variável poa.
names(poa)
## [1] "ANO_CMPT" "MES_CMPT" "ESPEC"
## [4] "N_AIH" "IDENT" "CEP"
## [7] "MUNIC_RES" "NASC" "SEXO"
## [10] "UTI_MES_TO" "MARCA_UTI" "UTI_INT_TO"
## [13] "QT_DIARIAS" "PROC_SOLIC" "PROC_REA"
## [16] "VAL_SH" "VAL_SP" "VAL_TOT"
## [19] "VAL_UTI" "US_TOT" "DT_INTER"
## [22] "DT_SAIDA" "DIAG_PRINC" "DIAG_SECUN"
## [25] "COBRANCA" "NATUREZA" "MUNIC_MOV"
## [28] "COD_IDADE" "IDADE" "DIAS_PERM"
## [31] "MORTE" "NACIONAL" "CAR_INT"
## [34] "SEQ_AIH5" "CNES" "COMPLEX"
## [37] "FINANC" "FAEC_TP" "REGCT"
## [40] "RACA_COR" "ETNIA" "SEQUENCIA"
## [43] "REMESSA" "cidade_mov" "cidade_res"
## [46] "tto_local" "poa_mov" "poa_res"
## [49] "DESC_PROC" "macro" "CRS"
## [52] "numero_regiao" "cidades" "pop_macro_2014"
## [55] "uf" "codmundv" "pop"
## [58] "pop_atualizada" "data_atualizacao" "hospital"
## [61] "abrev"
# Pacientes clínicos
# de Outubro de 2013 até o momento atual.
# Maiores ou = a 12 anos de idade
clinicos <- poa %>%
filter(DT_INTER >= as.Date("2013-10-01")) %>%
# Seleção dos Hospitais de POA
filter(grepl("2237571|2265052|2265060|2237601|2262568|2237881|7092571|2237563|2237180|2778718|2237822|2237253|2693801|2237849|6295320|3567664|7513151|7145594", CNES)) %>%
# Incluir hospitais de trauma?
filter(!grepl("Hospital de Pronto Socorro de Porto Alegre|Hospital Cristo Redentor", hospital)) %>%
# Seleção de pacientes adultos
filter(IDADE >= 12) %>%
# Seleção por procedimentos realizados
filter(grepl("^030101|^030102|^030103|^030104|^030105|^030106|^030107|^030108|^030109|^030110|^030111|^030112|^030113|^030201|^030202|^030203|^030204|^030205|^030206|^030207|^030301|^030302|^030303|^030304|^030305|^030306|^030307|^030308|^030309|^030310|^030311|^030312|^030313|^030314|^030315|^030316|^030318|^030319|^030401|^030402|^030403|^030404|^030405|^030406|^030407|^030408|^030409|^030410|^030501|^030502|^030601|^030602|^030701|^030702|^030703|^030704|^030801|^030802|^030803|^030804|^030901|^030902|^030903|^030904|^030905|^030906", PROC_REA)) %>%
# Seleção do tipo de leito
filter(grepl("01|02|03|05|06|07|08|64|65|74|75|76|77|78|79|80|81|82|83|87", ESPEC))
Este banco foi armazenado na variável clinicos e contém 287.870 registros. Foi feita a mesma expansão do banco para um banco de pacientes_dia.
pacientes_dia_clinicos <- clinicos %>%
select(N_AIH, DT_INTER, DT_SAIDA, hospital) %>%
transmute(N_AIH,
dt = map2(DT_INTER, DT_SAIDA, seq, by = '1 day'),
DT_INTER,
DT_SAIDA, hospital) %>%
unnest()