Colombia ha mejorado a lo largo de los años la calidad, la accesibilidad y la transparencia de su sistema oficial de vigilancia epidemiológica, SIVIGILA. Este sistema está regulado por el Instituto Nacional de Salud de Colombia y es operado por miles de trabajadores de la salud en las secretarías de salud locales, hospitales y unidades primarias generadoras de datos.
Sin embargo, todavía existen desafíos, especialmente a nivel local, en cuanto a la oportunidad y la calidad del análisis epidemiológico y de los informes epidemiológicos. Estas tareas pueden requerir una gran cantidad de trabajo manual debido a limitaciones en el entrenamiento para el análisis de datos, el tiempo que se requiere invertir, la tecnología y la calidad del acceso a internet en algunas regiones de Colombia.
sivirep
sivirep
para generar un reporte básico.sivirep
para el análisis de una de las
enfermedades con mayor impacto en la región, como herramienta para la
toma de decisiones y análisis.En esta práctica se desarrollarán los siguientes conceptos:
Función: conjunto de instrucciones que se encargan de transformar las entradas en los resultados deseados.
Modulo: cojunto de funciones que son agrupadas debido a su relación conceptual, resultados proporcionados y definición de responsabilidades.
R Markdown: es una extensión del formato Markdown que permite combinar texto con código R incrustado en el documento. Es una herramienta para generar informes automatizados y documentos técnicos interactivos.
SIVIGILA: Sistema de Notificación y Vigilancia en Salud Pública de Colombia.
Microdatos: Son los datos sobre las características de las unidades de estudio de una población (individuos, hogares, establecimientos, entre otras) que se encuentran consolidados en una base de datos.
Evento: Conjunto de sucesos o circunstancias que pueden modificar o incidir en la situación de salud de una comunidad.
Incidencia: Es la cantidad de casos nuevos de un evento o una enfermedad que se presenta durante un período de tiempo específico. Usualmente, se presentá como el número de casos por población a riesgo, y por ello el denominador podría variar dependiendo del evento o enfermedad.
Departamento: En Colombia, existen 32 unidades geográficas administrativas (adm1) llamadas departamentos.
Municipio: Corresponden al segundo nivel de división administrativa en Colombia, que mediante agrupación conforman los departamentos. Colombia posee 1104 municipios registrados.
Reporte: análisis descriptivo de una enfermedad o evento del SIVIGILA.
Ha llegado el momento de explorar sivirep
, de conocer
cómo generar reportes automatizados con el paquete y sus funcionalidades
principales.
El evento que analizaremos es Dengue en el departamento del Cauca para el año 2022, ya que ha sido una de las regiones más afectadas en Colombia a lo largo del tiempo por esta enfermedad.
Iniciaremos instalando e importando el paquete a través de los siguientes comandos:
remove.packages("sivirep")
if (!require("pak")) install.packages("pak")
pak::pak("epiverse-trace/sivirep") # Comando para instalar sivirep
#>
ℹ Loading metadata database
✔ Loading metadata database ... done
#>
#> → Will install 1 package.
#> → Will download 1 package with unknown size.
#> + sivirep 0.0.2.0 [bld][cmp][dl] (GitHub: bbd3e24)
#> ℹ Getting 1 pkg with unknown size
#> ✔ Cached copy of sivirep 0.0.2.0 (source) is the latest build
#> ✔ Installed sivirep 0.0.2.0 (github::epiverse-trace/sivirep@bbd3e24) (414ms)
#> ✔ 1 pkg + 64 deps: kept 23, added 1 [12.4s]
rm(list = ls()) # Comando para limpiar el ambiente de R
library(sivirep) # Comando para importar sivirep
Verificar que el evento o enfermedad se encuentren disponibles para
su descarga en la lista que provee sivirep
, la cual se
puede obtener ejecutando el siguiente comando:
Ahora generaremos un reporte automatizado a partir de la plantilla
que provee el paquete llamada Reporte Básico {sivirep}
, la
cual contiene seis secciones y recibe los siguientes parámetros de
entrada: el nombre del evento o enfermedad, el año, el nombre de
departamento (opcional) y nombre del municipio (opcional) para descargar
los datos de la fuente de SIVIGILA.
Para hacer uso de la plantilla se deben seguir los siguientes pasos:
Reporte Básico {sivirep}
, indica el nombre que deseas para
el reporte (i.e. Reporte_Laura), la ubicación donde deseas guardarlo y
presiona ‘Ok’.!Felicitaciones has generado tu primer reporte automatizado con sivirep!
Para conocer las funciones principales del paquete realizaremos una
actividad exploratoria siguiendo el flujo de datos de
sivirep
.
Construiremos un informe en R Markdown para Dengue, departamento del Cauca, año 2022 (no se debe utilizar la plantilla de reporte vista en la sección anterior) que de respuesta a las siguientes preguntas:
Realizaremos la configuración y preparación del documento en R Markdown a través de los siguientes pasos:
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "figures/",
include = TRUE,
error = FALSE,
warning = FALSE,
message = FALSE
)
Iniciaremos con la importación de los datos del evento o enfermedad
utilizando la función import_data_event
la cual permite
descargar los datos desde la fuente de SIVIGILA utilizando un formato
parametrizado basado en el nombre del evento y el año.
data_dengue <- import_data_event(nombre_event = "dengue",
year = 2022)
Recomendamos explorar la base de datos, sus variables, tipos de datos, registros y otras caracteristicas que pueden ser relavantes para su análisis y permitan responder correctamente a las preguntas planteadas en la actividad.
Si tiene alguna duda respecto a las variables o desconoce su significado puede dirigirse al diccionario de datos del SIVIGILA.
Para limpiar los datos utilizaremos una función genérica que
proporciona sivirep
llamada
limpiar_data_sivigila
, la cual envuelve diversas tareas
para identificar y corregir errores, inconsistencias y discrepancias en
los conjuntos de datos con el fin de mejorar su calidad y precisión.
Este proceso puede incluir la corrección de errores tipográficos, el
reemplazo de valores faltantes y la validación de datos, entre otras
tareas, como eliminar fechas improbables, limpiar códigos de
geolocalización y estandarizar los nombres de las columnas y las
categorías de edad.
data_limpia <- limpiar_data_sivigila(data_event = data_dengue)
data_limpia
#> # A tibble: 67,116 × 72
#> cod_eve fec_not semana ano cod_pre cod_sub edad uni_med nacionalidad
#> <chr> <date> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr>
#> 1 210 2022-09-30 39 2022 8541000080 01 19 1 170
#> 2 210 2022-02-07 05 2022 8501000190 01 18 1 170
#> 3 210 2022-04-08 13 2022 8500100001 03 19 1 170
#> 4 210 2022-04-04 13 2022 8500100001 03 8 1 170
#> 5 210 2022-05-16 19 2022 5000600169 01 8 1 170
#> 6 210 2022-07-16 28 2022 5031300522 01 8 1 170
#> 7 210 2022-05-15 19 2022 5031300522 01 8 1 170
#> 8 210 2022-08-21 33 2022 5031300115 08 8 1 170
#> 9 210 2022-11-03 43 2022 5031300522 01 8 1 170
#> 10 210 2022-04-11 14 2022 8500100001 03 11 1 170
#> # ℹ 67,106 more rows
#> # ℹ 63 more variables: nombre_nacionalidad <chr>, sexo <chr>, cod_pais_o <chr>,
#> # cod_dpto_o <chr>, cod_mun_o <chr>, area <chr>, ocupacion <chr>,
#> # tip_ss <chr>, cod_ase <chr>, per_etn <chr>, gru_pob <chr>, nom_grupo <chr>,
#> # estrato <chr>, gp_discapa <chr>, gp_desplaz <chr>, gp_migrant <chr>,
#> # gp_carcela <chr>, gp_gestan <chr>, sem_ges <chr>, gp_indigen <chr>,
#> # gp_pobicfb <chr>, gp_mad_com <chr>, gp_desmovi <chr>, gp_psiquia <chr>, …
Ahora debemos filtrar los datos del evento o enfermedad por el
departamento de Cauca
, utilizando la función de
sivirep
llamada geo_filtro
. Esta función
permite al usuario crear informes a nivel subnacional, seleccionando
casos específicos basados en la ubicación geográfica.
data_filtrada <- geo_filtro(data_event = data_limpia, dpto = "Cauca")
data_filtrada
#> # A tibble: 551 × 72
#> cod_eve fec_not semana ano cod_pre cod_sub edad uni_med nacionalidad
#> <chr> <date> <chr> <chr> <chr> <chr> <dbl> <dbl> <chr>
#> 1 210 2022-02-19 06 2022 1905000114 12 57 1 170
#> 2 210 2022-05-21 18 2022 1931881049 81 29 1 170
#> 3 210 2022-03-13 11 2022 1953307547 25 28 1 170
#> 4 210 2022-04-03 13 2022 1953307547 25 6 1 170
#> 5 210 2022-02-23 07 2022 1945000114 07 19 1 170
#> 6 210 2022-10-13 38 2022 1911000005 02 52 1 170
#> 7 210 2022-04-23 15 2022 1914207209 01 32 1 170
#> 8 210 2022-12-17 49 2022 1914207209 01 21 1 170
#> 9 210 2022-11-26 47 2022 1914207209 01 86 1 170
#> 10 210 2022-03-07 02 2022 1969808742 01 53 1 170
#> # ℹ 541 more rows
#> # ℹ 63 more variables: nombre_nacionalidad <chr>, sexo <chr>, cod_pais_o <chr>,
#> # cod_dpto_o <chr>, cod_mun_o <chr>, area <chr>, ocupacion <chr>,
#> # tip_ss <chr>, cod_ase <chr>, per_etn <chr>, gru_pob <chr>, nom_grupo <chr>,
#> # estrato <chr>, gp_discapa <chr>, gp_desplaz <chr>, gp_migrant <chr>,
#> # gp_carcela <chr>, gp_gestan <chr>, sem_ges <chr>, gp_indigen <chr>,
#> # gp_pobicfb <chr>, gp_mad_com <chr>, gp_desmovi <chr>, gp_psiquia <chr>, …
Agruparemos los datos de la enfermedad por la variable sexo para
poder visualizar su distribución y obtener los porcentajes a través de
la función que proporciona sivirep
:
casos_sex <- agrupar_sex(data_event = data_filtrada,
porcentaje = TRUE)
casos_sex
#> # A tibble: 4 × 4
#> sexo nombre_evento casos porcentaje
#> <chr> <chr> <int> <dbl>
#> 1 F DENGUE 291 52.8
#> 2 F DENGUE GRAVE 3 0.5
#> 3 M DENGUE 255 46.3
#> 4 M DENGUE GRAVE 2 0.4
Además, sivirep
cuenta con una función para generar el
gráfico por esta variable llamada plot_sex
:
plot_sex(data_agrupada = casos_sex)
La distribución de casos por sexo y semana epidemiológica se puede
generar utilizando la función agrupar_sex_semanaepi
proporcionada por sivirep
.
casos_sex_semanaepi <- agrupar_sex_semanaepi(data_event = data_filtrada)
casos_sex_semanaepi
#> # A tibble: 108 × 5
#> sexo semana nombre_evento casos porcentaje
#> <chr> <chr> <chr> <int> <dbl>
#> 1 F 01 DENGUE 7 1.3
#> 2 F 02 DENGUE 3 0.5
#> 3 F 03 DENGUE 1 0.2
#> 4 F 04 DENGUE 5 0.9
#> 5 F 05 DENGUE 3 0.5
#> 6 F 06 DENGUE 5 0.9
#> 7 F 07 DENGUE 4 0.7
#> 8 F 08 DENGUE 2 0.4
#> 9 F 10 DENGUE 6 1.1
#> 10 F 11 DENGUE 7 1.3
#> # ℹ 98 more rows
La función de visualización correspondiente es
plot_sex_semanaepi
, que sivirep
proporciona
para mostrar la distribución de casos por sexo y semana
epidemiológica.
plot_sex_semanaepi(data_agrupada = casos_sex_semanaepi)
sivirep
proporciona una función llamada
agrupar_edad
, que puede agrupar los datos de enfermedades
por grupos de edad. De forma predeterminada, esta función produce rangos
de edad con intervalos de 10 años.
casos_edad <- agrupar_edad(data_event = data_limpia, interval_edad = 10)
casos_edad
#> edad casos
#> 1 (0,10] 23555
#> 2 (10,20] 22653
#> 3 (20,30] 8106
#> 4 (30,40] 4832
#> 5 (40,50] 2882
#> 6 (50,60] 2300
#> 7 (60,70] 1488
#> 8 (70,80] 805
#> 9 (80,90] 415
#> 10 (90,100] 77
#> 11 (100,110] 2
#> 12 <NA> 1
La función de visualización correspondiente es
plot_edad
.
plot_edad(data_agrupada = casos_edad)
Obtener la distribución espacial de los casos es útil para identificar áreas con una alta concentración de casos, agrupaciones de enfermedades y factores de riesgo ambientales o sociales.
En Colombia, existen 32 unidades geográficas administrativas (adm1)
llamadas departamentos. sivirep
proporciona una función
llamada agrupar_mpio
que permite obtener un data.frame de
casos agrupados por departamento o municipio.
dist_esp_dept <- agrupar_mpio(data_event = data_filtrada)
dist_esp_dept
#> # A tibble: 28 × 6
#> cod_dpto_o departamento_ocurrencia cod_mun_o municipio_ocurrencia
#> <chr> <chr> <chr> <chr>
#> 1 19 CAUCA 19142 CALOTO
#> 2 19 CAUCA 19318 GUAPI
#> 3 19 CAUCA 19533 PIAMONTE
#> 4 19 CAUCA 19698 SANTANDER DE QUILICHAO
#> 5 19 CAUCA 19212 CORINTO
#> 6 19 CAUCA 19450 MERCADERES
#> 7 19 CAUCA 19573 PUERTO TEJADA
#> 8 19 CAUCA 19050 ARGELIA
#> 9 19 CAUCA 19110 BUENOS AIRES
#> 10 19 CAUCA 19455 MIRANDA
#> # ℹ 18 more rows
#> # ℹ 2 more variables: nombre_evento <chr>, casos <int>
Con la función llamada plot_map
, podremos generar un
mapa estático que muestra la distribución de casos por municipios.
mapa <- plot_map(data_agrupada = dist_esp_dept)
mapa
Analiza los resultados obtenidos en la ejecución de las funciones y responde las preguntas planteadas en el enunciado de la actividad exploratoria.
Dentro del R Markdown desarrolla dos (2) conclusiones pertinentes a la enfermedad teniendo en cuenta el contexto de la región y las estrategias que podrían contribuir a su mitigación.
Conformaremos grupos de 4-5 personas y discutiremos sobre la disponibilidad de los datos y el impacto que esto tiene en la construcción de análisis y en las acciones que se pueden emprender para mitigar el efecto de esta enfermedad sobre la población.
En el siguiente enlace podrán encontrar el desafío que debérán
desarrollar con sivirep
: - https://docs.google.com/document/d/1_79eyXHTaQSPSvUzlikx9DKpBvICaiqy/edit?usp=sharing&ouid=113064166206309718856&rtpof=true&sd=true
Este documento ha sido diseñado por Geraldine Gómez Millán para el Curso Internacional: Análisis de Brotes y Modelamiento en Salud Pública, Bogotá 2023. TRACE-LAC/Javeriana.