1 Introducción y Objetivos del Tutorial

El presente tutorial guía de forma práctica a los estudiantes de Medicina e Investigadores en Salud en la digitalización, optimización y validación de sus instrumentos de recolección de datos utilizando la plataforma KoboToolbox (versión servidor Global / Humanitario).

El objetivo es trasladar la Matriz de Operacionalización de Variables de cada protocolo de investigación estudiantil a un formulario electrónico robusto que prevenga errores de digitación, respete el rigor ético y garantice la calidad de los datos para su posterior procesamiento en R y RStudio.


2 Configuración del Entorno de Trabajo y Trabajo Colaborativo

2.1 Creación de la Cuenta en el Servidor Global

  1. Ingrese a kobotoolbox.org.
  2. Seleccione “Create an Account” y elija el “Global KoboToolbox Server” (servidor gratuito para investigadores y organizaciones educativas).
  3. Ingrese su correo institucional (carnet@ujmd.edu.sv) y configure su nombre de usuario en formato snake_case (ejemplo: juan_perez_2026).
  4. Active la cuenta desde el enlace enviado a su correo electrónico.

2.2 Creación del Proyecto y Permisos en Red (Coordinación de Grupo)

Para asegurar la construcción colaborativa entre los 8 integrantes de cada equipo de protocolo:

  1. El Coordinador del Equipo crea el proyecto inicial:
    • Clic en “Nuevo” (New) \(\rightarrow\) “Construir desde cero” (Build from scratch).
    • Asigne el título oficial de su protocolo (ejemplo: Protocolo 1.2 - Hipertensión e IMC El Zaite).
    • Seleccione el sector “Salud Pública / Academia”.
  2. Asignación de Permisos de Co-creación:
    • En el panel del proyecto, vaya a Configuración (Settings) \(\rightarrow\) Compartir (Sharing).
    • Haga clic en “Añadir usuario” e ingrese los nombres de usuario de KoboToolbox de sus 7 compañeros.
    • Conceda los permisos: Ver formulario, Editar formulario y Añadir envíos.

3 Reglas Metodológicas de Etiquetado para Bioestadística (R/RStudio)

Para evitar la “limpieza traumática” de bases de datos, aplicaremos desde la fase de diseño en KoboToolbox dos reglas estándar internacionales:

3.1 Nombre de la Columna de Datos (Data Column Name)

Es el identificador interno que se convertirá en el encabezado de la columna en R.

  • Formato estricto: snake_case (minúsculas y guiones bajos).
  • Prohibición: Cero espacios, sin tildes, sin eñes (ñ), sin mayúsculas ni caracteres especiales (?, %, $, /).
  • Ejemplo correcto: presion_sistolica, edad_anos, nivel_actividad_fisica.

3.2 Valores XML (XML Values)

Es el código alfanumérico o numérico puro que se guarda en la base de datos cuando el usuario selecciona una opción de texto. * Texto visible: "1 a 2 veces por semana" * Valor XML: 2 * Permite leer la variable directamente como factor numérico u ordinal en R sin necesidad de limpiar cadenas de texto.


4 Tipos de Preguntas según la Naturaleza de las Variables

Rol / Naturaleza de la Variable Tipo de Pregunta en Kobo Configuración Recomendada
Identificación / Código ID Texto (Text) Formato corto (ej. PAC-001).
Edad en años cumplidos Número (Number) Entero con validador min >= 18 y max <= 90.
Sexo biológico / Categorías Selección Única (Select One) Asignar valores XML: 1=Masculino, 2=Femenino, 99=Prefiero no contestar.
Variables continuas (PA, Peso, Talla) Decimal / Número (Decimal / Number) Captura exacta del dato bruto (Regla de Oro).
Síntomas / Comorbilidades múltiples Selección Múltiple (Select Many) Opción de marcar varias alternativas independientes.
Escalas clínicas Likert (PHQ-9, GAD-7) Selección Única (Select One) Mantener la escala original (0 a 3) sin alterar la redacción.

5 Configuración de Lógica de Salto (Skip Logic) y Filtros

