← Volver a publicaciones

DentAI — Sistema de gestión dental con MCP e interfaz de voz

Sistema moderno de gestión para clínicas dentales construido con Next.js 15, Prisma, TypeScript y PostgreSQL 16. Gestión de pacientes, tratamientos, pagos (bonos/abonos), agenda de citas con calendario visual e integración MCP para asistencia con IA y automatización por voz.

Descripción del proyecto

DentAI es un sistema web para clínicas dentales que digitaliza la gestión de pacientes, tratamientos, pagos y citas. Construido con Next.js 15 (App Router), Prisma, TypeScript y PostgreSQL 16. Integra un servidor MCP (Model Context Protocol) con 13 herramientas para gestión asistida por IA y soporte de interfaz de voz (STT/TTS) en el navegador.


Problemática

Un profesional dental que lleva todos sus registros en papel enfrenta:

  • Pérdida de información y dificultad para rastrear deudas
  • Sin historial digital de pagos ni tratamientos
  • Comunicación manual con pacientes (llamadas, recordatorios a mano)
  • Sin visibilidad del estado financiero (quién debe, cuánto, desde cuándo)

Módulos funcionales

  • Gestión de pacientes — Registro completo, perfil con historial clínico y financiero, búsqueda por nombre o teléfono
  • Tratamientos y pagos (bonos/abonos) — Crear tratamientos (bono = deuda total), registrar abonos parciales, saldo pendiente en tiempo real, barra de progreso de pago
  • Agenda de citas — Calendario visual con FullCalendar (día/semana/mes), estados (SCHEDULED, CONFIRMED, CANCELLED, COMPLETED, NO_SHOW), validación de conflictos de horario
  • WhatsApp — Recordatorios de citas, mensajes de cobro, mensajes libres directos a pacientes
  • MCP Server — Agente de IA gestiona todo el sistema vía comandos naturales (13 tools)
  • Interfaz de voz — Dictar operaciones sin tocar el teclado (Web Speech API para STT/TTS)
  • Dashboard financiero — Ingresos por período, cuentas por cobrar, pacientes con mayor deuda
  • Autenticación multi-dentista — Login con JWT, roles ADMIN/DENTIST, datos aislados por dentista

Tech Stack

CapaTecnologíaJustificación
FrontendNext.js 15 (App Router)SSR, API Routes, excelente DX
UITailwind CSS + shadcn/uiComponentes accesibles, diseño rápido
Base de datosPostgreSQL 16Robusta, transacciones ACID para dinero
ORMPrismaType-safe, migraciones, integración Next.js
MCP ServerTypeScript + @modelcontextprotocol/sdkProtocolo estándar para herramientas de IA
WhatsAppAPI de WhatsApp BusinessMensajes directos a pacientes
Voz (STT)Web Speech API (navegador)Sin costo, funciona en Chrome/Edge
Voz (TTS)SpeechSynthesis APIRespuesta hablada al usuario
Calendario@fullcalendar/reactComponente maduro, vistas día/semana/mes
ValidaciónZodEsquemas compartidos entre frontend, API y MCP
MonedaDecimal.js / Prisma DecimalPrecisión en cálculos monetarios
AuthJWT + bcryptAutenticación stateless con hash seguro
ContenedoresDocker + Docker ComposeEntorno reproducible, PostgreSQL incluido

Arquitectura


Modelo de datos

Relaciones clave:

  • Un paciente tiene muchos tratamientos (cada tratamiento es un “bono” = deuda)
  • Cada tratamiento tiene muchos pagos/abonos parciales
  • Saldo pendiente = treatment.totalAmount - SUM(payments.amount)

MCP Server — Integración con IA

El servidor MCP expone 13 herramientas que permiten a un agente de IA gestionar toda la clínica vía comandos naturales:

Dentista (vía Copilot): "Registra un abono de $500 a María López
                         en su tratamiento de ortodoncia"

→ search_patients({ query: "María López" })
→ add_payment({ treatmentId: "clx...", amount: 500, method: "CASH" })

→ "✓ Abono de $500.00 registrado para María López.
   Tratamiento: Ortodoncia | Saldo pendiente: $2,500.00"

Docker

ServicioImagenPuertoDescripción
appnode:20-alpine (multi-stage)3000Next.js con hot-reload en dev
dbpostgres:16-alpine5432PostgreSQL con volumen persistente

Plan de desarrollo (sprints)

  1. Sprint 1 — Fundación + CRUD de pacientes (Docker + Prisma + API Routes)
  2. Sprint 2 — Tratamientos y pagos (bonos/abonos, dashboard financiero)
  3. Sprint 3 — Agenda de citas + integración WhatsApp
  4. Sprint 4 — Servidor MCP con 13 tools (@modelcontextprotocol/sdk)
  5. Sprint 5 — Interfaz de voz (STT/TTS) + pulido UI/UX
  6. Sprint 6 — Autenticación multi-dentista (JWT, roles ADMIN/DENTIST, datos aislados)

Buenas prácticas aplicadas

  • Clean Architecture — Routes → Services → Repositories → Prisma
  • Validación con Zod — Esquemas compartidos entre frontend, API y MCP server
  • Precisión monetariaDecimal.js y Prisma Decimal para cálculos financieros
  • Contenedores Docker — Entorno reproducible con Docker Compose (app + PostgreSQL)
  • RBAC — Roles ADMIN/DENTIST con datos aislados por dentista
  • Desarrollo por sprints — Iteraciones incrementales con entregables claros