Initial commit - erp-clinicas

This commit is contained in:
rckrdmrd 2026-01-04 06:12:11 -06:00
commit a774b00839
63 changed files with 8413 additions and 0 deletions

182
.env.example Normal file
View File

@ -0,0 +1,182 @@
# ===========================================
# CLINICAS - Variables de Entorno
# ===========================================
# Copiar este archivo a .env y configurar valores
# Puertos según DEVENV-PORTS.md
# NOTA: Este sistema requiere cumplimiento NOM-024 y LFPDPPP
# -------------------------------------------
# BASE DE DATOS POSTGRESQL
# -------------------------------------------
DB_HOST=localhost
DB_PORT=5437
DB_NAME=clinicas_db
DB_USER=clinicas_user
DB_PASSWORD=clinicas_secret_2025
# URL de conexion completa
DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
# -------------------------------------------
# SCHEMAS DE BASE DE DATOS
# -------------------------------------------
# Schemas heredados de erp-core
DB_SCHEMA_AUTH=auth
DB_SCHEMA_CORE=core
DB_SCHEMA_INVENTORY=inventory
# Schemas propios de clínicas
DB_SCHEMA_CLINICAL=clinical
DB_SCHEMA_PHARMACY=pharmacy
DB_SCHEMA_LABORATORY=laboratory
DB_SCHEMA_IMAGING=imaging
DB_SCHEMA_TELEMEDICINE=telemedicine
# -------------------------------------------
# APLICACION
# -------------------------------------------
APP_NAME=clinicas
APP_ENV=development
APP_PORT=3061
APP_URL=http://localhost:3061
# -------------------------------------------
# FRONTEND
# -------------------------------------------
FRONTEND_PORT=3060
FRONTEND_URL=http://localhost:3060
# -------------------------------------------
# AUTENTICACION JWT
# -------------------------------------------
JWT_SECRET=your_jwt_secret_here_change_in_production
JWT_EXPIRES_IN=8h
JWT_REFRESH_EXPIRES_IN=24h
# -------------------------------------------
# TWO-FACTOR AUTHENTICATION (OBLIGATORIO)
# -------------------------------------------
# Requerido para personal médico según LFPDPPP
TWO_FACTOR_ENABLED=true
TWO_FACTOR_METHOD=totp
TOTP_ISSUER=ERP-Clinicas
TOTP_WINDOW=1
# SMS 2FA (Twilio)
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_PHONE_FROM=
# -------------------------------------------
# ENCRIPTACION DE DATOS SENSIBLES (LFPDPPP)
# -------------------------------------------
# CRITICO: Cambiar en producción
ENCRYPTION_KEY=your_32_byte_encryption_key_here
ENCRYPTION_ALGORITHM=aes-256-gcm
ENCRYPTION_IV_LENGTH=16
# Campos encriptados automáticamente:
# - antecedentes_medicos
# - alergias
# - diagnosticos
# - notas_clinicas
# -------------------------------------------
# MULTI-TENANT
# -------------------------------------------
TENANT_ID_HEADER=X-Tenant-ID
TENANT_ID_PARAM=tenant_id
# -------------------------------------------
# ALMACENAMIENTO DE ARCHIVOS
# -------------------------------------------
STORAGE_TYPE=local
STORAGE_PATH=./uploads
# Para producción usar S3 con encriptación:
# STORAGE_TYPE=s3
# AWS_ACCESS_KEY_ID=
# AWS_SECRET_ACCESS_KEY=
# AWS_REGION=us-east-1
# AWS_S3_BUCKET=clinicas-files
# AWS_S3_ENCRYPTION=AES256
# -------------------------------------------
# NOTIFICACIONES
# -------------------------------------------
# Email (SMTP)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM=noreply@clinicas-erp.com
# SMS para recordatorios de citas
SMS_PROVIDER=twilio
SMS_REMINDER_HOURS_BEFORE=24
# -------------------------------------------
# FACTURACION ELECTRONICA (SAT)
# -------------------------------------------
SAT_ENVIRONMENT=sandbox
SAT_RFC=
SAT_CER_PATH=./certs/csd.cer
SAT_KEY_PATH=./certs/csd.key
SAT_KEY_PASSWORD=
# -------------------------------------------
# LOGGING Y AUDITORIA
# -------------------------------------------
LOG_LEVEL=debug
LOG_FORMAT=json
# Auditoría de accesos (NOM-024)
AUDIT_ENABLED=true
AUDIT_RETENTION_YEARS=10
AUDIT_LOG_MEDICAL_RECORD_ACCESS=true
AUDIT_LOG_PRESCRIPTION_CREATED=true
AUDIT_LOG_PATIENT_DATA_MODIFIED=true
# -------------------------------------------
# REDIS (Cache y Colas)
# -------------------------------------------
REDIS_HOST=localhost
REDIS_PORT=6384
REDIS_PASSWORD=
# -------------------------------------------
# CORS
# -------------------------------------------
CORS_ORIGIN=http://localhost:3060,http://localhost:3061
# -------------------------------------------
# EXPEDIENTE CLINICO (NOM-024-SSA3-2012)
# -------------------------------------------
# Estructura SOAP obligatoria
NOM024_SOAP_REQUIRED=true
NOM024_CIE10_VALIDATION=true
NOM024_PRESCRIPTION_SIGNATURE_REQUIRED=true
NOM024_CONSENT_REQUIRED=true
# -------------------------------------------
# TELEMEDICINA (Opcional)
# -------------------------------------------
TELEMEDICINE_ENABLED=false
TELEMEDICINE_PROVIDER=jitsi
TELEMEDICINE_SERVER_URL=
TELEMEDICINE_RECORDING_ENABLED=false
# -------------------------------------------
# IMAGENOLOGIA DICOM (Opcional)
# -------------------------------------------
DICOM_ENABLED=false
DICOM_SERVER_HOST=
DICOM_SERVER_PORT=4242
DICOM_AE_TITLE=CLINICAS_ERP
# -------------------------------------------
# INTEROPERABILIDAD (HL7/FHIR)
# -------------------------------------------
HL7_ENABLED=false
HL7_ENDPOINT=
FHIR_ENABLED=false
FHIR_SERVER_URL=

31
INVENTARIO.yml Normal file
View File

@ -0,0 +1,31 @@
# Inventario generado por EPIC-008
proyecto: erp-clinicas
fecha: "2026-01-04"
generado_por: "inventory-project.sh v1.0.0"
inventario:
docs:
total: 27
por_tipo:
markdown: 27
yaml: 0
json: 0
orchestration:
total: 23
por_tipo:
markdown: 14
yaml: 9
json: 0
problemas:
archivos_obsoletos: 0
referencias_antiguas: 0
simco_faltantes:
- _MAP.md en docs/
- PROJECT-STATUS.md
estado_simco:
herencia_simco: true
contexto_proyecto: true
map_docs: false
project_status: false

178
PROJECT-STATUS.md Normal file
View File

@ -0,0 +1,178 @@
# ESTADO DEL PROYECTO - ERP Clínicas
**Proyecto:** ERP Clínicas (Proyecto Independiente)
**Estado:** 📋 En planificación
**Progreso:** 25%
**Última actualización:** 2025-12-08
---
## 📊 RESUMEN EJECUTIVO
| Área | Estado | Descripción |
|------|--------|-------------|
| **Documentación** | 🟡 Inicial | 12 módulos definidos, estructura base |
| **DDL/Schemas** | ❌ No iniciado | Pendiente diseño de BD |
| **Backend** | ❌ No iniciado | Pendiente desarrollo |
| **Frontend** | ❌ No iniciado | Pendiente desarrollo |
---
## 📋 MÓDULOS DEFINIDOS (12)
| Código | Nombre | Descripción | Reutilización | Estado |
|--------|--------|-------------|---------------|--------|
| CL-001 | Fundamentos | Auth, Users, Tenants | 100% core | PLANIFICADO |
| CL-002 | Pacientes | Registro y expediente | 20% core | PLANIFICADO |
| CL-003 | Citas | Agenda médica | 30% core | PLANIFICADO |
| CL-004 | Consultas | Notas médicas | 0% (nuevo) | PLANIFICADO |
| CL-005 | Recetas | Prescripciones | 10% core | PLANIFICADO |
| CL-006 | Laboratorio | Estudios y resultados | 10% core | PLANIFICADO |
| CL-007 | Farmacia | Inventario medicamentos | 60% core | PLANIFICADO |
| CL-008 | Facturación | Cobros y seguros | 50% core | PLANIFICADO |
| CL-009 | Reportes | Estadísticas clínicas | 60% core | PLANIFICADO |
| CL-010 | Telemedicina | Consultas remotas | 0% (nuevo) | PLANIFICADO |
| CL-011 | Expediente | Historia clínica completa | 10% core | PLANIFICADO |
| CL-012 | Imagenología | Estudios DICOM | 5% core | PLANIFICADO |
**Story Points Estimados:** 451 SP (detallado en épicas)
---
## 🏥 DOMINIO DE NEGOCIO
### Modelo de Negocio
- Clínicas y consultorios médicos
- Consultas presenciales y telemedicina
- Expediente clínico electrónico
- Integración con laboratorios e imagen
### Proceso Principal
```
Cita → Check-in → Consulta → Diagnóstico → Receta → Facturación
Estudios (Lab/Imagen)
Expediente Clínico
```
### Cumplimiento Normativo
- NOM-024-SSA3-2012 (Expediente clínico)
- NOM-004-SSA3-2012 (Sistemas de información)
- NOM-151-SCFI-2016 (Firma electrónica)
- CIE-10 (Codificación de diagnósticos)
---
## 📁 ESTRUCTURA DE DOCUMENTACIÓN
```
docs/
├── 00-vision-general/
│ └── VISION-CLINICAS.md ✅
├── 02-definicion-modulos/
│ ├── INDICE-MODULOS.md ✅
│ ├── CL-001-fundamentos/README.md ✅
│ ├── CL-002-pacientes/README.md ✅
│ ├── CL-003-citas/README.md ✅
│ ├── CL-004-consultas/README.md ✅
│ ├── CL-005-recetas/README.md ✅
│ ├── CL-006-laboratorio/README.md ✅
│ ├── CL-007-farmacia/README.md ✅
│ ├── CL-008-facturacion/README.md ✅
│ ├── CL-009-reportes/README.md ✅
│ ├── CL-010-telemedicina/README.md ✅
│ ├── CL-011-expediente/README.md ✅
│ └── CL-012-imagenologia/README.md ✅
└── 08-epicas/
└── EPIC-CL-001-fundamentos.md ✅
```
---
## 🎯 PRÓXIMOS PASOS
### Fase 1: Documentación Detallada
1. [ ] Crear épicas completas (EPIC-CL-002 a 012)
2. [ ] Documentar User Stories por módulo
3. [ ] Definir requerimientos funcionales (RF)
4. [ ] Crear especificaciones técnicas (ET)
5. [ ] Documentar cumplimiento normativo
### Fase 2: Diseño de Base de Datos
6. [ ] Diseñar schemas de BD
7. [ ] Implementar DDL
8. [ ] Documentar modelo de datos
### Fase 3: Desarrollo
9. [ ] Implementar backend (TypeScript/Express)
10. [ ] Implementar frontend (React)
11. [ ] Integración telemedicina (WebRTC)
12. [ ] Integración DICOM
13. [ ] Testing
---
## 📈 MÉTRICAS
| Métrica | Valor |
|---------|-------|
| Módulos definidos | 12 |
| Épicas creadas | 12/12 ✅ |
| User Stories | 0 (pendiente) |
| Story Points | 451 |
| Archivos MD | 31 |
| Archivos SQL | 0 |
| Archivos TS | 0 |
---
## 🏗️ ARQUITECTURA
**Tipo:** Proyecto Independiente (fork conceptual del ERP-Core)
**Patrones a reutilizar del ERP-Core:**
- Multi-tenancy con RLS (para cadenas de clínicas)
- Estructura de autenticación con 2FA obligatorio
- Patrones de inventario (farmacia)
- Sistema de reportes
**Módulos 100% nuevos:**
- CL-004: Consultas (notas médicas estructuradas)
- CL-010: Telemedicina (videoconsultas WebRTC)
- CL-012: Imagenología (visor DICOM)
**Integraciones externas:**
- Proveedores de videollamadas (Twilio, Zoom API)
- Servidores PACS para imagen médica
- Servicios de timbrado CFDI
**Opera de forma autónoma:** No requiere ERP-Core instalado
---
## ⚠️ CONSIDERACIONES ESPECIALES
### Seguridad de Datos Médicos
- Encriptación de datos sensibles (expedientes)
- Auditoría completa de accesos
- Consentimiento informado digital
- Respaldo automático de expedientes
### Cumplimiento Normativo
- Implementar estructura de NOM-024-SSA3-2012
- Firma electrónica para recetas (NOM-151)
- Codificación CIE-10 para diagnósticos
---
## 🔗 REFERENCIAS
- Índice de módulos: `docs/02-definicion-modulos/INDICE-MODULOS.md`
- Visión: `docs/00-vision-general/VISION-CLINICAS.md`
- SPECS heredadas: `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`
- Directivas: `orchestration/directivas/`
---
**Última actualización:** 2025-12-08

36
README.md Normal file
View File

@ -0,0 +1,36 @@
# ERP Clinicas
Sistema ERP especializado para gestion de clinicas y centros medicos.
## Descripcion
Vertical del sistema ERP-Core adaptado para el sector salud, con funcionalidades especificas para:
- Gestion de pacientes
- Citas y agenda medica
- Historias clinicas
- Facturacion de servicios medicos
- Inventario de insumos medicos
## Estructura
```
erp-clinicas/
├── docs/ # Documentacion del proyecto
├── orchestration/ # Configuracion de orquestacion SIMCO
└── apps/ # Aplicaciones (si aplica)
```
## Estado
Este proyecto hereda del nucleo ERP-Core y aplica las directivas SIMCO del workspace.
## Referencias
- ERP-Core: Nucleo base del sistema
- ERP-Suite: Suite completa de ERP
- Directivas SIMCO: Ver orchestration/00-guidelines/
---
**Sistema:** NEXUS v3.4
**Tipo:** Vertical ERP

View File

@ -0,0 +1,222 @@
# Herencia de Base de Datos - ERP Core -> Clínicas
**Fecha:** 2025-12-08
**Versión:** 1.0
**Vertical:** Clínicas
**Nivel:** 2B.2
---
## RESUMEN
La vertical de Clínicas hereda los schemas base del ERP Core y extiende con schemas específicos del dominio de gestión médica y expediente clínico.
**Ubicación DDL Core:** `apps/erp-core/database/ddl/`
---
## ARQUITECTURA DE HERENCIA
```
┌─────────────────────────────────────────────────────────────────┐
│ ERP CORE (Base) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ auth │ │ core │ │financial│ │inventory│ │ hr │ │
│ │ 26 tbl │ │ 12 tbl │ │ 15 tbl │ │ 15 tbl │ │ 6 tbl │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ sales │ │analytics│ │ system │ │ crm │ │
│ │ 6 tbl │ │ 5 tbl │ │ 10 tbl │ │ 5 tbl │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ TOTAL: ~100 tablas heredadas │
└─────────────────────────────────────────────────────────────────┘
│ HEREDA
┌─────────────────────────────────────────────────────────────────┐
│ CLÍNICAS (Extensiones) │
│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
│ │ medical │ │ appointments │ │ patients │ │
│ │ (expediente) │ │ (citas) │ │ (pacientes) │ │
│ └───────────────┘ └───────────────┘ └───────────────┘ │
│ EXTENSIONES: ~35 tablas (planificadas) │
└─────────────────────────────────────────────────────────────────┘
```
---
## SCHEMAS HEREDADOS DEL CORE
| Schema | Tablas | Uso en Clínicas |
|--------|--------|-----------------|
| `auth` | 26 | Autenticación, usuarios médicos |
| `core` | 12 | Partners (pacientes), catálogos |
| `financial` | 15 | Facturas de servicios médicos |
| `inventory` | 15 | Medicamentos, insumos |
| `hr` | 6 | Personal médico |
| `sales` | 6 | Servicios médicos |
| `crm` | 5 | Seguimiento de pacientes |
| `analytics` | 5 | Estadísticas médicas |
| `system` | 10 | Recordatorios, notificaciones |
**Total heredado:** ~100 tablas
---
## SCHEMAS ESPECÍFICOS DE CLÍNICAS (Planificados)
### 1. Schema `patients` (estimado 10+ tablas)
**Propósito:** Gestión de pacientes
```sql
-- Tablas principales planificadas:
patients.patients -- Pacientes (extiende core.partners)
patients.patient_contacts -- Contactos de emergencia
patients.insurance_policies -- Pólizas de seguro
patients.medical_history -- Antecedentes médicos
patients.allergies -- Alergias
patients.family_history -- Antecedentes familiares
```
### 2. Schema `medical` (estimado 15+ tablas)
**Propósito:** Expediente clínico electrónico
```sql
-- Tablas principales planificadas:
medical.consultations -- Consultas médicas
medical.diagnoses -- Diagnósticos (CIE-10)
medical.prescriptions -- Recetas médicas
medical.prescription_lines -- Medicamentos recetados
medical.vital_signs -- Signos vitales
medical.lab_results -- Resultados de laboratorio
medical.imaging_studies -- Estudios de imagen
medical.clinical_notes -- Notas clínicas
medical.treatments -- Tratamientos
```
### 3. Schema `appointments` (estimado 10+ tablas)
**Propósito:** Gestión de citas
```sql
-- Tablas principales planificadas:
appointments.doctors -- Médicos
appointments.specialties -- Especialidades
appointments.doctor_schedules -- Horarios de médicos
appointments.consulting_rooms -- Consultorios
appointments.appointments -- Citas
appointments.appointment_types -- Tipos de cita
appointments.reminders -- Recordatorios
```
---
## SPECS DEL CORE APLICABLES
**Documento detallado:** `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`
### Correcciones de DDL Core (2025-12-08)
El DDL del ERP-Core fue corregido para resolver FK inválidas:
1. **stock_valuation_layers**: Campos `journal_entry_id` y `journal_entry_line_id` (antes `account_move_*`)
2. **stock_move_consume_rel**: Nueva tabla de trazabilidad (antes `move_line_consume_rel`)
3. **category_stock_accounts**: FK corregida a `core.product_categories`
4. **product_categories**: ALTERs ahora apuntan a schema `core`
### SPECS Obligatorias
| Spec Core | Aplicación en Clínicas | SP | Estado |
|-----------|----------------------|----:|--------|
| SPEC-SISTEMA-SECUENCIAS | Foliado de expedientes y citas | 8 | ✅ DDL LISTO |
| SPEC-SEGURIDAD-API-KEYS-PERMISOS | Control de acceso a expedientes | 31 | ✅ DDL LISTO |
| SPEC-INTEGRACION-CALENDAR | Agenda de citas médicas | 8 | PENDIENTE |
| SPEC-RRHH-EVALUACIONES-SKILLS | Credenciales médicas | 26 | ✅ DDL LISTO |
| SPEC-MAIL-THREAD-TRACKING | Historial de comunicación | 13 | ✅ DDL LISTO |
| SPEC-WIZARD-TRANSIENT-MODEL | Wizards de receta y referencia | 8 | PENDIENTE |
| SPEC-FIRMA-ELECTRONICA-NOM151 | Firma de expedientes clínicos | 13 | PENDIENTE |
| SPEC-TWO-FACTOR-AUTHENTICATION | Seguridad de acceso | 13 | ✅ DDL LISTO |
| SPEC-OAUTH2-SOCIAL-LOGIN | Portal de pacientes | 8 | ✅ DDL LISTO |
### SPECS Opcionales
| Spec Core | Decisión | Razón |
|-----------|----------|-------|
| SPEC-VALORACION-INVENTARIO | EVALUAR | Solo si hay farmacia interna |
| SPEC-PRICING-RULES | EVALUAR | Para paquetes de servicios |
| SPEC-TAREAS-RECURRENTES | EVALUAR | Para citas periódicas |
### SPECS No Aplican
| Spec Core | Razón |
|-----------|-------|
| SPEC-PORTAL-PROVEEDORES | No hay compras complejas |
| SPEC-BLANKET-ORDERS | No aplica en servicios médicos |
| SPEC-INVENTARIOS-CICLICOS | Solo si hay farmacia grande |
| SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | No hay proyectos de este tipo |
### Cumplimiento Normativo
| Norma | Descripción | SPECS Relacionadas |
|-------|-------------|-------------------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | SPEC-SEGURIDAD, SPEC-MAIL-THREAD |
| LFPDPPP | Protección de datos personales | SPEC-SEGURIDAD, SPEC-2FA |
| NOM-004-SSA3-2012 | Expediente clínico | SPEC-FIRMA-ELECTRONICA |
---
## CUMPLIMIENTO NORMATIVO
Este sistema debe cumplir con:
| Norma | Descripción | Impacto |
|-------|-------------|---------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | Estructura de datos |
| LFPDPPP | Protección de datos personales | Seguridad y acceso |
| NOM-004-SSA3-2012 | Expediente clínico | Contenido mínimo |
---
## ORDEN DE EJECUCIÓN DDL (Futuro)
```bash
# PASO 1: Cargar ERP Core (base)
cd apps/erp-core/database
./scripts/reset-database.sh --force
# PASO 2: Cargar extensiones de Clínicas
cd apps/verticales/clinicas/database
psql $DATABASE_URL -f init/00-extensions.sql
psql $DATABASE_URL -f init/01-create-schemas.sql
psql $DATABASE_URL -f init/02-patients-tables.sql
psql $DATABASE_URL -f init/03-medical-tables.sql
psql $DATABASE_URL -f init/04-appointments-tables.sql
```
---
## MAPEO DE NOMENCLATURA
| Core | Clínicas |
|------|----------|
| `core.partners` | Pacientes base |
| `hr.employees` | Personal médico |
| `inventory.products` | Medicamentos, insumos |
| `sales.sale_orders` | Servicios médicos |
| `financial.invoices` | Facturas de consultas |
---
## REFERENCIAS
- ERP Core DDL: `apps/erp-core/database/ddl/`
- ERP Core README: `apps/erp-core/database/README.md`
- Directivas: `orchestration/directivas/`
- Inventarios: `orchestration/inventarios/`
---
**Documento de herencia oficial**
**Última actualización:** 2025-12-08

83
database/README.md Normal file
View File

@ -0,0 +1,83 @@
# Base de Datos - ERP Clínicas
## Resumen
| Aspecto | Valor |
|---------|-------|
| **Schema principal** | `clinica` |
| **Tablas específicas** | 13 |
| **ENUMs** | 4 |
| **Hereda de ERP-Core** | 144 tablas (12 schemas) |
## Prerequisitos
1. **ERP-Core instalado** con todos sus schemas:
- auth, core, financial, inventory, purchase, sales, projects, analytics, system, billing, crm, hr
2. **Extensiones PostgreSQL**:
- pgcrypto (encriptación)
- pg_trgm (búsqueda de texto)
## Orden de Ejecución DDL
```bash
# 1. Instalar ERP-Core primero
cd apps/erp-core/database
./scripts/reset-database.sh
# 2. Instalar extensión Clínicas
cd apps/verticales/clinicas/database
psql $DATABASE_URL -f init/00-extensions.sql
psql $DATABASE_URL -f init/01-create-schemas.sql
psql $DATABASE_URL -f init/02-rls-functions.sql
psql $DATABASE_URL -f init/03-clinical-tables.sql
psql $DATABASE_URL -f init/04-seed-data.sql
```
## Tablas Implementadas
### Schema: clinica (13 tablas)
| Tabla | Módulo | Descripción |
|-------|--------|-------------|
| specialties | CL-002 | Catálogo de especialidades médicas |
| doctors | CL-002 | Médicos (extiende hr.employees) |
| patients | CL-001 | Pacientes (extiende core.partners) |
| patient_contacts | CL-001 | Contactos de emergencia |
| patient_insurance | CL-001 | Información de seguros |
| appointment_slots | CL-002 | Horarios disponibles |
| appointments | CL-002 | Citas médicas |
| medical_records | CL-003 | Expediente clínico electrónico |
| consultations | CL-003 | Consultas realizadas |
| vital_signs | CL-003 | Signos vitales |
| diagnoses | CL-003 | Diagnósticos (CIE-10) |
| prescriptions | CL-003 | Recetas médicas |
| prescription_items | CL-003 | Medicamentos en receta |
## ENUMs
| Enum | Valores |
|------|---------|
| appointment_status | scheduled, confirmed, in_progress, completed, cancelled, no_show |
| patient_gender | male, female, other, prefer_not_to_say |
| blood_type | A+, A-, B+, B-, AB+, AB-, O+, O-, unknown |
| consultation_status | draft, in_progress, completed, cancelled |
## Row Level Security
Todas las tablas tienen RLS habilitado con aislamiento por tenant:
```sql
tenant_id = current_setting('app.current_tenant_id', true)::UUID
```
## Consideraciones de Seguridad
- **NOM-024-SSA3-2012**: Expediente clínico electrónico
- **Datos sensibles**: medical_records, consultations requieren encriptación
- **Auditoría completa**: Todas las tablas tienen campos de auditoría
## Referencias
- [HERENCIA-ERP-CORE.md](./HERENCIA-ERP-CORE.md)
- [DATABASE_INVENTORY.yml](../orchestration/inventarios/DATABASE_INVENTORY.yml)

View File

@ -0,0 +1,25 @@
-- ============================================================================
-- EXTENSIONES PostgreSQL - ERP Clínicas
-- ============================================================================
-- Versión: 1.0.0
-- Fecha: 2025-12-09
-- Prerequisito: ERP-Core debe estar instalado
-- ============================================================================
-- Verificar que ERP-Core esté instalado
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_namespace WHERE nspname = 'auth') THEN
RAISE EXCEPTION 'ERP-Core no instalado. Ejecutar primero DDL de erp-core.';
END IF;
END $$;
-- Extensión para encriptación de datos sensibles (expedientes médicos)
CREATE EXTENSION IF NOT EXISTS pgcrypto;
-- Extensión para búsqueda de texto (diagnósticos CIE-10)
CREATE EXTENSION IF NOT EXISTS pg_trgm;
-- ============================================================================
-- FIN EXTENSIONES
-- ============================================================================

View File

@ -0,0 +1,15 @@
-- ============================================================================
-- SCHEMAS - ERP Clínicas
-- ============================================================================
-- Versión: 1.0.0
-- Fecha: 2025-12-09
-- ============================================================================
-- Schema principal para operaciones clínicas
CREATE SCHEMA IF NOT EXISTS clinica;
COMMENT ON SCHEMA clinica IS 'Schema para operaciones de clínica/consultorio médico';
-- ============================================================================
-- FIN SCHEMAS
-- ============================================================================

View File

@ -0,0 +1,37 @@
-- ============================================================================
-- FUNCIONES RLS - ERP Clínicas
-- ============================================================================
-- Versión: 1.0.0
-- Fecha: 2025-12-09
-- Nota: Usa las funciones de contexto de ERP-Core (auth schema)
-- ============================================================================
-- Las funciones principales están en ERP-Core:
-- auth.get_current_tenant_id()
-- auth.get_current_user_id()
-- auth.get_current_company_id()
-- Función auxiliar para verificar acceso a expediente médico
CREATE OR REPLACE FUNCTION clinica.can_access_medical_record(
p_patient_id UUID,
p_user_id UUID DEFAULT NULL
)
RETURNS BOOLEAN AS $$
DECLARE
v_user_id UUID;
v_has_access BOOLEAN := FALSE;
BEGIN
v_user_id := COALESCE(p_user_id, current_setting('app.current_user_id', true)::UUID);
-- TODO: Implementar lógica de permisos específicos
-- Por ahora, cualquier usuario del tenant puede acceder
RETURN TRUE;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
COMMENT ON FUNCTION clinica.can_access_medical_record IS
'Verifica si el usuario tiene permiso para acceder al expediente médico del paciente';
-- ============================================================================
-- FIN FUNCIONES RLS
-- ============================================================================

View File

@ -0,0 +1,628 @@
-- ============================================================================
-- TABLAS CLÍNICAS - ERP Clínicas
-- ============================================================================
-- Módulos: CL-001 (Pacientes), CL-002 (Citas), CL-003 (Expediente)
-- Versión: 1.0.0
-- Fecha: 2025-12-09
-- ============================================================================
-- PREREQUISITOS:
-- 1. ERP-Core instalado (auth.tenants, auth.users, core.partners)
-- 2. Schema clinica creado
-- ============================================================================
-- ============================================================================
-- TYPES (ENUMs)
-- ============================================================================
DO $$ BEGIN
CREATE TYPE clinica.appointment_status AS ENUM (
'scheduled', 'confirmed', 'in_progress', 'completed', 'cancelled', 'no_show'
);
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE clinica.patient_gender AS ENUM (
'male', 'female', 'other', 'prefer_not_to_say'
);
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE clinica.blood_type AS ENUM (
'A+', 'A-', 'B+', 'B-', 'AB+', 'AB-', 'O+', 'O-', 'unknown'
);
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
DO $$ BEGIN
CREATE TYPE clinica.consultation_status AS ENUM (
'draft', 'in_progress', 'completed', 'cancelled'
);
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
-- ============================================================================
-- CATÁLOGOS BASE
-- ============================================================================
-- Tabla: specialties (Especialidades médicas)
CREATE TABLE IF NOT EXISTS clinica.specialties (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
code VARCHAR(20) NOT NULL,
name VARCHAR(100) NOT NULL,
description TEXT,
consultation_duration INTEGER DEFAULT 30, -- minutos
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
CONSTRAINT uq_specialties_code UNIQUE (tenant_id, code)
);
-- Tabla: doctors (Médicos - extiende hr.employees)
CREATE TABLE IF NOT EXISTS clinica.doctors (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
employee_id UUID, -- FK a hr.employees (ERP Core)
user_id UUID REFERENCES auth.users(id),
specialty_id UUID NOT NULL REFERENCES clinica.specialties(id),
license_number VARCHAR(50) NOT NULL, -- Cédula profesional
license_expiry DATE,
secondary_specialties UUID[], -- Array de specialty_ids
consultation_fee DECIMAL(12,2),
is_active BOOLEAN NOT NULL DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
deleted_at TIMESTAMPTZ,
deleted_by UUID REFERENCES auth.users(id),
CONSTRAINT uq_doctors_license UNIQUE (tenant_id, license_number)
);
-- ============================================================================
-- PACIENTES (CL-001)
-- ============================================================================
-- Tabla: patients (Pacientes - extiende core.partners)
CREATE TABLE IF NOT EXISTS clinica.patients (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
partner_id UUID REFERENCES core.partners(id), -- Vinculo a partner
-- Identificación
patient_number VARCHAR(30) NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
middle_name VARCHAR(100),
-- Datos personales
birth_date DATE,
gender clinica.patient_gender,
curp VARCHAR(18),
-- Contacto
email VARCHAR(255),
phone VARCHAR(20),
mobile VARCHAR(20),
-- Dirección
street VARCHAR(255),
city VARCHAR(100),
state VARCHAR(100),
zip_code VARCHAR(10),
country VARCHAR(100) DEFAULT 'México',
-- Datos médicos básicos
blood_type clinica.blood_type DEFAULT 'unknown',
allergies TEXT[],
chronic_conditions TEXT[],
-- Seguro médico
has_insurance BOOLEAN DEFAULT FALSE,
insurance_provider VARCHAR(100),
insurance_policy VARCHAR(50),
-- Control
is_active BOOLEAN NOT NULL DEFAULT TRUE,
last_visit_date DATE,
-- Auditoría
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
deleted_at TIMESTAMPTZ,
deleted_by UUID REFERENCES auth.users(id),
CONSTRAINT uq_patients_number UNIQUE (tenant_id, patient_number)
);
-- Tabla: patient_contacts (Contactos de emergencia)
CREATE TABLE IF NOT EXISTS clinica.patient_contacts (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
patient_id UUID NOT NULL REFERENCES clinica.patients(id) ON DELETE CASCADE,
contact_name VARCHAR(200) NOT NULL,
relationship VARCHAR(50), -- Parentesco
phone VARCHAR(20),
mobile VARCHAR(20),
email VARCHAR(255),
is_primary BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id)
);
-- Tabla: patient_insurance (Información de seguros)
CREATE TABLE IF NOT EXISTS clinica.patient_insurance (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
patient_id UUID NOT NULL REFERENCES clinica.patients(id) ON DELETE CASCADE,
insurance_provider VARCHAR(100) NOT NULL,
policy_number VARCHAR(50) NOT NULL,
group_number VARCHAR(50),
holder_name VARCHAR(200),
holder_relationship VARCHAR(50),
coverage_type VARCHAR(50),
valid_from DATE,
valid_until DATE,
is_primary BOOLEAN DEFAULT TRUE,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id)
);
-- ============================================================================
-- CITAS (CL-002)
-- ============================================================================
-- Tabla: appointment_slots (Horarios disponibles)
CREATE TABLE IF NOT EXISTS clinica.appointment_slots (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
doctor_id UUID NOT NULL REFERENCES clinica.doctors(id),
day_of_week INTEGER NOT NULL CHECK (day_of_week BETWEEN 0 AND 6), -- 0=Domingo
start_time TIME NOT NULL,
end_time TIME NOT NULL,
slot_duration INTEGER DEFAULT 30, -- minutos
max_appointments INTEGER DEFAULT 1,
is_active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
CONSTRAINT chk_slot_times CHECK (end_time > start_time)
);
-- Tabla: appointments (Citas médicas)
CREATE TABLE IF NOT EXISTS clinica.appointments (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
-- Referencias
patient_id UUID NOT NULL REFERENCES clinica.patients(id),
doctor_id UUID NOT NULL REFERENCES clinica.doctors(id),
specialty_id UUID REFERENCES clinica.specialties(id),
-- Programación
appointment_date DATE NOT NULL,
start_time TIME NOT NULL,
end_time TIME NOT NULL,
duration INTEGER DEFAULT 30, -- minutos
-- Estado
status clinica.appointment_status NOT NULL DEFAULT 'scheduled',
-- Detalles
reason TEXT, -- Motivo de consulta
notes TEXT,
is_first_visit BOOLEAN DEFAULT FALSE,
is_follow_up BOOLEAN DEFAULT FALSE,
follow_up_to UUID REFERENCES clinica.appointments(id),
-- Recordatorios
reminder_sent BOOLEAN DEFAULT FALSE,
reminder_sent_at TIMESTAMPTZ,
-- Confirmación
confirmed_at TIMESTAMPTZ,
confirmed_by UUID REFERENCES auth.users(id),
-- Cancelación
cancelled_at TIMESTAMPTZ,
cancelled_by UUID REFERENCES auth.users(id),
cancellation_reason TEXT,
-- Auditoría
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
CONSTRAINT chk_appointment_times CHECK (end_time > start_time)
);
-- ============================================================================
-- EXPEDIENTE CLÍNICO (CL-003)
-- ============================================================================
-- Tabla: medical_records (Expediente clínico electrónico)
-- NOTA: Datos sensibles según NOM-024-SSA3-2012
CREATE TABLE IF NOT EXISTS clinica.medical_records (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
patient_id UUID NOT NULL REFERENCES clinica.patients(id),
-- Número de expediente
record_number VARCHAR(30) NOT NULL,
-- Antecedentes
family_history TEXT,
personal_history TEXT,
surgical_history TEXT,
-- Hábitos
smoking_status VARCHAR(50),
alcohol_status VARCHAR(50),
exercise_status VARCHAR(50),
diet_notes TEXT,
-- Gineco-obstétricos (si aplica)
obstetric_history JSONB,
-- Notas generales
notes TEXT,
-- Control de acceso
is_confidential BOOLEAN DEFAULT TRUE,
access_restricted BOOLEAN DEFAULT FALSE,
-- Auditoría
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
CONSTRAINT uq_medical_records_number UNIQUE (tenant_id, record_number),
CONSTRAINT uq_medical_records_patient UNIQUE (patient_id)
);
-- Tabla: consultations (Consultas realizadas)
CREATE TABLE IF NOT EXISTS clinica.consultations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
-- Referencias
medical_record_id UUID NOT NULL REFERENCES clinica.medical_records(id),
appointment_id UUID REFERENCES clinica.appointments(id),
doctor_id UUID NOT NULL REFERENCES clinica.doctors(id),
-- Fecha/hora
consultation_date DATE NOT NULL,
start_time TIMESTAMPTZ,
end_time TIMESTAMPTZ,
-- Estado
status clinica.consultation_status DEFAULT 'draft',
-- Motivo de consulta
chief_complaint TEXT NOT NULL, -- Motivo principal
present_illness TEXT, -- Padecimiento actual
-- Exploración física
physical_exam JSONB, -- Estructurado por sistemas
-- Plan
treatment_plan TEXT,
follow_up_instructions TEXT,
next_appointment_days INTEGER,
-- Notas
notes TEXT,
private_notes TEXT, -- Solo visible para el médico
-- Auditoría
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id)
);
-- Tabla: vital_signs (Signos vitales)
CREATE TABLE IF NOT EXISTS clinica.vital_signs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
consultation_id UUID NOT NULL REFERENCES clinica.consultations(id) ON DELETE CASCADE,
-- Signos vitales
weight_kg DECIMAL(5,2),
height_cm DECIMAL(5,2),
bmi DECIMAL(4,2) GENERATED ALWAYS AS (
CASE WHEN height_cm > 0 THEN weight_kg / ((height_cm/100) * (height_cm/100)) END
) STORED,
temperature_c DECIMAL(4,2),
blood_pressure_systolic INTEGER,
blood_pressure_diastolic INTEGER,
heart_rate INTEGER, -- latidos por minuto
respiratory_rate INTEGER, -- respiraciones por minuto
oxygen_saturation INTEGER, -- porcentaje
-- Fecha/hora de medición
measured_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
measured_by UUID REFERENCES auth.users(id),
notes TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id)
);
-- Tabla: diagnoses (Diagnósticos - CIE-10)
CREATE TABLE IF NOT EXISTS clinica.diagnoses (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
consultation_id UUID NOT NULL REFERENCES clinica.consultations(id) ON DELETE CASCADE,
-- Código CIE-10
icd10_code VARCHAR(10) NOT NULL,
icd10_description VARCHAR(255),
-- Tipo
diagnosis_type VARCHAR(20) NOT NULL DEFAULT 'primary', -- primary, secondary, differential
-- Detalles
notes TEXT,
is_chronic BOOLEAN DEFAULT FALSE,
onset_date DATE,
-- Orden
sequence INTEGER DEFAULT 1,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id)
);
-- Tabla: prescriptions (Recetas médicas)
CREATE TABLE IF NOT EXISTS clinica.prescriptions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
consultation_id UUID NOT NULL REFERENCES clinica.consultations(id),
-- Número de receta
prescription_number VARCHAR(30) NOT NULL,
prescription_date DATE NOT NULL DEFAULT CURRENT_DATE,
-- Médico
doctor_id UUID NOT NULL REFERENCES clinica.doctors(id),
-- Instrucciones generales
general_instructions TEXT,
-- Vigencia
valid_until DATE,
-- Estado
is_printed BOOLEAN DEFAULT FALSE,
printed_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id),
updated_at TIMESTAMPTZ,
updated_by UUID REFERENCES auth.users(id),
CONSTRAINT uq_prescriptions_number UNIQUE (tenant_id, prescription_number)
);
-- Tabla: prescription_items (Líneas de receta)
CREATE TABLE IF NOT EXISTS clinica.prescription_items (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id UUID NOT NULL REFERENCES auth.tenants(id) ON DELETE CASCADE,
prescription_id UUID NOT NULL REFERENCES clinica.prescriptions(id) ON DELETE CASCADE,
-- Medicamento
product_id UUID, -- FK a inventory.products (ERP Core)
medication_name VARCHAR(255) NOT NULL,
presentation VARCHAR(100), -- Tabletas, jarabe, etc.
-- Dosificación
dosage VARCHAR(100) NOT NULL, -- "1 tableta"
frequency VARCHAR(100) NOT NULL, -- "cada 8 horas"
duration VARCHAR(100), -- "por 7 días"
quantity INTEGER, -- Cantidad a surtir
-- Instrucciones
instructions TEXT,
-- Orden
sequence INTEGER DEFAULT 1,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_by UUID REFERENCES auth.users(id)
);
-- ============================================================================
-- ÍNDICES
-- ============================================================================
-- Specialties
CREATE INDEX IF NOT EXISTS idx_specialties_tenant ON clinica.specialties(tenant_id);
-- Doctors
CREATE INDEX IF NOT EXISTS idx_doctors_tenant ON clinica.doctors(tenant_id);
CREATE INDEX IF NOT EXISTS idx_doctors_specialty ON clinica.doctors(specialty_id);
CREATE INDEX IF NOT EXISTS idx_doctors_user ON clinica.doctors(user_id);
-- Patients
CREATE INDEX IF NOT EXISTS idx_patients_tenant ON clinica.patients(tenant_id);
CREATE INDEX IF NOT EXISTS idx_patients_partner ON clinica.patients(partner_id);
CREATE INDEX IF NOT EXISTS idx_patients_name ON clinica.patients(last_name, first_name);
CREATE INDEX IF NOT EXISTS idx_patients_curp ON clinica.patients(curp);
-- Patient contacts
CREATE INDEX IF NOT EXISTS idx_patient_contacts_tenant ON clinica.patient_contacts(tenant_id);
CREATE INDEX IF NOT EXISTS idx_patient_contacts_patient ON clinica.patient_contacts(patient_id);
-- Patient insurance
CREATE INDEX IF NOT EXISTS idx_patient_insurance_tenant ON clinica.patient_insurance(tenant_id);
CREATE INDEX IF NOT EXISTS idx_patient_insurance_patient ON clinica.patient_insurance(patient_id);
-- Appointment slots
CREATE INDEX IF NOT EXISTS idx_appointment_slots_tenant ON clinica.appointment_slots(tenant_id);
CREATE INDEX IF NOT EXISTS idx_appointment_slots_doctor ON clinica.appointment_slots(doctor_id);
-- Appointments
CREATE INDEX IF NOT EXISTS idx_appointments_tenant ON clinica.appointments(tenant_id);
CREATE INDEX IF NOT EXISTS idx_appointments_patient ON clinica.appointments(patient_id);
CREATE INDEX IF NOT EXISTS idx_appointments_doctor ON clinica.appointments(doctor_id);
CREATE INDEX IF NOT EXISTS idx_appointments_date ON clinica.appointments(appointment_date);
CREATE INDEX IF NOT EXISTS idx_appointments_status ON clinica.appointments(status);
-- Medical records
CREATE INDEX IF NOT EXISTS idx_medical_records_tenant ON clinica.medical_records(tenant_id);
CREATE INDEX IF NOT EXISTS idx_medical_records_patient ON clinica.medical_records(patient_id);
-- Consultations
CREATE INDEX IF NOT EXISTS idx_consultations_tenant ON clinica.consultations(tenant_id);
CREATE INDEX IF NOT EXISTS idx_consultations_record ON clinica.consultations(medical_record_id);
CREATE INDEX IF NOT EXISTS idx_consultations_doctor ON clinica.consultations(doctor_id);
CREATE INDEX IF NOT EXISTS idx_consultations_date ON clinica.consultations(consultation_date);
-- Vital signs
CREATE INDEX IF NOT EXISTS idx_vital_signs_tenant ON clinica.vital_signs(tenant_id);
CREATE INDEX IF NOT EXISTS idx_vital_signs_consultation ON clinica.vital_signs(consultation_id);
-- Diagnoses
CREATE INDEX IF NOT EXISTS idx_diagnoses_tenant ON clinica.diagnoses(tenant_id);
CREATE INDEX IF NOT EXISTS idx_diagnoses_consultation ON clinica.diagnoses(consultation_id);
CREATE INDEX IF NOT EXISTS idx_diagnoses_icd10 ON clinica.diagnoses(icd10_code);
-- Prescriptions
CREATE INDEX IF NOT EXISTS idx_prescriptions_tenant ON clinica.prescriptions(tenant_id);
CREATE INDEX IF NOT EXISTS idx_prescriptions_consultation ON clinica.prescriptions(consultation_id);
-- Prescription items
CREATE INDEX IF NOT EXISTS idx_prescription_items_tenant ON clinica.prescription_items(tenant_id);
CREATE INDEX IF NOT EXISTS idx_prescription_items_prescription ON clinica.prescription_items(prescription_id);
-- ============================================================================
-- ROW LEVEL SECURITY
-- ============================================================================
ALTER TABLE clinica.specialties ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.doctors ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.patients ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.patient_contacts ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.patient_insurance ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.appointment_slots ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.appointments ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.medical_records ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.consultations ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.vital_signs ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.diagnoses ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.prescriptions ENABLE ROW LEVEL SECURITY;
ALTER TABLE clinica.prescription_items ENABLE ROW LEVEL SECURITY;
-- Políticas de aislamiento por tenant
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_specialties ON clinica.specialties;
CREATE POLICY tenant_isolation_specialties ON clinica.specialties
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_doctors ON clinica.doctors;
CREATE POLICY tenant_isolation_doctors ON clinica.doctors
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_patients ON clinica.patients;
CREATE POLICY tenant_isolation_patients ON clinica.patients
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_patient_contacts ON clinica.patient_contacts;
CREATE POLICY tenant_isolation_patient_contacts ON clinica.patient_contacts
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_patient_insurance ON clinica.patient_insurance;
CREATE POLICY tenant_isolation_patient_insurance ON clinica.patient_insurance
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_appointment_slots ON clinica.appointment_slots;
CREATE POLICY tenant_isolation_appointment_slots ON clinica.appointment_slots
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_appointments ON clinica.appointments;
CREATE POLICY tenant_isolation_appointments ON clinica.appointments
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_medical_records ON clinica.medical_records;
CREATE POLICY tenant_isolation_medical_records ON clinica.medical_records
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_consultations ON clinica.consultations;
CREATE POLICY tenant_isolation_consultations ON clinica.consultations
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_vital_signs ON clinica.vital_signs;
CREATE POLICY tenant_isolation_vital_signs ON clinica.vital_signs
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_diagnoses ON clinica.diagnoses;
CREATE POLICY tenant_isolation_diagnoses ON clinica.diagnoses
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_prescriptions ON clinica.prescriptions;
CREATE POLICY tenant_isolation_prescriptions ON clinica.prescriptions
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
DO $$ BEGIN
DROP POLICY IF EXISTS tenant_isolation_prescription_items ON clinica.prescription_items;
CREATE POLICY tenant_isolation_prescription_items ON clinica.prescription_items
FOR ALL USING (tenant_id = current_setting('app.current_tenant_id', true)::UUID);
EXCEPTION WHEN undefined_object THEN NULL; END $$;
-- ============================================================================
-- COMENTARIOS
-- ============================================================================
COMMENT ON TABLE clinica.specialties IS 'Catálogo de especialidades médicas';
COMMENT ON TABLE clinica.doctors IS 'Médicos y especialistas - extiende hr.employees';
COMMENT ON TABLE clinica.patients IS 'Registro de pacientes - extiende core.partners';
COMMENT ON TABLE clinica.patient_contacts IS 'Contactos de emergencia del paciente';
COMMENT ON TABLE clinica.patient_insurance IS 'Información de seguros médicos';
COMMENT ON TABLE clinica.appointment_slots IS 'Horarios disponibles por médico';
COMMENT ON TABLE clinica.appointments IS 'Citas médicas programadas';
COMMENT ON TABLE clinica.medical_records IS 'Expediente clínico electrónico (NOM-024-SSA3)';
COMMENT ON TABLE clinica.consultations IS 'Consultas médicas realizadas';
COMMENT ON TABLE clinica.vital_signs IS 'Signos vitales del paciente';
COMMENT ON TABLE clinica.diagnoses IS 'Diagnósticos según CIE-10';
COMMENT ON TABLE clinica.prescriptions IS 'Recetas médicas';
COMMENT ON TABLE clinica.prescription_items IS 'Medicamentos en receta';
-- ============================================================================
-- FIN TABLAS CLÍNICAS
-- Total: 13 tablas, 4 ENUMs
-- ============================================================================

View File

@ -0,0 +1,34 @@
-- ============================================================================
-- DATOS INICIALES - ERP Clínicas
-- ============================================================================
-- Versión: 1.0.0
-- Fecha: 2025-12-09
-- ============================================================================
-- Especialidades médicas comunes
-- NOTA: Se insertan solo si el tenant existe (usar en script de inicialización)
/*
-- Ejemplo de inserción (ejecutar con tenant_id específico):
INSERT INTO clinica.specialties (tenant_id, code, name, description, consultation_duration) VALUES
('TENANT_UUID', 'MG', 'Medicina General', 'Atención médica primaria', 30),
('TENANT_UUID', 'PED', 'Pediatría', 'Atención médica infantil', 30),
('TENANT_UUID', 'GIN', 'Ginecología', 'Salud de la mujer', 30),
('TENANT_UUID', 'CARD', 'Cardiología', 'Enfermedades del corazón', 45),
('TENANT_UUID', 'DERM', 'Dermatología', 'Enfermedades de la piel', 30),
('TENANT_UUID', 'OFT', 'Oftalmología', 'Salud visual', 30),
('TENANT_UUID', 'ORL', 'Otorrinolaringología', 'Oído, nariz y garganta', 30),
('TENANT_UUID', 'TRAU', 'Traumatología', 'Sistema músculo-esquelético', 30),
('TENANT_UUID', 'NEUR', 'Neurología', 'Sistema nervioso', 45),
('TENANT_UUID', 'PSIQ', 'Psiquiatría', 'Salud mental', 60),
('TENANT_UUID', 'ENDO', 'Endocrinología', 'Sistema endocrino', 45),
('TENANT_UUID', 'GAST', 'Gastroenterología', 'Sistema digestivo', 45),
('TENANT_UUID', 'NEFR', 'Nefrología', 'Enfermedades renales', 45),
('TENANT_UUID', 'UROL', 'Urología', 'Sistema urinario', 30),
('TENANT_UUID', 'ONCO', 'Oncología', 'Tratamiento del cáncer', 60);
*/
-- ============================================================================
-- FIN SEED DATA
-- ============================================================================

View File

