PulseAI: Diagnóstico Asistido

PulseAI es un sistema de soporte a la decisión clínica que utiliza redes neuronales convolucionales (CNN) para detectar anomalías en electrocardiogramas (ECG) y frotis sanguíneos.

Angular 17 Python FastAPI TensorFlow

1. Arquitectura del Sistema

El sistema sigue una arquitectura de microservicios contenerizados. El frontend en Angular se comunica con un API Gateway que distribuye la carga entre el servicio de autenticación y el servicio de inferencia de IA.

User Browser → Angular App → Nginx (Gateway) → FastAPI (Model Inference) → PostgreSQL

Componentes Principales

  • Frontend (Angular 17): Interfaz de usuario con componentes standalone y signals para reactividad.
  • API Gateway (Nginx): Balanceo de carga y proxy reverso para microservicios.
  • Servicio de Inferencia: FastAPI con modelo TensorFlow para predicciones en tiempo real.
  • Base de Datos: PostgreSQL para almacenamiento de historial y usuarios.

2. Instalación Local

Para levantar el entorno de desarrollo, asegúrate de tener Docker instalado.

Requisitos Previos

  • Docker Desktop 4.0+
  • Node.js 18+ (para desarrollo frontend)
  • Python 3.10+ (para desarrollo backend)
  • Git
# Clonar el repositorio
git clone https://github.com/shim3z/pulse-ai.git

# Entrar al directorio
cd pulse-ai

# Levantar servicios
docker-compose up --build

3. Modelo de Inteligencia Artificial

El núcleo del sistema utiliza una Red Neuronal Convolucional (CNN) entrenada con el dataset MIT-BIH Arrhythmia Database para detección de arritmias cardíacas.

Métricas del Modelo

97.2%
Accuracy
96.8%
Precision
95.4%
Recall
96.1%
F1-Score

Arquitectura de la Red

model = Sequential([
    Conv1D(64, 3, activation='relu', input_shape=(187, 1)),
    MaxPooling1D(2),
    Conv1D(128, 3, activation='relu'),
    MaxPooling1D(2),
    Flatten(),
    Dense(128, activation='relu'),
    Dropout(0.5),
    Dense(5, activation='softmax')
])

4. API Endpoints

La API REST está documentada con OpenAPI/Swagger y expone los siguientes endpoints principales:

POST /api/v1/predict/ecg

Envía datos de ECG para análisis y obtiene predicción de arritmia.

POST /api/v1/predict/blood

Envía imagen de frotis sanguíneo para clasificación celular.

GET /api/v1/history/{user_id}

Obtiene historial de análisis de un usuario específico.

GET /api/v1/health

Verifica el estado de salud del servicio y conexiones.

Ejemplo de Request

curl -X POST "https://api.pulseai.dev/v1/predict/ecg" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"ecg_data": [0.12, 0.45, ...], "sampling_rate": 360}'

Última actualización: Diciembre 2025