- Update docs/_MAP.md with new phase references - Add docs/04-fase-saas/ phase structure - Add docs/05-fase-ia/ phase structure Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
317 lines
10 KiB
Markdown
317 lines
10 KiB
Markdown
---
|
|
id: MGN-022-mcp-server
|
|
title: MCP Server para Clinica Dental
|
|
type: Module
|
|
status: Draft
|
|
priority: P0
|
|
phase: 05-fase-ia
|
|
version: 1.0.0
|
|
created_date: 2026-01-13
|
|
updated_date: 2026-01-13
|
|
normativas: [NOM-013-SSA2-2015, NOM-004-SSA3-2012, COFEPRIS]
|
|
---
|
|
|
|
# MGN-022: MCP Server para Clinica Dental
|
|
|
|
**Modulo:** MGN-022
|
|
**Nombre:** MCP Server (Model Context Protocol) Dental
|
|
**Fase:** 05 - Inteligencia Artificial
|
|
**Story Points:** 55 SP
|
|
**Estado:** En Diseno
|
|
**Ultima actualizacion:** 2026-01-13
|
|
|
|
---
|
|
|
|
## Descripcion
|
|
|
|
Modulo que implementa un servidor MCP (Model Context Protocol) siguiendo el estandar de Anthropic, especializado en odontologia. Expone herramientas (tools) de negocio dental a los modelos de lenguaje de manera estandarizada, permitiendo que agentes IA interactuen con el sistema para consultar odontogramas, gestionar citas, registrar tratamientos y administrar presupuestos dentales.
|
|
|
|
---
|
|
|
|
## Funcionalidades Principales
|
|
|
|
1. **Odontograma Tools** - Consulta y actualizacion de odontogramas usando nomenclatura FDI
|
|
2. **Tratamientos Tools** - Registro y consulta de tratamientos dentales
|
|
3. **Citas Tools** - Gestion completa de citas dentales
|
|
4. **Pacientes Tools** - Busqueda y consulta de pacientes
|
|
5. **Presupuestos Tools** - Generacion y consulta de presupuestos
|
|
6. **Historial Tools** - Consulta de historial clinico dental
|
|
7. **MCP Resources** - Recursos expuestos (catalogo tratamientos, precios)
|
|
8. **Tool Call Logging** - Registro de llamadas para auditoria (NOM-004)
|
|
|
|
---
|
|
|
|
## Herramientas MCP Odontologicas
|
|
|
|
### Odontograma Tools (4 herramientas)
|
|
|
|
| Tool | Descripcion | Parametros |
|
|
|------|-------------|------------|
|
|
| `consultar_odontograma` | Ver estado completo de piezas dentales | paciente_id |
|
|
| `consultar_pieza_dental` | Detalle de una pieza especifica | paciente_id, pieza (ej: "16") |
|
|
| `registrar_estado_pieza` | Actualizar estado de pieza | paciente_id, pieza, estado, cara?, notas? |
|
|
| `historial_pieza` | Tratamientos previos en pieza | paciente_id, pieza |
|
|
|
|
**Estados de Pieza Soportados:**
|
|
- `sano` - Sin patologia
|
|
- `caries` - Caries activa
|
|
- `obturacion_resina` - Obturacion con resina
|
|
- `obturacion_amalgama` - Obturacion con amalgama
|
|
- `endodoncia` - Tratamiento de conducto
|
|
- `corona` - Protesis fija
|
|
- `puente_pilar` - Pilar de puente
|
|
- `puente_pontico` - Pontico de puente
|
|
- `implante` - Implante dental
|
|
- `ausente` - Pieza ausente
|
|
- `extraccion_indicada` - Extraccion planificada
|
|
|
|
**Caras Dentales (parametro cara):**
|
|
- `M` - Mesial
|
|
- `D` - Distal
|
|
- `O` - Oclusal (molares/premolares)
|
|
- `I` - Incisal (incisivos/caninos)
|
|
- `V` - Vestibular
|
|
- `L` - Lingual
|
|
- `P` - Palatino
|
|
|
|
### Tratamientos Tools (4 herramientas)
|
|
|
|
| Tool | Descripcion | Parametros |
|
|
|------|-------------|------------|
|
|
| `registrar_tratamiento` | Documentar tratamiento realizado | paciente_id, tipo, piezas[], doctor_id, notas? |
|
|
| `consultar_tratamiento` | Detalle de un tratamiento | tratamiento_id |
|
|
| `listar_tratamientos_paciente` | Historial de tratamientos | paciente_id, desde?, hasta? |
|
|
| `catalogo_tratamientos` | Lista de tratamientos disponibles | categoria? |
|
|
|
|
**Categorias de Tratamiento:**
|
|
- `preventivo` - Limpiezas, selladores, fluor
|
|
- `restaurador` - Resinas, amalgamas, incrustaciones
|
|
- `endodoncia` - Tratamientos de conducto
|
|
- `periodoncia` - Raspados, cirugia periodontal
|
|
- `cirugia` - Extracciones, implantes
|
|
- `ortodoncia` - Brackets, alineadores
|
|
- `protesis` - Coronas, puentes, dentaduras
|
|
- `estetica` - Blanqueamiento, carillas
|
|
|
|
### Citas Tools (5 herramientas)
|
|
|
|
| Tool | Descripcion | Parametros |
|
|
|------|-------------|------------|
|
|
| `agendar_cita_dental` | Crear nueva cita | paciente_id, fecha, hora, tratamiento_tipo, doctor_id?, sillon? |
|
|
| `consultar_cita` | Detalle de cita | cita_id |
|
|
| `consultar_citas_paciente` | Citas de un paciente | paciente_id, estado? |
|
|
| `verificar_disponibilidad_sillon` | Horarios libres | fecha, sillon?, doctor_id? |
|
|
| `cancelar_reprogramar_cita` | Modificar cita | cita_id, accion, nueva_fecha?, nueva_hora? |
|
|
|
|
### Pacientes Tools (3 herramientas)
|
|
|
|
| Tool | Descripcion | Parametros |
|
|
|------|-------------|------------|
|
|
| `buscar_paciente` | Buscar por nombre/telefono | query, limit? |
|
|
| `consultar_paciente` | Datos completos del paciente | paciente_id |
|
|
| `consultar_historial_dental` | Historial clinico completo | paciente_id |
|
|
|
|
### Presupuestos Tools (3 herramientas)
|
|
|
|
| Tool | Descripcion | Parametros |
|
|
|------|-------------|------------|
|
|
| `generar_presupuesto_dental` | Crear presupuesto | paciente_id, tratamientos[], descuento? |
|
|
| `consultar_presupuesto` | Detalle de presupuesto | presupuesto_id |
|
|
| `aprobar_rechazar_presupuesto` | Cambiar estado | presupuesto_id, decision, notas? |
|
|
|
|
---
|
|
|
|
## Recursos MCP Dentales
|
|
|
|
| URI | Descripcion | Retorna |
|
|
|-----|-------------|---------|
|
|
| `dental://catalogo/tratamientos` | Catalogo de tratamientos con precios | Array de tratamientos |
|
|
| `dental://catalogo/materiales` | Materiales dentales disponibles | Array de materiales |
|
|
| `dental://config/clinica` | Configuracion de la clinica | Nombre, horarios, sillones |
|
|
| `dental://config/doctores` | Lista de doctores | Array de doctores y especialidades |
|
|
| `dental://nomenclatura/fdi` | Referencia nomenclatura FDI | Cuadrantes y piezas |
|
|
|
|
---
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| POST | /api/v1/mcp/tools/call | Ejecutar una herramienta MCP |
|
|
| GET | /api/v1/mcp/tools | Listar herramientas disponibles |
|
|
| GET | /api/v1/mcp/tools/:name | Obtener definicion de herramienta |
|
|
| GET | /api/v1/mcp/resources | Listar recursos disponibles |
|
|
| GET | /api/v1/mcp/resources/:uri | Obtener recurso |
|
|
| GET | /api/v1/mcp/tool-calls | Historial de llamadas (auditoria) |
|
|
| GET | /api/v1/mcp/tool-calls/:id | Detalle de una llamada |
|
|
|
|
---
|
|
|
|
## Ejemplos de Uso
|
|
|
|
### Consultar Odontograma
|
|
|
|
```json
|
|
// Request
|
|
{
|
|
"tool": "consultar_odontograma",
|
|
"parameters": {
|
|
"paciente_id": "pac_123"
|
|
}
|
|
}
|
|
|
|
// Response
|
|
{
|
|
"paciente": "Maria Garcia",
|
|
"fecha_actualizacion": "2026-01-13",
|
|
"piezas": [
|
|
{ "numero": "11", "estado": "sano" },
|
|
{ "numero": "16", "estado": "obturacion_resina", "caras": ["O", "M"], "fecha": "2025-06-15" },
|
|
{ "numero": "36", "estado": "endodoncia", "fecha": "2024-03-20" },
|
|
{ "numero": "46", "estado": "caries", "caras": ["O"], "notas": "Caries oclusal, indicada resina" }
|
|
],
|
|
"piezas_ausentes": ["18", "28", "38", "48"],
|
|
"tratamientos_pendientes": [
|
|
{ "pieza": "46", "tratamiento": "Resina compuesta" }
|
|
]
|
|
}
|
|
```
|
|
|
|
### Agendar Cita Dental
|
|
|
|
```json
|
|
// Request
|
|
{
|
|
"tool": "agendar_cita_dental",
|
|
"parameters": {
|
|
"paciente_id": "pac_123",
|
|
"fecha": "2026-01-20",
|
|
"hora": "10:00",
|
|
"tratamiento_tipo": "resina",
|
|
"doctor_id": "doc_456",
|
|
"sillon": 2
|
|
}
|
|
}
|
|
|
|
// Response
|
|
{
|
|
"cita_id": "cita_789",
|
|
"confirmada": true,
|
|
"fecha": "2026-01-20",
|
|
"hora": "10:00",
|
|
"duracion_minutos": 45,
|
|
"doctor": "Dra. Rodriguez",
|
|
"sillon": 2,
|
|
"tratamiento": "Resina compuesta",
|
|
"recordatorio_programado": true
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Dependencias
|
|
|
|
**Este modulo depende de:**
|
|
- MGN-001 Auth (autenticacion, clinica_id)
|
|
- MGN-004 Tenants (multi-tenant, aislamiento por clinica)
|
|
- DENTAL-001 Odontograma (consulta/actualizacion)
|
|
- DENTAL-002 Tratamientos (registro/consulta)
|
|
- Citas (agendamiento)
|
|
- Pacientes (busqueda/consulta)
|
|
|
|
**Modulos que dependen de este:**
|
|
- MGN-021 WhatsApp Business (chatbots con herramientas MCP)
|
|
- MGN-020 AI Integration (agentes IA)
|
|
|
|
---
|
|
|
|
## Arquitectura
|
|
|
|
```
|
|
+-------------------+
|
|
| Clientes MCP |
|
|
+-------------------+
|
|
| AI Agents |
|
|
| WhatsApp Service |
|
|
| API Externa |
|
|
+---------+---------+
|
|
|
|
|
v
|
|
+-------------------+
|
|
| MCP Server |
|
|
+-------------------+
|
|
| MCP Controller |
|
|
| Tool Registry |
|
|
| Tool Executor |
|
|
| Audit Logger |
|
|
+---------+---------+
|
|
|
|
|
+---------------------+---------------------+
|
|
| | | | |
|
|
v v v v v
|
|
+------------+ +--------+ +--------+ +----------+ +--------+
|
|
| Odontograma| | Citas | | Tratam.| | Pacientes| | Presup.|
|
|
| Tools | | Tools | | Tools | | Tools | | Tools |
|
|
+------------+ +--------+ +--------+ +----------+ +--------+
|
|
| | | | |
|
|
v v v v v
|
|
+------------+ +--------+ +--------+ +----------+ +--------+
|
|
| Odontograma| | Citas | | Tratam.| | Pacientes| | Presup.|
|
|
| Service | | Service| | Service| | Service | | Service|
|
|
+------------+ +--------+ +--------+ +----------+ +--------+
|
|
```
|
|
|
|
---
|
|
|
|
## Seguridad y Normativas
|
|
|
|
### Seguridad General
|
|
|
|
- Todas las herramientas requieren autenticacion JWT
|
|
- Aislamiento por clinica (RLS)
|
|
- Rate limiting por clinica
|
|
- Sanitizacion de inputs
|
|
- Validacion de permisos por herramienta
|
|
|
|
### NOM-004-SSA3-2012 (Expediente Clinico)
|
|
|
|
- Registro completo de todas las llamadas a herramientas
|
|
- Trazabilidad de consultas y modificaciones
|
|
- Almacenamiento seguro de logs
|
|
|
|
### NOM-013-SSA2-2015 (Salud Bucal)
|
|
|
|
- Uso correcto de nomenclatura FDI
|
|
- Registro adecuado de tratamientos
|
|
- Protocolos de atencion
|
|
|
|
### COFEPRIS
|
|
|
|
- Registro de materiales utilizados
|
|
- Trazabilidad de insumos
|
|
- Bitacora de procedimientos
|
|
|
|
---
|
|
|
|
## Documentacion
|
|
|
|
- [Mapa del Modulo](./_MAP.md)
|
|
- [Requerimientos](./requerimientos/)
|
|
- [Especificaciones](./especificaciones/)
|
|
- [Historias de Usuario](./historias-usuario/)
|
|
- [Trazabilidad](./implementacion/TRACEABILITY.yml)
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- **Fuente:** [erp-core/MGN-022-mcp-server](../../../../../erp-core/docs/05-fase-ia/MGN-022-mcp-server/)
|
|
- **MCP Spec:** [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
- **Anthropic MCP:** [Anthropic MCP Docs](https://docs.anthropic.com/en/docs/mcp)
|
|
|
|
---
|
|
|
|
*Modulo MGN-022 - MCP Server | Clinica Dental*
|
|
*Propagado desde erp-core via erp-clinicas*
|
|
*Actualizado: 2026-01-13*
|