- Epicas documentadas - Reporte de ejecucion Sprint 6 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
213 lines
6.2 KiB
Markdown
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
|