← 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

Capa Tecnología Justificación
Frontend Next.js 15 (App Router) SSR, API Routes, excelente DX
UI Tailwind CSS + shadcn/ui Componentes accesibles, diseño rápido
Base de datos PostgreSQL 16 Robusta, transacciones ACID para dinero
ORM Prisma Type-safe, migraciones, integración Next.js
MCP Server TypeScript + @modelcontextprotocol/sdk Protocolo estándar para herramientas de IA
WhatsApp API de WhatsApp Business Mensajes directos a pacientes
Voz (STT) Web Speech API (navegador) Sin costo, funciona en Chrome/Edge
Voz (TTS) SpeechSynthesis API Respuesta hablada al usuario
Calendario @fullcalendar/react Componente maduro, vistas día/semana/mes
Validación Zod Esquemas compartidos entre frontend, API y MCP
Moneda Decimal.js / Prisma Decimal Precisión en cálculos monetarios
Auth JWT + bcrypt Autenticación stateless con hash seguro
Contenedores Docker + Docker Compose Entorno reproducible, PostgreSQL incluido

Arquitectura

Dashboard UI y Voice Chat fluyen a través de API Routes hacia PostgreSQL, WhatsApp y el servidor MCP

Modelo de datos

4 modelos Prisma — Patient es la raíz: tiene N tratamientos (bonos) y N citas; cada tratamiento tiene N pagos/abonos

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

Servicio Imagen Puerto Descripción
app node:20-alpine (multi-stage) 3000 Next.js con hot-reload en dev
db postgres:16-alpine 5432 PostgreSQL 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