Saltar a contenido

Resumen Ejecutivo - Documentación de Testing Sistema de Posturografía

Archivos Creados

1. TEST_CASES.md

Ubicación: /Users/luis/IdeaProjects/orthoposture/TEST_CASES.md

Documento exhaustivo de casos de uso para pruebas automatizadas de UI que incluye:

Contenido Principal:

  • Información General: Factor de calibración (FC), líneas de referencia (LRV)
  • Calibración del Sistema: Secuencia completa de calibración
  • Vista Anterior (Frente):
  • 16 marcadores anatómicos
  • 4 regiones de análisis (Cérvico-Cefálica, Tronco-Columna, Cintura Escapular, Cintura Pélvica)
  • Cálculos paso a paso con fórmulas MATLAB
  • Valores esperados y diagnósticos
  • Vista Posterior (Espalda):
  • 19 marcadores anatómicos
  • 6 regiones de análisis incluyendo ángulo calcáneo
  • Asimetría escapular, desbalance coronal
  • Vista Lateral Derecha:
  • 12 marcadores anatómicos
  • Tangentes posturales, lordosis cervical y lumbar
  • Basculación pélvica, ángulos tibiotarsiano y de rodilla
  • Vista Lateral Izquierda:
  • Similar a Lateral Derecha con marcadores del lado izquierdo
  • Diferencias en cálculos debido a orientación de la foto
  • Valores de Referencia Diagnóstica: Umbrales para todos los diagnósticos
  • Estructura de Archivos .mat: Formato de datos de marcadores

Datos Específicos Incluidos:

  • Coordenadas exactas de marcadores (valores aproximados en píxeles)
  • Secuencias de clics para cada medición
  • Fórmulas matemáticas exactas de MATLAB traducidas
  • Rangos normales para cada medición:
  • Rotación/Traslación: -1 cm ≤ d ≤ 1 cm
  • Inclinación: abs(θ) ≤ 2°
  • Ángulo Q: 6° ≤ θ < 27°
  • Lordosis: 3 cm ≤ d ≤ 5 cm
  • Ángulo Tibiotarsiano: 88° ≤ θ ≤ 92°
  • Y más...

2. python/test_matlab_integration.py

Ubicación: /Users/luis/IdeaProjects/orthoposture/python/test_matlab_integration.py

Script completo de pruebas automatizadas con pytest que incluye:

Funcionalidades:

  • Lectura de archivos .mat: Con fallback a datos de prueba si scipy no está disponible
  • Funciones de cálculo:
  • calcular_factor_calibracion(): FC = 10 / D12
  • calcular_angulo_inclinacion(): Para cabeza, hombros, pelvis
  • calcular_rotacion_punto(): Para rotación de puntos respecto a LRV
  • calcular_angulo_tronco(): Inclinación del tronco
  • calcular_angulo_q(): Ángulo cuadricipital
  • diagnosticar_miembro_inferior(): Genu Varo/Valgo
  • calcular_lordosis(): Lordosis cervical y lumbar
  • calcular_angulo_codo(): Flexión de codo
  • calcular_angulo_tibiotarsiano(): Ángulo de tobillo
  • Clases de Test:
  • TestVistaAnterior: 14 tests específicos para vista anterior
  • TestVistaPerfil: 9 tests específicos para vistas de perfil
  • TestIntegracion: Tests de flujo completo y carga de archivos reales

Tests Incluidos:

  1. Calibración: Test del factor de calibración
  2. Inclinación Cabeza: Neutra, derecha, izquierda
  3. Rotación Escotadura: Neutra, derecha, izquierda
  4. Inclinación Hombros: Neutra
  5. Inclinación Pelvis: Neutra
  6. Ángulo Q: Normal, aumentado, disminuido
  7. Miembro Inferior: Neutro, Genu Varo, Genu Valgo
  8. Lordosis: Normal, hiperlordosis, rectificación
  9. Ángulo Codo: Normal, hiperextensión, flexión
  10. Ángulo Tibiotarsiano: Normal, extensión, flexión
  11. Flujo Completo: Test de integración end-to-end
  12. Carga Archivos: Test con archivos .mat reales

3. python/read_mat_markers.py

Ubicación: /Users/luis/IdeaProjects/orthoposture/python/read_mat_markers.py

Script auxiliar para leer y explorar archivos .mat de marcadores.

Análisis Realizado

Archivos MATLAB Analizados:

  1. InterfazMedicionFrenteJulio2024v2 (1).m (1600 líneas)
  2. Vista Anterior
  3. Botones: TagCervicoCefalico, TagTroncoColumna, TagHombroMSuperior, TagPelvisMInferior

  4. InterfazMedicionEspaldaJulio2024v2 (1).m (Similar estructura)

  5. Vista Posterior
  6. Botones adicionales: TagAnguloCalcaneo, TagCinturaEscapular

  7. InterfazMedicionPerfilDerechoJulio2024 (1).m (1600 líneas)

  8. Vista Lateral Derecha
  9. Botones: TagTangentes, TagCervicoCefalica, TagTroncoColumna, TagMiembroSuperior, TagPelvisMiembroInferior

  10. InterfazMedicionPerfilIzquierdoJulio2024 (1).m (1631 líneas)

  11. Vista Lateral Izquierda
  12. Similar a Perfil Derecho con ajustes para orientación

Archivos .mat Identificados:

  • Marcadores_ID_ML_13-2-2025_13-50-55.mat → Vista Anterior (A)
  • Marcadores_ID_ML_13-2-2025_13-56-2.mat → Vista Posterior (P)
  • Marcadores_ID_ML_13-2-2025_14-0-12.mat → Vista Lateral Derecha (LD)
  • Marcadores_ID_Ml_13-2-2025_14-3-33.mat → Vista Lateral Izquierda (LI)

Flujo de Trabajo Identificado

Secuencia General (Todas las Vistas):

1. Cargar Imagen (TagAbrirImagen)
   ↓
2. Calibrar con Grilla (TagCalibracionGrilla)
   - Click en 2 puntos separados 10 cm
   - Calcula FC = 10 / D12
   ↓
3. Importar Marcadores (TagMarcadores)
   - Carga archivo .mat
   - Extrae coordenadas (X, Y) de cada marcador
   ↓
4. Trazar Líneas de Referencia (ReferenciasTag)
   - Línea Horizontal (nivel maleolos)
   - Línea Vertical (LRV) perpendicular
   ↓
5. Análisis por Regiones (Botones específicos)
   - Cérvico-Cefálica
   - Tronco-Columna
   - Cintura Escapular
   - Cintura Pélvica
   ↓
6. Exportar Resultados (TagExportarTabla)
   - Guarda en Excel: DatosSujeto{ID}.xlsx

Vista Anterior - Botones y Secuencia:

TagAbrirImagen → TagCalibracionGrilla → TagMarcadores → TagRectasRef →
TagCervicoCefalico → TagTroncoColumna → TagHombroMSuperior →
TagPelvisMInferior → TagMedidas (opcional) → TagExportarTabla

Vista Posterior - Botones y Secuencia:

TagAbrirImagen → TagCalibracionGrilla → TagMarcadores → ReferenciasTag →
TagCervicoCefalica → TagCinturaEscapular → TagCabeza →
TagTroncoycolumna → TagMiembroInferior → TagAnguloCalcaneo →
TagExportarTabla

Vista Perfil - Botones y Secuencia:

TagAbrirImagen → TagCalibracionGrilla → TagMarcadores → ReferenciasTag →
TagTangentes (Cabeza, Dorsal, Sacro) → TagCervicoCefalica →
TagTroncoColumna → TagMiembroSuperior → TagPelvisMiembroInferior →
TagExportarTabla

Cálculos Clave Identificados

1. Factor de Calibración (FC)

D12 = sqrt((X1-X2)^2 + (Y1-Y2)^2)
FC = 10 / D12

2. Ángulo de Inclinación (Cabeza, Hombros, Pelvis)

Si Y_izq < Y_der:  # Cae a la derecha
    A = [X_der - X_izq, Y_izq - Y_izq]
    B = [X_der - X_izq, Y_der - Y_izq]
    angulo = rad2deg(acos(dot(A,B) / (norm(A)*norm(B))))
Sino:  # Cae a la izquierda
    A = [X_izq - X_der, Y_der - Y_der]
    B = [X_izq - X_der, Y_izq - Y_der]
    angulo = -rad2deg(acos(dot(A,B) / (norm(A)*norm(B))))

3. Rotación de Punto (Respecto a LRV)

Distancia = FC * (Vx1 - X_punto)

Si Distancia > 1: 'derecha' (o 'antepulsión' en perfil)
Si Distancia < -1: 'izquierda' (o 'retropulsión' en perfil)
Sino: 'neutro'

4. Ángulo Q

A = [X_TAT - X_rotula, Y_TAT - Y_rotula]
B = [X_EIAS - X_rotula, Y_EIAS - Y_rotula]
anguloQ = abs(180 - rad2deg(acos(dot(A,B) / (norm(A)*norm(B)))))

Normal: 6°  θ < 27°

5. Lordosis (Cervical/Lumbar)

Distancia = FC * (X_apex - X_tangente)

Normal: 3 cm  d  5 cm
Aumentada (Hiperlordosis): d > 5 cm
Disminuida (Rectificación): d < 3 cm

6. Ángulo Tibiotarsiano

A = [X_tuberculo - X_maleolo, Y_tuberculo - Y_maleolo]
B = [X_horizontal - X_maleolo, Y_horizontal - Y_maleolo]
angulo = rad2deg(acos(dot(A,B) / (norm(A)*norm(B))))

Normal: 88°  θ  92°

7. Diagnóstico Genu Varo/Valgo

Si DistanciaMaleolos < 1 cm:
    Si DistanciaCondilos < 1 cm: 'Neutro'
    Sino: 'Genu Varo'
Sino:
    Si DistanciaMaleolos > DistanciaCondilos: 'Genu Valgo'
    Sino: 'Genu Varo'

Marcadores por Vista

Vista Anterior (16 marcadores):

  • Tragus Der./Izq., Lóbulo Oreja Der./Izq.
  • Eminencia Frontal Media, Espina Nasal, Punto Mentoniano
  • Escotadura Esternal, Apéndice Xifoides, Punto Sínfisis Pubiana
  • Punto Acromion Der./Izq.
  • Espina Iliaca Anterosuperior Der./Izq.
  • Centro Rótula Der./Izq., TAT Der./Izq.

Vista Posterior (19 marcadores):

  • Tragus, Lóbulo Oreja (Der./Izq.)
  • Punto Interno Espina Omóplato (Der./Izq.)
  • Ángulo Inferior Omóplato (Der./Izq.)
  • Vértebras: C7, T3, T7, T12, L5
  • Espina Iliaca Posterosuperior (Der./Izq.)
  • Calcáneo, Aquiles (Der./Izq.)

Vista Perfil (12 marcadores por lado):

  • Tragus, Lóbulo Oreja
  • Apex Cervical, Apex Lumbar
  • Punto Acromion, Epicóndilo, Base 3er Metacarpiano
  • Trocánter Mayor, Tubérculo Ilíaco
  • Tubérculo Cóndilo Externo, Borde anterior Maléolo
  • Espina Ilíaca Anterosuperior, Espina Ilíaca Posteroinferior

Uso del Documento TEST_CASES.md

Para Desarrolladores de UI:

  1. Consultar la sección de cada vista para entender el flujo exacto
  2. Verificar coordenadas de marcadores esperadas
  3. Implementar botones en el orden especificado
  4. Usar las fórmulas MATLAB para validar cálculos

Para Desarrolladores de API:

  1. Implementar endpoints según las funciones en test_matlab_integration.py
  2. Asegurar que los cálculos replican exactamente MATLAB
  3. Usar los valores de referencia diagnóstica para validar salidas
  4. Ejecutar los tests de integración para verificar compatibilidad

Para QA/Testers:

  1. Seguir los workflows paso a paso para cada vista
  2. Usar las coordenadas de ejemplo para crear datos de prueba
  3. Verificar que los diagnósticos coinciden con los esperados
  4. Ejecutar los tests automatizados: pytest python/test_matlab_integration.py -v

Próximos Pasos Recomendados

1. Instalación de Dependencias

pip install pytest numpy scipy

2. Ejecutar Tests

# Todos los tests
pytest python/test_matlab_integration.py -v

# Solo vista anterior
pytest python/test_matlab_integration.py::TestVistaAnterior -v

# Solo vista perfil
pytest python/test_matlab_integration.py::TestVistaPerfil -v

# Test específico
pytest python/test_matlab_integration.py::TestVistaAnterior::test_angulo_q_normal -v

3. Explorar Marcadores Reales

python python/read_mat_markers.py

4. Implementar Endpoints de API

Basándose en las funciones de cálculo en test_matlab_integration.py, implementar: - POST /api/calibration → calcular_factor_calibracion() - POST /api/cervico-cefalica → calcular_angulo_inclinacion() + calcular_rotacion_punto() - POST /api/tronco-columna → calcular_angulo_tronco() + calcular_rotacion_punto() - POST /api/hombros → calcular_angulo_inclinacion() - POST /api/pelvis-inferior → calcular_angulo_inclinacion() + calcular_angulo_q() + diagnosticar_miembro_inferior() - POST /api/perfil → calcular_lordosis() + calcular_angulo_codo() + calcular_angulo_tibiotarsiano()

5. Automatización de UI

Usar coordenadas de TEST_CASES.md para: - Selenium/Playwright tests - Cypress tests - Robot Framework tests

Estadísticas

  • Archivos MATLAB analizados: 4 (total ~6400 líneas)
  • Total de marcadores identificados: 47 únicos
  • Total de cálculos documentados: 25+
  • Total de diagnósticos definidos: 20+
  • Tests automatizados escritos: 23
  • Funciones de cálculo implementadas: 10
  • Vistas completas documentadas: 4
  • Páginas de documentación: 1 (TEST_CASES.md con ~1000 líneas)

Contacto y Mantenimiento

Este documento debe actualizarse cada vez que: - Se agregue un nuevo marcador anatómico - Se modifique una fórmula de cálculo - Se agregue una nueva vista o región - Se cambien los umbrales diagnósticos - Se descubran nuevos casos de prueba


Fecha de creación: 2025-10-07 Versión: 1.0 Autor: Análisis automatizado de código MATLAB