Caso de estudio · Gallstone

Modelo de ML adaptado para diagnóstico rural en tiempo real.

Sin laboratorio, usando bioimpedancia.

ML SystemsDigital HealthRural AIXAI

Antes de entrar

Demo de tamizaje, no de diagnóstico. Dataset UCI Gallstone, 319 casos, Ankara. Rendimiento rural: AUC 0.8138 · Accuracy 77.08%.

01El problema
Fig. 01 · AnatomíaVesícula biliar

Llevamos al médico al pueblo. Pero para diagnosticar, el poblador es el que tiene que ir.

La Red Inversa — el programa público que acerca brigadas médicas a comunidades rurales — no alcanza para cálculos biliares: la ecografía vive en el centro de salud de segundo (II) o tercer (III) nivel más cercano.

02Lo que hace el paper

El estudio UCI entrena con sangre y bioimpedancia en un hospital de Ankara.

319 casos, 38 predictores. El modelo alcanza AUC 0.928 sobre su propio dataset — pero depende de variables que no viajan a la sierra.

Rendimiento reportado

AUC 0.928

Accuracy

88.54%

Fig. 02 · ColelitiasisUCI dataset · Ankara
03La adaptación rural
Fig. 03 · Bioimpedancia4 electrodos

Sacrificamos laboratorio. Conservamos 25 señales de campo.

La balanza de bioimpedancia reemplaza la muestra de sangre. La respuesta ocurre frente al poblador — no en un mensaje posterior.

Rendimiento rural

AUC 0.8138

Accuracy

77.08%

Variables lab eliminadas

Se retiraron 13 variables de laboratorio para reducir fricción operativa.

Ver ejemplos
GlucoseLDLHDLTriglycerideASTALT
04El tradeoff

Precisión por inmediatez.

Accuracy · Paper / réplica

Escenario clínico completo

88.5%

Accuracy · Bioimpedancia + ML

Adaptación rural optimizada

77.1%

AUC · Paper / réplica

Escenario clínico completo

92.8%

AUC · Bioimpedancia + ML

Adaptación rural optimizada

81.4%

05Tres escenarios

Una misma visita, tres formas de que la respuesta vuelva.

IEscenario 1

El médico llega al poblador, pero la decisión sigue viviendo lejos.

Ante sospecha de cálculos, la visita termina en derivación. El siguiente paso todavía depende del traslado del poblador y del acceso al hospital.

Ruta operativa

Ventana

Después del traslado

Carga del poblador

4–5 h de viaje para acceder a imágenes

Desempeño

Derivación

IIEscenario 2

La brigada tendría que cargar bioimpedancia, extracción y espera.

El paper funciona bien con laboratorio. Para acercarlo al trabajo en sierra, el médico tendría que medir, extraer sangre, enviarla y responder después.

Ruta operativa

Ventana

≈ 1 día

Carga del poblador

El poblador espera la indicación antes de acercarse

Desempeño

AUC 0.9280 · Acc 88.54%

IIIEscenario 3

La brigada carga solo la balanza y obtiene una lectura en ese momento.

La adaptación sacrifica precisión frente al entorno clínico completo, pero devuelve la decisión al espacio de la visita y reduce la carga del poblador.

Ruta operativa

Ventana

En la visita

Carga del poblador

No requiere extracción ni espera de laboratorio

Desempeño

AUC 0.8138 · Acc 77.08%

06Arquitectura y despliegue

Frontend en Vercel. Backend en Hugging Face. Los modelos viajan con la API.

La app pública vive en gallstone.rosewt.dev, consume la API rural desde un Space Docker y deja el chat guiado como una capa separada. La inferencia no depende de un endpoint de modelos aparte: el backend carga sus artefactos al arrancar y responde predicción, SHAP y generación de bioimpedancia desde ahí.

Diagrama runtime del demo: usuario, dominio, frontend en Vercel, chat con DeepSeek y backend en Hugging Face Space.

Runtime view

Separa el flujo que vive durante la sesión del usuario: navegador, chat y API de inferencia.

Abrir SVG →
Diagrama de delivery del demo: GitHub, build en Vercel, exportación de artefactos y despliegue del backend a Hugging Face Space.

Delivery view

Muestra cómo el repo construye el frontend y cómo los artefactos del modelo viajan hacia el Space.

Abrir SVG →

Frontend público

Vercel + gallstone.rosewt.dev

Landing, flujo de consulta y visualización del resultado. El chat vive en el route handler /api/chat y se ejecuta server-side.

Stack

Next.js 16React 19Tailwind CSS 4Framer MotionZustandsessionStorage
Subdominio principal: gallstone.rosewt.dev
Previews temporales: *.vercel.app
Variable clave: NEXT_PUBLIC_API_URL

Backend ML

Hugging Face Spaces + Docker

API HTTP para health, metadata del modelo, predicción, explicación SHAP y generación de bioimpedancia.

Stack

Python 3.12FastAPIUvicornPydanticscikit-learnSHAPNumPyjoblib
URL pública de la API: rosewt-gallstone.hf.space
CORS habilita gallstone.rosewt.dev y previews de Vercel
Endpoints: /health, /model/info, /predict/rural, /explain/rural

Artefactos del modelo

Bundled dentro del backend

La inferencia no consulta un modelo remoto. El contenedor lleva los archivos necesarios y los reutiliza en memoria durante la sesión.

Stack

rural_gb_pipeline.joblibbioimpedance_templates.jsonrural_metrics.json
Viven en demo/backend/models/
main.py llama predictor.load_artifacts() en el startup de FastAPI
predictor.py inicializa TreeExplainer sobre _pipeline['gb']

Servicios externos

DeepSeek sólo para la entrevista guiada

La conversación médica simulada no hace la predicción. Solo extrae datos estructurados antes de llamar a la API del modelo.

Stack

AI SDK@ai-sdk/openaiRoute Handler /api/chatDeepSeek API
Se ejecuta desde el frontend server-side
Variable clave: DEEPSEEK_API_KEY
La predicción clínica sigue corriendo en FastAPI

Lectura operativa

Subdominio

gallstone.rosewt.dev

Entrada pública del frontend desplegado en Vercel.

Backend público

rosewt-gallstone.hf.space

Space Docker donde vive la API de inferencia.

Deploy backend

scripts/deploy_hf_space.sh

Sincroniza demo/backend hacia el Space de Hugging Face.

Dónde cargan

FastAPI startup

Los modelos y métricas se leen una vez al iniciar la app.

07Entrar al demo

Vive la visita.

Consulta guiada, medición simulada y lectura de riesgo explicable. Tres actos, menos de tres minutos.

Empezar

Lo que la demo no oculta

  • 01Los datos provienen de un hospital en Ankara, Turquía; no de campañas rurales peruanas.
  • 02El dataset tiene 319 casos y no incluye validación externa en una cohorte de Perú.
  • 03La demo es de tamizaje y priorización. No sustituye ecografía ni diagnóstico médico.

Rody Vilchez · UPC · 2026

Dataset UCI Gallstone · 319 casos · Ankara

Abrir demo ↗