La Lógica de Salto (Skip Logic) evita sesgos de respuesta, ahorra tiempo de aplicación y protege la validez al ocultar preguntas que no aplican a determinado perfil.

5.1 Caso 1: Filtro de Criterios de Exclusión (Tamizaje Inicial)

En todos los protocolos, si el encuestado cumple un criterio de exclusión o no otorga el consentimiento, el cuestionario debe finalizar o saltar las secciones clínicas.

  • Pregunta Filtro: consentimiento_informado (Selección Única: 1=Sí, 0=No).
  • Regla en Kobo:
    1. En las preguntas subsecuentes, vaya a Configuración (Engranaje) \(\rightarrow\) Lógica de salto.
    2. Añadir condición: Mostrar esta pregunta solo si consentimiento_informado = 1.

5.2 Caso 2: Filtro por Sexo Biológico y Edad (Salud Reproductiva)

Para preguntas específicas de antecedentes gineco-obstétricos o embarazo:

  • Condición Múltiple:
    • sexo_biologico = 2 (Femenino) Y
    • edad_anos >= 12
  • En Kobo: Seleccionar la opción “La pregunta se mostrará si se cumplen TODAS estas condiciones”.

5.3 Caso 3: Filtro por Presencia de Patología / Tratamiento

  • Pregunta Inicial: diagnostico_hipertension (1=Sí, 0=No).
  • Preguntas Condicionadas: tiempo_diagnostico_anos, medicamento_prescrito, dosis_omitidas_semana.
  • Regla: Mostrar las preguntas de tratamiento únicamente si diagnostico_hipertension = 1.

6 Criterios de Validación (Constraints) y Rangos Fisiológicos

Los Criterios de Validación (Validation Criteria) impiden la digitación de valores fuera de los límites biológicos o lógicos esperados durante el trabajo de campo.

6.1 Configuración de Rangos Fisiológicos y Biológicos

6.1.1 Presión Arterial Sistólica (PAS)

  • Tipo: Número (Number).
  • Expresión / Regla: >= 70 y <= 260.
  • Mensaje de Error Personalizado: "Valor de PAS fuera de rango fisiológico plausible (70 - 260 mmHg). Verifique la toma y la digitación."

6.1.2 Presión Arterial Diastólica (PAD)

  • Tipo: Número (Number).
  • Expresión / Regla: >= 40 y <= 150 y < ${presion_sistolica}.
  • Mensaje de Error: "La presión diastólica debe estar entre 40 y 150 mmHg y debe ser menor que la presión sistólica."

6.1.3 Estatura (Talla en metros)

  • Tipo: Decimal (Decimal).
  • Expresión / Regla: >= 1.20 y <= 2.15.
  • Mensaje de Error: "Ingrese la talla en metros con decimales (ej. 1.65). Rango permitido: 1.20 m - 2.15 m."

6.1.4 Peso Corporal (Kilogramos)

  • Tipo: Decimal (Decimal).
  • Expresión / Regla: >= 30.0 y <= 250.0.
  • Mensaje de Error: "Peso fuera del rango permitido (30.0 - 250.0 kg). Verifique la calibración."

7 Casos Prácticos Aplicados a los Protocolos Estudiantiles

7.1 Protocolo 1.2: Asociación entre IMC y Control de Presión Arterial (Cantón El Zaite)

Estructura Kobo:
  - Pregunta: presion_sistolica (Number)
    Constraint: . >= 70 and . <= 260
  - Pregunta: presion_diastolica (Number)
    Constraint: . >= 40 and . <= 150 and . < ${presion_sistolica}
  - Pregunta: peso_kg (Decimal)
    Constraint: . >= 30.0 and . <= 220.0
  - Pregunta: talla_m (Decimal)
    Constraint: . >= 1.20 and . <= 2.15
  - Pregunta: imc_calculado (Calculate)
    Calculation: round(${peso_kg} / (${talla_m} * ${talla_m}), 2)
  - Pregunta: consumo_sal_diario (Select One)
    XML Values: 1=Bajo (<5g/día), 2=Moderado (5-10g/día), 3=Alto (>10g/día)

