clinica-dental/docs/01-epicas/DENTAL-002-tratamientos.md
rckrdmrd 0cb74ec2c1 [SPRINT-6] docs: Agregar documentacion y reportes
- Epicas documentadas
- Reporte de ejecucion Sprint 6

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 08:53:42 -06:00

213 lines
6.2 KiB
Markdown

# DENTAL-002: Tratamientos Dentales
## Metadata
- **Codigo:** DENTAL-002
- **Modulo:** Tratamientos
- **Prioridad:** P0
- **Estado:** DDL Completado
- **Fase:** 2 - Tratamientos
## Descripcion
Sistema de gestion de tratamientos odontologicos: catalogo de procedimientos, planes de tratamiento personalizados, seguimiento de citas, asociacion a piezas dentales y costos.
## Objetivos
1. Catalogo de procedimientos dentales
2. Planes de tratamiento por paciente
3. Asociacion tratamiento-pieza dental
4. Seguimiento de estado
5. Registro de costos
## Alcance
### Incluido
- Catalogo de tratamientos por tenant
- Categorias: prevencion, restauracion, endodoncia, etc.
- Asociacion a pieza y caras especificas
- Estados: pendiente, en_proceso, completado, cancelado
- Duracion estimada y real
- Precios y descuentos
- Vinculacion con citas
### Excluido
- Generacion automatica de presupuestos (ver DENTAL-006)
- Integracion con inventario de materiales
- Consentimientos informados digitales
## Catalogo de Procedimientos
### Prevencion
| Codigo | Procedimiento | Duracion | Precio Base |
|--------|---------------|----------|-------------|
| PREV-001 | Limpieza dental (profilaxis) | 30 min | $500 |
| PREV-002 | Aplicacion de fluor | 15 min | $200 |
| PREV-003 | Selladores de fosetas | 20 min | $350 |
| PREV-004 | Detartraje | 45 min | $800 |
### Restauracion
| Codigo | Procedimiento | Duracion | Precio Base |
|--------|---------------|----------|-------------|
| REST-001 | Resina simple (1 cara) | 30 min | $600 |
| REST-002 | Resina compuesta (2+ caras) | 45 min | $900 |
| REST-003 | Incrustacion inlay | 60 min | $2,500 |
| REST-004 | Incrustacion onlay | 60 min | $3,000 |
| REST-005 | Reconstruccion | 60 min | $1,500 |
### Endodoncia
| Codigo | Procedimiento | Duracion | Precio Base |
|--------|---------------|----------|-------------|
| ENDO-001 | Conductos unirradicular | 60 min | $2,500 |
| ENDO-002 | Conductos birradicular | 90 min | $3,500 |
| ENDO-003 | Conductos multirradicular | 120 min | $4,500 |
| ENDO-004 | Retratamiento | 90 min | $3,000 |
### Cirugia
| Codigo | Procedimiento | Duracion | Precio Base |
|--------|---------------|----------|-------------|
| CIR-001 | Extraccion simple | 30 min | $600 |
| CIR-002 | Extraccion quirurgica | 45 min | $1,200 |
| CIR-003 | Tercer molar retenido | 60 min | $2,500 |
## Modelo de Datos
### Tablas
**dental.tratamientos_catalogo**
- id, tenant_id, codigo, nombre
- categoria, descripcion
- duracion_minutos, precio_base
- requiere_rx, requiere_anestesia
- active
**dental.tratamientos_paciente**
- id, tenant_id, patient_id
- odontograma_id, tratamiento_id
- odontologo_id, consultation_id
- pieza_id, caras_tratadas[]
- fecha_inicio, fecha_fin
- estado, precio, descuento, precio_final
- notas
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /tratamientos/catalogo | Listar catalogo |
| POST | /tratamientos/catalogo | Crear procedimiento |
| PUT | /tratamientos/catalogo/:id | Actualizar |
| DELETE | /tratamientos/catalogo/:id | Desactivar |
| GET | /patients/:id/tratamientos | Tratamientos de paciente |
| POST | /patients/:id/tratamientos | Crear tratamiento |
| PUT | /tratamientos/:id | Actualizar tratamiento |
| PUT | /tratamientos/:id/estado | Cambiar estado |
| GET | /tratamientos/pendientes | Tratamientos pendientes |
| GET | /tratamientos/hoy | Tratamientos del dia |
## Interfaz del Servicio
```typescript
interface TratamientosService {
// Catalogo
getCatalogo(filters?: CatalogoFilters): Promise<Tratamiento[]>;
createProcedimiento(data: CreateProcedimiento): Promise<Tratamiento>;
// Tratamientos paciente
getByPatient(patientId: string): Promise<TratamientoPaciente[]>;
create(data: CreateTratamientoPaciente): Promise<TratamientoPaciente>;
updateEstado(id: string, estado: EstadoTratamiento): Promise<TratamientoPaciente>;
// Reportes
getPendientes(odontologoId?: string): Promise<TratamientoPaciente[]>;
getCompletadosHoy(): Promise<TratamientoPaciente[]>;
}
interface CreateTratamientoPaciente {
patientId: string;
tratamientoId: string;
odontologoId: string;
piezaId?: string;
carasTratadas?: CaraDental[];
precio?: number;
descuento?: number;
notas?: string;
}
```
## Flujos
### Registrar Tratamiento
```
1. Odontologo en consulta del paciente
2. Revisa odontograma actual
3. Identifica pieza a tratar
4. Selecciona procedimiento del catalogo
5. Especifica caras afectadas (si aplica)
6. Confirma precio (puede aplicar descuento)
7. Guarda tratamiento como "pendiente" o "en_proceso"
8. Sistema actualiza estado del odontograma
```
### Completar Tratamiento
```
1. Odontologo abre tratamiento en curso
2. Registra notas del procedimiento
3. Cambia estado a "completado"
4. Sistema registra fecha de finalizacion
5. Actualiza odontograma automaticamente
6. Tratamiento listo para facturacion
```
## Estados de Tratamiento
```
pendiente ──► en_proceso ──► completado
│ │
└──────────────┴──► cancelado
```
| Estado | Descripcion | Facturar |
|--------|-------------|----------|
| pendiente | Agendado, no iniciado | No |
| en_proceso | En ejecucion | Parcial |
| completado | Finalizado | Si |
| cancelado | No se realizara | No |
## Entregables
| Entregable | Estado | Archivo |
|------------|--------|---------|
| DDL tratamientos | Completado | `database/schemas/01-dental-schema-ddl.sql` |
| tratamientos.module.ts | Pendiente | `backend/modules/tratamientos/` |
| tratamientos.service.ts | Pendiente | `backend/services/` |
| Seeds catalogo | Pendiente | `database/seeds/` |
| TratamientosList.tsx | Pendiente | `frontend/components/` |
| TratamientoForm.tsx | Pendiente | `frontend/components/` |
## Dependencias
### Depende de
- DENTAL-001 (Odontograma)
- clinica.patients (erp-clinicas)
- clinica.consultations (erp-clinicas)
### Bloquea a
- DENTAL-006 (Presupuestos)
- Facturacion
## Criterios de Aceptacion
- [ ] Catalogo de procedimientos por tenant
- [ ] CRUD de tratamientos por paciente
- [ ] Asociacion a pieza dental
- [ ] Estados se actualizan correctamente
- [ ] Historial de tratamientos visible
- [ ] Precio final calcula con descuento
- [ ] Integracion con citas funciona
---
**Ultima actualizacion:** 2026-01-07