ImpactoDAO

La clase ImpactoDAO utiliza consultas predefinidas (procedimientos almacenados), constantes que mapean las secciones de impacto a campos específicos del cuestionario, y pesos ponderados para calcular el cambio porcentual en cada dimensión.


La clase ImpactoDAO utiliza consultas predefinidas (procedimientos almacenados), constantes que mapean las secciones de impacto a campos específicos del cuestionario, y pesos ponderados para calcular el cambio porcentual en cada dimensión. Luego, estas contribuciones se suman para obtener el impacto total en la Estabilidad Económica y la Calidad de Vida, reflejando directamente la metodología descrita en los documentos conceptuales.

La forma en que se calcula el impacto en la Fundación Cardenal Garibi Rivera (FCGR), con respecto a la clase de código fuente que procesa el servidor, se puede mapear de la siguiente manera:

La FCGR mide el impacto a través de dos indicadores principales: la Estabilidad Económica y la Calidad de Vida. Ambos se calculan como un cambio porcentual utilizando la fórmula ((Período 2 - Período 1) / Período 1) * 100. Los datos para este cálculo se obtienen de un formulario "Línea Base", que se aplica tanto al inicio como al final de la intervención.

La clase ImpactoDAO en el servidor es la encargada de interactuar con la base de datos para recuperar y procesar esta información de impacto.

ENTRADA DE DATOS

Instrumento para levantar indicadores de impacto (Línea Base y Mediciones Posteriores)

PROCESAMIENTO

"Caja Negra" / Módulo de cálculo con Aritmética (Combinación y ponderación de datos)

SALIDA DE IMPACTO

Cambio porcentual para cada indicador (Estabilidad Económica y Calidad de Vida)

Diagrama de Flujo de Cálculo de Impacto

1. Configuración y Recuperación de Datos Generales

La clase ImpactoDAO gestiona la configuración de los rangos de fechas (años de inicio y fin) para el análisis del impacto mediante RECUPERAR_RANGOS_FECHAS_LINEA_BASE y INSERTAR_O_ACTUALIZAR_CONFIG_ANIOS.

También puede actualizar la configuración de una lista de registros filtrados, lo que sugiere la capacidad de seleccionar casos específicos para el análisis (INSERTAR_O_ACTUALIZAR_CONFIG_LISTA).

La información de la "Línea Base" se ajusta a una "BASE DE DATOS" estructurada que contiene columnas adicionales para "Análisis" y requiere una limpieza de datos y ponderación de respuestas antes del procesamiento. Para garantizar la fiabilidad de la medición, esta base de datos debe contener la medición inicial y final del mismo período y los mismos proyectos, preferentemente con el mismo ID de emprendedor.

2. Cálculo del Impacto en la Estabilidad Económica

Este indicador busca cuantificar el cambio porcentual en la estabilidad económica de las familias vulnerables. Se evalúa a través de tres dimensiones o secciones del cuestionario, cada una con un peso ponderado:

  1. Mejoras en la administración de los recursos y toma de decisiones:
    • Representa el 60% de la ponderación total.
    • En el código, se corresponde con ESTABILIDAD_ECONOMICA_1 y utiliza los campos definidos en CAMPOS_ADM_RECURSOS.
    • Incluye preguntas como "¿Llevas registros de entradas y salidas de dinero?" o "¿Tienes asignado un sueldo?".
  2. Mejoras en los ingresos (del negocio):
    • Representa el 30% de la ponderación total.
    • Corresponde a ESTABILIDAD_ECONOMICA_2 y utiliza los campos definidos en CAMPOS_MEJORA_RECURSOS.
    • Las preguntas de ejemplo incluyen "Ingreso mensual" y "¿Cuál es el monto mensual de tus ventas?".
  3. Mejoras en los ahorros:
    • Representa el 10% de la ponderación total.
    • Se asocia con ESTABILIDAD_ECONOMICA_3 y los campos en CAMPOS_MEJORA_AHORROS.
    • Preguntas como "¿Tienes el hábito de ahorrar de manera constante y a largo plazo?" son parte de esta sección.

