# EPICA: EPIC-CL-007 - Farmacia

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-007 |
| **Nombre** | Farmacia |
| **Modulo** | farmacia |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 40 |
| **Sprint(s)** | Sprint 7-8 |

---

## Descripcion

Gestión de farmacia clínica. Control de inventario de medicamentos, surtido de recetas, dispensación, control de caducidades, medicamentos controlados y punto de venta de farmacia.

---

## Objetivo de Negocio

- Control de inventario de medicamentos
- Surtido rápido de recetas
- Evitar merma por caducidad
- Cumplimiento de medicamentos controlados
- Rentabilidad de farmacia

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL007-001 | Como farmacéutico, quiero ver recetas pendientes de surtir | P0 | 3 | Backlog |
| US-CL007-002 | Como farmacéutico, quiero verificar stock antes de surtir | P0 | 3 | Backlog |
| US-CL007-003 | Como farmacéutico, quiero dispensar medicamentos registrando lote | P0 | 5 | Backlog |
| US-CL007-004 | Como farmacéutico, quiero cobrar la receta surtida | P0 | 5 | Backlog |
| US-CL007-005 | Como farmacéutico, quiero recibir mercancía de proveedor | P0 | 5 | Backlog |
| US-CL007-006 | Como farmacéutico, quiero ver alertas de medicamentos próximos a caducar | P0 | 3 | Backlog |
| US-CL007-007 | Como farmacéutico, quiero registrar salidas de medicamentos controlados | P0 | 5 | Backlog |
| US-CL007-008 | Como admin, quiero ver reporte de ventas de farmacia | P1 | 3 | Backlog |
| US-CL007-009 | Como admin, quiero realizar inventario físico de medicamentos | P1 | 5 | Backlog |
| US-CL007-010 | Como admin, quiero configurar márgenes de ganancia por categoría | P2 | 3 | Backlog |

**Total Story Points:** 40 SP

---

## Flujo de Dispensación

```
┌─────────────┐
│   RECETA    │  ← Receta electrónica del médico
└──────┬──────┘
       │
       ▼
┌─────────────┐
│ VERIFICAR   │  ← Verificar stock disponible
│   STOCK     │
└──────┬──────┘
       │
       ├── No hay stock ──► Notificar faltante
       │
       ▼
┌─────────────┐
│  PREPARAR   │  ← Tomar medicamentos de anaquel
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  VERIFICAR  │  ← Doble chequeo
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   COBRAR    │  ← Proceso de pago
└──────┬──────┘
       │
       ▼
┌─────────────┐
│  ENTREGAR   │  ← Dispensar al paciente
└─────────────┘
```

---

## Control de Medicamentos

```
┌─────────────────────────────────────────────────────────┐
│              CONTROL DE INVENTARIO                      │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  TRAZABILIDAD                                           │
│  ├── Código de producto                                 │
│  ├── Lote                                               │
│  ├── Fecha de caducidad                                 │
│  ├── Proveedor                                          │
│  └── Fecha de entrada                                   │
│                                                         │
│  ALERTAS DE CADUCIDAD                                   │
│  ├── 🔴 Caducados (vencidos)                            │
│  ├── 🟠 < 30 días para vencer                           │
│  ├── 🟡 < 90 días para vencer                           │
│  └── Sugerencia: Promoción o devolución                 │
│                                                         │
│  MEDICAMENTOS CONTROLADOS                               │
│  ├── Libro de registro (físico y digital)               │
│  ├── Receta foliada obligatoria                         │
│  ├── Control de existencias exactas                     │
│  ├── Auditoría de movimientos                           │
│  └── Reportes para COFEPRIS                             │
│                                                         │
└─────────────────────────────────────────────────────────┘
```

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] Ver recetas pendientes
- [ ] Verificar stock
- [ ] Dispensar con lote y caducidad
- [ ] Cobro de receta
- [ ] Recepción de mercancía
- [ ] Alertas de caducidad
- [ ] Control de medicamentos controlados
- [ ] Inventario físico

**No Funcionales:**
- [ ] Dispensación < 3 minutos
- [ ] Trazabilidad 100% de lotes
- [ ] Cumplimiento COFEPRIS

**Tecnicos:**
- [ ] Integración con recetas
- [ ] Integración con facturación
- [ ] Lector de código de barras
- [ ] Reportes para autoridades

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-005 Recetas | Backlog | Si |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-008 Facturación | Ventas de farmacia |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `pharmacy`
- [ ] Tablas: 8 (products, stock, stock_movements, dispensations, dispensation_items, controlled_log, suppliers, physical_counts)
- [ ] Funciones: 3 (check_expiry, update_stock, log_controlled)
- [ ] Indices: Por producto, lote, caducidad, proveedor

**Backend:**
- [ ] Modulo: `pharmacy`
- [ ] Entities: 6 (Product, Stock, StockMovement, Dispensation, DispensationItem, ControlledLog)
- [ ] Endpoints: 15
- [ ] Tests: 30

**Frontend:**
- [ ] Paginas: 5 (PendingPrescriptions, Dispensation, Inventory, ExpiryAlerts, ControlledLog)
- [ ] Componentes: 12 (PrescriptionCard, StockChecker, BarcodeScanner, ExpiryCalendar, etc.)
- [ ] Stores: 1 (pharmacyStore)

---

## Endpoints API

| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/pharmacy/prescriptions/pending | Recetas pendientes |
| GET | /api/pharmacy/stock/:productId | Verificar stock |
| POST | /api/pharmacy/dispensations | Registrar dispensación |
| POST | /api/pharmacy/receipts | Recibir mercancía |
| GET | /api/pharmacy/expiry-alerts | Alertas de caducidad |
| POST | /api/pharmacy/controlled-log | Registrar movimiento controlado |
| POST | /api/pharmacy/physical-count | Inventario físico |
| GET | /api/pharmacy/reports/sales | Reporte de ventas |

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Merma por caducidad | Media | Medio | Alertas tempranas |
| Error en dispensación | Baja | Alto | Doble verificación |
| Faltantes de controlados | Baja | Alto | Auditorías frecuentes |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo de medicamentos definido
- [ ] Proceso de controlados documentado

## Definition of Done (DoD)

- [ ] Flujo de dispensación funcionando
- [ ] Control de lotes y caducidad
- [ ] Registro de controlados
- [ ] Alertas de caducidad activas
- [ ] 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