7.2 Protocolo 2.1: Actividad Física (IPAQ) y Tono Vascular

Estructura Kobo:
  - Pregunta: realiza_actividad_fisica (Select One: 1=Sí, 0=No)
  - Pregunta: dias_actividad_intensa (Number)
    Skip Logic: ${realiza_actividad_fisica} = 1
    Constraint: . >= 0 and . <= 7
  - Pregunta: minutos_actividad_intensa (Number)
    Skip Logic: ${dias_actividad_intensa} > 0
    Constraint: . >= 10 and . <= 720
    Error Message: "El tiempo diario debe estar entre 10 y 720 minutos."

7.3 Protocolo 2.4: Síntomas Depresivos (PHQ-9) y Rendimiento Académico (CUM)

Estructura Kobo:
  - Pregunta: cum_acumulado (Decimal)
    Constraint: . >= 0.0 and . <= 10.0
    Error Message: "El CUM debe estar en la escala de 0.00 a 10.00."
  - Batería PHQ-9 (Select One para cada ítem 1 a 9):
    XML Values: 0=Ningún día, 1=Varios días, 2=Más de la mitad de los días, 3=Casi todos los días
  - Pregunta: phq9_score_total (Calculate)
    Calculation: ${phq9_1} + ${phq9_2} + ${phq9_3} + ${phq9_4} + ${phq9_5} + ${phq9_6} + ${phq9_7} + ${phq9_8} + ${phq9_9}

8 Buenas Prácticas Éticas y Cierre del Cuestionario

8.1 Opciones de Escape Ético

En preguntas sensibles (ingresos, orientación, consumo de sustancias, antecedentes psiquiátricos): * Incluir siempre la opción: 99 = Prefiero no responder / 98 = No aplica. * Evita forzar datos falsos cuando la pregunta es configurada como Obligatoria (Mandatory).

8.2 Mensaje de Agradecimiento Final (Tipo Nota)

Inserte al final del cuestionario una pregunta de tipo Nota (Note) sin restricciones de obligatoriedad:

¡Cuestionario Completado Exitosamente!
Apreciamos sinceramente su tiempo y colaboración en esta investigación. Sus respuestas son anónimas y se tratarán bajo estricta confidencialidad para fines exclusivamente científicos.
Contacto del equipo de investigación: investigacion.medicina@ujmd.edu.sv
Por favor, haga clic en el botón “Enviar” para registrar su información y luego puede cerrar esta pantalla.


9 Procesamiento de Datos Exportados en RStudio

Una vez finalizado el trabajo de campo y exportada la base de datos desde KoboToolbox en formato .csv (con nombres de columna en snake_case y valores XML numéricos), el análisis inicial en R/RStudio es directo y limpio:

# Carga de paquetes para análisis bioestadístico
library(tidyverse)

# Lectura de la base de datos exportada desde KoboToolbox
datos_protocolo <- read_csv("data/protocolo_1_2_el_zaite.csv")

# Verificación de la estructura de las variables
glimpse(datos_protocolo)

# Factorización inmediata de variables cualitativas mediante valores XML
datos_protocolo <- datos_protocolo %>%
  mutate(
    sexo_biologico = factor(sexo_biologico, 
                            levels = c(1, 2, 99), 
                            labels = c("Masculino", "Femenino", "Prefiero no responder")),
    control_presion = factor(if_else(presion_sistolica < 140 & presion_diastolica < 90, 1, 0),
                             levels = c(1, 0),
                             labels = c("Controlado", "No Controlado"))
  )

# Resumen descriptivo directo de variables continuas y categóricas
summary(datos_protocolo$imc_calculado)
table(datos_protocolo$control_presion)

# Evaluación de asociación mediante Regresión Logística (VI: IMC continuo -> VD: Control PA)
modelo_hta <- glm(control_presion ~ imc_calculado + edad_anos + consumo_sal_diario, 
                  data = datos_protocolo, 
                  family = binomial)

summary(modelo_hta)

10 Lista de Chequeo Final Antes del Despliegue (Deploy)

Antes de hacer clic en “Implementar” (Deploy) en KoboToolbox, verifique: