1. Introducción

En este taller usted aprenderá como utilizar el paquete sivirep para generar reportes básicos epidemiológicos, conocerá como ejecutar sus funciones principales, las enfermedades que tiene disponibles para su descarga, su aplicación y utilidad.

2. Objetivo

3. Paquete sivirep

Es un paquete que se encuentra en su versión inicial, desarrollado en el lenguaje de programación R, proporciona funciones básicas para la disputa de datos y la generación de reportes automatizados de la fuente SIVIGILA (Sistema de Vigilancia en Salud Pública). Permite descargar por año información de cualquier enfermedad que se encuentre disponible en los microdatos y generar gráficas útiles por diferentes tipos de parámetros.

3.1 Módulos del paquete

Los módulos del paquete son conjuntos de funciones, tareas o lógica que se encuentran directamente relacionadas, los cuales serán descritos a continuación.

3.1.1 Importar datos desde SIVIGILA

El principal desafío consiste en obtener los datos de las enfermedades de la fuente SIVIGILA, ya que existen múltiples puntos de acceso y pasos que se deben realizar para obtenerlos.

Por este motivo, se desarrolló un módulo que realizará el scraping de esta fuente de información, permitiera importar los datos y efectuar su consulta; contiene las siguientes funciones:

  1. list_avaliable_diseases_and_years(): esta función permite obtener los datos de las enfermedades por año disponibles para su consulta.
   list_avaliable_diseases_and_years()
  1. import_data_disease_by_year(year, disease_name): esta función permite descargar por año la información de una enfermedad de los microdatos de la fuente SIVIGILA. Recibe como parámetros
  • year (entero): el año para la consulta.
  • disease_name (cadena de caracteres): el nombre de la enfermedad.
   import_data_disease_by_year(year = 2018, disease_name = "DENGUE")
  1. geo_codes(): esta función obtiene los códigos y nombres de los departamentos y municipios de Colombia.
   import_geo_codes()
  1. import_sivigila_summary_data(): esta función obtiene el resumen de los datos de las enfermedades del año 2019.
   import_sivigila_summary_data()

3.1.2 Limpieza de datos

Para realizar cualquier tipo de reporte es necesario limpiar los datos que se importan desde SIVIGILA, ya que algunos de estos pueden tener formatos incorrectos, valores erróneos o carecer de significado conceptual, por ejemplo, la fecha de defunción no debería ser mayor a la fecha de nacimiento de la persona infectada.

Por ello, en este módulo se desarrollaron las siguientes funciones de limpieza de datos:

  1. clean_depto_disease_codes(depto_codes, deptos_code_disease_data, make_group): esta función limpia los datos de la enfermedad respecto a los códigos de los departamentos. Recibe como parámetros:
  • depto_codes (data frame): el listado de códigos de los departamentos.
  • deptos_code_disease_data (data frame): los datos de la enfermedad agrupados por los códigos de los departamentos.
  • make_group (booleanp): valor que indica si se realiza la agrupación de los datos.
   clean_depto_disease_codes(depto_codes, deptos_code_disease_data)
  1. remove_error_dates(disease_data, col_init, col_cmp): esta función elimina los valores que son mayores que el valor de comparación, por ejemplo, la fecha de inicio de los síntomas y la fecha de hospitalización. Recibe como parámetros:
  • disease_data (data frame): los datos de la enfermedad.
  • col_init (cadena de caracteres): el nombre de la columna de referencia.
  • col_cmp (cadena de caracteres): el nombre de la columna de comparación.
   remove_error_dates(disease_data, col_init = "INI_SI", col_cmp = "FEC_HOS")
  1. parse_age_to_years(disease_data): esta función convierte las edades en años según las unidades de medida de SIVIGILA (1 = años, 2 = meses, 3 = días, 4 = horas, 5 = minutos). Recibe como parámetro:
  • disease_data (data frame): los datos de la enfermedad.
   parse_age_to_years(disease_data)

3.1.3 Agrupar datos

En los informes epidemiológicos, se requiere agrupar la información por el número de casos o personas infectadas por la enfermedad y algunas categorías específicas, por ejemplo, el género o la edad. Para esto, se desarrollaron las siguientes funciones:

  1. group_by_week_and_cases(disease_data): esta función agrupa los datos de la enfermedad por las semanas epidemiológicas y el número de casos. Tiene como parámetro:
  • disease_data (data frame): los datos de la enfermedad.
   group_by_week_and_cases(disease_data)
  1. group_by_columns_and_cases(disease_data, col_names, wt_percentage): esta función agrupa por cualquier tipo de variable o columna de un conjunto de datos y obtiene el número de casos y su porcentaje, sus parámetros son los siguientes:
  • disease_data (data frame): datos de la enfermedad.
  • col_names (cadena de caracteres o arreglo): nombres de las columnas.
  • wt_percentage (booleano): indica si se requiere el porcentaje de los casos.
   group_by_columns_and_cases(disease_data, col_names = c("EDAD", "SEMANA"), 
                              wt_percentage = TRUE)
  1. group_by_age_range_and_cases(disease_data, col_name, min_val, max_val, step): esta función agrupa los datos de la enfermedad por las edades y el número de casos. Recibe como parámetros:
  • disease_data (data frame): datos de la enfermedad.
  • min_val (entero): valor mínimo del rango.
  • max_val (entero): valor máximo del rango.
  • step (entero): paso del rango.
   group_by_age_range_and_cases(disease_data_by_age_and_week, col_name = "EDAD", 
                                min_val = 5, max_val = 82, step = 5)
  1. get_special_population_and_cases(disease_data): esta función permite obtener y agrupar por los tipos de poblaciones especiales disponibles en SIVIGILA y el número de casos. Tiene como parámetro:
  • disease_data (data frame): los datos de la enfermedad.
   get_special_population_and_cases(disease_data)