En el código:

  • La constante RECUPERAR_IMPACTO_ESTABILIDAD_ECONOMICA (CALL nuevo_recuperar_impacto_estabilidad_economica(?)) es la que se llama para obtener los datos de impacto de estabilidad económica.
  • El método recuperarEstabilidadEconomica(int $usuario) llama al método genérico recuperarImpactoPorTipo('estabilidadEconomica', $usuario) para realizar la consulta a la base de datos.
  • Dentro de recuperarImpacto(array $secciones, array $data), se recuperan los valores iniciales ($data["{$columna}Inicial"]) y finales ($data["{$columna}Final"]) para cada columna/pregunta de las dimensiones. Estos valores se encapsulan en un objeto Medicion.
  • Cada sección se procesa incluyendo su nombre, peso ponderado, y las mediciones obtenidas.
  • La suma de las contribuciones ponderadas de estas tres secciones (array_sum(array_column($medicionesEE, 'contribucionImpacto'))) da el resultado final de la medición de la estabilidad económica.

3. Cálculo del Impacto en la Calidad de Vida

Este indicador mide el cambio porcentual en la calidad de vida de las poblaciones vulnerables. Se basa en dos secciones, cada una con un peso ponderado del 50%:

  1. Generación de oportunidades en el entorno a través de la creación de emprendimientos:
    • Representa el 50% de la ponderación.
    • En el código, se corresponde con CALIDAD_VIDA_1 y utiliza el campo definido en CAMPOS_OPORTUNIDADES_ENTORNO.
    • Se mide con una pregunta específica del formulario "Línea Base": "¿Actualmente tienes un negocio?".
  2. Estabilizar la economía:
    • Representa el 50% de la ponderación.
    • Para esta sección, el resultado utilizado es el mismo que el de la medición de la estabilidad económica.
    • Implícitamente, esto se representa en el código por cómo se construye el array $medicionesCV en getMedicionImpacto, donde se añade una sección con el resultado de la estabilidad económica ($sumaPromediosEstabilidad) y un peso del 50%.

En el código:

  • La constante RECUPERAR_IMPACTO_CALIDAD_VIDA (CALL nuevo_recuperar_impacto_calidad_vida(?)) es la que se llama para obtener los datos de impacto de calidad de vida.
  • El método recuperarCalidadVida(int $usuario) llama a recuperarImpactoPorTipo('calidadVida', $usuario).
  • Similar a la estabilidad económica, se recuperan los valores iniciales y finales de las preguntas pertinentes.
  • El método getMedicionImpacto($usuario) es el que orquesta el cálculo completo de ambos indicadores. Primero recupera la estabilidad económica (recuperarEstabilidadEconomica), luego recupera la calidad de vida (recuperarCalidadVida), y finalmente añade el resultado de la estabilidad económica como una sección a las mediciones de calidad de vida antes de sumar sus contribuciones ponderadas para obtener el total de la calidad de vida.

Clases PHP de Soporte

Clase Medicion

Representa una única medición con un valor inicial y final, y calcula automáticamente la variación porcentual entre ellos.

Propiedades

$inicial

Valor numérico inicial de la medición.

$final

Valor numérico final de la medición.

$variacionPorcentual

La variación porcentual calculada. Se actualiza automáticamente.

Métodos

__construct($inicial, $final)

Inicializa los valores y calcula la variación.

getVariacionPorcentual()

Retorna la variación porcentual.

setInicial($inicial): void

Establece un nuevo valor inicial y recalcula la variación.

setFinal($final): void

Establece un nuevo valor final y recalcula la variación.

private setVariacionPorcentual()

Calcula la variación porcentual (maneja división por cero). Fórmula: ($final - $inicial) / $inicial * 100

Clase Seccion

Agrupa múltiples objetos Medicion bajo un título y un peso, calculando su contribución al impacto total.

Propiedades

$titulo

Título de la sección.

$mediciones

Array de objetos Medicion.

$peso

Peso ponderado de la sección.

$obtenido

Promedio de las variaciones de sus mediciones.

$contribucionImpacto

Contribución al impacto total. Fórmula: ($obtenido * $peso / 100).

Métodos

__construct(string $titulo, ...)

Inicializa la sección y calcula el promedio y la contribución.

private setPromedio()

Calcula el promedio de las variaciones de todas las mediciones.

toSeccionArray()

Retorna la sección y sus mediciones como un array asociativo.