From 610d829e09c60003ec5319e06a167480e20b0bc1 Mon Sep 17 00:00:00 2001 From: GeraldineGomez <46997659+GeraldineGomez@users.noreply.github.com> Date: Fri, 8 Dec 2023 06:41:55 -0500 Subject: [PATCH] chore: added final detail and updated disease and department of report (#15) --- episodes/Sivirep-tutorial.Rmd | 323 ++++++++++++++++++++++++---------- 1 file changed, 233 insertions(+), 90 deletions(-) diff --git a/episodes/Sivirep-tutorial.Rmd b/episodes/Sivirep-tutorial.Rmd index f3d60e7..51b968e 100644 --- a/episodes/Sivirep-tutorial.Rmd +++ b/episodes/Sivirep-tutorial.Rmd @@ -41,55 +41,94 @@ knitr::opts_chunk$set( ## Introducción -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. +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. ## Objetivos -- Conocer el paquete `sivirep` - -- Identificar las funcionalidades principales de `sivirep` para generar un reporte básico. - -- Hacer uso de `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. +- Conocer el paquete `sivirep` +- Identificar las funcionalidades principales de `sivirep` para + generar un reporte básico. +- Hacer uso de `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. ## Conceptos básicos a desarrollar 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. +- 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. +- 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. +- 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. +- 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. +- 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. +- 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. En Colombia varia su calculo dependiendo del evento o enfermedad. +- 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. +- 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. +- 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. +- Reporte: análisis descriptivo de una enfermedad o evento del + SIVIGILA. ## Contenido del taller -Ha llegado el momento de explorar `sivirep`, de conocer cómo generar reportes automatizados con el paquete y sus funcionalidades principales. +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 la Malaria 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. +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 importando el paquete a través del siguiente comando: +Iniciaremos instalando e importando el paquete a través de los siguientes comandos: ```{r import_library} -library(sivirep) +remove.packages("sivirep") +if (!require("pak")) install.packages("pak") +pak::pak("epiverse-trace/sivirep") # Comando para instalar sivirep +rm(list = ls()) # Comando para limpiar el ambiente de R +library(sivirep) # Comando para importar sivirep ``` -Verifica que el evento o enfermedad se encuentren disponibles para su descarga en la lista que provee `sivirep`, la cual puedes obtener ejecutando el siguiente comando: +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: ```{r list_events, echo = FALSE, results = "hide"} list_events() @@ -97,103 +136,194 @@ list_events() ### Reporte automatizado -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. +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: -1. En RStudio hacer click *'File/New File/R'* Markdown: +1. En RStudio hacer click **'File/New File/R'** Markdown: -![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/file_rmarkdown.png){.rmarkdown-img align="center" style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;"width="560"} +![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/file_rmarkdown.png){.rmarkdown-img +align="center" +style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" +width="560"} -2. Selecciona la opción del panel izquierdo: *'From Template'*, después haz clic en el template llamado `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'*. +2. Selecciona la opción del panel izquierdo: **'From Template'**, después haz clic en el template llamado `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'**. -![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/reporte_basico.png){.rmarkdown-img align="center" style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" width="520"} +![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/reporte_basico.png){.rmarkdown-img +align="center" +style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" +width="520"} -3. Dirigite a la parte superior de *'RStudio'*, presiona el botón *'Knit'*, despliega las opciones y selecciona *'Knit with parameters'*. A continuación, aparecerá una pantalla donde podrás indicar el nombre de la enfermedad o evento, el año y el departamento del reporte. Esta acción descargará los datos deseados y también proporcionará la plantilla en un archivo R Markdown (.Rmd). +3. En la parte superior de **'RStudio'*, presiona el botón **'Knit'**, + despliega las opciones y selecciona **'Knit with parameters'**. -![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/button_knit.png){.rmarkdown-img align="center" style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" width="560"} +![](https://github.com/epiverse-trace/sivirep/raw/main/man/figures/button_knit.png){.rmarkdown-img +align="center" +style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" +width="560"} -4. Espera unos segundos mientras el informe se genera en un archivo PDF. +4. A continuación, aparecerá una pantalla donde podrás indicar el nombre + de la enfermedad o evento, el año y el departamento del reporte. + Esta acción descargará los datos deseados y también proporcionará la + plantilla en un archivo R Markdown (.Rmd), al hacer clic en el botón **'Knit'**. -**!Felicitaciones has generado tu primer reporte automatizado con sivirep!** +![](./man/figures/params_knit.png){.rmarkdown-img +align="center" +style="margin-left: 2.8em; margin-top: 0.8em; margin-bottom: 0.8em;" +width="560"} -### Actividad exploratoria -Para conocer las funciones principales del paquete realizaremos una actividad exploratoria siguiendo el flujo de datos de `sivirep`. +5. Espera unos segundos mientras el informe se genera en un archivo + HTML. + +**!Felicitaciones has generado tu primer reporte automatizado con +sivirep!** -Construiremos un informe en R Markdown (no se debe utilizar la plantilla de reporte vista en la sección anterior) que de respuesta a las siguientes preguntas: +### Actividad exploratoria -1. ¿Cómo es la distribución por sexo y semana epidemiológica de la enfermedad asignada? -2. ¿Esta distribución sugiere que la enfermedad asignada afecta más a un sexo o a otro? ¿sí, no y por qué? -3. ¿Cómo afecta la enfermedad los distintos grupos etarios? -4. ¿Cuál es el municipio que más se ve afectado por la enfermedad en la región? +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: -### 1. Exploración de la base de datos +1. ¿Cómo es la distribución por sexo y semana epidemiológica de la + enfermedad? +2. ¿Esta distribución sugiere que la enfermedad afecta más a + un sexo o a otro? ¿sí, no y por qué? +3. ¿Cómo afecta la enfermedad los distintos grupos etarios? +4. ¿Cuál es el municipio que más se ve afectado por la enfermedad en la + región? -Te recomendamos iniciar explorando 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. +### 1. Preparación y configuración del documento R Markdown +Realizaremos la configuración y preparación del documento en R Markdown a través de los siguientes pasos: -Si tienes alguna duda respecto a las variables o desconoces su significado puedes dirigite al diccionario de datos del SIVIGILA. +1. Crear un documento en R Mardown vacio: +2. Insertar un chunk en el documento con las siguientes opciones de configuración: +```{r ejemplo_setup} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>", + fig.path = "figures/", + include = TRUE, + error = FALSE, + warning = FALSE, + message = FALSE +) +``` + ### 2. Importación de datos de SIVIGILA -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. +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. ```{r import_data_event} -data_event <- import_data_event(year = 2022, - nombre_event = "Malaria") +data_dengue <- import_data_event(nombre_event = "dengue", + year = 2022) ``` -### 3. Limpieza de datos de SIVIGILA +### 3. Exploración de la base de datos -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. +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. + +```{r explorar_datos, echo = FALSE, results = "hide"} +dplyr::glimpse(data_dengue) +``` + +Si tiene alguna duda respecto a las variables o desconoce su significado +puede dirigirse al [diccionario de datos del +SIVIGILA](https://www.dssa.gov.co/images/documentos/sivigila2017/Anexo%202%20Diccionario%20datos.pdf). + +### 4. Limpieza de datos de 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. ```{r limpiar_data_sivigila} -data_event_limp <- limpiar_data_sivigila(data_event = data_event, year = 2022) +data_limpia <- limpiar_data_sivigila(data_event = data_dengue) +data_limpia ``` -### 4. Filtrar casos +### 5. Filtrar casos -Ahora debemos filtrar los datos del evento o enfermedad por el departamento de `Cundinamarca`, 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. +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. ```{r geo_filtro} -data_event_filtrada <- geo_filtro(data_event = data_event_limp, - nombre_dpto = "Cauca") -``` +data_filtrada <- geo_filtro(data_event = data_limpia, dpto = "Cauca") +data_filtrada +``` -### 5. Variable de sexo +### 6. Variable de sexo -`sivirep` proporciona una función que agrega y calcula automáticamente los porcentajes por sexo después del proceso de limpieza. +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`: ```{r agrupar_sexo} -casos_sex <- agrupar_sex(data_event = data_event_limp, +casos_sex <- agrupar_sex(data_event = data_filtrada, porcentaje = TRUE) +casos_sex ``` -Además, `sivirep` cuenta con una función para generar el gráfico por esta variable llamada `plot_sex`: +Además, `sivirep` cuenta con una función para generar el gráfico por +esta variable llamada `plot_sex`: ```{r plot_sexo, fig.height = 5, fig.width = 8} 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`. +La distribución de casos por sexo y semana epidemiológica se puede +generar utilizando la función `agrupar_sex_semanaepi` proporcionada por +`sivirep`. ```{r agrupar_sex_semana_epidemiologica} -casos_sex_semanaepi <- agrupar_sex_semanaepi(data_event = data_event_limp) +casos_sex_semanaepi <- agrupar_sex_semanaepi(data_event = data_filtrada) +casos_sex_semanaepi ``` -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. +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. ```{r plot_sex_semana_epidemiologica, fig.height = 9, fig.width = 11} plot_sex_semanaepi(data_agrupada = casos_sex_semanaepi) ``` -### 6. Variable de edad +### 7. Variable de edad -`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. +`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. ```{r agrupar_edad} -casos_edad <- agrupar_edad(data_event = data_event_limp, interval_edad = 10) +casos_edad <- agrupar_edad(data_event = data_limpia, interval_edad = 10) +casos_edad ``` La función de visualización correspondiente es `plot_edad`. @@ -202,56 +332,69 @@ La función de visualización correspondiente es `plot_edad`. plot_edad(data_agrupada = casos_edad) ``` -### 7. Distribución espacial de casos +### 8. Distribución espacial de casos -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. +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_mun` que permite obtener un data.frame de casos agrupados por departamento o municipio. +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. ```{r agrupar_municipios} -dist_esp_dept <- agrupar_mun(data_event = data_event_filtrada, - dept_nombre = "Cauca") +dist_esp_dept <- agrupar_mpio(data_event = data_filtrada) +dist_esp_dept ``` -Con la función llamada `plot_map`, podremos generar un mapa estático que muestra la distribución de casos por municipios. +Con la función llamada `plot_map`, podremos generar un mapa estático que +muestra la distribución de casos por municipios. ```{r plot_mapa} -mapa <- plot_map(data_agrupada = dist_esp_dept, dpto = "Cauca") +mapa <- plot_map(data_agrupada = dist_esp_dept) mapa ``` -### 8. Análisis de resultados - -Analiza los resultados obtenidos en la ejecución de las funciones, responde las preguntas planteadas en el enunciado de la actividad exploratoria. Dentro del R Markdown desarrolla las 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. - -## Reflexió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. +### 9. Análisis de resultados -Las conclusiones de esta discusión deberán escribirlas en una cartelera y socializarlas con los demás grupos. +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. -[Reto](https://docs.google.com/document/d/1_79eyXHTaQSPSvUzlikx9DKpBvICaiqy/edit?usp=sharing&ouid=108718106243006326200&rtpof=true&sd=true) -*** - -::::::::::::::::::::::::::::::::::::: keypoints - -Revise si al final de esta lección adquirió estas competencias: +## Reflexió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. -- Conocer el paquete `sivirep` +## Desafio -- Identificar las funcionalidades principales de `sivirep` para generar un reporte básico. +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 -- Hacer uso de `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. +------------------------------------------------------------------------ +### Sobre este documento -:::::::::::::::::::::::::::::::::::::::::::::::: +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. -### Sobre este documento +#### Recursos -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. +- [Presentación del taller](https://www.canva.com/design/DAFzKDqZT0E/uwZABHMIn14qq_LT9uSKEA/edit?utm_content=DAFzKDqZT0E&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton) +- [Encuesta](https://forms.office.com/r/bRpPuAh8hF?origin=lprLink) +- [Página de sivirep](https://epiverse-trace.github.io/sivirep/) +- [Documentación de las funciones de sivirep](https://epiverse-trace.github.io/sivirep/reference/index.html) +- [Repositorio de sivirep](https://github.com/epiverse-trace/sivirep) #### Contribuciones - Geraldine Gómez Millán +- Jaime Pavlich-Mariscal +- Andrés Moreno \ No newline at end of file