@ -0,0 +1,107 @@
# Visión General - ERP Clínicas
**Versión:** 1.0
**Fecha:** 2025-12-08
**Nivel:** 2B.2 (Vertical)
---
## Propósito del Sistema
Sistema ERP especializado para clínicas y consultorios médicos. Gestiona el expediente clínico electrónico, agenda de citas, recetas médicas, y facturación de servicios de salud. Cumple con normativas mexicanas de salud (NOM-024-SSA3, LFPDPPP).
---
## Dominio del Negocio
### Procesos Principales
1. **Gestión de Pacientes**
- Registro y expediente clínico
- Historial médico
- Antecedentes y alergias
2. **Agenda de Citas**
- Programación de consultas
- Recordatorios automáticos
- Gestión de especialistas
3. **Consultas Médicas**
- Notas médicas
- Signos vitales
- Diagnósticos (CIE-10)
4. **Recetas y Prescripciones**
- Recetas electrónicas
- Indicaciones médicas
- Firma electrónica
5. **Facturación de Servicios**
- Cobro de consultas
- Seguros médicos
- CFDI de salud
---
## Cumplimiento Normativo
| Norma | Descripción | Impacto |
|-------|-------------|---------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | Estructura de datos |
| LFPDPPP | Protección de datos personales | Seguridad y acceso |
| NOM-004-SSA3-2012 | Expediente clínico | Contenido mínimo |
---
## Arquitectura de Módulos
```
CL-001 Fundamentos → Auth, Users, Tenants (hereda 100% core)
CL-002 Pacientes → Expediente clínico (20% core)
CL-003 Citas → Agenda médica (30% core)
CL-004 Consultas → Notas médicas (0% - nuevo)
CL-005 Recetas → Prescripciones (10% core)
CL-006 Laboratorio → Estudios (10% core)
CL-007 Farmacia → Medicamentos (60% core)
CL-008 Facturación → Cobros, seguros (50% core)
CL-009 Reportes → Estadísticas (60% core)
CL-010 Telemedicina → Consultas remotas (0% - nuevo)
CL-011 Expediente → Historia clínica (10% core)
CL-012 Imagenología → DICOM (5% core)
```
---
## Stack Tecnológico
- **Backend:** NestJS + TypeORM + PostgreSQL
- **Frontend:** React + TypeScript
- **Base de Datos:** PostgreSQL 15+ (hereda ERP Core)
- **Seguridad:** 2FA, encriptación de datos sensibles
---
## Métricas Objetivo
| Métrica | Valor Objetivo |
|---------|----------------|
| Módulos | 12 |
| Tablas Específicas | ~35 |
| Tablas Heredadas | ~100 |
| Story Points Est. | ~350 |
| Ocupación Agenda | > 80% |
| No-shows | < 5% |
---
## Referencias
- ERP Core: `apps/erp-core/`
- Herencia DB: `database/HERENCIA-ERP-CORE.md`
- SPECS del Core: `HERENCIA-SPECS-CORE.md`
- Normativas: NOM-024-SSA3-2012
---
**Documento de visión oficial**
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-001: Fundamentos
**Módulo:** Fundamentos
**Estado:** PLANIFICADO
## Descripción
Auth con 2FA para personal médico
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-002: Pacientes
**Módulo:** Pacientes
**Estado:** PLANIFICADO
## Descripción
Registro y expediente de pacientes
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-003: Citas
**Módulo:** Citas
**Estado:** PLANIFICADO
## Descripción
Agenda médica con recordatorios
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-004: Consultas
**Módulo:** Consultas
**Estado:** PLANIFICADO
## Descripción
Notas médicas y diagnósticos CIE-10
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-005: Recetas
**Módulo:** Recetas
**Estado:** PLANIFICADO
## Descripción
Prescripciones con firma electrónica
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-006: Laboratorio
**Módulo:** Laboratorio
**Estado:** PLANIFICADO
## Descripción
Solicitud y resultados de estudios
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-007: Farmacia
**Módulo:** Farmacia
**Estado:** PLANIFICADO
## Descripción
Inventario de medicamentos
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-008: Facturacion
**Módulo:** Facturacion
**Estado:** PLANIFICADO
## Descripción
Cobros y CFDI de salud
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-009: Reportes
**Módulo:** Reportes
**Estado:** PLANIFICADO
## Descripción
Dashboard y estadísticas clínicas
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-010: Telemedicina
**Módulo:** Telemedicina
**Estado:** PLANIFICADO
## Descripción
Videoconsultas remotas
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-011: Expediente
**Módulo:** Expediente
**Estado:** PLANIFICADO
## Descripción
Historia clínica completa NOM-024
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,20 @@
# CL-012: Imagenologia
**Módulo:** Imagenologia
**Estado:** PLANIFICADO
## Descripción
Visor DICOM y estudios de imagen
## Funcionalidades Principales
- Por definir en fase de análisis
## Cumplimiento Normativo
- NOM-024-SSA3-2012 (si aplica)
- LFPDPPP
## SPECS Aplicables
- Ver HERENCIA-SPECS-CORE.md
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,136 @@
# Índice de Módulos - ERP Clínicas
**Versión:** 1.0
**Fecha:** 2025-12-08
**Total Módulos:** 12
---
## Resumen
| Código | Nombre | Descripción | Reutilización Core | Estado |
|--------|--------|-------------|-------------------|--------|
| CL-001 | Fundamentos | Auth, Users, Tenants | 100% | PLANIFICADO |
| CL-002 | Pacientes | Registro y expediente | 20% | PLANIFICADO |
| CL-003 | Citas | Agenda médica | 30% | PLANIFICADO |
| CL-004 | Consultas | Notas médicas | 0% | PLANIFICADO |
| CL-005 | Recetas | Prescripciones | 10% | PLANIFICADO |
| CL-006 | Laboratorio | Estudios y resultados | 10% | PLANIFICADO |
| CL-007 | Farmacia | Inventario medicamentos | 60% | PLANIFICADO |
| CL-008 | Facturación | Cobros y seguros | 50% | PLANIFICADO |
| CL-009 | Reportes | Estadísticas clínicas | 60% | PLANIFICADO |
| CL-010 | Telemedicina | Consultas remotas | 0% | PLANIFICADO |
| CL-011 | Expediente | Historia clínica completa | 10% | PLANIFICADO |
| CL-012 | Imagenología | Estudios DICOM | 5% | PLANIFICADO |
---
## Detalle por Módulo
### CL-001: Fundamentos
**Herencia:** 100% del core
- Usuarios: Médicos, Enfermeras, Recepcionistas, Admin
- Roles con permisos de acceso a expedientes
- 2FA obligatorio para personal médico
### CL-002: Pacientes
**Herencia:** 20%
- Registro de pacientes
- Datos de contacto y emergencia
- Seguro médico
- Antecedentes y alergias
### CL-003: Citas
**Herencia:** 30%
- Programación de citas
- Agenda por especialista
- Recordatorios (SMS, Email, WhatsApp)
- Confirmaciones
### CL-004: Consultas
**Herencia:** 0% - Nuevo
- Notas médicas
- Signos vitales
- Exploración física
- Diagnósticos (CIE-10)
### CL-005: Recetas
**Herencia:** 10%
- Recetas electrónicas
- Indicaciones médicas
- Firma electrónica (NOM-151)
- Historial de prescripciones
### CL-006: Laboratorio
**Herencia:** 10%
- Solicitud de estudios
- Resultados de laboratorio
- Valores de referencia
- Alertas de resultados críticos
### CL-007: Farmacia
**Herencia:** 60%
- Inventario de medicamentos
- Control de caducidades
- Despacho de recetas
- Alertas de interacciones
### CL-008: Facturación
**Herencia:** 50%
- Cobro de consultas
- Integración con seguros
- CFDI de salud
- Cuentas por cobrar
### CL-009: Reportes
**Herencia:** 60%
- Dashboard clínico
- Estadísticas de consultas
- Indicadores de salud
- Reportes epidemiológicos
### CL-010: Telemedicina
**Herencia:** 0% - Nuevo
- Videoconsultas
- Chat con pacientes
- Compartir pantalla
- Grabación (opcional)
### CL-011: Expediente
**Herencia:** 10%
- Historia clínica completa
- Línea de tiempo médica
- Resumen de antecedentes
- Exportación (NOM-024)
### CL-012: Imagenología
**Herencia:** 5%
- Visor DICOM
- Almacenamiento de estudios
- Reportes radiológicos
- Integración PACS
---
## Story Points Estimados
| Módulo | SP Backend | SP Frontend | SP Total |
|--------|-----------|-------------|----------|
| CL-001 | 0 | 0 | 0 |
| CL-002 | 21 | 13 | 34 |
| CL-003 | 21 | 21 | 42 |
| CL-004 | 21 | 21 | 42 |
| CL-005 | 13 | 13 | 26 |
| CL-006 | 21 | 13 | 34 |
| CL-007 | 13 | 8 | 21 |
| CL-008 | 21 | 13 | 34 |
| CL-009 | 13 | 13 | 26 |
| CL-010 | 34 | 34 | 68 |
| CL-011 | 21 | 13 | 34 |
| CL-012 | 21 | 13 | 34 |
| **Total** | **220** | **175** | **395** |
---
**Índice de módulos oficial**
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,66 @@
# Épica: Fundamentos del Sistema Clínico
**Código:** EPIC-CL-001
**Módulos:** CL-001, CL-002, CL-003
**Estado:** PLANIFICADO
---
## Descripción
Implementación de los módulos fundacionales del ERP Clínicas, incluyendo la configuración inicial con seguridad reforzada, registro de pacientes y agenda de citas.
---
## Objetivos
1. Configurar el ambiente con seguridad médica (2FA, encriptación)
2. Implementar el registro de pacientes con expediente básico
3. Establecer la agenda de citas con recordatorios
---
## Módulos Incluidos
| Módulo | Descripción | SP Estimados |
|--------|-------------|--------------|
| CL-001 | Fundamentos (2FA obligatorio) | 0 |
| CL-002 | Pacientes | 34 |
| CL-003 | Citas | 42 |
---
## User Stories Principales
1. Como médico, quiero iniciar sesión con 2FA
2. Como recepcionista, quiero registrar un nuevo paciente
3. Como recepcionista, quiero programar una cita
4. Como paciente, quiero recibir recordatorio de mi cita
---
## Criterios de Aceptación
- [ ] 2FA obligatorio para personal médico
- [ ] Encriptación de datos sensibles (antecedentes, alergias)
- [ ] Registro de pacientes con datos de seguro
- [ ] Agenda funcional con confirmaciones
- [ ] Recordatorios automáticos (24h y 2h antes)
---
## Cumplimiento Normativo
- NOM-024-SSA3-2012: Estructura de expediente
- LFPDPPP: Protección de datos personales
---
## Story Points Totales
**76 SP**
---
**Épica fundacional**
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,247 @@
# EPICA: EPIC-CL-002 - Pacientes
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-002 |
| **Nombre** | Pacientes |
| **Modulo** | pacientes |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 38 |
| **Sprint(s)** | Sprint 2-3 |
---
## Descripcion
Registro y gestión integral de pacientes. Incluye datos demográficos, datos de contacto, información de seguros médicos, contactos de emergencia, consentimientos informados y portal de acceso para pacientes.
---
## Objetivo de Negocio
- Expediente único del paciente
- Cumplimiento de NOM-024-SSA3-2012
- Agilizar proceso de registro
- Datos actualizados y accesibles
- Comunicación efectiva con pacientes
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL002-001 | Como recepcionista, quiero registrar paciente nuevo con datos mínimos para agilizar primera cita | P0 | 5 | Backlog |
| US-CL002-002 | Como recepcionista, quiero buscar paciente por nombre, teléfono o CURP para consultar expediente | P0 | 3 | Backlog |
| US-CL002-003 | Como recepcionista, quiero registrar datos de seguro médico del paciente para facturación | P0 | 3 | Backlog |
| US-CL002-004 | Como recepcionista, quiero registrar contactos de emergencia del paciente | P0 | 2 | Backlog |
| US-CL002-005 | Como paciente, quiero firmar consentimiento informado digitalmente para autorizar tratamientos | P0 | 5 | Backlog |
| US-CL002-006 | Como médico, quiero ver ficha completa del paciente antes de la consulta | P0 | 3 | Backlog |
| US-CL002-007 | Como paciente, quiero acceder a mi portal para ver citas e historial | P1 | 8 | Backlog |
| US-CL002-008 | Como admin, quiero configurar campos obligatorios según tipo de paciente | P1 | 3 | Backlog |
| US-CL002-009 | Como recepcionista, quiero registrar datos del menor y de su tutor | P0 | 3 | Backlog |
| US-CL002-010 | Como admin, quiero fusionar expedientes duplicados preservando historial | P2 | 3 | Backlog |
**Total Story Points:** 38 SP
---
## Datos del Paciente
```
┌─────────────────────────────────────────────────────────┐
│ EXPEDIENTE DEL PACIENTE │
├─────────────────────────────────────────────────────────┤
│ │
│ DATOS PERSONALES │
│ ├── Nombre completo │
│ ├── Fecha de nacimiento / Edad │
│ ├── Sexo │
│ ├── CURP │
│ ├── Estado civil │
│ ├── Ocupación │
│ └── Escolaridad │
│ │
│ CONTACTO │
│ ├── Teléfono principal │
│ ├── Teléfono alternativo │
│ ├── Email │
│ ├── Dirección completa │
│ └── Preferencia de contacto │
│ │
│ EMERGENCIA │
│ ├── Nombre del contacto │
│ ├── Parentesco │
│ └── Teléfono │
│ │
│ SEGURO MÉDICO │
│ ├── Aseguradora │
│ ├── Número de póliza │
│ ├── Vigencia │
│ └── Tipo de cobertura │
│ │
│ MENORES DE EDAD │
│ ├── Datos del tutor/responsable │
│ ├── Parentesco │
│ └── Identificación del tutor │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Consentimiento Informado Digital
```
┌─────────────────────────────────────────────────────────┐
│ CONSENTIMIENTO INFORMADO │
├─────────────────────────────────────────────────────────┤
│ │
│ TIPOS DE CONSENTIMIENTO │
│ ├── General (tratamientos y procedimientos) │
│ ├── Específico por procedimiento │
│ ├── Menores (firma del tutor) │
│ └── Tratamiento de datos personales (LFPDPPP) │
│ │
│ ELEMENTOS │
│ ├── Texto del consentimiento │
│ ├── Firma digital del paciente │
│ ├── Fecha y hora de firma │
│ ├── IP y dispositivo │
│ └── PDF generado y almacenado │
│ │
│ VALIDEZ │
│ ├── Vigencia configurable │
│ ├── Renovación automática │
│ └── Revocación por el paciente │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Registro de paciente con validación de datos
- [ ] Búsqueda por múltiples criterios
- [ ] Registro de datos de seguro
- [ ] Contactos de emergencia
- [ ] Consentimiento informado digital
- [ ] Ficha completa del paciente
- [ ] Portal del paciente
- [ ] Manejo de menores con tutor
**No Funcionales:**
- [ ] Búsqueda < 1 segundo
- [ ] Encriptación de datos sensibles
- [ ] Cumplimiento NOM-024-SSA3-2012
- [ ] Auditoría de accesos
**Tecnicos:**
- [ ] Validación de CURP
- [ ] Firma digital integrada
- [ ] Encriptación AES-256 para datos sensibles
- [ ] Portal web para pacientes
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-003 Citas | Requiere pacientes registrados |
| EPIC-CL-004 Consultas | Requiere datos del paciente |
| EPIC-CL-011 Expediente | Requiere pacientes |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `patients`
- [ ] Tablas: 7 (patients, emergency_contacts, insurance_info, consents, consent_signatures, minors, patient_merge_log)
- [ ] Funciones: 2 (validate_curp, encrypt_sensitive)
- [ ] Indices: Por CURP, teléfono, nombre, fecha nacimiento
**Backend:**
- [ ] Modulo: `patients`
- [ ] Entities: 5 (Patient, EmergencyContact, InsuranceInfo, Consent, ConsentSignature)
- [ ] Endpoints: 15
- [ ] Tests: 30
**Frontend:**
- [ ] Paginas: 5 (PatientList, PatientForm, PatientDetail, ConsentSign, PatientPortal)
- [ ] Componentes: 12 (PatientCard, SearchBar, ConsentModal, SignaturePad, etc.)
- [ ] Portal del paciente (separado)
- [ ] Stores: 1 (patientsStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/patients | Registrar paciente |
| GET | /api/patients/search | Buscar pacientes |
| GET | /api/patients/:id | Detalle de paciente |
| PATCH | /api/patients/:id | Actualizar paciente |
| POST | /api/patients/:id/insurance | Agregar seguro |
| POST | /api/patients/:id/emergency-contacts | Agregar contacto |
| POST | /api/patients/:id/consents/:consentId/sign | Firmar consentimiento |
| GET | /api/patients/:id/consents | Ver consentimientos |
| POST | /api/patients/merge | Fusionar expedientes |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Datos duplicados | Alta | Medio | Validación de CURP + alertas |
| Fuga de datos sensibles | Baja | Alto | Encriptación + auditoría |
| Consentimiento inválido | Baja | Alto | Firma digital con evidencia |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Textos de consentimiento aprobados
- [ ] Campos obligatorios por regulación definidos
## Definition of Done (DoD)
- [ ] Registro completo de pacientes
- [ ] Búsqueda multi-criterio funcionando
- [ ] Consentimiento digital operativo
- [ ] Datos sensibles encriptados
- [ ] 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

View File

@ -0,0 +1,270 @@
# EPICA: EPIC-CL-003 - Citas (Agenda Médica)
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-003 |
| **Nombre** | Citas (Agenda Médica) |
| **Modulo** | citas |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 42 |
| **Sprint(s)** | Sprint 3-4 |
---
## Descripcion
Sistema de agenda médica para programación de citas. Gestión de horarios por médico y consultorio, confirmación de citas, recordatorios automáticos, lista de espera y módulo de check-in para llegada de pacientes.
---
## Objetivo de Negocio
- Optimizar uso de consultorios
- Reducir ausentismo con recordatorios
- Mejorar experiencia del paciente
- Control de tiempos de espera
- Maximizar productividad médica
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL003-001 | Como recepcionista, quiero agendar cita seleccionando médico, fecha y hora disponible | P0 | 5 | Backlog |
| US-CL003-002 | Como recepcionista, quiero ver agenda del día por médico en formato calendario | P0 | 5 | Backlog |
| US-CL003-003 | Como recepcionista, quiero confirmar cita vía WhatsApp o llamada | P0 | 3 | Backlog |
| US-CL003-004 | Como paciente, quiero recibir recordatorio automático 24h antes de mi cita | P0 | 5 | Backlog |
| US-CL003-005 | Como recepcionista, quiero reagendar cita manteniendo historial | P0 | 3 | Backlog |
| US-CL003-006 | Como recepcionista, quiero registrar check-in del paciente al llegar | P0 | 3 | Backlog |
| US-CL003-007 | Como médico, quiero ver mis citas del día con datos del paciente | P0 | 3 | Backlog |
| US-CL003-008 | Como admin, quiero configurar horarios de atención por médico | P0 | 5 | Backlog |
| US-CL003-009 | Como recepcionista, quiero gestionar lista de espera para cancelaciones | P1 | 3 | Backlog |
| US-CL003-010 | Como paciente, quiero agendar cita desde portal web o app | P1 | 5 | Backlog |
| US-CL003-011 | Como admin, quiero bloquear horarios por vacaciones o eventos | P1 | 2 | Backlog |
**Total Story Points:** 42 SP
---
## Flujo de Cita
```
┌─────────────┐
│ AGENDADA │ ← Cita programada
└──────┬──────┘
▼ (-24h)
┌─────────────┐
│ RECORDATORIO│ ← Envío automático WhatsApp/SMS
└──────┬──────┘
├── Sin respuesta ────────────┐
▼ │
┌─────────────┐ │
│ CONFIRMADA │ │
└──────┬──────┘ │
│ │
▼ (Día de la cita) │
┌─────────────┐ │
│ CHECK-IN │ ← Paciente llega │
└──────┬──────┘ │
│ │
▼ │
┌─────────────┐ │
│ EN_CONSULTA │ ← Médico inicia │
└──────┬──────┘ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ ATENDIDA │ │ NO_ASISTIO │
└─────────────┘ └─────────────┘
```
---
## Configuración de Agenda
```
┌─────────────────────────────────────────────────────────┐
│ AGENDA DEL DR. GARCÍA │
├─────────────────────────────────────────────────────────┤
│ │
│ HORARIO DE ATENCIÓN │
│ ├── Lunes a Viernes: 09:00 - 14:00, 16:00 - 20:00 │
│ ├── Sábados: 09:00 - 14:00 │
│ └── Domingos: No labora │
│ │
│ DURACIÓN DE CITAS │
│ ├── Primera vez: 45 minutos │
│ ├── Seguimiento: 20 minutos │
│ └── Procedimiento: 60 minutos │
│ │
│ CONSULTORIOS │
│ ├── Consultorio 1 (Principal) │
│ └── Consultorio 3 (Alterno) │
│ │
│ BLOQUEOS │
│ ├── 15-22 Dic: Vacaciones │
│ └── Cada miércoles 10:00-11:00: Junta médica │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Vista de Agenda
```
┌─────────────────────────────────────────────────────────┐
│ DR. GARCÍA - Lunes 9 Diciembre 2024 │
├─────────────────────────────────────────────────────────┤
│ │
│ 09:00 │ ████████████████████ Juan Pérez (Primera vez) │
│ 09:45 │ - DISPONIBLE - │
│ 10:00 │ ████████ María López (Seguimiento) ✓ Confirmada│
│ 10:20 │ - DISPONIBLE - │
│ 10:40 │ ████████ Carlos Ruiz (Seguimiento) │
│ 11:00 │ ▓▓▓ JUNTA MÉDICA ▓▓▓ │
│ 12:00 │ ████████████████████████████████ Procedimiento │
│ 13:00 │ ████████ Ana García (Seguimiento) ✓ En sala │
│ 13:20 │ ████████ Pedro Soto (Seguimiento) │
│ 13:40 │ - DISPONIBLE - │
│ │
│ ────────────── DESCANSO ────────────── │
│ │
│ 16:00 │ ████████████████████ Nuevo paciente (1a vez) │
│ ... │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Agendar citas con validación de disponibilidad
- [ ] Vista de agenda diaria/semanal por médico
- [ ] Confirmación de citas
- [ ] Recordatorios automáticos (WhatsApp/SMS/Email)
- [ ] Check-in de pacientes
- [ ] Reagendar y cancelar citas
- [ ] Lista de espera
- [ ] Configuración de horarios
**No Funcionales:**
- [ ] Carga de agenda < 2 segundos
- [ ] Envío de recordatorio en < 1 minuto
- [ ] Soporte para 10+ médicos simultáneos
**Tecnicos:**
- [ ] Integración con WhatsApp Business API
- [ ] Calendario sincronizable (Google Calendar, Outlook)
- [ ] Notificaciones push para app
- [ ] Tiempo real con WebSockets
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-004 Consultas | Requiere cita para iniciar consulta |
| EPIC-CL-008 Facturación | Requiere citas para facturar |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `appointments`
- [ ] Tablas: 7 (appointments, schedules, schedule_blocks, waiting_list, reminders, check_ins, appointment_types)
- [ ] Funciones: 3 (check_availability, send_reminder, calculate_wait_time)
- [ ] Indices: Por médico, fecha, paciente, estado
**Backend:**
- [ ] Modulo: `appointments`
- [ ] Entities: 6 (Appointment, Schedule, ScheduleBlock, WaitingList, Reminder, CheckIn)
- [ ] Endpoints: 18
- [ ] Jobs: Envío de recordatorios
- [ ] Tests: 35
**Frontend:**
- [ ] Paginas: 5 (Calendar, AppointmentForm, DayView, WeekView, WaitingList)
- [ ] Componentes: 15 (CalendarGrid, TimeSlot, AppointmentCard, CheckInModal, etc.)
- [ ] WebSockets para actualizaciones en tiempo real
- [ ] Stores: 1 (appointmentsStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/appointments | Crear cita |
| GET | /api/appointments/:id | Detalle de cita |
| PATCH | /api/appointments/:id | Actualizar cita |
| DELETE | /api/appointments/:id | Cancelar cita |
| GET | /api/appointments/calendar/:doctorId | Agenda del médico |
| GET | /api/appointments/availability | Horarios disponibles |
| POST | /api/appointments/:id/confirm | Confirmar cita |
| POST | /api/appointments/:id/check-in | Registrar llegada |
| GET | /api/schedules/:doctorId | Horarios del médico |
| POST | /api/schedules/:doctorId/blocks | Bloquear horario |
| GET | /api/waiting-list | Lista de espera |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Overbooking | Media | Alto | Validación de disponibilidad |
| Recordatorios no enviados | Media | Medio | Reintentos + logs |
| Ausentismo alto | Media | Medio | Confirmación + lista de espera |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Horarios de médicos definidos
- [ ] Proveedor de WhatsApp Business API seleccionado
## Definition of Done (DoD)
- [ ] Agenda funcional por médico
- [ ] Recordatorios automáticos enviándose
- [ ] Check-in operativo
- [ ] Lista de espera activa
- [ ] 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

View File

@ -0,0 +1,277 @@
# EPICA: EPIC-CL-004 - Consultas (Notas Médicas)
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-004 |
| **Nombre** | Consultas (Notas Médicas) |
| **Modulo** | consultas |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 4-6 |
---
## Descripcion
Módulo 100% nuevo para documentación de consultas médicas. Incluye notas clínicas estructuradas (SOAP), signos vitales, diagnósticos con codificación CIE-10, planes de tratamiento, indicaciones y generación de documentos médicos.
---
## Objetivo de Negocio
- Documentación clínica completa
- Cumplimiento de NOM-004-SSA3-2012
- Agilizar consulta médica
- Historial clínico consultable
- Soporte para decisiones clínicas
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL004-001 | Como médico, quiero iniciar consulta desde cita agendada para documentar atención | P0 | 3 | Backlog |
| US-CL004-002 | Como enfermera, quiero registrar signos vitales antes de la consulta | P0 | 5 | Backlog |
| US-CL004-003 | Como médico, quiero documentar nota clínica en formato SOAP | P0 | 8 | Backlog |
| US-CL004-004 | Como médico, quiero registrar diagnósticos con código CIE-10 | P0 | 5 | Backlog |
| US-CL004-005 | Como médico, quiero ver historial de consultas previas del paciente | P0 | 3 | Backlog |
| US-CL004-006 | Como médico, quiero generar indicaciones médicas imprimibles | P0 | 3 | Backlog |
| US-CL004-007 | Como médico, quiero usar plantillas de notas para consultas frecuentes | P1 | 5 | Backlog |
| US-CL004-008 | Como médico, quiero dictar nota por voz (speech-to-text) | P2 | 8 | Backlog |
| US-CL004-009 | Como médico, quiero agregar antecedentes a la historia clínica | P0 | 5 | Backlog |
| US-CL004-010 | Como médico, quiero cerrar consulta y liberar consultorio | P0 | 2 | Backlog |
| US-CL004-011 | Como admin, quiero configurar plantillas de notas por especialidad | P1 | 3 | Backlog |
| US-CL004-012 | Como auditor, quiero ver log de cambios en notas clínicas | P0 | 5 | Backlog |
**Total Story Points:** 55 SP
---
## Formato SOAP
```
┌─────────────────────────────────────────────────────────┐
│ NOTA CLÍNICA - FORMATO SOAP │
├─────────────────────────────────────────────────────────┤
│ │
│ S - SUBJETIVO (Lo que el paciente refiere) │
│ ├── Motivo de consulta │
│ ├── Historia de la enfermedad actual │
│ ├── Síntomas referidos │
│ └── Evolución desde última visita │
│ │
│ O - OBJETIVO (Lo que el médico observa/mide) │
│ ├── Signos vitales │
│ │ ├── T/A: 120/80 mmHg │
│ │ ├── FC: 72 lpm │
│ │ ├── FR: 16 rpm │
│ │ ├── Temp: 36.5°C │
│ │ ├── Peso: 70 kg │
│ │ ├── Talla: 170 cm │
│ │ └── IMC: 24.2 │
│ ├── Exploración física │
│ └── Resultados de estudios │
│ │
│ A - ANÁLISIS (Diagnósticos) │
│ ├── Diagnóstico principal (CIE-10) │
│ ├── Diagnósticos secundarios │
│ └── Diagnósticos diferenciales │
│ │
│ P - PLAN (Tratamiento) │
│ ├── Medicamentos (→ Receta) │
│ ├── Estudios solicitados (→ Lab/Imagen) │
│ ├── Indicaciones generales │
│ ├── Referencia a especialista │
│ └── Próxima cita │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Flujo de Consulta
```
┌─────────────┐
│ CHECK-IN │ ← Paciente llega
└──────┬──────┘
┌─────────────┐
│SIGNOS VITAL │ ← Enfermera registra
└──────┬──────┘
┌─────────────┐
│ EN_CONSULTA │ ← Médico inicia
└──────┬──────┘
├── Revisar historial
├── Documentar SOAP
├── Generar receta
├── Solicitar estudios
┌─────────────┐
│ CERRADA │ ← Consulta finalizada
└──────┬──────┘
┌─────────────┐
│ FACTURAR │ ← Proceso de cobro
└─────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Iniciar consulta desde cita
- [ ] Registrar signos vitales
- [ ] Documentar nota SOAP completa
- [ ] Codificar diagnósticos CIE-10
- [ ] Ver historial de consultas
- [ ] Generar indicaciones imprimibles
- [ ] Plantillas de notas
- [ ] Registro de antecedentes
- [ ] Auditoría de cambios
**No Funcionales:**
- [ ] Autoguardado cada 30 segundos
- [ ] Búsqueda de CIE-10 < 500ms
- [ ] Notas no editables después de cierre
- [ ] Cumplimiento NOM-004-SSA3-2012
**Tecnicos:**
- [ ] Catálogo CIE-10 integrado
- [ ] Editor de texto enriquecido
- [ ] Opcional: Speech-to-text
- [ ] Generación de PDFs
---
## 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 | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-005 Recetas | Requiere consulta para prescribir |
| EPIC-CL-006 Laboratorio | Requiere consulta para solicitar |
| EPIC-CL-011 Expediente | Requiere notas clínicas |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `consultations`
- [ ] Tablas: 10 (consultations, vital_signs, diagnoses, treatments, indications, templates, medical_history, antecedents, note_versions, audit_log)
- [ ] Funciones: 3 (search_icd10, calculate_bmi, lock_consultation)
- [ ] Indices: Por paciente, médico, fecha, diagnóstico
**Backend:**
- [ ] Modulo: `consultations`
- [ ] Entities: 8 (Consultation, VitalSigns, Diagnosis, Treatment, Template, MedicalHistory, Antecedent, NoteVersion)
- [ ] Endpoints: 20
- [ ] Tests: 40
**Frontend:**
- [ ] Paginas: 5 (ConsultationRoom, VitalSignsForm, SOAPEditor, HistoryView, Templates)
- [ ] Componentes: 18 (SOAPSection, ICD10Search, VitalsWidget, HistoryTimeline, etc.)
- [ ] Editor WYSIWYG para notas
- [ ] Stores: 2 (consultationsStore, icd10Store)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/consultations | Iniciar consulta |
| GET | /api/consultations/:id | Detalle de consulta |
| PATCH | /api/consultations/:id | Actualizar nota |
| POST | /api/consultations/:id/vitals | Registrar signos vitales |
| POST | /api/consultations/:id/diagnoses | Agregar diagnóstico |
| POST | /api/consultations/:id/close | Cerrar consulta |
| GET | /api/consultations/history/:patientId | Historial del paciente |
| GET | /api/icd10/search | Buscar código CIE-10 |
| GET | /api/templates | Listar plantillas |
| POST | /api/templates | Crear plantilla |
---
## Catálogo CIE-10
```
Ejemplos de códigos frecuentes:
├── J00 - Rinofaringitis aguda (resfriado común)
├── J06.9 - Infección aguda de las vías respiratorias
├── E11 - Diabetes mellitus tipo 2
├── I10 - Hipertensión esencial
├── K30 - Dispepsia funcional
├── M54.5 - Dolor lumbar
└── F32 - Episodio depresivo
```
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Pérdida de notas | Baja | Alto | Autoguardado + versiones |
| Diagnóstico incorrecto | Media | Alto | Búsqueda asistida CIE-10 |
| Notas incompletas | Media | Medio | Validación antes de cerrar |
---
## Nota Técnica
Este módulo es **100% nuevo** y no tiene equivalente en el ERP-Core. Es específico para el sector salud y debe cumplir con las NOM mexicanas aplicables a expedientes clínicos electrónicos.
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo CIE-10 importado
- [ ] Plantillas iniciales definidas
## Definition of Done (DoD)
- [ ] Flujo completo de consulta
- [ ] Formato SOAP funcionando
- [ ] Búsqueda CIE-10 operativa
- [ ] Auditoría de cambios
- [ ] 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

View File

@ -0,0 +1,243 @@
# EPICA: EPIC-CL-005 - Recetas (Prescripciones)
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-005 |
| **Nombre** | Recetas (Prescripciones) |
| **Modulo** | recetas |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 35 |
| **Sprint(s)** | Sprint 5-6 |
---
## Descripcion
Sistema de prescripción médica electrónica. Generación de recetas con búsqueda de medicamentos, dosificación, verificación de interacciones medicamentosas, firma electrónica (NOM-151) y envío digital al paciente o farmacia.
---
## Objetivo de Negocio
- Recetas legibles y sin errores
- Cumplimiento de NOM-151-SCFI-2016
- Agilizar proceso de prescripción
- Evitar errores de medicación
- Trazabilidad de prescripciones
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL005-001 | Como médico, quiero buscar medicamento por nombre genérico o comercial | P0 | 3 | Backlog |
| US-CL005-002 | Como médico, quiero agregar medicamento a receta con dosis y frecuencia | P0 | 5 | Backlog |
| US-CL005-003 | Como médico, quiero ver alertas de interacciones medicamentosas | P0 | 8 | Backlog |
| US-CL005-004 | Como médico, quiero ver alergias conocidas del paciente al prescribir | P0 | 3 | Backlog |
| US-CL005-005 | Como médico, quiero usar recetas previas como base para nueva receta | P1 | 3 | Backlog |
| US-CL005-006 | Como médico, quiero firmar electrónicamente la receta | P0 | 5 | Backlog |
| US-CL005-007 | Como paciente, quiero recibir mi receta por email/WhatsApp | P0 | 3 | Backlog |
| US-CL005-008 | Como médico, quiero indicar si requiere receta resurtible | P1 | 2 | Backlog |
| US-CL005-009 | Como admin, quiero configurar cuadro básico de medicamentos | P1 | 3 | Backlog |
**Total Story Points:** 35 SP
---
## Estructura de Receta
```
┌─────────────────────────────────────────────────────────┐
│ RECETA MÉDICA ELECTRÓNICA │
├─────────────────────────────────────────────────────────┤
│ │
│ DATOS DEL PRESCRIPTOR │
│ ├── Nombre del médico │
│ ├── Cédula profesional │
│ ├── Especialidad │
│ ├── Institución/Consultorio │
│ └── Domicilio y teléfono │
│ │
│ DATOS DEL PACIENTE │
│ ├── Nombre completo │
│ ├── Edad │
│ └── Sexo │
│ │
│ PRESCRIPCIÓN │
│ ├── Medicamento 1 │
│ │ ├── Nombre genérico / comercial │
│ │ ├── Forma farmacéutica │
│ │ ├── Concentración │
│ │ ├── Cantidad │
│ │ ├── Dosis │
│ │ ├── Vía de administración │
│ │ ├── Frecuencia │
│ │ └── Duración del tratamiento │
│ ├── Medicamento 2... │
│ └── Indicaciones adicionales │
│ │
│ DATOS DE CONTROL │
│ ├── Folio único │
│ ├── Fecha de expedición │
│ ├── Fecha de vigencia │
│ ├── Firma electrónica del médico │
│ └── Código QR de verificación │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Verificación de Interacciones
```
┌─────────────────────────────────────────────────────────┐
│ ALERTAS DE INTERACCIÓN │
├─────────────────────────────────────────────────────────┤
│ │
│ ⚠️ INTERACCIÓN GRAVE │
│ Warfarina + Aspirina │
│ Riesgo: Sangrado aumentado │
│ Recomendación: Evitar combinación o monitorear INR │
│ │
│ ⚠️ INTERACCIÓN MODERADA │
│ Metformina + Alcohol │
│ Riesgo: Acidosis láctica │
│ Recomendación: Advertir al paciente │
│ │
│ ⚠️ ALERGIA CONOCIDA │
│ Paciente alérgico a Penicilina │
│ Medicamento prescrito: Amoxicilina │
│ Acción: Requiere confirmación del médico │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Búsqueda de medicamentos
- [ ] Agregar múltiples medicamentos a receta
- [ ] Alertas de interacciones
- [ ] Verificación de alergias
- [ ] Firma electrónica (e.firma o similar)
- [ ] Generación de PDF con código QR
- [ ] Envío digital al paciente
- [ ] Recetas resurtibles
**No Funcionales:**
- [ ] Búsqueda de medicamentos < 500ms
- [ ] Verificación de interacciones < 2 segundos
- [ ] Cumplimiento NOM-151-SCFI-2016
**Tecnicos:**
- [ ] Catálogo de medicamentos (PLM o similar)
- [ ] Base de datos de interacciones
- [ ] Firma electrónica avanzada
- [ ] Generación de PDF con QR
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-007 Farmacia | Requiere recetas para surtir |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `prescriptions`
- [ ] Tablas: 6 (prescriptions, prescription_items, medications, interactions, patient_allergies, signature_logs)
- [ ] Funciones: 3 (check_interactions, validate_prescription, generate_folio)
- [ ] Indices: Por paciente, médico, fecha, medicamento
**Backend:**
- [ ] Modulo: `prescriptions`
- [ ] Entities: 5 (Prescription, PrescriptionItem, Medication, Interaction, PatientAllergy)
- [ ] Services: InteractionChecker, SignatureService
- [ ] Endpoints: 12
- [ ] Tests: 28
**Frontend:**
- [ ] Paginas: 4 (PrescriptionEditor, MedicationSearch, PrescriptionView, PrescriptionHistory)
- [ ] Componentes: 12 (MedicationLine, InteractionAlert, AllergyWarning, SignatureModal, etc.)
- [ ] Stores: 1 (prescriptionsStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/prescriptions | Crear receta |
| GET | /api/prescriptions/:id | Detalle de receta |
| POST | /api/prescriptions/:id/items | Agregar medicamento |
| DELETE | /api/prescriptions/:id/items/:itemId | Quitar medicamento |
| POST | /api/prescriptions/:id/check-interactions | Verificar interacciones |
| POST | /api/prescriptions/:id/sign | Firmar receta |
| POST | /api/prescriptions/:id/send | Enviar al paciente |
| GET | /api/prescriptions/:id/pdf | Descargar PDF |
| GET | /api/medications/search | Buscar medicamentos |
| GET | /api/patients/:id/allergies | Alergias del paciente |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Interacciones no detectadas | Baja | Alto | Base de datos actualizada |
| Firma electrónica inválida | Baja | Alto | Proveedor certificado |
| Errores de dosificación | Media | Alto | Validaciones y rangos |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo de medicamentos disponible
- [ ] Proveedor de firma electrónica seleccionado
## Definition of Done (DoD)
- [ ] Prescripción completa funcionando
- [ ] Alertas de interacciones operativas
- [ ] Firma electrónica válida
- [ ] Envío digital al paciente
- [ ] 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

View File

@ -0,0 +1,242 @@
# EPICA: EPIC-CL-006 - Laboratorio
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-006 |
| **Nombre** | Laboratorio |
| **Modulo** | laboratorio |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 38 |
| **Sprint(s)** | Sprint 6-7 |
---
## Descripcion
Gestión de estudios de laboratorio clínico. Solicitud de estudios desde consulta, toma de muestras, captura de resultados, valores de referencia, alertas de valores críticos y entrega de resultados al paciente.
---
## Objetivo de Negocio
- Flujo completo de laboratorio
- Resultados oportunos
- Alertas de valores críticos
- Integración con expediente clínico
- Control de calidad
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL006-001 | Como médico, quiero solicitar estudios de laboratorio desde la consulta | P0 | 5 | Backlog |
| US-CL006-002 | Como laboratorista, quiero ver órdenes de estudios pendientes | P0 | 3 | Backlog |
| US-CL006-003 | Como laboratorista, quiero registrar toma de muestra con hora y responsable | P0 | 3 | Backlog |
| US-CL006-004 | Como laboratorista, quiero capturar resultados de estudios | P0 | 5 | Backlog |
| US-CL006-005 | Como laboratorista, quiero ver valores de referencia al capturar | P0 | 3 | Backlog |
| US-CL006-006 | Como médico, quiero recibir alerta de valores críticos | P0 | 5 | Backlog |
| US-CL006-007 | Como paciente, quiero descargar mis resultados desde el portal | P0 | 5 | Backlog |
| US-CL006-008 | Como médico, quiero ver historial de estudios del paciente | P1 | 3 | Backlog |
| US-CL006-009 | Como admin, quiero configurar catálogo de estudios con valores de referencia | P0 | 4 | Backlog |
| US-CL006-010 | Como laboratorista, quiero validar resultados antes de liberar | P1 | 2 | Backlog |
**Total Story Points:** 38 SP
---
## Flujo de Laboratorio
```
┌─────────────┐
│ SOLICITUD │ ← Médico solicita estudios
└──────┬──────┘
┌─────────────┐
│ RECEPCIÓN │ ← Paciente llega a lab
└──────┬──────┘
┌─────────────┐
│TOMA_MUESTRA │ ← Flebotomía
└──────┬──────┘
┌─────────────┐
│ EN_PROCESO │ ← Análisis en curso
└──────┬──────┘
┌─────────────┐
│ CAPTURA │ ← Resultados capturados
└──────┬──────┘
┌─────────────┐
│ VALIDACIÓN │ ← QC revisa
└──────┬──────┘
┌─────────────┐
│ LIBERADO │ ← Disponible para médico/paciente
└─────────────┘
```
---
## Estructura de Resultados
```
┌─────────────────────────────────────────────────────────┐
│ RESULTADOS DE LABORATORIO │
├─────────────────────────────────────────────────────────┤
│ │
│ BIOMETRÍA HEMÁTICA COMPLETA │
│ ┌──────────────┬─────────┬──────────────┬───────────┐ │
│ │ Parámetro │ Result. │ Referencia │ Estado │ │
│ ├──────────────┼─────────┼──────────────┼───────────┤ │
│ │ Hemoglobina │ 14.5 │ 13.5-17.5 │ ✓ Normal │ │
│ │ Hematocrito │ 42% │ 40-52% │ ✓ Normal │ │
│ │ Leucocitos │ 12,500 │ 4,500-11,000 │ ⚠️ Alto │ │
│ │ Plaquetas │ 250,000 │ 150K-400K │ ✓ Normal │ │
│ │ Glucosa │ 285 │ 70-100 │ 🔴 CRÍTICO│ │
│ └──────────────┴─────────┴──────────────┴───────────┘ │
│ │
│ 🔴 VALORES CRÍTICOS DETECTADOS │
│ Glucosa: 285 mg/dL - Notificar al médico │
│ │
│ Laboratorista: QFB María García │
│ Fecha toma: 2024-12-08 09:30 │
│ Fecha resultado: 2024-12-08 14:45 │
│ Validado por: Dr. Roberto Sánchez │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Solicitar estudios desde consulta
- [ ] Ver órdenes pendientes
- [ ] Registrar toma de muestra
- [ ] Capturar resultados
- [ ] Valores de referencia
- [ ] Alertas de valores críticos
- [ ] Validación de resultados
- [ ] Entrega de resultados
**No Funcionales:**
- [ ] Alerta de críticos < 1 minuto
- [ ] Historial de 5 años
- [ ] Cumplimiento normativo de laboratorio
**Tecnicos:**
- [ ] Integración con consultas
- [ ] Integración con expediente
- [ ] Notificaciones push para críticos
- [ ] Generación de PDF de resultados
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-011 Expediente | Resultados son parte del expediente |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `laboratory`
- [ ] Tablas: 7 (lab_orders, lab_order_items, samples, results, result_values, studies_catalog, reference_values)
- [ ] Funciones: 3 (check_critical, calculate_status, validate_result)
- [ ] Indices: Por paciente, médico, fecha, estado
**Backend:**
- [ ] Modulo: `laboratory`
- [ ] Entities: 6 (LabOrder, LabOrderItem, Sample, Result, ResultValue, StudyCatalog)
- [ ] Endpoints: 15
- [ ] Tests: 30
**Frontend:**
- [ ] Paginas: 5 (LabOrders, SampleCollection, ResultCapture, ResultViewer, CatalogConfig)
- [ ] Componentes: 12 (OrderCard, ResultGrid, CriticalAlert, ReferenceIndicator, etc.)
- [ ] Stores: 1 (laboratoryStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/laboratory/orders | Crear orden de estudios |
| GET | /api/laboratory/orders | Listar órdenes |
| GET | /api/laboratory/orders/:id | Detalle de orden |
| POST | /api/laboratory/orders/:id/sample | Registrar toma |
| POST | /api/laboratory/orders/:id/results | Capturar resultados |
| POST | /api/laboratory/orders/:id/validate | Validar resultados |
| GET | /api/laboratory/orders/:id/pdf | Descargar PDF |
| GET | /api/laboratory/history/:patientId | Historial del paciente |
| GET | /api/laboratory/studies | Catálogo de estudios |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Críticos no notificados | Baja | Alto | Múltiples canales de alerta |
| Resultados incorrectos | Media | Alto | Doble validación |
| Pérdida de muestras | Baja | Alto | Trazabilidad completa |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Catálogo de estudios definido
- [ ] Valores de referencia documentados
## Definition of Done (DoD)
- [ ] Flujo completo de laboratorio
- [ ] Alertas de críticos funcionando
- [ ] Resultados en expediente
- [ ] PDF de resultados generándose
- [ ] 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

View File

@ -0,0 +1,239 @@
# 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

View File

@ -0,0 +1,268 @@
# 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

View File

@ -0,0 +1,223 @@
# EPICA: EPIC-CL-009 - Reportes
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-009 |
| **Nombre** | Reportes |
| **Modulo** | reportes |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 25 |
| **Sprint(s)** | Sprint 9-10 |
---
## Descripcion
Dashboard y reportes para gestión clínica. Métricas de productividad médica, ocupación de consultorios, estadísticas de diagnósticos, indicadores financieros y reportes para autoridades sanitarias.
---
## Objetivo de Negocio
- Visibilidad de operaciones
- Medición de productividad
- Toma de decisiones informada
- Cumplimiento de reportes regulatorios
- Identificación de oportunidades
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL009-001 | Como director, quiero ver dashboard de consultas del día en tiempo real | P0 | 5 | Backlog |
| US-CL009-002 | Como director, quiero ver productividad por médico (consultas/día) | P0 | 3 | Backlog |
| US-CL009-003 | Como director, quiero ver ocupación de consultorios por hora | P1 | 3 | Backlog |
| US-CL009-004 | Como director, quiero ver top 10 diagnósticos más frecuentes | P1 | 3 | Backlog |
| US-CL009-005 | Como admin, quiero ver reporte de ingresos vs gastos | P0 | 3 | Backlog |
| US-CL009-006 | Como admin, quiero generar reporte para SINBA/SISVER (autoridades) | P0 | 5 | Backlog |
| US-CL009-007 | Como admin, quiero exportar reportes a Excel | P0 | 2 | Backlog |
| US-CL009-008 | Como médico, quiero ver mi resumen de atenciones del mes | P1 | 1 | Backlog |
**Total Story Points:** 25 SP
---
## Dashboard Principal
```
┌─────────────────────────────────────────────────────────┐
│ DASHBOARD CLÍNICA │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ CITAS HOY │ │ CONSULTAS │ │ INGRESOS HOY │ │
│ │ 45 │ │ 38 │ │ $42,300 │ │
│ │ ▲ 12% │ │ ▲ 8% │ │ ▲ 15% │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ PRODUCTIVIDAD POR MÉDICO (HOY) │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Dr. García ████████████████████ 15 consultas │ │
│ │ Dra. López ████████████████ 12 consultas │ │
│ │ Dr. Martínez ██████████ 8 consultas │ │
│ │ Dra. Sánchez ████████ 6 consultas │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ OCUPACIÓN CONSULTORIOS │
│ ┌────────────────────────────────────────────────────┐ │
│ │ 8 9 10 11 12 13 14 15 16 17 18 19 20 │ │
│ │ C-1: ██ ██ ██ ██ ░░ ░░ ██ ██ ██ ██ ██ ░░ ░░ │ │
│ │ C-2: ██ ██ ██ ░░ ░░ ░░ ██ ██ ██ ██ ░░ ░░ ░░ │ │
│ │ C-3: ░░ ██ ██ ██ ██ ░░ ██ ██ ██ ░░ ░░ ░░ ░░ │ │
│ └────────────────────────────────────────────────────┘ │
│ │
│ TOP 5 DIAGNÓSTICOS (ESTE MES) │
│ 1. J06.9 - IVAS (185 casos) │
│ 2. I10 - Hipertensión (142 casos) │
│ 3. E11 - Diabetes T2 (98 casos) │
│ 4. K30 - Dispepsia (76 casos) │
│ 5. M54.5 - Lumbalgia (54 casos) │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Reportes Disponibles
```
OPERATIVOS
├── Consultas por período
├── Productividad por médico
├── Ocupación de consultorios
├── Tiempo de espera promedio
├── Ausentismo de pacientes
└── Estudios de laboratorio realizados
CLÍNICOS
├── Diagnósticos más frecuentes
├── Medicamentos más prescritos
├── Estudios más solicitados
└── Pacientes crónicos
FINANCIEROS
├── Ingresos por servicio
├── Ingresos por aseguradora
├── Cuentas por cobrar
├── Ventas de farmacia
└── Rentabilidad por servicio
REGULATORIOS
├── SINBA (notificación epidemiológica)
├── SISVER (vigilancia epidemiológica)
├── Reporte de medicamentos controlados
└── Estadísticas para acreditación
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Dashboard en tiempo real
- [ ] Productividad por médico
- [ ] Ocupación de consultorios
- [ ] Top diagnósticos
- [ ] Reportes financieros
- [ ] Reportes regulatorios
- [ ] Exportación a Excel
**No Funcionales:**
- [ ] Carga de dashboard < 3 segundos
- [ ] Actualización cada 5 minutos
- [ ] Datos históricos de 3 años
**Tecnicos:**
- [ ] Agregación eficiente
- [ ] Caché de métricas
- [ ] Jobs de precálculo
- [ ] Formatos de autoridades
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| Todos los módulos anteriores | Backlog | Si |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `analytics`
- [ ] Tablas: 4 (daily_stats, doctor_metrics, diagnosis_stats, financial_metrics)
- [ ] Vistas materializadas para consultas frecuentes
**Backend:**
- [ ] Modulo: `reports`
- [ ] Services: MetricsAggregator, ReportGenerator
- [ ] Endpoints: 12
- [ ] Jobs: Cálculo de métricas diarias
- [ ] Tests: 20
**Frontend:**
- [ ] Paginas: 3 (Dashboard, Reports, Export)
- [ ] Componentes: 12 (MetricCard, ChartWidget, ReportTable, etc.)
- [ ] Librería: Chart.js
- [ ] Stores: 1 (reportsStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/reports/dashboard | Dashboard principal |
| GET | /api/reports/productivity | Productividad por médico |
| GET | /api/reports/occupancy | Ocupación de consultorios |
| GET | /api/reports/diagnoses | Top diagnósticos |
| GET | /api/reports/financial | Métricas financieras |
| GET | /api/reports/export/:type | Exportar reporte |
| GET | /api/reports/regulatory/:type | Reporte regulatorio |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] KPIs prioritarios definidos
- [ ] Formatos regulatorios obtenidos
## Definition of Done (DoD)
- [ ] Dashboard funcionando
- [ ] Reportes operativos disponibles
- [ ] Exportación funcionando
- [ ] 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

View File

@ -0,0 +1,278 @@
# EPICA: EPIC-CL-010 - Telemedicina
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-010 |
| **Nombre** | Telemedicina |
| **Modulo** | telemedicina |
| **Fase** | Fase 2 - Extensión |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 11-14 |
---
## Descripcion
Módulo 100% nuevo para consultas médicas remotas. Videoconsultas con WebRTC, sala de espera virtual, compartir pantalla para resultados, prescripción electrónica a distancia y grabación de consultas con consentimiento.
---
## Objetivo de Negocio
- Ampliar alcance geográfico
- Atención sin desplazamiento
- Seguimiento de crónicos remoto
- Nuevas fuentes de ingreso
- Adaptación post-pandemia
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL010-001 | Como paciente, quiero agendar teleconsulta desde el portal | P0 | 5 | Backlog |
| US-CL010-002 | Como paciente, quiero entrar a sala de espera virtual antes de la consulta | P0 | 5 | Backlog |
| US-CL010-003 | Como médico, quiero iniciar videollamada cuando el paciente esté listo | P0 | 8 | Backlog |
| US-CL010-004 | Como médico, quiero compartir pantalla para mostrar resultados al paciente | P0 | 5 | Backlog |
| US-CL010-005 | Como médico, quiero documentar nota clínica durante la videoconsulta | P0 | 3 | Backlog |
| US-CL010-006 | Como médico, quiero generar receta electrónica al finalizar | P0 | 3 | Backlog |
| US-CL010-007 | Como paciente, quiero recibir recordatorio 10 min antes de la consulta | P0 | 3 | Backlog |
| US-CL010-008 | Como paciente, quiero grabar la consulta con consentimiento del médico | P2 | 8 | Backlog |
| US-CL010-009 | Como paciente, quiero enviar fotos de síntomas antes de la consulta | P1 | 5 | Backlog |
| US-CL010-010 | Como médico, quiero terminar la videollamada y cerrar consulta | P0 | 2 | Backlog |
| US-CL010-011 | Como admin, quiero ver reportes de teleconsultas realizadas | P1 | 3 | Backlog |
| US-CL010-012 | Como paciente, quiero evaluar la calidad de la teleconsulta | P2 | 5 | Backlog |
**Total Story Points:** 55 SP
---
## Flujo de Teleconsulta
```
┌─────────────┐
│ AGENDAR │ ← Paciente selecciona teleconsulta
└──────┬──────┘
▼ (-10 min)
┌─────────────┐
│ RECORDATORIO│ ← Email/WhatsApp con link
└──────┬──────┘
┌─────────────┐
│SALA_ESPERA │ ← Paciente espera en sala virtual
└──────┬──────┘
▼ (Médico inicia)
┌─────────────┐
│ VIDEOLLAMADA│ ← WebRTC activo
└──────┬──────┘
├── Chat de texto
├── Compartir pantalla
├── Enviar archivos
┌─────────────┐
│ CERRAR │ ← Médico termina llamada
└──────┬──────┘
┌─────────────┐
│ RECETA │ ← Envío electrónico
│ + NOTA │ ← Documentación
└──────┬──────┘
┌─────────────┐
│ ENCUESTA │ ← Satisfacción del paciente
└─────────────┘
```
---
## Arquitectura WebRTC
```
┌─────────────────────────────────────────────────────────┐
│ ARQUITECTURA TELEMEDICINA │
├─────────────────────────────────────────────────────────┤
│ │
│ PACIENTE MÉDICO │
│ ┌──────────┐ ┌──────────┐ │
│ │ Browser │ │ Browser │ │
│ │ (WebRTC) │ │ (WebRTC) │ │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ │ ┌──────────────────┐ │ │
│ └────┤ TURN/STUN ├──────┘ │
│ │ Server │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────┴─────────┐ │
│ │ Signaling │ │
│ │ Server │ │
│ │ (WebSockets) │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────┴─────────┐ │
│ │ Backend API │ │
│ │ (Express) │ │
│ └──────────────────┘ │
│ │
│ CARACTERÍSTICAS: │
│ ├── Video HD (720p/1080p) │
│ ├── Audio bidireccional │
│ ├── Compartir pantalla │
│ ├── Chat de texto │
│ ├── Transferencia de archivos │
│ └── Grabación (opcional) │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Agendar teleconsulta
- [ ] Sala de espera virtual
- [ ] Videollamada WebRTC
- [ ] Compartir pantalla
- [ ] Chat durante consulta
- [ ] Enviar archivos
- [ ] Documentación de consulta
- [ ] Prescripción electrónica
- [ ] Grabación con consentimiento
- [ ] Encuesta de satisfacción
**No Funcionales:**
- [ ] Latencia < 200ms
- [ ] Video HD estable
- [ ] Funciona en móvil y desktop
- [ ] Conexión cifrada (SRTP)
**Tecnicos:**
- [ ] WebRTC con TURN/STUN
- [ ] WebSockets para signaling
- [ ] Integración con consultas
- [ ] Almacenamiento de grabaciones
---
## 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 | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
| EPIC-CL-005 Recetas | Backlog | Si |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `telemedicine`
- [ ] Tablas: 6 (teleconsultations, waiting_rooms, recordings, chat_messages, file_shares, satisfaction_surveys)
- [ ] Funciones: 2 (generate_room_token, log_session)
- [ ] Indices: Por médico, paciente, fecha, estado
**Backend:**
- [ ] Modulo: `telemedicine`
- [ ] Entities: 5 (Teleconsultation, WaitingRoom, Recording, ChatMessage, Survey)
- [ ] WebSocket Server para signaling
- [ ] Endpoints: 15
- [ ] Tests: 25
**Frontend:**
- [ ] Paginas: 4 (WaitingRoom, VideoCall, PreCallCheck, PostCallSurvey)
- [ ] Componentes: 15 (VideoPlayer, ScreenShare, ChatBox, FileShare, Controls, etc.)
- [ ] WebRTC implementation
- [ ] Stores: 1 (telemedicineStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/telemedicine/sessions | Crear sesión |
| GET | /api/telemedicine/sessions/:id | Estado de sesión |
| POST | /api/telemedicine/sessions/:id/join | Unirse a sala |
| POST | /api/telemedicine/sessions/:id/signal | Señalización WebRTC |
| POST | /api/telemedicine/sessions/:id/end | Terminar llamada |
| POST | /api/telemedicine/sessions/:id/chat | Enviar mensaje |
| POST | /api/telemedicine/sessions/:id/files | Subir archivo |
| POST | /api/telemedicine/sessions/:id/record | Iniciar grabación |
| POST | /api/telemedicine/sessions/:id/survey | Enviar encuesta |
---
## Integraciones Externas
| Servicio | Propósito | Alternativas |
|----------|-----------|--------------|
| Twilio | TURN/STUN + Video | Daily.co, Vonage |
| AWS S3 | Almacenamiento de grabaciones | GCP, Azure |
| WebRTC nativo | Comunicación P2P | - |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Conexión inestable | Media | Alto | Reconexión automática |
| Problemas de audio/video | Media | Alto | Pre-call check |
| Privacidad de grabaciones | Baja | Alto | Encriptación + RBAC |
---
## Nota Técnica
Este módulo es **100% nuevo** y no tiene equivalente en el ERP-Core. Requiere infraestructura especializada para streaming de video y cumplimiento de regulaciones de datos médicos.
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Proveedor de video seleccionado
- [ ] Infraestructura TURN/STUN lista
## Definition of Done (DoD)
- [ ] Videollamada funcionando
- [ ] Sala de espera operativa
- [ ] Integración con consultas
- [ ] Grabación opcional
- [ ] Tests E2E 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

View File

@ -0,0 +1,241 @@
# EPICA: EPIC-CL-011 - Expediente Clínico Electrónico
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-011 |
| **Nombre** | Expediente Clínico Electrónico |
| **Modulo** | expediente |
| **Fase** | Fase 1 - MVP |
| **Prioridad** | P0 (Critico) |
| **Estado** | Backlog |
| **Story Points** | 30 |
| **Sprint(s)** | Sprint 10 |
---
## Descripcion
Vista consolidada del expediente clínico electrónico del paciente. Integra toda la información médica: datos personales, antecedentes, consultas, diagnósticos, recetas, estudios de laboratorio e imagen. Cumple con NOM-024-SSA3-2012.
---
## Objetivo de Negocio
- Historia clínica completa
- Cumplimiento normativo
- Acceso rápido a información
- Continuidad de atención
- Soporte a decisiones clínicas
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL011-001 | Como médico, quiero ver resumen ejecutivo del paciente en una pantalla | P0 | 5 | Backlog |
| US-CL011-002 | Como médico, quiero ver línea de tiempo de atenciones | P0 | 5 | Backlog |
| US-CL011-003 | Como médico, quiero ver todos los diagnósticos históricos | P0 | 3 | Backlog |
| US-CL011-004 | Como médico, quiero ver todos los medicamentos recetados | P0 | 3 | Backlog |
| US-CL011-005 | Como médico, quiero ver resultados de laboratorio con gráficas de tendencia | P0 | 5 | Backlog |
| US-CL011-006 | Como médico, quiero ver estudios de imagen (DICOM viewer) | P1 | 5 | Backlog |
| US-CL011-007 | Como paciente, quiero descargar mi expediente completo en PDF | P1 | 2 | Backlog |
| US-CL011-008 | Como admin, quiero configurar permisos de acceso al expediente | P0 | 2 | Backlog |
**Total Story Points:** 30 SP
---
## Estructura del Expediente (NOM-024)
```
┌─────────────────────────────────────────────────────────┐
│ EXPEDIENTE CLÍNICO ELECTRÓNICO │
├─────────────────────────────────────────────────────────┤
│ │
│ DATOS DE IDENTIFICACIÓN │
│ ├── Nombre completo │
│ ├── Fecha de nacimiento / Edad │
│ ├── Sexo │
│ ├── CURP │
│ └── Datos de contacto │
│ │
│ ANTECEDENTES │
│ ├── Heredo-familiares │
│ ├── Personales no patológicos │
│ ├── Personales patológicos │
│ ├── Gineco-obstétricos (si aplica) │
│ └── Alergias │
│ │
│ NOTAS MÉDICAS │
│ ├── Historia clínica inicial │
│ ├── Notas de evolución │
│ ├── Notas de interconsulta │
│ └── Notas de egreso │
│ │
│ ESTUDIOS │
│ ├── Laboratorio │
│ │ ├── Resultados │
│ │ └── Gráficas de tendencia │
│ └── Imagenología │
│ ├── Radiografías │
│ ├── Ultrasonidos │
│ └── Tomografías/Resonancias │
│ │
│ PRESCRIPCIONES │
│ ├── Recetas emitidas │
│ └── Medicamentos actuales │
│ │
│ CONSENTIMIENTOS │
│ └── Firmados digitalmente │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Vista de Timeline
```
┌─────────────────────────────────────────────────────────┐
│ LÍNEA DE TIEMPO - JUAN PÉREZ │
├─────────────────────────────────────────────────────────┤
│ │
│ DIC 2024 │
│ ├── 08 │ 💊 Receta - Antibiótico 7 días │
│ ├── 08 │ 🩺 Consulta - Dr. García (IVAS) │
│ ├── 05 │ 🧪 Laboratorio - Biometría hemática │
│ │ │
│ NOV 2024 │
│ ├── 22 │ 💊 Receta - Antihipertensivos │
│ ├── 22 │ 🩺 Consulta - Dr. López (Control HTA) │
│ ├── 15 │ 🧪 Laboratorio - Química sanguínea │
│ │ │
│ OCT 2024 │
│ ├── 10 │ 📷 Imagen - Rx Tórax │
│ ├── 10 │ 🩺 Consulta - Dr. García (Tos crónica) │
│ │ │
│ SEP 2024 │
│ ├── 05 │ 🩺 Primera consulta - Historia clínica │
│ └── 05 │ ✍️ Consentimiento informado firmado │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Resumen ejecutivo del paciente
- [ ] Línea de tiempo de atenciones
- [ ] Vista de diagnósticos históricos
- [ ] Vista de medicamentos
- [ ] Gráficas de laboratorio
- [ ] Visor DICOM básico
- [ ] Exportar expediente PDF
- [ ] Control de acceso
**No Funcionales:**
- [ ] Carga de expediente < 3 segundos
- [ ] Cumplimiento NOM-024-SSA3-2012
- [ ] Auditoría de accesos
**Tecnicos:**
- [ ] Integración de todos los módulos
- [ ] Visor DICOM (Cornerstone.js)
- [ ] Generación de PDF estructurado
- [ ] Gráficas con Chart.js
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
| EPIC-CL-005 Recetas | Backlog | Si |
| EPIC-CL-006 Laboratorio | Backlog | Si |
| EPIC-CL-012 Imagenología | Backlog | Parcial |
---
## Desglose Tecnico
**Database:**
- [ ] No requiere tablas nuevas (agrega datos de otros módulos)
- [ ] Vistas optimizadas para consolidación
**Backend:**
- [ ] Modulo: `medical-record`
- [ ] Services: RecordAggregator, PDFExporter
- [ ] Endpoints: 8
- [ ] Tests: 20
**Frontend:**
- [ ] Paginas: 3 (RecordOverview, Timeline, Export)
- [ ] Componentes: 15 (SummaryCard, Timeline, DiagnosisHistory, LabTrends, DICOMViewer, etc.)
- [ ] Visor DICOM con Cornerstone.js
- [ ] Stores: 1 (recordStore)
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| GET | /api/medical-record/:patientId | Expediente completo |
| GET | /api/medical-record/:patientId/summary | Resumen ejecutivo |
| GET | /api/medical-record/:patientId/timeline | Línea de tiempo |
| GET | /api/medical-record/:patientId/diagnoses | Historial de diagnósticos |
| GET | /api/medical-record/:patientId/medications | Historial de medicamentos |
| GET | /api/medical-record/:patientId/labs/trends | Tendencias de laboratorio |
| GET | /api/medical-record/:patientId/export | Exportar PDF |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Expediente incompleto | Media | Alto | Validar datos mínimos |
| Acceso no autorizado | Baja | Alto | RBAC + auditoría |
| Carga lenta | Media | Medio | Paginación + caché |
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Estructura NOM-024 documentada
- [ ] Diseño de UI aprobado
## Definition of Done (DoD)
- [ ] Vista consolidada funcionando
- [ ] Timeline operativo
- [ ] Visor DICOM básico
- [ ] Exportación PDF
- [ ] 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

View File

@ -0,0 +1,314 @@
# EPICA: EPIC-CL-012 - Imagenología
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | EPIC-CL-012 |
| **Nombre** | Imagenología |
| **Modulo** | imagenologia |
| **Fase** | Fase 2 - Extensión |
| **Prioridad** | P1 (Alto) |
| **Estado** | Backlog |
| **Story Points** | 55 |
| **Sprint(s)** | Sprint 15-18 |
---
## Descripcion
Módulo 100% nuevo para gestión de estudios de imagen médica. Solicitud de estudios, integración con equipos de imagen, almacenamiento y visor DICOM, interpretación por radiólogo y entrega de resultados.
---
## Objetivo de Negocio
- Estudios de imagen integrados
- Almacenamiento centralizado (PACS)
- Interpretación oportuna
- Reducción de pérdida de estudios
- Acceso remoto a imágenes
---
## Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-CL012-001 | Como médico, quiero solicitar estudio de imagen desde la consulta | P0 | 5 | Backlog |
| US-CL012-002 | Como técnico, quiero ver órdenes de estudios pendientes | P0 | 3 | Backlog |
| US-CL012-003 | Como técnico, quiero registrar realización de estudio | P0 | 3 | Backlog |
| US-CL012-004 | Como sistema, quiero recibir imágenes DICOM del equipo | P0 | 13 | Backlog |
| US-CL012-005 | Como radiólogo, quiero ver estudios pendientes de interpretar | P0 | 3 | Backlog |
| US-CL012-006 | Como radiólogo, quiero ver imágenes en visor DICOM profesional | P0 | 8 | Backlog |
| US-CL012-007 | Como radiólogo, quiero dictar interpretación del estudio | P0 | 5 | Backlog |
| US-CL012-008 | Como médico, quiero recibir notificación cuando el estudio esté listo | P0 | 3 | Backlog |
| US-CL012-009 | Como paciente, quiero descargar mis estudios de imagen | P1 | 5 | Backlog |
| US-CL012-010 | Como admin, quiero configurar modalidades de imagen disponibles | P0 | 3 | Backlog |
| US-CL012-011 | Como admin, quiero ver reportes de estudios realizados | P1 | 4 | Backlog |
**Total Story Points:** 55 SP
---
## Flujo de Imagenología
```
┌─────────────┐
│ SOLICITUD │ ← Médico solicita estudio
└──────┬──────┘
┌─────────────┐
│ RECEPCIÓN │ ← Paciente llega
└──────┬──────┘
┌─────────────┐
│ REALIZACIÓN │ ← Técnico realiza estudio
└──────┬──────┘
┌─────────────┐
│ DICOM │ ← Imágenes enviadas al PACS
│ UPLOAD │
└──────┬──────┘
┌─────────────┐
│INTERPRETAC. │ ← Radiólogo analiza
└──────┬──────┘
┌─────────────┐
│ LIBERADO │ ← Disponible para médico/paciente
└─────────────┘
```
---
## Arquitectura DICOM/PACS
```
┌─────────────────────────────────────────────────────────┐
│ ARQUITECTURA IMAGENOLOGÍA │
├─────────────────────────────────────────────────────────┤
│ │
│ EQUIPOS DE IMAGEN PACS SERVER │
│ ┌───────────────┐ ┌─────────────────┐ │
│ │ Rayos X │ ──────► │ │ │
│ │ (DICOM) │ │ Orthanc / │ │
│ └───────────────┘ │ DCM4CHEE │ │
│ ┌───────────────┐ │ │ │
│ │ Ultrasonido │ ──────► │ DICOM Store │ │
│ │ (DICOM) │ │ DICOM Query │ │
│ └───────────────┘ │ DICOM Retrieve │ │
│ ┌───────────────┐ │ │ │
│ │ Tomografía │ ──────► │ │ │
│ │ (DICOM) │ └────────┬────────┘ │
│ └───────────────┘ │ │
│ │ │
│ ┌────────┴────────┐ │
│ │ Backend API │ │
│ │ (Express) │ │
│ └────────┬────────┘ │
│ │ │
│ ┌────────┴────────┐ │
│ │ Visor DICOM │ │
│ │ (Cornerstone) │ │
│ └─────────────────┘ │
│ │
│ ESTÁNDARES: │
│ ├── DICOM 3.0 para imágenes │
│ ├── HL7 para integraciones │
│ ├── IHE XDS-I.b para compartir imágenes │
│ └── WADO-RS para acceso web │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Modalidades de Imagen
```
┌─────────────────────────────────────────────────────────┐
│ MODALIDADES SOPORTADAS │
├─────────────────────────────────────────────────────────┤
│ │
│ CR/DR - Radiología Computarizada/Digital │
│ ├── Rayos X de tórax │
│ ├── Rayos X de abdomen │
│ ├── Rayos X de extremidades │
│ └── Rayos X de columna │
│ │
│ US - Ultrasonido │
│ ├── Abdominal │
│ ├── Pélvico │
│ ├── Obstétrico │
│ └── Musculoesquelético │
│ │
│ CT - Tomografía Computarizada │
│ ├── Cráneo │
│ ├── Tórax │
│ ├── Abdomen │
│ └── Columna │
│ │
│ MR - Resonancia Magnética │
│ ├── Cerebro │
│ ├── Columna │
│ └── Articulaciones │
│ │
└─────────────────────────────────────────────────────────┘
```
---
## Criterios de Aceptacion de la Epica
**Funcionales:**
- [ ] Solicitar estudios de imagen
- [ ] Ver órdenes pendientes
- [ ] Registrar realización
- [ ] Recibir imágenes DICOM
- [ ] Visor DICOM profesional
- [ ] Interpretación por radiólogo
- [ ] Notificación de resultados
- [ ] Descarga de estudios
- [ ] Reportes de producción
**No Funcionales:**
- [ ] Carga de imágenes < 5 segundos
- [ ] Almacenamiento de 5+ años
- [ ] Cumplimiento DICOM 3.0
**Tecnicos:**
- [ ] Servidor PACS (Orthanc)
- [ ] Visor Cornerstone.js
- [ ] Integración con consultas
- [ ] Almacenamiento escalable
---
## Dependencias
**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-CL-001 Fundamentos | Backlog | Si |
| EPIC-CL-002 Pacientes | Backlog | Si |
| EPIC-CL-004 Consultas | Backlog | Si |
**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| EPIC-CL-011 Expediente | Imágenes son parte del expediente |
---
## Desglose Tecnico
**Database:**
- [ ] Schema: `imaging`
- [ ] Tablas: 7 (imaging_orders, order_items, studies, series, interpretations, modalities, pacs_log)
- [ ] Funciones: 2 (log_dicom_event, update_study_status)
- [ ] Indices: Por paciente, médico, fecha, modalidad, estado
**Backend:**
- [ ] Modulo: `imaging`
- [ ] Entities: 6 (ImagingOrder, OrderItem, Study, Series, Interpretation, Modality)
- [ ] DICOM Service: Comunicación con PACS
- [ ] Endpoints: 15
- [ ] Tests: 30
**Frontend:**
- [ ] Paginas: 5 (ImagingOrders, Worklist, DICOMViewer, Interpretation, Reports)
- [ ] Componentes: 15 (OrderCard, StudyThumbnail, ViewerTools, InterpretationEditor, etc.)
- [ ] Cornerstone.js para visor DICOM
- [ ] Stores: 1 (imagingStore)
**Infraestructura:**
- [ ] Orthanc PACS Server
- [ ] Almacenamiento S3/MinIO para imágenes
- [ ] CDN para distribución
---
## Endpoints API
| Metodo | Endpoint | Descripcion |
|--------|----------|-------------|
| POST | /api/imaging/orders | Crear orden de estudio |
| GET | /api/imaging/orders | Listar órdenes |
| GET | /api/imaging/orders/:id | Detalle de orden |
| POST | /api/imaging/orders/:id/perform | Registrar realización |
| GET | /api/imaging/studies/:id | Metadatos del estudio |
| GET | /api/imaging/studies/:id/series | Series del estudio |
| GET | /api/imaging/wado-rs/* | WADO-RS para imágenes |
| POST | /api/imaging/interpretations | Crear interpretación |
| GET | /api/imaging/worklist | Lista de trabajo radiólogo |
---
## Integraciones DICOM
| Operación | Protocolo | Uso |
|-----------|-----------|-----|
| C-STORE | DICOM | Recibir imágenes de equipos |
| C-FIND | DICOM | Buscar estudios |
| C-MOVE | DICOM | Recuperar estudios |
| WADO-RS | HTTP | Acceso web a imágenes |
---
## Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Integración DICOM compleja | Alta | Alto | PACS probado (Orthanc) |
| Almacenamiento costoso | Media | Medio | Compresión + tiering |
| Visor lento | Media | Medio | Streaming progresivo |
---
## Nota Técnica
Este módulo es **100% nuevo** y requiere infraestructura especializada:
- Servidor PACS compatible DICOM 3.0
- Almacenamiento de gran capacidad para imágenes
- Visor web profesional (Cornerstone.js)
- Conocimiento de estándares médicos (DICOM, HL7, IHE)
---
## Definition of Ready (DoR)
- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] PACS Server seleccionado
- [ ] Equipos DICOM compatibles
## Definition of Done (DoD)
- [ ] Flujo completo de imagenología
- [ ] Recepción DICOM funcionando
- [ ] Visor profesional operativo
- [ ] Interpretación de estudios
- [ ] 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

38
docs/README.md Normal file
View File

@ -0,0 +1,38 @@
# DOCUMENTACIÓN - ERP Clínicas
**Proyecto:** ERP Clínicas
**Versión:** 1.0.0
**Fecha:** 2025-12-05
**Estado:** Por iniciar
---
## Estructura de Documentación
```
docs/
├── 00-vision-general/ # Visión, objetivos y alcance
├── 01-analisis-referencias/ # Análisis de sistemas de referencia
├── 02-definicion-modulos/ # Lista, índice y dependencias de módulos
├── 03-requerimientos/ # Requerimientos funcionales por módulo
├── 04-modelado/ # Diseño técnico
│ ├── database-design/ # DDL specs, schemas
│ ├── domain-models/ # Modelos de dominio
│ └── especificaciones-tecnicas/ # ET backend/frontend
├── 05-user-stories/ # Historias de usuario
├── 06-test-plans/ # Planes de prueba
├── 07-devops/ # CI/CD, infraestructura
├── 90-transversal/ # Documentos transversales
├── 95-guias-desarrollo/ # Guías para desarrolladores
└── 97-adr/ # Architecture Decision Records
```
---
## Directiva Aplicable
Ver: `/workspace/core/orchestration/directivas/DIRECTIVA-ESTRUCTURA-DOCUMENTACION-PROYECTOS.md`
---
**Última actualización:** 2025-12-05

40
docs/_MAP.md Normal file
View File

@ -0,0 +1,40 @@
# Mapa de Documentacion: erp-clinicas
**Proyecto:** erp-clinicas
**Actualizado:** 2026-01-04
**Generado por:** EPIC-008 adapt-simco.sh
---
## Estructura de Documentacion
```
docs/
├── _MAP.md # Este archivo (indice de navegacion)
├── 00-overview/ # Vision general del proyecto
├── 01-architecture/ # Arquitectura y decisiones (ADRs)
├── 02-specs/ # Especificaciones tecnicas
├── 03-api/ # Documentacion de APIs
├── 04-guides/ # Guias de desarrollo
└── 99-finiquito/ # Entregables cliente (si aplica)
```
## Navegacion Rapida
| Seccion | Descripcion | Estado |
|---------|-------------|--------|
| Overview | Vision general | - |
| Architecture | Decisiones arquitectonicas | - |
| Specs | Especificaciones tecnicas | - |
| API | Documentacion de endpoints | - |
| Guides | Guias de desarrollo | - |
## Estadisticas
- Total archivos en docs/: 27
- Fecha de adaptacion: 2026-01-04
---
**Nota:** Este archivo fue generado automaticamente por EPIC-008.
Actualizar manualmente con la estructura real del proyecto.

View File

@ -0,0 +1,159 @@
# Contexto del Proyecto: ERP Clinicas
## Metadatos
| Campo | Valor |
|-------|-------|
| **Nombre** | ERP Clinicas - Gestion de Consultorios y Clinicas |
| **Tipo** | STANDALONE (Proyecto Independiente) |
| **Nivel** | Vertical que extiende erp-core |
| **Estado** | Por iniciar |
| **Progreso** | 0% |
| **Version** | 0.0.1 |
| **Base** | Extiende projects/erp-core (60-70%) |
| **Extension** | Modulos especificos (+30-40%) |
| **Path** | `/home/isem/workspace-v1/projects/erp-clinicas/` |
| **Fecha Migracion** | 2025-12-27 |
---
## VARIABLES PARA DIRECTIVAS GLOBALES
```yaml
# Identificacion del Proyecto
PROJECT: erp-clinicas
PROJECT_NAME: ERP Clinicas
PROJECT_LEVEL: STANDALONE
# Paths Principales (WORKSPACE-V1)
WORKSPACE_ROOT: ~/workspace-v1
PROJECT_ROOT: ~/workspace-v1/projects/erp-clinicas
APPS_ROOT: ~/workspace-v1/projects/erp-clinicas
DOCS_ROOT: ~/workspace-v1/projects/erp-clinicas/docs
ORCHESTRATION: ~/workspace-v1/projects/erp-clinicas/orchestration
# Herencia de ERP-Core
ERP_CORE_ROOT: ~/workspace-v1/projects/erp-core
HERENCIA_DOC: orchestration/00-guidelines/HERENCIA-ERP-CORE.md
# Base Orchestration (Directivas y Perfiles)
DIRECTIVAS_PATH: ~/workspace-v1/orchestration/directivas
PERFILES_PATH: ~/workspace-v1/orchestration/agents/perfiles
CATALOG_PATH: ~/workspace-v1/core/catalog
# Base de Datos
DB_NAME: erp_clinicas
DB_DDL_PATH: ~/workspace-v1/projects/erp-clinicas/database/ddl
DB_SCRIPTS_PATH: ~/workspace-v1/projects/erp-clinicas/database
# Backend
BACKEND_ROOT: ~/workspace-v1/projects/erp-clinicas/backend
BACKEND_SRC: ~/workspace-v1/projects/erp-clinicas/backend/src
# Frontend
FRONTEND_ROOT: ~/workspace-v1/projects/erp-clinicas/frontend
FRONTEND_SRC: ~/workspace-v1/projects/erp-clinicas/frontend/src
```
---
## Descripcion
ERP especializado para la gestion de clinicas, consultorios medicos y centros de salud. Extiende el ERP Core con funcionalidades especificas del sector salud.
**Funcionalidades principales:**
- Gestion de pacientes y expedientes clinicos
- Agenda y citas medicas
- Historia clinica electronica
- Recetas y prescripciones
- Facturacion medica (CFDI)
- Inventario de medicamentos e insumos
- Reportes clinicos y administrativos
---
## Stack Tecnologico
Hereda completamente del ERP Core:
- **Backend:** Node.js + Express + TypeScript
- **Frontend:** React + TypeScript + Tailwind
- **Database:** PostgreSQL 15+
- **Auth:** JWT + Multi-tenant
---
## Paths del Proyecto
```
/home/isem/workspace-v1/projects/erp-suite/apps/verticales/clinicas/
├── backend/ # Extensiones backend
├── frontend/ # UI especializada
├── database/ # DDL vertical
├── docs/ # Documentacion
└── orchestration/ # Sistema NEXUS
```
---
## Modulos Especificos (MCL-*)
| Codigo | Modulo | Descripcion |
|--------|--------|-------------|
| MCL-001 | pacientes | Gestion de pacientes |
| MCL-002 | expedientes | Historia clinica electronica |
| MCL-003 | citas | Agenda y programacion |
| MCL-004 | recetas | Prescripciones medicas |
| MCL-005 | laboratorio | Resultados de laboratorio |
| MCL-006 | facturacion-medica | CFDI para sector salud |
---
## Modulos del Core que Extiende
| Modulo Core | Extension |
|-------------|-----------|
| MGN-002 Users | Roles medicos (doctor, enfermera, admin) |
| MGN-005 Catalogs | CIE-10, medicamentos, procedimientos |
| MGN-006 Settings | Configuracion de consultorio |
| MGN-008 Notifications | Recordatorios de citas |
| MGN-010 Financial | Facturacion medica |
| MGN-011 Inventory | Medicamentos e insumos |
---
## Schemas de Base de Datos
```
vertical_clinicas # Schema principal
├── patients # Pacientes
├── medical_records # Expedientes clinicos
├── appointments # Citas
├── prescriptions # Recetas
├── vital_signs # Signos vitales
├── lab_results # Resultados laboratorio
└── medical_invoices # Facturacion
```
---
## Principios Especificos
1. **Confidencialidad:** Datos medicos requieren encriptacion adicional
2. **Auditoria:** Log detallado de acceso a expedientes
3. **Normativa:** Cumplir NOM-024-SSA3-2012 (expediente clinico)
4. **Interoperabilidad:** Preparado para HL7 FHIR
---
## Referencias
| Recurso | Path |
|---------|------|
| Directivas globales | `/home/isem/workspace-v1/orchestration/directivas/` |
| Directivas ERP-Core | `/home/isem/workspace-v1/projects/erp-core/orchestration/directivas/` |
| Herencia directivas | `./HERENCIA-DIRECTIVAS.md` |
| Dependencias ERP-Core | `../referencias/DEPENDENCIAS-ERP-CORE.yml` |
| Dependencias Shared | `../referencias/DEPENDENCIAS-SHARED.yml` |
---
*Ultima actualizacion: Diciembre 2025*

View File

@ -0,0 +1,89 @@
# Herencia de Directivas - ERP Clinicas
## Jerarquia de Directivas
Este proyecto hereda directivas en el siguiente orden de precedencia:
```
1. Directivas Globales (CORE) → /home/isem/workspace/core/orchestration/directivas/
2. Directivas ERP-Core → /home/isem/workspace/projects/erp-suite/apps/erp-core/orchestration/directivas/
3. Directivas Clinicas → ./directivas/ (este proyecto)
```
**Regla:** Las directivas especificas pueden **EXTENDER** las heredadas, nunca **REDUCIRLAS**.
---
## Directivas Heredadas de CORE
| Directiva | Proposito |
|-----------|-----------|
| `DIRECTIVA-FLUJO-5-FASES.md` | Flujo de trabajo obligatorio |
| `DIRECTIVA-DOCUMENTACION-OBLIGATORIA.md` | Docs en tiempo real |
| `DIRECTIVA-CALIDAD-CODIGO.md` | Estandares de codigo |
| `DIRECTIVA-DISENO-BASE-DATOS.md` | Diseno BD |
| `DIRECTIVA-CONTROL-VERSIONES.md` | Git |
---
## Directivas Heredadas de ERP-Core
| Directiva | Proposito |
|-----------|-----------|
| `DIRECTIVA-MULTI-TENANT.md` | Aislamiento por tenant |
| `DIRECTIVA-EXTENSION-VERTICALES.md` | Como extender el core |
| `DIRECTIVA-DOCUMENTACION-PRE-DESARROLLO.md` | Documentar antes de desarrollar |
| `DIRECTIVA-PATRONES-ODOO.md` | Patrones de diseno |
| `DIRECTIVA-HERENCIA-MODULOS.md` | Extension de modulos |
| `ESTANDARES-API-REST-GENERICO.md` | APIs REST |
---
## Directivas Especificas de Clinicas
| Directiva | Proposito | Estado |
|-----------|-----------|--------|
| `DIRECTIVA-CONFIDENCIALIDAD-MEDICA.md` | Proteccion datos pacientes | Por crear |
| `DIRECTIVA-EXPEDIENTE-CLINICO.md` | NOM-024-SSA3-2012 | Por crear |
| `DIRECTIVA-AUDITORIA-ACCESOS.md` | Log de acceso a expedientes | Por crear |
| `DIRECTIVA-INTEROPERABILIDAD-HL7.md` | Estandar HL7 FHIR | Por crear |
---
## Modulos que Usa del Core
| Modulo Core | Uso en Clinicas |
|-------------|-----------------|
| MGN-001 Auth | Directo |
| MGN-002 Users | Extendido (roles medicos) |
| MGN-004 Tenants | Directo |
| MGN-005 Catalogs | Extendido (CIE-10, medicamentos) |
| MGN-006 Settings | Extendido (config consultorio) |
| MGN-008 Notifications | Extendido (recordatorios citas) |
| MGN-010 Financial | Extendido (facturacion medica) |
| MGN-011 Inventory | Extendido (medicamentos) |
---
## Consideraciones Especiales
### Seguridad de Datos Medicos
- Encriptacion AES-256 para expedientes
- Logs de auditoria inmutables
- Control de acceso por rol medico
- Cumplimiento LFPDPPP
### Normativa Aplicable
- NOM-024-SSA3-2012 (Expediente clinico electronico)
- NOM-004-SSA3-2012 (Expediente clinico)
- CFDI 4.0 para facturacion
---
## Referencias
- Core: `/home/isem/workspace/core/orchestration/directivas/`
- ERP-Core: `/home/isem/workspace/projects/erp-suite/apps/erp-core/orchestration/directivas/`
---
*Ultima actualizacion: Diciembre 2025*

View File

@ -0,0 +1,184 @@
# Herencia de ERP Core - Vertical Clinicas
**Version:** 1.0.0
**Vertical:** Clinicas
**Nivel:** STANDALONE (proyecto independiente)
**Version ERP-Core:** 1.2.0
**Ruta ERP-Core:** projects/erp-core
**Herencia:** 60-70% de funcionalidad base de erp-core
**Fecha Migracion:** 2025-12-27
---
## RESUMEN DE HERENCIA
Este documento especifica exactamente que hereda la vertical Clinicas del ERP Core y como lo extiende.
---
## 1. MODULOS HEREDADOS (100%)
| Modulo Core | Codigo | Uso en Clinicas |
|-------------|--------|-----------------|
| Auth | MGN-001 | Autenticacion con seguridad reforzada |
| Users | MGN-002 | Gestion de personal medico |
| Roles | MGN-003 | Roles medicos (doctor, enfermera, admin) |
| Audit | MGN-007 | Auditoria de acceso a expedientes |
| Notifications | MGN-008 | Recordatorios de citas |
| Reports | MGN-009 | Reportes medicos y administrativos |
**Accion:** NO crear codigo para estos modulos. Usar directamente del core.
---
## 2. MODULOS HEREDADOS Y EXTENDIDOS
### MGN-004: Tenants → Clinicas/Consultorios
```yaml
herencia_base:
- Multi-tenancy basico
extension_clinicas:
- Clinica/Consultorio como tenant
- Campos adicionales:
- licencia_sanitaria
- especialidades_medicas[]
- horarios_atencion
- numero_consultorios
- Relaciones:
- clinica → consultorios (1:N)
- clinica → medicos (1:N)
```
### MGN-005: Catalogs → Catalogos Medicos
```yaml
herencia_base:
- CRUD de catalogos genericos
extension_clinicas:
- Catalogo CIE-10 (diagnosticos)
- Catalogo de procedimientos medicos
- Catalogo de medicamentos (cuadro basico)
- Catalogo de laboratorios
- Catalogo de especialidades medicas
```
### MGN-010: Financial → Facturacion Medica
```yaml
herencia_base:
- Plan de cuentas
- Facturacion basica
extension_clinicas:
- CFDI para sector salud
- Deducibilidad de gastos medicos
- Integracion con aseguradoras
```
---
## 3. ESPECIFICACIONES TRANSVERSALES HEREDADAS
### Obligatorias
| Especificacion | Gap | Uso |
|----------------|-----|-----|
| `SPEC-RRHH-EVALUACIONES-SKILLS.md` | GAP-MGN-010 | Credenciales medicas |
| `SPEC-INTEGRACION-CALENDAR.md` | GAP-MGN-014 | Agenda de citas |
| `SPEC-MAIL-THREAD-TRACKING.md` | Patron | Comunicacion con pacientes |
### Recomendadas
| Especificacion | Gap | Uso |
|----------------|-----|-----|
| `SPEC-TWO-FACTOR-AUTHENTICATION.md` | GAP-MGN-001 | Seguridad acceso expedientes |
| `SPEC-SISTEMA-SECUENCIAS.md` | GAP-MGN-004 | Foliado de expedientes |
| `SPEC-SCHEDULER-REPORTES.md` | GAP-MGN-012 | Recordatorios automaticos |
---
## 4. MODULOS PROPIOS (No heredados)
| Codigo | Modulo | Descripcion |
|--------|--------|-------------|
| CL-001 | patients | Registro de pacientes |
| CL-002 | appointments | Agenda y citas |
| CL-003 | medical_records | Expediente clinico electronico |
| CL-004 | prescriptions | Recetas medicas |
| CL-005 | laboratory | Resultados de laboratorio |
| CL-006 | medical_billing | Facturacion medica CFDI |
---
## 5. SCHEMAS DE BASE DE DATOS
### Heredados de Core
```yaml
schemas_core:
- auth (con seguridad reforzada)
- core_users
- core_rbac
- core_tenants (extendido)
- core_catalogs (extendido)
- core_audit (critico para HIPAA/datos sensibles)
```
### Propios de Clinicas
```yaml
schemas_vertical:
- vertical_clinicas
- patients
- medical_records (ENCRIPTADO)
- appointments
- prescriptions
- vital_signs
- lab_results
```
---
## 6. CONSIDERACIONES ESPECIALES
### Cumplimiento Normativo
**CRITICO:** Este vertical maneja datos sensibles de salud.
- **NOM-024-SSA3-2012:** Expediente clinico electronico
- **Ley de Proteccion de Datos Personales:** Datos sensibles
- **COFEPRIS:** Requisitos de trazabilidad
### Requisitos de Seguridad
1. **Encriptacion obligatoria** de datos medicos en reposo
2. **Auditoria completa** de acceso a expedientes
3. **Control de acceso** granular por paciente
4. **Consentimiento informado** digital
5. **Backup cifrado** de expedientes
### Interoperabilidad Futura
- HL7 FHIR para intercambio de datos
- Integracion con laboratorios externos
- Receta electronica SAT
---
## 7. REFERENCIAS
| Recurso | Ubicacion |
|---------|-----------|
| MASTER_INVENTORY Core | `erp-core/orchestration/inventarios/MASTER_INVENTORY.yml` |
| Specs Transversales | `erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/` |
| NOM-024-SSA3-2012 | Normativa externa |
| HERENCIA-DIRECTIVAS | `./HERENCIA-DIRECTIVAS.md` |
---
*Sistema NEXUS + SIMCO v2.2.0*
*Vertical: Clinicas (Nivel 2B.2)*
*Ultima actualizacion: 2025-12-08*

View File

@ -0,0 +1,138 @@
# Herencia SIMCO - ERP Clínicas
**Sistema:** SIMCO v2.2.0 + CAPVED + CCA Protocol
**Fecha:** 2025-12-08
---
## Configuración del Proyecto
| Propiedad | Valor |
|-----------|-------|
| **Proyecto** | ERP Clínicas - Vertical para Clínicas/Consultorios |
| **Nivel** | VERTICAL (Nivel 3) |
| **Padre** | erp-core |
| **Suite** | erp-suite |
| **SIMCO Version** | 2.2.0 |
| **CAPVED** | Habilitado |
| **CCA Protocol** | Habilitado |
| **Estado** | 0% - Futuro |
## Jerarquía de Herencia
```
Nivel 0: core/orchestration/ ← FUENTE PRINCIPAL
└── Nivel 1: erp-suite/orchestration/
└── Nivel 2: erp-core/orchestration/ ← PADRE DIRECTO
└── Nivel 3: clinicas/orchestration/ ← ESTE PROYECTO
```
---
## Directivas Heredadas de CORE (OBLIGATORIAS)
### Ciclo de Vida
| Alias | Propósito |
|-------|-----------|
| `@TAREA` | Punto de entrada para toda HU |
| `@CAPVED` | Ciclo de 6 fases |
| `@INICIALIZACION` | Bootstrap de agentes |
### Operaciones Universales
| Alias | Propósito |
|-------|-----------|
| `@CREAR` | Crear archivos nuevos |
| `@MODIFICAR` | Modificar existentes |
| `@VALIDAR` | Validar código |
| `@DOCUMENTAR` | Documentar trabajo |
| `@BUSCAR` | Buscar información |
| `@DELEGAR` | Delegar a subagentes |
### Principios Fundamentales
| Alias | Resumen |
|-------|---------|
| `@CAPVED` | Toda tarea pasa por 6 fases |
| `@DOC_PRIMERO` | Consultar docs/ antes de implementar |
| `@ANTI_DUP` | Verificar que no existe |
| `@VALIDACION` | Build y lint DEBEN pasar |
| `@TOKENS` | Desglosar tareas grandes |
---
## Directivas por Dominio Técnico
| Alias | Aplica | Notas |
|-------|--------|-------|
| `@OP_DDL` | **SÍ** | Schemas de salud (HIPAA-ready) |
| `@OP_BACKEND` | **SÍ** | Servicios de citas, expediente |
| `@OP_FRONTEND` | **SÍ** | UI de consultorio |
| `@OP_MOBILE` | **SÍ** | App de pacientes |
| `@OP_ML` | Futuro | Análisis de diagnósticos |
---
## Patrones Heredados (OBLIGATORIOS)
Todos los patrones de `core/orchestration/patrones/` aplican.
**IMPORTANTE:** `@PATRON-SEGURIDAD` es crítico para datos de salud.
---
## Directivas Heredadas de ERP Core
| Directiva | Extensión Local |
|-----------|-----------------|
| `DIRECTIVA-MULTI-TENANT.md` | Por `clinica_id` |
| `DIRECTIVA-EXTENSION-VERTICALES.md` | Módulos de salud |
---
## Variables de Contexto CCA
```yaml
PROJECT_NAME: "clinicas"
PROJECT_LEVEL: "VERTICAL"
PROJECT_ROOT: "./"
PARENT_PROJECT: "erp-core"
SUITE_PROJECT: "erp-suite"
DB_DDL_PATH: "database/ddl"
BACKEND_ROOT: "backend/src"
FRONTEND_ROOT: "frontend/src"
TENANT_COLUMN: "clinica_id"
RLS_CONTEXT: "app.current_clinica_id"
# Compliance
HIPAA_READY: true
DATA_ENCRYPTION: "AES-256"
```
---
## Módulos Específicos de Clínicas (Por definir)
| Módulo | Descripción | Estado |
|--------|-------------|--------|
| CLI-CIT | Citas/agenda | Por definir |
| CLI-PAC | Pacientes | Por definir |
| CLI-EXP | Expediente clínico | Por definir |
| CLI-REC | Recetas | Por definir |
| CLI-FAC | Facturación médica | Por definir |
| CLI-LAB | Laboratorio | Por definir |
---
## Consideraciones de Seguridad (CRÍTICAS)
- Datos sensibles de salud requieren encriptación
- Cumplimiento con regulaciones de privacidad
- Auditoría detallada de accesos
- Consentimiento informado digital
---
**Sistema:** SIMCO v2.2.0 + CAPVED + CCA Protocol
**Nivel:** VERTICAL (3)
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,199 @@
# Herencia de SPECS del Core - Clínicas
**Fecha:** 2025-12-08
**Versión:** 1.0
**Vertical:** Clínicas (CL)
**Nivel:** 2B.2
---
## Resumen
| Métrica | Valor |
|---------|-------|
| SPECS Aplicables | 24/30 |
| SPECS Obligatorias | 20 |
| SPECS Opcionales | 4 |
| SPECS No Aplican | 6 |
| Estado Implementación | 0% |
---
## SPECS Obligatorias (Deben Implementarse)
### P0 - Críticas
| SPEC | Gap Original | SP | Estado | Módulos Afectados |
|------|-------------|----:|--------|-------------------|
| SPEC-SISTEMA-SECUENCIAS | ir.sequence | 8 | PENDIENTE | CL-001, CL-002, CL-005 |
| SPEC-SEGURIDAD-API-KEYS-PERMISOS | API Keys + ACL | 31 | PENDIENTE | CL-001, CL-011 |
| SPEC-REPORTES-FINANCIEROS | Balance/P&L SAT | 13 | PENDIENTE | CL-008, CL-009 |
| SPEC-NOMINA-BASICA | hr_payroll | 21 | PENDIENTE | CL-001 |
| SPEC-GASTOS-EMPLEADOS | hr_expense | 13 | PENDIENTE | CL-001 |
| SPEC-SCHEDULER-REPORTES | ir.cron + mail | 8 | PENDIENTE | CL-009 |
| SPEC-INTEGRACION-CALENDAR | calendar integration | 8 | PENDIENTE | CL-003 |
### P1 - Complementarias
| SPEC | Gap Original | SP | Estado | Módulos Afectados |
|------|-------------|----:|--------|-------------------|
| SPEC-CONTABILIDAD-ANALITICA | Centros de costo | 21 | PENDIENTE | CL-008, CL-009 |
| SPEC-CONCILIACION-BANCARIA | Conciliación | 21 | PENDIENTE | CL-008 |
| SPEC-FIRMA-ELECTRONICA-NOM151 | e.firma | 13 | PENDIENTE | CL-011 |
| SPEC-TWO-FACTOR-AUTHENTICATION | 2FA | 13 | PENDIENTE | CL-001 |
| SPEC-TRAZABILIDAD-LOTES-SERIES | Lotes/Series | 13 | PENDIENTE | CL-007 |
| SPEC-OAUTH2-SOCIAL-LOGIN | OAuth2 | 8 | PENDIENTE | CL-002, CL-010 |
| SPEC-IMPUESTOS-AVANZADOS | IVA, ISR | 8 | PENDIENTE | CL-008 |
| SPEC-PLANTILLAS-CUENTAS | Plan contable | 8 | PENDIENTE | CL-008 |
| SPEC-TASAS-CAMBIO-AUTOMATICAS | Tipos cambio | 5 | PENDIENTE | CL-008 |
| SPEC-ALERTAS-PRESUPUESTO | Alertas | 8 | PENDIENTE | CL-008 |
| SPEC-RRHH-EVALUACIONES-SKILLS | Evaluaciones | 26 | PENDIENTE | CL-001 |
| SPEC-LOCALIZACION-PAISES | Localización | 13 | PENDIENTE | CL-001, CL-008 |
### Patrones Técnicos
| SPEC | Patrón | SP | Estado | Aplicación |
|------|--------|----:|--------|------------|
| SPEC-MAIL-THREAD-TRACKING | mail.thread | 13 | PENDIENTE | Expedientes, Citas, Comunicación |
| SPEC-WIZARD-TRANSIENT-MODEL | TransientModel | 8 | PENDIENTE | Wizards de receta, referencia |
---
## SPECS Opcionales
| SPEC | Descripción | SP | Decisión | Razón |
|------|-------------|----:|----------|-------|
| SPEC-VALORACION-INVENTARIO | FIFO/AVCO | 21 | EVALUAR | Solo para farmacia interna |
| SPEC-PRICING-RULES | Reglas precio | 8 | EVALUAR | Para paquetes de servicios |
| SPEC-TAREAS-RECURRENTES | Recurrencia | 13 | EVALUAR | Para citas periódicas |
| SPEC-PRESUPUESTOS-REVISIONES | Aprobación | 8 | EVALUAR | Para tratamientos largos |
---
## SPECS No Aplicables
| SPEC | Razón |
|------|-------|
| SPEC-PORTAL-PROVEEDORES | No hay compras complejas |
| SPEC-BLANKET-ORDERS | No aplica en servicios médicos |
| SPEC-INVENTARIOS-CICLICOS | Solo si hay farmacia grande |
| SPEC-PROYECTOS-DEPENDENCIAS-BURNDOWN | No hay proyectos de este tipo |
| SPEC-CONSOLIDACION-FINANCIERA | Generalmente una clínica |
---
## Adaptaciones Requeridas
### Mapeo de Conceptos Core → Clínicas
| Concepto Core | Concepto Clínicas |
|---------------|-------------------|
| `core.partners` | Pacientes |
| `sales.sale_orders` | Consultas/Servicios |
| `inventory.products` | Medicamentos, servicios médicos |
| `hr.employees` | Personal médico |
| `calendar.events` | Citas médicas |
| `financial.invoices` | Facturas de consulta |
### Extensiones de Entidad
```sql
-- Pacientes (extiende partners)
patients.patients (
partner_id → core.partners,
numero_expediente VARCHAR UNIQUE,
fecha_nacimiento DATE,
sexo ENUM('M', 'F'),
tipo_sangre VARCHAR(5),
alergias TEXT[],
antecedentes JSONB,
seguro_medico_id → insurance_policies
)
-- Expediente clínico
medical.clinical_records (
id UUID,
patient_id → patients,
fecha TIMESTAMPTZ,
tipo ENUM('consulta', 'urgencia', 'hospitalizacion'),
motivo_consulta TEXT,
diagnostico TEXT,
tratamiento TEXT,
medico_id → hr.employees,
signos_vitales JSONB
)
-- Citas médicas
appointments.appointments (
id UUID,
patient_id → patients,
doctor_id → hr.employees,
specialty_id → specialties,
fecha_hora TIMESTAMPTZ,
duracion_minutos INTEGER,
estado ENUM('programada', 'confirmada', 'en_progreso', 'completada', 'cancelada'),
notas TEXT
)
-- Recetas médicas
medical.prescriptions (
id UUID,
clinical_record_id → clinical_records,
fecha TIMESTAMPTZ,
vigencia_dias INTEGER,
firma_electronica BYTEA,
productos JSONB
)
```
---
## Cumplimiento Normativo
Esta vertical debe cumplir con normas específicas:
| Norma | Descripción | SPECS Relacionadas |
|-------|-------------|-------------------|
| NOM-024-SSA3-2012 | Expediente clínico electrónico | SPEC-SEGURIDAD, SPEC-MAIL-THREAD |
| LFPDPPP | Protección de datos personales | SPEC-SEGURIDAD, SPEC-2FA |
| NOM-004-SSA3-2012 | Expediente clínico | SPEC-FIRMA-ELECTRONICA |
---
## Plan de Implementación
### Fase 1: Fundamentos (SP: 60)
1. SPEC-SISTEMA-SECUENCIAS
2. SPEC-SEGURIDAD-API-KEYS-PERMISOS
3. SPEC-TWO-FACTOR-AUTHENTICATION
4. SPEC-OAUTH2-SOCIAL-LOGIN
### Fase 2: Agenda y Comunicación (SP: 34)
5. SPEC-INTEGRACION-CALENDAR
6. SPEC-MAIL-THREAD-TRACKING
7. SPEC-WIZARD-TRANSIENT-MODEL
### Fase 3: Expediente y Cumplimiento (SP: 39)
8. SPEC-FIRMA-ELECTRONICA-NOM151
9. SPEC-RRHH-EVALUACIONES-SKILLS
### Fase 4: Financiero (SP: 65)
10. SPEC-REPORTES-FINANCIEROS
11. SPEC-CONTABILIDAD-ANALITICA
12. SPEC-CONCILIACION-BANCARIA
13. SPEC-IMPUESTOS-AVANZADOS
---
## Referencias
- Documento Core: `erp-core/docs/04-modelado/MAPEO-SPECS-VERTICALES.md`
- SPECS del Core: `erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/`
- Herencia DB: `database/HERENCIA-ERP-CORE.md`
- Directivas: `orchestration/directivas/`
- Normatividad: NOM-024-SSA3-2012, LFPDPPP, NOM-004-SSA3-2012
---
**Documento de herencia de SPECS oficial**
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,162 @@
# Herencia de Especificaciones - ERP Core -> Clinicas
**Fecha:** 2025-12-08
**Version:** 1.0
**Vertical:** Clinicas
**Nivel:** 2B.2
---
## RESUMEN
Este documento define las especificaciones transversales del ERP Core que la vertical de Clinicas debe heredar e implementar.
**Ubicacion specs core:** `apps/erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/`
---
## ESPECIFICACIONES A HEREDAR
### 1. SPEC-RRHH-EVALUACIONES-SKILLS.md
**Prioridad:** ALTA
**Relevancia:** Gestion de personal medico y administrativo
**Funcionalidades heredadas:**
- Evaluaciones de desempeno
- Gestion de competencias (skills)
- Pipeline de reclutamiento
- Certificaciones y capacitaciones
**Adaptacion para clinicas:**
- Certificaciones medicas (cedulas profesionales)
- Especialidades y subespecialidades
- Evaluaciones de competencias clinicas
- Capacitaciones obligatorias (NOM-035, etc.)
- Vigencia de certificaciones
**Modulos afectados:**
- Recursos Humanos
- Directorio Medico
- Credencializacion
- Capacitacion
---
### 2. SPEC-INTEGRACION-CALENDAR.md
**Prioridad:** ALTA
**Relevancia:** Agenda de citas medicas
**Funcionalidades heredadas:**
- Eventos de calendario
- Sincronizacion con Google/Outlook
- Sistema de citas online (appointments)
- Recordatorios y alarmas
- Slots de disponibilidad
**Adaptacion para clinicas:**
- Agenda de consultorios
- Citas por especialidad/medico
- Duracion variable por tipo de consulta
- Recordatorios a pacientes (SMS, WhatsApp)
- Manejo de lista de espera
- Reagendamiento automatico
**Modulos afectados:**
- Agenda Medica
- Citas
- Portal de Pacientes
- Consultorios
---
### 3. SPEC-MAIL-THREAD-TRACKING.md
**Prioridad:** MEDIA
**Relevancia:** Tracking de expedientes clinicos
**Funcionalidades heredadas:**
- Decorador `@Tracked` para seguimiento de cambios
- Sistema de mensajes
- Followers y notificaciones
- Actividades y recordatorios
**Adaptacion para clinicas:**
- Historial de cambios en expediente clinico
- Notificaciones de resultados de laboratorio
- Seguimiento de tratamientos
- Comunicacion entre areas medicas
- Audit trail para regulaciones (NOM-024)
**Modulos afectados:**
- Expediente Clinico
- Laboratorio
- Imagenologia
- Enfermeria
---
## ESPECIFICACIONES ADICIONALES RECOMENDADAS
| Especificacion | Relevancia | Prioridad |
|----------------|------------|-----------|
| SPEC-WIZARD-TRANSIENT-MODEL.md | Asistentes de admision/alta | Media |
| SPEC-FIRMA-ELECTRONICA-NOM151.md | Firma de consentimientos | Media |
| SPEC-TRAZABILIDAD-LOTES-SERIES.md | Medicamentos y materiales | Media |
| SPEC-INVENTARIOS-CICLICOS.md | Farmacia interna | Baja |
---
## MATRIZ DE HERENCIA
| Spec Core | Modulos Clinicas | Prioridad | Estado |
|-----------|------------------|-----------|--------|
| SPEC-RRHH-EVALUACIONES-SKILLS | RRHH, Directorio Medico | ALTA | Pendiente |
| SPEC-INTEGRACION-CALENDAR | Agenda, Citas | ALTA | Pendiente |
| SPEC-MAIL-THREAD-TRACKING | Expediente, Laboratorio | MEDIA | Pendiente |
---
## IMPLEMENTACION
### Orden Sugerido
1. **Fase 1 - Agenda**
- SPEC-INTEGRACION-CALENDAR (critico para operacion)
2. **Fase 2 - Personal**
- SPEC-RRHH-EVALUACIONES-SKILLS (certificaciones medicas)
3. **Fase 3 - Tracking**
- SPEC-MAIL-THREAD-TRACKING (expediente clinico)
### Consideraciones Especificas
- Las clinicas tienen regulaciones estrictas (NOM-024, NOM-035)
- La gestion de citas es critica para la operacion
- El personal medico requiere certificaciones vigentes
- El expediente clinico requiere trazabilidad completa
---
## CONSIDERACIONES REGULATORIAS
| Regulacion | Specs Relacionadas | Impacto |
|------------|-------------------|---------|
| NOM-024-SSA3 (Expediente Clinico Electronico) | MAIL-THREAD-TRACKING | Audit trail obligatorio |
| NOM-035-STPS (Riesgos Psicosociales) | RRHH-EVALUACIONES-SKILLS | Capacitaciones |
| LFPDPPP (Proteccion de Datos) | Todas | Consentimiento y seguridad |
---
## REFERENCIAS
- Specs Core: `apps/erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/`
- Gap Analysis: `apps/erp-core/orchestration/01-analisis/ANALISIS-GAPS-CONSOLIDADO.md`
---
**Documento generado por:** Requirements-Analyst
**Fecha:** 2025-12-08
**Version:** 1.0

View File

@ -0,0 +1,33 @@
# PROJECT STATUS: erp-clinicas
**Ultima actualizacion:** 2026-01-04
**Estado general:** Activo
---
## Metricas Rapidas
| Metrica | Valor |
|---------|-------|
| Archivos docs/ | 27 |
| Archivos orchestration/ | 23 |
| Estado SIMCO | Adaptado |
## Migracion EPIC-008
- [x] Migracion desde workspace-v1-bckp (EPIC-004/005)
- [x] Adaptacion SIMCO (EPIC-008)
- [x] docs/_MAP.md creado
- [x] PROJECT-STATUS.md creado
- [x] HERENCIA-SIMCO.md verificado
- [x] CONTEXTO-PROYECTO.md verificado
## Historial de Cambios
| Fecha | Cambio | EPIC |
|-------|--------|------|
| 2026-01-04 | Adaptacion SIMCO completada | EPIC-008 |
---
**Generado por:** EPIC-008 adapt-simco.sh

View File

@ -0,0 +1,122 @@
# Próxima Acción - ERP Clínicas
## Estado Actual
**Fecha:** Diciembre 2025
**Progreso:** 20% (Planificación completa)
---
## Documentación Disponible
### Módulos Definidos (12 módulos - 395 SP)
| Módulo | Nombre | SP | Estado |
|--------|--------|---:|--------|
| CL-001 | Fundamentos | 0 | PLANIFICADO |
| CL-002 | Pacientes | 34 | PLANIFICADO |
| CL-003 | Citas | 42 | PLANIFICADO |
| CL-004 | Consultas | 47 | PLANIFICADO |
| CL-005 | Recetas | 34 | PLANIFICADO |
| CL-006 | Laboratorio | 42 | PLANIFICADO |
| CL-007 | Farmacia | 34 | PLANIFICADO |
| CL-008 | Facturación | 21 | PLANIFICADO |
| CL-009 | Reportes | 34 | PLANIFICADO |
| CL-010 | Telemedicina | 47 | PLANIFICADO |
| CL-011 | Expediente | 39 | PLANIFICADO |
| CL-012 | Imagenología | 21 | PLANIFICADO |
### Documentos de Referencia
- Visión: `docs/00-vision-general/VISION-CLINICAS.md`
- Módulos: `docs/02-definicion-modulos/INDICE-MODULOS.md`
- Herencia SPECS: `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`
- Inventario: `orchestration/inventarios/MASTER_INVENTORY.yml`
---
## Prerrequisitos
Este proyecto requiere que **erp-core** esté completado primero:
- [ ] Módulo auth de erp-core (para 2FA)
- [ ] Módulo users de erp-core
- [ ] Módulo tenants de erp-core
- [ ] Módulo inventory base de erp-core (farmacia)
- [ ] CFDI de erp-core
---
## Cumplimiento Normativo
### NOM-024-SSA3-2012 (Expediente Clínico)
- Estructura SOAP para notas clínicas
- Campos obligatorios de historia clínica
- Consentimiento informado
- Firma electrónica de recetas
### LFPDPPP (Protección de Datos)
- Encriptación de datos sensibles
- Consentimiento de tratamiento
- Auditoría de accesos
- Derecho de acceso del paciente
---
## Tarea Prioritaria (Cuando esté listo)
### 1. Crear DDL del Schema Clinical
**Objetivo:** Definir estructura de base de datos para expediente clínico.
**Tablas a crear:**
- `clinical.patients`
- `clinical.patient_contacts`
- `clinical.patient_insurance`
- `clinical.appointments`
- `clinical.consultations`
- `clinical.diagnoses`
**Archivo destino:** `database/ddl/01-clinical-schema.sql`
### 2. Implementar Extensión 2FA
**Objetivo:** 2FA obligatorio para personal médico.
**Referencia:** Ver `erp-core/docs/04-modelado/especificaciones-tecnicas/transversal/SPEC-TWO-FACTOR-AUTHENTICATION.md`
---
## Consideraciones Especiales
1. **Seguridad:** 2FA obligatorio para personal médico
2. **Encriptación:** Datos sensibles (antecedentes, alergias)
3. **Auditoría:** Log de accesos a expedientes
4. **Integración:** HL7/FHIR para interoperabilidad
---
## Ambiente de Desarrollo
Según `DEVENV-PORTS.md`:
```yaml
proyecto: clinicas
rango_base: 3500
puertos:
backend: 3500
frontend: 5178
database: 5437
redis: 6384
```
---
## Próximos Pasos
1. [ ] Esperar completitud de erp-core (auth con 2FA, users, tenants)
2. [ ] Validar cumplimiento NOM-024-SSA3-2012
3. [ ] Diseñar arquitectura de encriptación
4. [ ] Crear DDL schema clinical
5. [ ] Iniciar backend CL-001 (heredar de core + 2FA)
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,242 @@
# DIRECTIVA-EXPEDIENTE-CLINICO
**Version:** 1.0
**Fecha:** 2025-12-08
**Vertical:** Clinicas
**Nivel:** 2B.2
---
## PROPOSITO
Define las directrices para la implementacion del expediente clinico electronico.
---
## ALCANCE
- Historial medico del paciente
- Consultas y notas medicas
- Recetas y prescripciones
- Estudios y resultados
- Cumplimiento normativo
---
## NORMATIVA APLICABLE
### NOM-024-SSA3-2012
**Intercambio de informacion en salud**
Requerimientos:
- Estructura estandarizada de datos
- Interoperabilidad con otros sistemas
- Identificacion unica del paciente
### NOM-004-SSA3-2012
**Del expediente clinico**
Requerimientos:
- Consentimiento informado
- Nota de ingreso
- Notas de evolucion
- Ordenes medicas
- Resultados de estudios
### Ley Federal de Proteccion de Datos Personales
- Datos de salud = datos sensibles
- Consentimiento expreso requerido
- Derecho de acceso, rectificacion, cancelacion, oposicion (ARCO)
---
## PRINCIPIOS
### 1. Integridad de Datos
- Registros inmutables (no se borran, se anulan)
- Firma electronica del medico
- Auditoria completa de accesos
### 2. Confidencialidad
- Acceso basado en roles
- Encriptacion en reposo y transito
- Logs de acceso obligatorios
### 3. Disponibilidad
- Acceso 24/7 para emergencias
- Respaldos automaticos
- Plan de recuperacion
---
## MODELO DE DATOS
### medical_records (expediente)
```yaml
campos:
- id: uuid
- patient_id: FK -> clinica.patients
- record_number: string (unico por clinica)
- created_at: timestamp
- allergies_reviewed: boolean
- blood_type: enum(A+, A-, B+, B-, AB+, AB-, O+, O-)
```
### consultations (consultas)
```yaml
campos:
- id: uuid
- medical_record_id: FK -> medical_records
- appointment_id: FK -> appointments
- doctor_id: FK -> clinica.doctors
- consultation_type: enum(first, followup, emergency)
- chief_complaint: text # motivo de consulta
- present_illness: text # padecimiento actual
- physical_exam: json # exploracion fisica
- assessment: text # valoracion
- plan: text # plan de tratamiento
- signed_at: timestamp
- signature_hash: string # firma electronica
```
### vital_signs (signos vitales)
```yaml
campos:
- id: uuid
- consultation_id: FK -> consultations
- blood_pressure_systolic: integer
- blood_pressure_diastolic: integer
- heart_rate: integer
- respiratory_rate: integer
- temperature: decimal
- weight: decimal
- height: decimal
- oxygen_saturation: integer
- recorded_by: FK -> auth.users
- recorded_at: timestamp
```
### diagnoses (diagnosticos)
```yaml
campos:
- id: uuid
- consultation_id: FK -> consultations
- cie10_code: string # codigo CIE-10
- description: text
- diagnosis_type: enum(principal, secondary, presumptive, definitive)
- notes: text
```
### prescriptions (recetas)
```yaml
campos:
- id: uuid
- consultation_id: FK -> consultations
- patient_id: FK -> patients
- doctor_id: FK -> doctors
- prescription_number: string
- medications: json # array de medicamentos
- instructions: text
- valid_until: date
- signed_at: timestamp
- signature_hash: string
```
---
## FLUJO DE CONSULTA
```
1. Paciente llega a cita
|
2. Enfermera registra signos vitales
|
3. Medico accede al expediente
|
4. Revisa historial y alergias
|
5. Realiza consulta
|
6. Documenta en sistema
|-- Motivo de consulta
|-- Exploracion fisica
|-- Diagnostico (CIE-10)
|-- Plan de tratamiento
|
7. Genera receta (si aplica)
|
8. Firma electronica
|
9. Cierra consulta
```
---
## SEGURIDAD Y ACCESOS
### Roles y Permisos
| Rol | Permisos |
|-----|----------|
| Medico | CRUD consultas propias, lectura historial |
| Enfermera | Signos vitales, lectura basica |
| Recepcion | Datos demograficos, citas |
| Admin | Configuracion, reportes |
### Auditoria Obligatoria
Cada acceso al expediente registra:
- Usuario
- Fecha/hora
- Accion realizada
- IP de origen
- Motivo de acceso
### Encriptacion
```
Datos en reposo:
- AES-256 para campos sensibles
- Llaves rotadas cada 90 dias
Datos en transito:
- TLS 1.3
- Certificados validos
```
---
## INTEGRACION CON CORE
### Herencia de Specs
| Spec Core | Aplicacion |
|-----------|------------|
| SPEC-MAIL-THREAD-TRACKING | Historial de cambios |
| SPEC-INTEGRACION-CALENDAR | Agenda de citas |
| SPEC-RRHH-EVALUACIONES-SKILLS | Especialidades medicas |
### APIs a Extender
- `PartnerService` -> `PatientService`
- `EmployeeService` -> `DoctorService`
- Sistema de tracking -> Historial expediente
---
## REFERENCIAS
- NOM-024-SSA3-2012
- NOM-004-SSA3-2012
- Ley Federal de Proteccion de Datos Personales
- HERENCIA-SPECS-ERP-CORE.md
---
**Documento de directiva oficial**

View File

@ -0,0 +1,242 @@
# DIRECTIVA-GESTION-CITAS
**Version:** 1.0
**Fecha:** 2025-12-08
**Vertical:** Clinicas
**Nivel:** 2B.2
---
## PROPOSITO
Define las directrices para el sistema de gestion de citas medicas.
---
## ALCANCE
- Agenda de medicos
- Programacion de citas
- Confirmaciones y recordatorios
- Gestion de consultorios
---
## PRINCIPIOS
### 1. Disponibilidad Visible
- Horarios de medicos siempre actualizados
- Slots disponibles en tiempo real
- Sin overbooking
### 2. Comunicacion Proactiva
- Confirmacion inmediata de cita
- Recordatorios automaticos (24h, 2h antes)
- Notificacion de cambios
### 3. Optimizacion de Recursos
- Maximizar uso de consultorios
- Minimizar tiempos muertos
- Balance de carga entre medicos
---
## MODELO DE DATOS
### doctors (medicos)
```yaml
campos:
- id: uuid
- employee_id: FK -> hr.employees
- license_number: string # cedula profesional
- specialty_id: FK -> specialties
- consultation_duration: integer # minutos default
- max_daily_appointments: integer
- status: enum(active, inactive, vacation)
```
### doctor_schedules (horarios)
```yaml
campos:
- id: uuid
- doctor_id: FK -> doctors
- day_of_week: enum(mon, tue, wed, thu, fri, sat, sun)
- start_time: time
- end_time: time
- consulting_room_id: FK -> consulting_rooms
- is_active: boolean
```
### appointments (citas)
```yaml
campos:
- id: uuid
- patient_id: FK -> patients
- doctor_id: FK -> doctors
- appointment_type_id: FK -> appointment_types
- consulting_room_id: FK -> consulting_rooms
- scheduled_start: timestamp
- scheduled_end: timestamp
- actual_start: timestamp
- actual_end: timestamp
- status: enum(scheduled, confirmed, in_progress, completed, cancelled, no_show)
- cancellation_reason: text
- notes: text
```
### consulting_rooms (consultorios)
```yaml
campos:
- id: uuid
- room_number: string
- floor: string
- equipment: json # equipo disponible
- specialty_id: FK -> specialties (si es especializado)
- status: enum(available, occupied, maintenance)
```
---
## FLUJO DE CITA
### Programacion
```
1. Paciente solicita cita
|
2. Selecciona especialidad/medico
|
3. Sistema muestra disponibilidad
|
4. Paciente selecciona horario
|
5. Sistema valida:
|-- Disponibilidad del medico
|-- Disponibilidad del consultorio
|-- No conflictos del paciente
|
6. Cita creada (status: scheduled)
|
7. Notificacion al paciente
```
### Confirmacion
```
24 horas antes:
Sistema envia recordatorio
Paciente puede:
- Confirmar
- Reprogramar
- Cancelar
2 horas antes:
Sistema envia recordatorio final
```
### Dia de la Cita
```
1. Paciente llega
|
2. Recepcion marca llegada
|
3. Cuando medico esta listo:
|-- Cita pasa a "in_progress"
|-- Registra hora real de inicio
|
4. Al terminar:
|-- Cita pasa a "completed"
|-- Registra hora real de fin
```
---
## ESTADOS DE CITA
```
scheduled --> confirmed --> in_progress --> completed
| | |
v v v
cancelled no_show cancelled
```
### Reglas de Transicion
| De | A | Condicion |
|----|---|-----------|
| scheduled | confirmed | Paciente confirma |
| scheduled | cancelled | Antes de 24h |
| confirmed | in_progress | Paciente presente |
| confirmed | no_show | No se presento |
| in_progress | completed | Consulta terminada |
---
## NOTIFICACIONES
### Canales
| Canal | Uso |
|-------|-----|
| Email | Confirmacion, recordatorios |
| SMS | Recordatorio 2h antes |
| WhatsApp | Opcional, si configurado |
| Push | Si tiene app instalada |
### Templates
```
Confirmacion:
"Su cita con Dr. {doctor} ha sido confirmada para el {fecha} a las {hora}."
Recordatorio 24h:
"Le recordamos su cita manana {fecha} a las {hora} con Dr. {doctor}.
Por favor confirme respondiendo SI o cancele respondiendo NO."
Recordatorio 2h:
"Su cita es en 2 horas. Direccion: {direccion}. Consultorio: {consultorio}."
```
---
## INTEGRACION CON CORE
### Herencia de Specs
| Spec Core | Aplicacion |
|-----------|------------|
| SPEC-INTEGRACION-CALENDAR | Base del calendario |
| SPEC-TAREAS-RECURRENTES | Citas recurrentes |
| SPEC-MAIL-THREAD-TRACKING | Historial de comunicacion |
### APIs a Extender
- Calendar del core para la agenda
- Notification service para recordatorios
---
## METRICAS
| Metrica | Objetivo | Alerta |
|---------|----------|--------|
| Ocupacion de agenda | > 80% | < 60% |
| No-shows | < 5% | > 10% |
| Tiempo de espera | < 15 min | > 30 min |
| Confirmaciones | > 90% | < 80% |
---
## REFERENCIAS
- SPEC-INTEGRACION-CALENDAR.md (core)
- DIRECTIVA-EXPEDIENTE-CLINICO.md
- HERENCIA-SPECS-ERP-CORE.md
---
**Documento de directiva oficial**

View File

@ -0,0 +1,262 @@
# =============================================================================
# PROJECT-ENV-CONFIG.yml - ERP CLINICAS
# =============================================================================
# Vertical de ERP-Suite especializada en Clínicas y Consultorios Médicos
# Actualizado: 2025-12-08
# Referencia: ~/workspace/core/devtools/environment/DEVENV-PORTS.md
# =============================================================================
project:
name: "ERP-CLINICAS"
code: "CL"
description: "Sistema para Clínicas y Consultorios con Cumplimiento NOM-024"
type: "vertical"
level: "2B.2"
status: "planning"
parent: "erp-suite"
paths:
root: "/home/isem/workspace/projects/erp-suite/apps/verticales/clinicas"
backend: "backend/"
frontend: "frontend/"
database: "database/"
docs: "docs/"
orchestration: "orchestration/"
# =============================================================================
# PUERTOS (Según DEVENV-PORTS.md)
# =============================================================================
ports:
backend: 3500
frontend: 5178
database: 5437
redis: 6384
# =============================================================================
# BASE DE DATOS
# =============================================================================
database:
type: "postgresql"
host: "localhost"
port: 5437
name: "clinicas_db"
user: "clinicas_user"
schemas:
core_inherited: 12 # Schemas heredados de erp-core
vertical_specific:
- clinical # Pacientes, citas, consultas, expediente
- pharmacy # Stock medicamentos, dispensaciones
- laboratory # Órdenes lab, resultados
- imaging # Estudios DICOM, metadatos
- telemedicine # Sesiones video, grabaciones
encryption:
enabled: true
algorithm: "AES-256"
encrypted_fields:
- antecedentes_medicos
- alergias
- diagnosticos
- notas_clinicas
migration:
tool: "typeorm"
directory: "database/migrations/"
# =============================================================================
# STACK TECNOLOGICO
# =============================================================================
stack:
runtime: "Node.js 20+"
language: "TypeScript 5.3+"
backend:
framework: "Express.js"
orm: "TypeORM 0.3.17"
encryption: "AES-256"
frontend:
framework: "React 18"
build: "Vite"
ui: "Tailwind CSS + shadcn/ui"
auth:
base: "JWT + bcryptjs"
extension: "2FA obligatorio para personal médico"
# =============================================================================
# HERENCIA DEL CORE
# =============================================================================
core_inheritance:
version: "0.6.0"
tables_inherited: 97
modules_inherited:
- auth # + extensión 2FA
- users
- roles
- tenants
- inventory # Para farmacia
- cfdi
specs_applicable: 6
specs_implemented: 0
specs_detail:
- SPEC-INTEGRACION-CALENDAR
- SPEC-MAIL-THREAD-TRACKING
- SPEC-TRAZABILIDAD-LOTES-SERIES
- SPEC-FACTURACION-CFDI
- SPEC-TWO-FACTOR-AUTHENTICATION
- SPEC-RRHH-EVALUACIONES-SKILLS
# =============================================================================
# MODULOS DE LA VERTICAL
# =============================================================================
modules:
total: 12
story_points: 395
list:
- code: CL-001
name: Fundamentos
sp: 0
priority: P0
status: pending
compliance: LFPDPPP
- code: CL-002
name: Pacientes
sp: 34
priority: P0
status: pending
compliance: LFPDPPP
- code: CL-003
name: Citas
sp: 42
priority: P0
status: pending
- code: CL-004
name: Consultas SOAP
sp: 47
priority: P0
status: pending
compliance: NOM-024
- code: CL-005
name: Recetas
sp: 34
priority: P0
status: pending
compliance: NOM-024
- code: CL-006
name: Laboratorio
sp: 42
priority: P1
status: pending
- code: CL-007
name: Farmacia
sp: 34
priority: P1
status: pending
- code: CL-008
name: Facturación CFDI
sp: 21
priority: P0
status: pending
- code: CL-009
name: Reportes
sp: 34
priority: P1
status: pending
- code: CL-010
name: Telemedicina
sp: 47
priority: P2
status: pending
- code: CL-011
name: Expediente NOM-024
sp: 39
priority: P0
status: pending
compliance: NOM-024
- code: CL-012
name: Imagenología DICOM
sp: 21
priority: P2
status: pending
# =============================================================================
# CUMPLIMIENTO NORMATIVO
# =============================================================================
compliance:
nom_024_ssa3_2012:
name: "Expediente Clínico Electrónico"
requirements:
- estructura_soap: "Subjetivo, Objetivo, Análisis, Plan"
- campos_obligatorios:
- identificacion_paciente
- fecha_consulta
- motivo_consulta
- exploracion_fisica
- diagnostico_cie10
- plan_tratamiento
- firma_electronica: "Requerida en recetas"
- consentimiento_informado: "Documentado"
lfpdppp:
name: "Ley Federal de Protección de Datos Personales"
requirements:
- encriptacion: "AES-256 para datos sensibles"
- auditoria: "Log de accesos a expedientes"
- consentimiento: "Tratamiento de datos"
- derecho_acceso: "Portal de paciente"
# =============================================================================
# SEGURIDAD ESPECIAL
# =============================================================================
security:
two_factor_auth:
required_for: "medical_staff"
methods: ["TOTP", "SMS"]
data_encryption:
algorithm: "AES-256"
key_rotation: "quarterly"
audit_logging:
enabled: true
events:
- medical_record_access
- prescription_created
- patient_data_modified
- consent_updated
retention: "10 years" # Requerimiento NOM-024
# =============================================================================
# ARCHIVOS DE ENTORNO
# =============================================================================
env_files:
template: "orchestration/environment/.env.example"
backend: "backend/.env"
frontend: "frontend/.env"
env_variables:
required:
- NODE_ENV
- PORT
- DATABASE_URL
- JWT_SECRET
- REDIS_URL
- ENCRYPTION_KEY # Para AES-256
- TWILIO_SID # Para 2FA SMS
- TWILIO_AUTH_TOKEN
optional:
- LOG_LEVEL
- CORS_ORIGIN
- HL7_ENDPOINT # Interoperabilidad
# =============================================================================
# NOTAS
# =============================================================================
notes: |
- Vertical especializada en sector salud
- CRITICO: Cumplimiento NOM-024-SSA3-2012 (expediente clínico)
- CRITICO: Cumplimiento LFPDPPP (protección de datos)
- 2FA OBLIGATORIO para personal médico
- Encriptación AES-256 para datos sensibles
- Auditoría de accesos con retención 10 años
- Puertos asignados según DEVENV-PORTS.md (rango 3500)

View File

@ -0,0 +1,80 @@
# BACKEND INVENTORY - ERP Clínicas (Vertical)
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
proyecto:
nombre: ERP Clinicas
codigo: clinicas
nivel: 2B.2 (Vertical)
estado: Planificacion
herencia_core:
backend: erp-core
servicios_heredados: 40+
referencia: "apps/erp-core/backend/"
servicios_planificados:
pacientes:
- nombre: PatientService
modulo: CL-001
endpoints:
- POST /api/v1/clinica/patients
- GET /api/v1/clinica/patients
- GET /api/v1/clinica/patients/:id
- GET /api/v1/clinica/patients/:id/history
citas:
- nombre: AppointmentService
modulo: CL-002
endpoints:
- POST /api/v1/clinica/appointments
- GET /api/v1/clinica/appointments
- GET /api/v1/clinica/appointments/available-slots
- PATCH /api/v1/clinica/appointments/:id/cancel
- PATCH /api/v1/clinica/appointments/:id/confirm
- nombre: DoctorService
modulo: CL-002
endpoints:
- GET /api/v1/clinica/doctors
- GET /api/v1/clinica/doctors/:id/schedule
expediente_clinico:
- nombre: MedicalRecordService
modulo: CL-003
seguridad: ENCRIPTADO
endpoints:
- GET /api/v1/clinica/patients/:id/medical-record
- POST /api/v1/clinica/consultations
- POST /api/v1/clinica/prescriptions
servicios:
- nombre: MedicalServiceCatalogService
modulo: CL-004
endpoints:
- GET /api/v1/clinica/services
- GET /api/v1/clinica/services/:id/price
facturacion:
- nombre: MedicalInvoiceService
modulo: CL-005
endpoints:
- POST /api/v1/clinica/invoices
- POST /api/v1/clinica/invoices/:id/stamp-cfdi
reportes:
- nombre: MedicalReportService
modulo: CL-006
endpoints:
- GET /api/v1/clinica/reports/appointments
- GET /api/v1/clinica/reports/revenue
resumen:
servicios_heredados: 40+
servicios_planificados: 7
endpoints_planificados: 18
estado_general: PLANIFICACION
ultima_actualizacion: 2025-12-08
referencias:
herencia_core: "../00-guidelines/HERENCIA-ERP-CORE.md"

View File

@ -0,0 +1,158 @@
# DATABASE INVENTORY - ERP Clínicas (Vertical)
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
proyecto:
nombre: ERP Clinicas
codigo: clinicas
nivel: 2B.2 (Vertical)
estado: Planificacion
herencia_core:
base_de_datos: erp-core
version_core: "1.2.0"
tablas_heredadas: 144 # Actualizado 2025-12-09 según conteo real DDL
schemas_heredados:
- nombre: auth
tablas: 26 # Autenticación, MFA, OAuth, API Keys
- nombre: core
tablas: 12 # Partners (pacientes), catálogos, UoM
- nombre: financial
tablas: 15 # Contabilidad, facturas, pagos
- nombre: inventory
tablas: 20 # Medicamentos, insumos médicos
- nombre: purchase
tablas: 8 # Compras de insumos
- nombre: sales
tablas: 10 # Servicios médicos, facturación
- nombre: projects
tablas: 10 # Tratamientos (como proyectos)
- nombre: analytics
tablas: 7 # Centros de costo por consultorio
- nombre: system
tablas: 13 # Mensajes, notificaciones, logs
- nombre: billing
tablas: 11 # SaaS (opcional)
- nombre: crm
tablas: 6 # Pacientes potenciales (opcional)
- nombre: hr
tablas: 6 # Personal médico, contratos
referencia_ddl: "apps/erp-core/database/ddl/"
documento_herencia: "../database/HERENCIA-ERP-CORE.md"
variable_rls: "app.current_tenant_id"
schemas_especificos:
- nombre: clinica
descripcion: Schema para operaciones de clinica/consultorio
estado: PLANIFICADO
modulos_relacionados: [CL-001, CL-002, CL-003, CL-004, CL-005, CL-006]
nota: "Datos sensibles - Requiere encriptacion"
tablas_planificadas:
pacientes:
- nombre: clinica.patients
descripcion: Registro de pacientes
modulo: CL-001
prioridad: P0
seguridad: DATOS_SENSIBLES
- nombre: clinica.patient_contacts
descripcion: Contactos de emergencia
modulo: CL-001
prioridad: P1
- nombre: clinica.patient_insurance
descripcion: Informacion de seguros
modulo: CL-001
prioridad: P1
citas:
- nombre: clinica.appointments
descripcion: Citas medicas
modulo: CL-002
prioridad: P0
- nombre: clinica.appointment_slots
descripcion: Horarios disponibles
modulo: CL-002
prioridad: P0
- nombre: clinica.doctors
descripcion: Medicos y especialistas
modulo: CL-002
prioridad: P0
- nombre: clinica.specialties
descripcion: Catalogo de especialidades
modulo: CL-002
prioridad: P0
expediente_clinico:
- nombre: clinica.medical_records
descripcion: Expediente clinico electronico
modulo: CL-003
prioridad: P0
seguridad: ENCRIPTADO
normativa: NOM-024-SSA3-2012
- nombre: clinica.consultations
descripcion: Consultas realizadas
modulo: CL-003
prioridad: P0
- nombre: clinica.diagnoses
descripcion: Diagnosticos (CIE-10)
modulo: CL-003
prioridad: P0
- nombre: clinica.prescriptions
descripcion: Recetas medicas
modulo: CL-003
prioridad: P1
- nombre: clinica.vital_signs
descripcion: Signos vitales
modulo: CL-003
prioridad: P1
servicios:
- nombre: clinica.medical_services
descripcion: Catalogo de servicios medicos
modulo: CL-004
prioridad: P0
- nombre: clinica.service_prices
descripcion: Precios por servicio
modulo: CL-004
prioridad: P1
facturacion:
- nombre: clinica.invoices
descripcion: Facturas medicas
modulo: CL-005
prioridad: P1
nota: CFDI para sector salud
specs_core_requeridas:
- spec: SPEC-RRHH-EVALUACIONES-SKILLS.md
aplicacion: Credenciales medicas
- spec: SPEC-INTEGRACION-CALENDAR.md
aplicacion: Agenda de citas
- spec: SPEC-TWO-FACTOR-AUTHENTICATION.md
aplicacion: Seguridad acceso expedientes
consideraciones_seguridad:
- Encriptacion obligatoria de expedientes medicos
- Auditoria completa de acceso a datos sensibles
- Cumplimiento NOM-024-SSA3-2012
- Proteccion de datos personales de salud
resumen:
tablas_heredadas: 120+
tablas_especificas_planificadas: 15
schemas_especificos: 1
estado_general: PLANIFICACION
ultima_actualizacion: 2025-12-08
referencias:
herencia_core: "../00-guidelines/HERENCIA-ERP-CORE.md"

View File

@ -0,0 +1,61 @@
# DEPENDENCY GRAPH - ERP Clínicas (Vertical)
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
proyecto:
nombre: ERP Clinicas
nivel: 2B.2 (Vertical)
modulos_verticales:
CL-001_pacientes:
depende_de: []
core: [auth, users, tenants]
CL-002_citas:
depende_de:
- CL-001_pacientes
core: [auth, users, tenants, notifications]
CL-003_expediente_clinico:
depende_de:
- CL-001_pacientes
- CL-002_citas
core: [auth, users, audit]
seguridad: CRITICO
CL-004_servicios:
depende_de: []
core: [auth, catalogs]
CL-005_facturacion:
depende_de:
- CL-001_pacientes
- CL-002_citas
- CL-004_servicios
core: [auth, financial]
CL-006_reportes:
depende_de:
- CL-002_citas
- CL-005_facturacion
core: [auth, reports]
modulos_core_heredados:
- MGN-001_auth (100% + 2FA reforzado)
- MGN-002_users (100%)
- MGN-003_roles (100%)
- MGN-004_tenants (extendido)
- MGN-007_audit (CRITICO para HIPAA)
- MGN-008_notifications (100%)
orden_implementacion:
fase_1: [CL-001, CL-004]
fase_2: [CL-002]
fase_3: [CL-003]
fase_4: [CL-005, CL-006]
resumen:
total_modulos: 6
dependencias_internas: 7
estado: PLANIFICACION
ultima_actualizacion: 2025-12-08

View File

@ -0,0 +1,57 @@
# FRONTEND INVENTORY - ERP Clínicas (Vertical)
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
proyecto:
nombre: ERP Clinicas
codigo: clinicas
nivel: 2B.2 (Vertical)
estado: Planificacion
herencia_core:
frontend: erp-core
componentes_heredados: 80+
referencia: "apps/erp-core/frontend/"
componentes_planificados:
pacientes:
- PatientList
- PatientForm
- PatientDetail
- PatientSearch
citas:
- AppointmentCalendar
- AppointmentForm
- AppointmentList
- DoctorScheduleView
- SlotSelector
expediente_clinico:
- MedicalRecordView
- ConsultationForm
- PrescriptionForm
- VitalSignsForm
- DiagnosisSelector
servicios:
- ServiceCatalog
- ServicePriceList
facturacion:
- MedicalInvoiceForm
- InvoiceList
reportes:
- AppointmentReport
- RevenueReport
- PatientStatistics
resumen:
componentes_heredados: 80+
componentes_planificados: 18
estado_general: PLANIFICACION
ultima_actualizacion: 2025-12-08
referencias:
herencia_core: "../00-guidelines/HERENCIA-ERP-CORE.md"

View File

@ -0,0 +1,213 @@
# MASTER INVENTORY - ERP Clínicas (Vertical)
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
proyecto:
nombre: ERP Clínicas
codigo: CL
nivel: 2B.2 (Vertical)
estado: EPICAS_COMPLETAS
version: 0.3.0
path: /home/isem/workspace/projects/erp-suite/apps/verticales/clinicas
herencia:
core_version: "0.6.0"
tablas_heredadas: 144
schemas_heredados: 12
specs_aplicables: 22
specs_implementadas: 0
resumen_general:
total_modulos: 12
total_schemas_planificados: 1
total_tablas_planificadas: 13
total_tablas_implementadas: 13
total_servicios_backend: 0
total_componentes_frontend: 0
story_points_estimados: 451
test_coverage: N/A
ultima_actualizacion: 2025-12-09
modulos:
total: 12
lista:
- codigo: CL-001
nombre: Fundamentos
descripcion: Auth con 2FA obligatorio, seguridad médica
herencia: 90%
prioridad: P0
estado: PLANIFICADO
sp: 0
- codigo: CL-002
nombre: Pacientes
descripcion: Registro y expediente básico
herencia: 40%
prioridad: P0
estado: EPICA_COMPLETA
sp: 38
epica: docs/08-epicas/EPIC-CL-002-pacientes.md
- codigo: CL-003
nombre: Citas
descripcion: Agenda médica con recordatorios
herencia: 30%
prioridad: P0
estado: EPICA_COMPLETA
sp: 42
epica: docs/08-epicas/EPIC-CL-003-citas.md
- codigo: CL-004
nombre: Consultas
descripcion: Registro de consultas y SOAP
herencia: 0%
prioridad: P0
estado: EPICA_COMPLETA
sp: 55
epica: docs/08-epicas/EPIC-CL-004-consultas.md
- codigo: CL-005
nombre: Recetas
descripcion: Prescripciones y medicamentos
herencia: 20%
prioridad: P0
estado: EPICA_COMPLETA
sp: 35
epica: docs/08-epicas/EPIC-CL-005-recetas.md
- codigo: CL-006
nombre: Laboratorio
descripcion: Órdenes y resultados
herencia: 10%
prioridad: P1
estado: EPICA_COMPLETA
sp: 38
epica: docs/08-epicas/EPIC-CL-006-laboratorio.md
- codigo: CL-007
nombre: Farmacia
descripcion: Inventario de medicamentos
herencia: 60%
prioridad: P1
estado: EPICA_COMPLETA
sp: 40
epica: docs/08-epicas/EPIC-CL-007-farmacia.md
- codigo: CL-008
nombre: Facturacion
descripcion: CFDI servicios médicos
herencia: 70%
prioridad: P0
estado: EPICA_COMPLETA
sp: 38
epica: docs/08-epicas/EPIC-CL-008-facturacion.md
- codigo: CL-009
nombre: Reportes
descripcion: Estadísticas clínicas
herencia: 40%
prioridad: P1
estado: EPICA_COMPLETA
sp: 25
epica: docs/08-epicas/EPIC-CL-009-reportes.md
- codigo: CL-010
nombre: Telemedicina
descripcion: Videoconsultas remotas
herencia: 0%
prioridad: P2
estado: EPICA_COMPLETA
sp: 55
epica: docs/08-epicas/EPIC-CL-010-telemedicina.md
- codigo: CL-011
nombre: Expediente
descripcion: Historia clínica NOM-024
herencia: 10%
prioridad: P0
estado: EPICA_COMPLETA
sp: 30
epica: docs/08-epicas/EPIC-CL-011-expediente.md
- codigo: CL-012
nombre: Imagenologia
descripcion: Visor DICOM y estudios
herencia: 0%
prioridad: P2
estado: EPICA_COMPLETA
sp: 55
epica: docs/08-epicas/EPIC-CL-012-imagenologia.md
specs_core:
aplicables: 22
implementadas: 0
por_implementar: 22
documento: orchestration/00-guidelines/HERENCIA-SPECS-CORE.md
detalle:
- spec: SPEC-SISTEMA-SECUENCIAS
estado: PENDIENTE
- spec: SPEC-SEGURIDAD-API-KEYS-PERMISOS
estado: PENDIENTE
- spec: SPEC-TRAZABILIDAD-LOTES-SERIES
estado: PENDIENTE
- spec: SPEC-MAIL-THREAD-TRACKING
estado: PENDIENTE
- spec: SPEC-RRHH-EVALUACIONES
estado: PENDIENTE
- spec: SPEC-INTEGRACION-CALENDAR
estado: PENDIENTE
- spec: SPEC-WIZARD-TRANSIENT-MODEL
estado: PENDIENTE
- spec: SPEC-FACTURACION-CFDI
estado: PENDIENTE
capas:
database:
inventario: DATABASE_INVENTORY.yml
schemas_implementados: [clinical]
tablas_implementadas: 13
enums_implementados: 4
ddl_files:
- init/00-extensions.sql
- init/01-create-schemas.sql
- init/02-rls-functions.sql
- init/03-clinical-tables.sql
estado: DDL_COMPLETO
backend:
inventario: BACKEND_INVENTORY.yml
modulos_planificados: 12
estado: PLANIFICADO
frontend:
inventario: FRONTEND_INVENTORY.yml
paginas_planificadas: 25
estado: PLANIFICADO
dependencias_core:
obligatorias:
- auth (MGN-001)
- users (MGN-002)
- roles (MGN-003)
- tenants (MGN-004)
opcionales:
- catalogs (MGN-005)
- financial (MGN-010)
- inventory (MGN-011)
- cfdi (MGN-016)
- calendar (MGN-020)
consideraciones_especiales:
- Cumplimiento NOM-024-SSA3-2012
- LFPDPPP - Protección datos personales de salud
- 2FA obligatorio para personal médico
- Encriptación de datos sensibles (antecedentes, alergias)
- Integración HL7/FHIR para interoperabilidad
- Firma electrónica de recetas
referencias:
docs: docs/
vision: docs/00-vision-general/VISION-CLINICAS.md
modulos: docs/02-definicion-modulos/INDICE-MODULOS.md
orchestration: orchestration/
herencia_specs: orchestration/00-guidelines/HERENCIA-SPECS-CORE.md
herencia_db: database/HERENCIA-ERP-CORE.md

View File

@ -0,0 +1,103 @@
# Inventarios - ERP Clínicas
**Version:** 1.0.0
**Fecha:** 2025-12-08
**Nivel SIMCO:** 2B.2
---
## Descripción
Este directorio contiene los inventarios YAML que sirven como **Single Source of Truth (SSOT)** para el proyecto ERP Clínicas. Estos archivos son la referencia canónica para métricas, trazabilidad y componentes del sistema.
---
## Archivos de Inventario
| Archivo | Descripción | Estado |
|---------|-------------|--------|
| [MASTER_INVENTORY.yml](./MASTER_INVENTORY.yml) | Inventario maestro con métricas globales | Completo |
| [DATABASE_INVENTORY.yml](./DATABASE_INVENTORY.yml) | Inventario de objetos de base de datos | Planificado |
| [BACKEND_INVENTORY.yml](./BACKEND_INVENTORY.yml) | Inventario de componentes backend | Planificado |
| [FRONTEND_INVENTORY.yml](./FRONTEND_INVENTORY.yml) | Inventario de componentes frontend | Planificado |
| [TRACEABILITY_MATRIX.yml](./TRACEABILITY_MATRIX.yml) | Matriz de trazabilidad RF->ET->US | Completo |
| [DEPENDENCY_GRAPH.yml](./DEPENDENCY_GRAPH.yml) | Grafo de dependencias entre módulos | Completo |
---
## Herencia del Core
Este proyecto hereda del **ERP Core** (nivel 2B.1):
| Aspecto | Heredado | Específico |
|---------|----------|------------|
| **Tablas DB** | ~100 | Planificado |
| **Schemas** | 8+ | Planificado |
| **Specs** | 3 | - |
### Specs Heredadas
1. SPEC-RRHH-EVALUACIONES-SKILLS.md
2. SPEC-INTEGRACION-CALENDAR.md
3. SPEC-MAIL-THREAD-TRACKING.md
---
## Resumen Ejecutivo
### Métricas del Proyecto
| Métrica | Valor |
|---------|-------|
| **Módulos** | 5 (CL-001 a CL-005) |
| **Estado** | PLANIFICACION_COMPLETA |
| **Completitud** | 15% |
### Dominio del Negocio
- Expediente clínico electrónico
- Gestión de citas médicas
- Control de consultorios
- Facturación de servicios médicos
---
## Directivas Específicas
1. [DIRECTIVA-EXPEDIENTE-CLINICO.md](../directivas/DIRECTIVA-EXPEDIENTE-CLINICO.md)
2. [DIRECTIVA-GESTION-CITAS.md](../directivas/DIRECTIVA-GESTION-CITAS.md)
---
## Configuración de Puertos (Planificado)
| Servicio | Puerto |
|----------|--------|
| Backend API | 3500 |
| Frontend Web | 5179 |
| Patient Portal | 5180 |
---
## Cumplimiento Normativo
Este proyecto debe cumplir con:
- NOM-024-SSA3-2012 (Expediente clínico electrónico)
- Ley de Protección de Datos Personales en Posesión de Particulares
---
## Alineación con ERP Core
Estos inventarios siguen la misma estructura que:
- `/erp-core/orchestration/inventarios/` (proyecto padre)
### Referencias
- Suite Master: `orchestration/inventarios/SUITE_MASTER_INVENTORY.yml`
- Core: `apps/erp-core/orchestration/inventarios/`
- Status Global: `orchestration/inventarios/STATUS.yml`
---
**Última actualización:** 2025-12-08

View File

@ -0,0 +1,514 @@
# =============================================================================
# TRACEABILITY MATRIX - ERP Clínicas (Vertical)
# =============================================================================
# Generado: 2025-12-08
# Sistema: NEXUS + SIMCO v2.2.0
# Propósito: Matriz de trazabilidad Módulos -> SPECS -> Componentes
# =============================================================================
metadata:
proyecto: ERP Clínicas
codigo: CL
version: 1.0.0
fecha_actualizacion: 2025-12-08
base_core: erp-core v0.6.0
normativa: NOM-024-SSA3-2012, LFPDPPP
# =============================================================================
# RESUMEN GLOBAL
# =============================================================================
resumen:
modulos_total: 12
modulos_documentados: 12
story_points_total: 395
specs_core_aplicables: 22
specs_implementadas: 0
cobertura_specs: 0%
estado: PLANIFICACION_COMPLETA
# =============================================================================
# TRAZABILIDAD POR MÓDULO
# =============================================================================
trazabilidad:
# ---------------------------------------------------------------------------
# CL-001: Fundamentos (90% herencia + 2FA obligatorio)
# ---------------------------------------------------------------------------
CL-001:
nombre: Fundamentos
herencia: 90%
prioridad: P0
sp: 0
extiende:
- MGN-001 (auth)
- MGN-002 (users)
- MGN-003 (roles)
- MGN-004 (tenants)
database:
heredadas: [auth.users, auth.sessions, auth.roles, tenants.tenants]
extensiones:
- auth.two_factor_configs
- auth.medical_certifications
backend:
heredados: [AuthService, UserService, RoleService, TenantService]
extensiones:
- TwoFactorService
- MedicalAuthService
frontend:
heredados: [LoginForm, UserProfile, RoleSelector]
extensiones:
- TwoFactorSetup
- TwoFactorVerify
specs_core:
- SPEC-SISTEMA-SECUENCIAS
- SPEC-SEGURIDAD-API-KEYS-PERMISOS
seguridad:
- 2FA_obligatorio_personal_medico
- encriptacion_datos_sensibles
# ---------------------------------------------------------------------------
# CL-002: Pacientes
# ---------------------------------------------------------------------------
CL-002:
nombre: Pacientes
herencia: 40%
prioridad: P0
sp: 34
database:
tablas:
- clinical.patients
- clinical.patient_contacts
- clinical.patient_insurance
- clinical.patient_allergies
- clinical.emergency_contacts
backend:
servicios:
- PatientService
- PatientSearchService
- InsuranceService
frontend:
componentes:
- PatientList
- PatientForm
- PatientDetail
- PatientSearch
- InsuranceCard
- AllergyBadge
specs_core:
- SPEC-MAIL-THREAD-TRACKING (comunicación pacientes)
seguridad:
- datos_encriptados: [allergies, medical_history]
- consentimiento_requerido: true
# ---------------------------------------------------------------------------
# CL-003: Citas
# ---------------------------------------------------------------------------
CL-003:
nombre: Citas
herencia: 30%
prioridad: P0
sp: 42
database:
tablas:
- clinical.appointments
- clinical.appointment_slots
- clinical.doctors
- clinical.specialties
- clinical.appointment_reminders
backend:
servicios:
- AppointmentService
- DoctorService
- ScheduleService
- ReminderService
frontend:
componentes:
- AppointmentCalendar
- AppointmentForm
- DoctorScheduleView
- SlotSelector
- ReminderConfig
- AppointmentConfirmation
specs_core:
- SPEC-INTEGRACION-CALENDAR (Google Calendar, Outlook)
# ---------------------------------------------------------------------------
# CL-004: Consultas
# ---------------------------------------------------------------------------
CL-004:
nombre: Consultas
herencia: 0%
prioridad: P0
sp: 47
database:
tablas:
- clinical.consultations
- clinical.vital_signs
- clinical.diagnoses
- clinical.icd10_codes
- clinical.consultation_notes
backend:
servicios:
- ConsultationService
- VitalSignsService
- DiagnosisService
- ICD10Service
frontend:
componentes:
- ConsultationForm
- SOAPNote
- VitalSignsCapture
- DiagnosisSearch
- ICD10Selector
- ConsultationHistory
specs_core: []
normativa:
- NOM-024-SSA3-2012 (estructura SOAP)
# ---------------------------------------------------------------------------
# CL-005: Recetas
# ---------------------------------------------------------------------------
CL-005:
nombre: Recetas
herencia: 20%
prioridad: P0
sp: 34
database:
tablas:
- clinical.prescriptions
- clinical.prescription_items
- clinical.medications
- clinical.drug_interactions
backend:
servicios:
- PrescriptionService
- MedicationService
- InteractionChecker
- PrescriptionPrintService
frontend:
componentes:
- PrescriptionForm
- MedicationSearch
- DosageCalculator
- InteractionAlert
- PrescriptionPrint
specs_core:
- SPEC-WIZARD-TRANSIENT-MODEL (asistente receta)
caracteristicas:
- firma_electronica: true
- validacion_interacciones: true
# ---------------------------------------------------------------------------
# CL-006: Laboratorio
# ---------------------------------------------------------------------------
CL-006:
nombre: Laboratorio
herencia: 10%
prioridad: P1
sp: 42
database:
tablas:
- laboratory.lab_orders
- laboratory.lab_tests
- laboratory.test_results
- laboratory.reference_ranges
- laboratory.test_panels
backend:
servicios:
- LabOrderService
- TestResultService
- ReferenceRangeService
frontend:
componentes:
- LabOrderForm
- TestSelector
- ResultsCapture
- ResultsViewer
- AbnormalHighlight
- TrendChart
specs_core:
- SPEC-TRAZABILIDAD-LOTES-SERIES (muestras)
# ---------------------------------------------------------------------------
# CL-007: Farmacia
# ---------------------------------------------------------------------------
CL-007:
nombre: Farmacia
herencia: 60%
prioridad: P1
sp: 34
database:
tablas:
- pharmacy.pharmacy_stock
- pharmacy.medication_lots
- pharmacy.dispensations
- pharmacy.controlled_substances
backend:
servicios:
- PharmacyStockService
- DispensationService
- ControlledSubstanceService
frontend:
componentes:
- PharmacyStock
- DispensationForm
- LotSelector
- ExpirationAlert
- ControlledLog
specs_core:
- SPEC-VALORACION-INVENTARIO
- SPEC-TRAZABILIDAD-LOTES-SERIES
- SPEC-INVENTARIOS-CICLICOS
caracteristicas:
- control_caducidades: true
- sustancias_controladas: true
# ---------------------------------------------------------------------------
# CL-008: Facturación
# ---------------------------------------------------------------------------
CL-008:
nombre: Facturacion
herencia: 70%
prioridad: P0
sp: 21
database:
tablas:
- invoicing.medical_invoices
- invoicing.insurance_claims
- invoicing.service_charges
backend:
servicios:
- MedicalInvoiceService
- InsuranceClaimService
- CFDIService
frontend:
componentes:
- MedicalInvoiceForm
- InvoiceList
- InsuranceClaimForm
- PaymentCapture
specs_core:
- SPEC-FACTURACION-CFDI (servicios médicos)
# ---------------------------------------------------------------------------
# CL-009: Reportes
# ---------------------------------------------------------------------------
CL-009:
nombre: Reportes
herencia: 40%
prioridad: P1
sp: 34
database:
tablas: []
backend:
servicios:
- MedicalReportService
- StatisticsService
- ExportService
frontend:
componentes:
- AppointmentReport
- RevenueReport
- PatientStatistics
- DoctorProductivity
- DiagnosisDistribution
specs_core: []
# ---------------------------------------------------------------------------
# CL-010: Telemedicina
# ---------------------------------------------------------------------------
CL-010:
nombre: Telemedicina
herencia: 0%
prioridad: P2
sp: 47
database:
tablas:
- telemedicine.video_sessions
- telemedicine.session_recordings
- telemedicine.waiting_room
backend:
servicios:
- VideoSessionService
- WaitingRoomService
- RecordingService
frontend:
componentes:
- VideoConsultation
- WaitingRoom
- VirtualExamRoom
- ScreenShare
- ChatPanel
specs_core: []
caracteristicas:
- encriptacion_e2e: true
- grabacion_opcional: true
# ---------------------------------------------------------------------------
# CL-011: Expediente Clínico
# ---------------------------------------------------------------------------
CL-011:
nombre: Expediente
herencia: 10%
prioridad: P0
sp: 39
database:
tablas:
- clinical.medical_records
- clinical.clinical_notes
- clinical.attachments
- clinical.consent_forms
- clinical.record_access_log
backend:
servicios:
- MedicalRecordService
- ClinicalNoteService
- AttachmentService
- ConsentService
- AuditService
frontend:
componentes:
- MedicalRecordView
- TimelineView
- NoteEditor
- AttachmentViewer
- ConsentCapture
- AccessLog
specs_core:
- SPEC-MAIL-THREAD-TRACKING (notas clínicas)
normativa:
- NOM-024-SSA3-2012 (estructura expediente)
seguridad:
- encriptacion_completa: true
- auditoria_accesos: true
# ---------------------------------------------------------------------------
# CL-012: Imagenología
# ---------------------------------------------------------------------------
CL-012:
nombre: Imagenologia
herencia: 0%
prioridad: P2
sp: 21
database:
tablas:
- imaging.imaging_studies
- imaging.dicom_metadata
- imaging.study_reports
backend:
servicios:
- ImagingStudyService
- DICOMService
- ReportService
frontend:
componentes:
- DICOMViewer
- StudyList
- ReportEditor
- ImageAnnotation
specs_core: []
caracteristicas:
- dicom_viewer: true
- integracion_pacs: true
# =============================================================================
# REFERENCIAS CRUZADAS CON ERP-CORE
# =============================================================================
referencias_core:
specs_implementadas: []
specs_pendientes:
- spec: SPEC-SISTEMA-SECUENCIAS
modulos: [CL-001, CL-003, CL-004]
prioridad: P0
estado: PENDIENTE
- spec: SPEC-SEGURIDAD-API-KEYS-PERMISOS
modulos: [CL-001]
prioridad: P0
estado: PENDIENTE
adaptacion: "Permisos por especialidad médica"
- spec: SPEC-INTEGRACION-CALENDAR
modulos: [CL-003]
prioridad: P0
estado: PENDIENTE
adaptacion: "Sincronización agenda médica"
- spec: SPEC-TRAZABILIDAD-LOTES-SERIES
modulos: [CL-006, CL-007]
prioridad: P1
estado: PENDIENTE
adaptacion: "Trazabilidad muestras y medicamentos"
- spec: SPEC-MAIL-THREAD-TRACKING
modulos: [CL-002, CL-011]
prioridad: P1
estado: PENDIENTE
adaptacion: "Comunicación segura pacientes"
modulos_extendidos:
- core: MGN-001 (auth)
vertical: CL-001
tipo: extension_2fa_obligatorio
- core: MGN-011 (inventory)
vertical: CL-007
tipo: extension_farmacia
- core: MGN-016 (cfdi)
vertical: CL-008
tipo: extension_servicios_medicos
# =============================================================================
# CUMPLIMIENTO NORMATIVO
# =============================================================================
cumplimiento_normativo:
NOM-024-SSA3-2012:
descripcion: "Expediente clínico electrónico"
modulos_afectados: [CL-004, CL-011]
requisitos:
- estructura_soap: CL-004
- historia_clinica: CL-011
- consentimiento_informado: CL-011
- firma_electronica: CL-005
LFPDPPP:
descripcion: "Protección de datos personales"
modulos_afectados: [CL-002, CL-011]
requisitos:
- encriptacion_datos_sensibles: true
- consentimiento_tratamiento: true
- derecho_acceso: true
- auditoria_accesos: true
# =============================================================================
# VALIDACIONES
# =============================================================================
validaciones:
modulos_huerfanos: 0
specs_sin_modulo: 0
alertas:
- tipo: implementacion_pendiente
mensaje: "0% de código implementado - fase planificación"
- tipo: seguridad_critica
modulo: CL-001
mensaje: "2FA obligatorio para personal médico"
- tipo: normativa
modulos: [CL-004, CL-011]
mensaje: "Requiere validación NOM-024-SSA3-2012"
- tipo: encriptacion
modulos: [CL-002, CL-011]
mensaje: "Datos sensibles requieren encriptación"
# =============================================================================
# METADATA
# =============================================================================
metadata_documento:
creado_por: Claude-Code
fecha_creacion: 2025-12-08
ultima_actualizacion: 2025-12-08
version_documento: 1.0.0

View File

@ -0,0 +1,182 @@
# Prompt: Clínicas Backend Agent
## Identidad
Eres un agente especializado en desarrollo backend para ERP Clínicas. Tu expertise está en Node.js, Express, TypeScript, TypeORM y PostgreSQL, con conocimiento específico del dominio de salud y cumplimiento normativo mexicano (NOM-024-SSA3-2012, LFPDPPP).
## Contexto del Proyecto
```yaml
proyecto: ERP Clínicas
codigo: CL
tipo: Vertical de ERP-Suite
nivel: 2B.2
stack:
runtime: Node.js 20+
framework: Express.js
lenguaje: TypeScript 5.3+
orm: TypeORM 0.3.17
database: PostgreSQL 15+
auth: JWT + bcryptjs + 2FA (heredado + extendido)
encriptacion: AES-256 para datos sensibles
paths:
vertical: /home/isem/workspace/projects/erp-suite/apps/verticales/clinicas/
backend: /home/isem/workspace/projects/erp-suite/apps/verticales/clinicas/backend/
docs: /home/isem/workspace/projects/erp-suite/apps/verticales/clinicas/docs/
core: /home/isem/workspace/projects/erp-suite/apps/erp-core/
directivas: orchestration/directivas/
puertos:
backend: 3500
frontend: 5178
database: 5437
```
## Herencia del Core
Este proyecto HEREDA del ERP-Core:
- Módulos: auth (+ 2FA), users, roles, tenants, inventory, cfdi
- SPECS: Ver `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`
- Base de datos: 97 tablas heredadas
**REGLA:** Extender, NUNCA modificar el core.
## Módulos de la Vertical
| Módulo | Descripción | Prioridad | Normativa |
|--------|-------------|-----------|-----------|
| CL-001 | Fundamentos (+ 2FA) | P0 | LFPDPPP |
| CL-002 | Pacientes | P0 | LFPDPPP |
| CL-003 | Citas | P0 | - |
| CL-004 | Consultas (SOAP) | P0 | NOM-024 |
| CL-005 | Recetas | P0 | NOM-024 |
| CL-006 | Laboratorio | P1 | - |
| CL-007 | Farmacia | P1 | - |
| CL-008 | Facturación CFDI | P0 | - |
| CL-009 | Reportes | P1 | - |
| CL-010 | Telemedicina | P2 | - |
| CL-011 | Expediente NOM-024 | P0 | NOM-024 |
| CL-012 | Imagenología DICOM | P2 | - |
## Directivas Obligatorias
### 1. Multi-Tenant (Heredada)
```
OBLIGATORIO: Toda operación debe filtrar por tenant_id.
Ver: core/orchestration/directivas/DIRECTIVA-MULTI-TENANT.md
```
### 2. Expediente Clínico
```
ESPECÍFICO: Cumplimiento NOM-024-SSA3-2012.
Ver: directivas/DIRECTIVA-EXPEDIENTE-CLINICO.md
```
### 3. Gestión de Citas
```
ESPECÍFICO: Agenda médica, recordatorios.
Ver: directivas/DIRECTIVA-GESTION-CITAS.md
```
## Cumplimiento Normativo
### NOM-024-SSA3-2012 (Expediente Clínico)
```yaml
requisitos:
- estructura_soap: Subjetivo, Objetivo, Análisis, Plan
- campos_obligatorios:
- identificacion_paciente
- fecha_consulta
- motivo_consulta
- exploracion_fisica
- diagnostico_cie10
- plan_tratamiento
- firma_electronica: En recetas
- consentimiento_informado: Documentado
```
### LFPDPPP (Protección de Datos)
```yaml
requisitos:
- encriptacion: AES-256 para datos sensibles
- campos_encriptados:
- antecedentes_medicos
- alergias
- diagnosticos
- notas_clinicas
- auditoria: Log de accesos a expedientes
- consentimiento: Tratamiento de datos
```
## Schemas de Base de Datos
```yaml
schemas_especificos:
- clinical: Pacientes, citas, consultas, expediente
- pharmacy: Stock medicamentos, dispensaciones
- laboratory: Órdenes lab, resultados
- imaging: Estudios DICOM, metadatos
- telemedicine: Sesiones video, grabaciones
```
## SPECS del Core Aplicables
- SPEC-INTEGRACION-CALENDAR (agenda médica)
- SPEC-MAIL-THREAD-TRACKING (comunicación pacientes)
- SPEC-TRAZABILIDAD-LOTES-SERIES (muestras, medicamentos)
- SPEC-FACTURACION-CFDI (servicios médicos)
- SPEC-TWO-FACTOR-AUTHENTICATION (2FA obligatorio)
- SPEC-RRHH-EVALUACIONES-SKILLS (certificaciones médicas)
## Seguridad Especial
### 2FA Obligatorio
```typescript
// Personal médico REQUIERE 2FA
// Implementar en extensión de auth
@UseGuards(TwoFactorGuard)
export class MedicalController { }
```
### Encriptación de Datos Sensibles
```typescript
// Usar decorador para campos sensibles
@EncryptedColumn()
antecedentes_medicos: string;
@EncryptedColumn()
alergias: string;
```
### Auditoría de Accesos
```typescript
// Log automático de accesos a expediente
@AuditAccess('medical_record')
async getMedicalRecord(patientId: string) { }
```
## Flujo de Trabajo
```
1. Leer especificación del módulo en docs/02-definicion-modulos/
2. Verificar cumplimiento normativo (NOM-024, LFPDPPP)
3. Verificar SPECS aplicables en HERENCIA-SPECS-CORE.md
4. Revisar DDL existente en database/
5. Implementar con encriptación y auditoría
6. Actualizar TRAZA-TAREAS-BACKEND.md
7. Actualizar BACKEND_INVENTORY.yml
```
## Referencias
- Inventario: `orchestration/inventarios/MASTER_INVENTORY.yml`
- Trazabilidad: `orchestration/inventarios/TRACEABILITY_MATRIX.yml`
- Herencia: `orchestration/00-guidelines/HERENCIA-SPECS-CORE.md`
- NOM-024: Normativa expediente clínico electrónico
- LFPDPPP: Ley Federal de Protección de Datos Personales
---
**Versión:** 1.0.0
**Sistema:** SIMCO v2.2.0

View File

@ -0,0 +1,97 @@
# Dependencias de ERP-Core para ERP Clinicas
# ============================================
version: "1.0.0"
fecha_actualizacion: "2025-12-27"
proyecto: "erp-clinicas"
# Base de la que hereda
base:
proyecto: "erp-core"
version_minima: "1.2.0"
ruta: "projects/erp-core"
ruta_absoluta: "/home/isem/workspace-v1/projects/erp-core"
# Schemas de base de datos heredados
database:
herencia: "completa"
schemas_usados:
- nombre: "auth_management"
tablas_heredadas: 26
tablas_extendidas: 2
uso: "Autenticacion con seguridad reforzada para datos medicos"
extensiones:
- "MFA obligatorio para acceso expedientes"
- "Consentimiento informado digital"
- nombre: "core_management"
tablas_heredadas: 12
tablas_extendidas: 3
uso: "Partners (pacientes, proveedores medicos)"
extensiones:
- "Datos sensibles encriptados"
- "Historial medico referenciado"
- nombre: "core_catalogs"
tablas_heredadas: 8
tablas_extendidas: 5
uso: "Catalogos medicos especializados"
extensiones:
- "CIE-10 (diagnosticos)"
- "Procedimientos medicos"
- "Medicamentos (cuadro basico)"
- "Laboratorios"
- "Especialidades medicas"
# Schemas propios de clinicas (no heredados)
schemas_propios:
- nombre: "medical_management"
tablas: 15
descripcion: "Expedientes, citas, recetas, laboratorio"
- nombre: "billing_medical"
tablas: 8
descripcion: "Facturacion CFDI sector salud, aseguradoras"
# Variable RLS obligatoria
rls:
variable: "app.current_tenant_id"
tipo: "UUID"
nota: "TODAS las queries deben filtrar por esta variable"
# Modulos backend importados
backend:
modulos_importados:
- nombre: "AuthModule"
desde: "@erp-core/auth"
version: "1.0.0"
- nombre: "UsersModule"
desde: "@erp-core/users"
version: "1.0.0"
- nombre: "RolesModule"
desde: "@erp-core/roles"
version: "1.0.0"
- nombre: "TenantsModule"
desde: "@erp-core/tenants"
version: "1.0.0"
# Cumplimiento normativo
normativas:
- codigo: "NOM-024-SSA3-2012"
descripcion: "Expediente clinico electronico"
- codigo: "LFPDPPP"
descripcion: "Ley de Proteccion de Datos Personales"
- codigo: "COFEPRIS"
descripcion: "Requisitos de trazabilidad"
# Validaciones requeridas
validaciones:
- "Variable RLS correcta en todo DDL"
- "Encriptacion de datos medicos"
- "Auditoria completa de accesos"
- "Imports de erp-core funcionando"
- "Tests pasando"

View File

@ -0,0 +1,62 @@
# Dependencias de Modulos Compartidos para ERP Clinicas
# ======================================================
version: "1.0.0"
fecha_actualizacion: "2025-12-27"
proyecto: "erp-clinicas"
# Modulos del catalogo usados
modulos_catalogo:
- id: "auth"
ruta: "core/catalog/auth"
version_usada: "1.0.0"
fecha_implementacion: "pendiente"
adaptaciones:
- descripcion: "MFA obligatorio para acceso expedientes"
archivo: "Por implementar"
tests_pasando: false
- id: "multi-tenancy"
ruta: "core/catalog/multi-tenancy"
version_usada: "1.0.0"
fecha_implementacion: "pendiente"
adaptaciones: null
tests_pasando: false
- id: "notifications"
ruta: "core/catalog/notifications"
version_usada: "1.0.0"
fecha_implementacion: "pendiente"
adaptaciones:
- descripcion: "Recordatorios de citas"
archivo: "Por implementar"
- descripcion: "Notificaciones de resultados laboratorio"
archivo: "Por implementar"
tests_pasando: false
- id: "rate-limiting"
ruta: "core/catalog/rate-limiting"
version_usada: "1.0.0"
fecha_implementacion: "pendiente"
adaptaciones: null
tests_pasando: false
# Modulos de core/modules usados
modulos_core: []
# Librerias de shared/libs usadas
librerias_shared: []
# Modulos pendientes de implementar
pendientes:
- id: "audit-logs"
prioridad: "alta"
justificacion: "Auditoria completa de acceso a expedientes medicos (COFEPRIS)"
- id: "two-factor-auth"
prioridad: "alta"
justificacion: "Seguridad reforzada para datos sensibles"
- id: "encryption"
prioridad: "alta"
justificacion: "Encriptacion de datos medicos en reposo"

View File

@ -0,0 +1,38 @@
# TRAZA DE TAREAS - BACKEND LAYER
# Proyecto: ERP CLINICAS (Vertical)
# Sistema: NEXUS + SIMCO v2.2.0
# Estado: TEMPLATE - Proyecto en planificación
---
## Formato de Registro
```yaml
[FECHA] - [ID_TAREA] - [OPERACION]
Descripcion: {descripcion}
Archivos:
- {archivo_1}
Estado: {COMPLETADO | EN_PROGRESO | BLOQUEADO}
Ejecutado_por: {AGENTE | USUARIO}
```
---
## Historial de Tareas
*Sin tareas registradas - Proyecto en planificación*
---
## Resumen
| Métrica | Valor |
|---------|-------|
| Total tareas | 0 |
| Completadas | 0 |
| En progreso | 0 |
| Bloqueadas | 0 |
| Última actualización | 2025-12-08 |
---
*Traza de tareas - Sistema NEXUS*

View File

@ -0,0 +1,38 @@
# TRAZA DE TAREAS - DATABASE LAYER
# Proyecto: ERP CLINICAS (Vertical)
# Sistema: NEXUS + SIMCO v2.2.0
# Estado: TEMPLATE - Proyecto en planificación
---
## Formato de Registro
```yaml
[FECHA] - [ID_TAREA] - [OPERACION]
Descripcion: {descripcion}
Archivos:
- {archivo_1}
Estado: {COMPLETADO | EN_PROGRESO | BLOQUEADO}
Ejecutado_por: {AGENTE | USUARIO}
```
---
## Historial de Tareas
*Sin tareas registradas - Proyecto en planificación*
---
## Resumen
| Métrica | Valor |
|---------|-------|
| Total tareas | 0 |
| Completadas | 0 |
| En progreso | 0 |
| Bloqueadas | 0 |
| Última actualización | 2025-12-08 |
---
*Traza de tareas - Sistema NEXUS*

View File

@ -0,0 +1,38 @@
# TRAZA DE TAREAS - FRONTEND LAYER
# Proyecto: ERP CLINICAS (Vertical)
# Sistema: NEXUS + SIMCO v2.2.0
# Estado: TEMPLATE - Proyecto en planificación
---
## Formato de Registro
```yaml
[FECHA] - [ID_TAREA] - [OPERACION]
Descripcion: {descripcion}
Archivos:
- {archivo_1}
Estado: {COMPLETADO | EN_PROGRESO | BLOQUEADO}
Ejecutado_por: {AGENTE | USUARIO}
```
---
## Historial de Tareas
*Sin tareas registradas - Proyecto en planificación*
---
## Resumen
| Métrica | Valor |
|---------|-------|
| Total tareas | 0 |
| Completadas | 0 |
| En progreso | 0 |
| Bloqueadas | 0 |
| Última actualización | 2025-12-08 |
---
*Traza de tareas - Sistema NEXUS*