3.1.4 Generar y graficar reportes

Este paquete tiene funciones que permiten generar gráficas que son bastante útiles, como:

  1. plot_dept_map(deptos_code_disease_data, col_name_lj): esta función genera un mapa de Colombia con el número de casos de la enfermedad, sus parámetros son los siguientes:
  • deptos_code_disease_data (data frame): los datos de la enfermedad agrupada por los códigos de los departamentos.
  • col_name_lj (cadena de caracteres): nombre de la columna para hacer la unión con el shapefile del mapa.
   plot_dept_map(deptos_code_disease_data, col_name_lj = "id")
  1. plot_by_variable(data, var_x, var_y, var_per, var_fill, wt_per, label_x, label_y, scale_name, scale_labels, diagram_title, legend_pos, bar_wd, text_sz, show_val): esta es una función genérica que gráfica por cualquier tipo de variable o columna. Recibe como parámetros:
  • data (data frame): conjunto de datos.
  • var_x (cadena de caracteres): nombre de la variable o columna del eje x.
  • var_y (cadena de caracteres): nombre de la variable o columna del eje y.
  • var_fill (cadena de caracteres): nombre de la variable o columna de relleno.
  • var_per (cadena de caracteres): nombre de la variable o columna de porcentaje.
  • label_x (cadena de caracteres): etiqueta del eje x.
  • label_y (cadena de caracteres): etiqueta del eje y.
  • scale_name (cadena de caracteres): nombre de la escala.
  • scale_labels (cadena de caracteres o arreglo): etiquetas de la escala.
  • diagram_title (cadena de caracteres): título del diagrama o gráfica.
  • legend_pos (cadena de caracteres): posición de la leyenda.
  • bar_wd (doble o flotante): tamaño de las barras.
  • text_sz (doble o flotante): tamaño del texto.
  • show_val (booleano): indica si se muestra el valor del eje y para cada uno de los puntos del eje x.
   plot_by_variable(disease_dt_by_gender, var_x = "SEXO", var_y = "Casos", 
                    var_fill = "SEXO", var_per = "Porcentaje", label_x = "Género", 
                    label_y = "Casos \n (Porcentajes)", scale_name = "Género", 
                    scale_labels = c("Femenino", "Masculino"), 
                    diagram_title = "Diagrama para la variable Sexo", legend_pos = "right", 
                    bar_wd = 0.6, text_sz = 4, show_val = TRUE)
  1. plot_epiweek(dat, col_week, col_cases, year, type, xlabel, ylabel): esta función genera una gráfica de la semana epidemiológica del año 2019, tiene los siguientes parámetros:
  • dat (data frame): datos de la enfermedad.
  • col_week (cadena de caracteres): nombre de la columna de la semana epidemiológica.
  • col_cases (cadena de caracteres): nombre de la columna del número de casos.
  • year (entero): año del reporte.
  • type (cadena de caracteres): indica si el gráfico se desea generar por número de semana o fecha.
  • xlabel (cadena de caracteres): etiqueta del eje x.
   plot_epiweek(filtered_data_2019, col_week = "SEMANA", col_cases = "conteo_casos", 
                year = 2019, type = "date", xlabel = "Fecha de semana epidemiologica")

4. Ejercicios:

  1. Importar las enfermedades y años disponibles para su descarga.
  2. Importar la información del Dengue del año 2018.
  3. Generar el reporte de la distribución de los casos por género del Dengue del año 2018.
  4. Generar el reporte de la distribución de los casos por población especial del año 2018.
  5. Generar el reporte de la distribución de los casos por edad del Dengue del año 2018.
  6. Generar el reporte de la distribución de los casos por género y edad del Dengue del año 2018.

Para el desarrollo de los ejercicios descritos anteriormente, por favor cree un proyecto en R y un script para ejecutar las funciones e importe el paquete de la siguiente forma:

   library(sivirep)

5. Reto:

El reto consiste en generar el reporte de la distribución de casos por fecha de notificación del Dengue del año 2018.

Sobre este documento

Asuntos legales

Licencia: CC-BY, Copyright: Geraldine Gómez Millán, 2022