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:
- 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()
- 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")
- geo_codes(): esta función obtiene los códigos y
nombres de los departamentos y municipios de Colombia.
import_geo_codes()
- 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:
- 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)
- 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")
- 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:
- 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)
- 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)
- 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)
- 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:
- 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")
- 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)
- 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")