# EPICA: EPIC-CL-008 - Facturación

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-008 |
| **Nombre** | Facturación |
| **Modulo** | facturacion |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 38 |
| **Sprint(s)** | Sprint 8-9 |

---

## Descripcion

Sistema de facturación para servicios médicos. Incluye cobro de consultas, procedimientos, estudios de laboratorio, medicamentos y facturación a aseguradoras. Generación de CFDI 4.0 y notas de crédito.

---

## Objetivo de Negocio

- Cobro oportuno de servicios
- Facturación correcta a aseguradoras
- Cumplimiento fiscal
- Control de cuentas por cobrar
- Reportes financieros

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL008-001 | Como cajero, quiero generar cuenta del paciente con servicios prestados | P0 | 5 | Backlog |
| US-CL008-002 | Como cajero, quiero cobrar consulta con múltiples formas de pago | P0 | 5 | Backlog |
| US-CL008-003 | Como cajero, quiero facturar a nombre del paciente con sus datos fiscales | P0 | 5 | Backlog |
| US-CL008-004 | Como admin, quiero facturar a aseguradora con expediente de reclamación | P0 | 8 | Backlog |
| US-CL008-005 | Como cajero, quiero generar nota de crédito por cancelación o error | P0 | 3 | Backlog |
| US-CL008-006 | Como paciente, quiero pagar mi cuenta desde el portal web | P1 | 5 | Backlog |
| US-CL008-007 | Como admin, quiero ver cuentas por cobrar pendientes | P0 | 3 | Backlog |
| US-CL008-008 | Como admin, quiero configurar precios de servicios y procedimientos | P0 | 2 | Backlog |
| US-CL008-009 | Como admin, quiero ver reporte de ingresos por período | P1 | 2 | Backlog |

**Total Story Points:** 38 SP

---

## Flujo de Facturación

```
COBRO DIRECTO (Paciente paga)

┌─────────────┐
│   CUENTA    │  ← Servicios prestados
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   COBRO     │  ← Efectivo/Tarjeta
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   CFDI      │  ← Timbrado
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  ENTREGADO  │  ← PDF + XML al paciente
└─────────────┘


COBRO A ASEGURADORA

┌─────────────┐
│   CUENTA    │  ← Servicios prestados
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  EXPEDIENTE │  ← Documentos requeridos
│ RECLAMACIÓN │     (notas, estudios, etc.)
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   ENVÍO     │  ← A la aseguradora
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ SEGUIMIENTO │  ← Pendiente de pago
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   COBRADO   │  ← Pago recibido
└──────┬──────┘
       │
       ▼
┌─────────────┐
│    CFDI     │  ← Factura a aseguradora
└─────────────┘
```

---

## Cuenta del Paciente

```
┌─────────────────────────────────────────────────────────┐
│              CUENTA - PACIENTE: Juan Pérez              │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  SERVICIOS                                              │
│  ┌────────────────────────────────────┬───────────────┐ │
│  │ Concepto                           │ Importe       │ │
│  ├────────────────────────────────────┼───────────────┤ │
│  │ Consulta medicina general          │       $800.00 │ │
│  │ Biometría hemática                 │       $350.00 │ │
│  │ Química sanguínea 6 elementos      │       $450.00 │ │
│  │ Paracetamol 500mg x 20             │       $120.00 │ │
│  │ Amoxicilina 500mg x 21             │       $280.00 │ │
│  ├────────────────────────────────────┼───────────────┤ │
│  │ SUBTOTAL                           │     $2,000.00 │ │
│  │ IVA (16%)                          │         $0.00 │ │
│  │ ─────────────────────────────────────────────────  │ │
│  │ TOTAL                              │     $2,000.00 │ │
│  └────────────────────────────────────┴───────────────┘ │
│                                                         │
│  COBERTURA SEGURO                                       │
│  ├── Aseguradora: GNP Seguros                           │
│  ├── Póliza: 1234567                                    │
│  ├── Cobertura consulta: 100%                           │
│  ├── Cobertura laboratorio: 80%                         │
│  └── Copago paciente: $160.00                           │
│                                                         │
│  FORMA DE PAGO                                          │
│  ├── Cargo a seguro: $1,840.00                          │
│  └── Copago paciente: $160.00 (Pagado TDC)              │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Generar cuenta con servicios
- [ ] Cobrar con múltiples formas de pago
- [ ] Facturación CFDI 4.0
- [ ] Facturación a aseguradoras
- [ ] Notas de crédito
- [ ] Portal de pagos
- [ ] Cuentas por cobrar
- [ ] Reportes de ingresos

**No Funcionales:**
- [ ] Timbrado < 5 segundos
- [ ] Historial de 5 años
- [ ] Cumplimiento fiscal

**Tecnicos:**
- [ ] Integración con PAC
- [ ] Integración con todos los módulos
- [ ] Pasarela de pagos
- [ ] Reportes financieros

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-003 Citas | Backlog | Parcial |
| EPIC-CL-004 Consultas | Backlog | Parcial |
| EPIC-CL-006 Laboratorio | Backlog | Parcial |
| EPIC-CL-007 Farmacia | Backlog | Parcial |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `billing`
- [ ] Tablas: 8 (accounts, account_items, payments, invoices, invoice_items, insurance_claims, price_lists, services)
- [ ] Funciones: 3 (calculate_account, generate_invoice, process_payment)
- [ ] Indices: Por paciente, fecha, estado, aseguradora

**Backend:**
- [ ] Modulo: `billing`
- [ ] Entities: 7 (Account, AccountItem, Payment, Invoice, InvoiceItem, InsuranceClaim, Service)
- [ ] Endpoints: 15
- [ ] Tests: 30

**Frontend:**
- [ ] Paginas: 5 (Accounts, Checkout, InvoiceList, InsuranceClaims, Reports)
- [ ] Componentes: 12 (AccountSummary, PaymentForm, InvoiceViewer, ClaimTracker, etc.)
- [ ] Stores: 1 (billingStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/billing/accounts/:patientId | Cuenta del paciente |
| POST | /api/billing/accounts/:id/items | Agregar servicio |
| POST | /api/billing/accounts/:id/pay | Registrar pago |
| POST | /api/billing/invoices | Generar factura |
| GET | /api/billing/invoices/:id/pdf | Descargar PDF |
| POST | /api/billing/invoices/:id/cancel | Cancelar factura |
| POST | /api/billing/credit-notes | Crear nota de crédito |
| POST | /api/billing/insurance-claims | Crear reclamación |
| GET | /api/billing/pending | Cuentas por cobrar |
| GET | /api/billing/reports/income | Reporte de ingresos |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Rechazo de aseguradora | Media | Alto | Expediente completo |
| Errores en facturación | Media | Alto | Validaciones antes de timbrar |
| Morosidad | Media | Medio | Seguimiento de cuentas |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Lista de precios definida
- [ ] Convenios con aseguradoras documentados

## Definition of Done (DoD)

- [ ] Flujo de cobro funcionando
- [ ] Facturación CFDI operativa
- [ ] Facturación a aseguradoras
- [ ] Reportes financieros
- [ ] Tests de integración pasando
- [ ] Documentación de API

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-08 | Creacion de epica | Claude-Agent |

---

**Creada por:** Claude-Agent
**Fecha:** 2025-12-08
**Ultima actualizacion:** 2025-12-08
