Initial commit - erp-clinicas
This commit is contained in:
commit
a774b00839
182
.env.example
Normal file
182
.env.example
Normal 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
31
INVENTARIO.yml
Normal 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
178
PROJECT-STATUS.md
Normal 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
36
README.md
Normal 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
|
||||||
222
database/HERENCIA-ERP-CORE.md
Normal file
222
database/HERENCIA-ERP-CORE.md
Normal 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
83
database/README.md
Normal 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)
|
||||||
25
database/init/00-extensions.sql
Normal file
25
database/init/00-extensions.sql
Normal 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
|
||||||
|
-- ============================================================================
|
||||||
15
database/init/01-create-schemas.sql
Normal file
15
database/init/01-create-schemas.sql
Normal 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
|
||||||
|
-- ============================================================================
|
||||||
37
database/init/02-rls-functions.sql
Normal file
37
database/init/02-rls-functions.sql
Normal 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
|
||||||
|
-- ============================================================================
|
||||||
628
database/init/03-clinical-tables.sql
Normal file
628
database/init/03-clinical-tables.sql
Normal 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
|
||||||
|
-- ============================================================================
|
||||||
34
database/init/04-seed-data.sql
Normal file
34
database/init/04-seed-data.sql
Normal 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
|
||||||
|
-- ============================================================================
|
||||||
107
docs/00-vision-general/VISION-CLINICAS.md
Normal file
107
docs/00-vision-general/VISION-CLINICAS.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-001-fundamentos/README.md
Normal file
20
docs/02-definicion-modulos/CL-001-fundamentos/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-002-pacientes/README.md
Normal file
20
docs/02-definicion-modulos/CL-002-pacientes/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-003-citas/README.md
Normal file
20
docs/02-definicion-modulos/CL-003-citas/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-004-consultas/README.md
Normal file
20
docs/02-definicion-modulos/CL-004-consultas/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-005-recetas/README.md
Normal file
20
docs/02-definicion-modulos/CL-005-recetas/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-006-laboratorio/README.md
Normal file
20
docs/02-definicion-modulos/CL-006-laboratorio/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-007-farmacia/README.md
Normal file
20
docs/02-definicion-modulos/CL-007-farmacia/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-008-facturacion/README.md
Normal file
20
docs/02-definicion-modulos/CL-008-facturacion/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-009-reportes/README.md
Normal file
20
docs/02-definicion-modulos/CL-009-reportes/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-010-telemedicina/README.md
Normal file
20
docs/02-definicion-modulos/CL-010-telemedicina/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-011-expediente/README.md
Normal file
20
docs/02-definicion-modulos/CL-011-expediente/README.md
Normal 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
|
||||||
20
docs/02-definicion-modulos/CL-012-imagenologia/README.md
Normal file
20
docs/02-definicion-modulos/CL-012-imagenologia/README.md
Normal 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
|
||||||
136
docs/02-definicion-modulos/INDICE-MODULOS.md
Normal file
136
docs/02-definicion-modulos/INDICE-MODULOS.md
Normal 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
|
||||||
66
docs/08-epicas/EPIC-CL-001-fundamentos.md
Normal file
66
docs/08-epicas/EPIC-CL-001-fundamentos.md
Normal 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
|
||||||
247
docs/08-epicas/EPIC-CL-002-pacientes.md
Normal file
247
docs/08-epicas/EPIC-CL-002-pacientes.md
Normal 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
|
||||||
270
docs/08-epicas/EPIC-CL-003-citas.md
Normal file
270
docs/08-epicas/EPIC-CL-003-citas.md
Normal 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
|
||||||
277
docs/08-epicas/EPIC-CL-004-consultas.md
Normal file
277
docs/08-epicas/EPIC-CL-004-consultas.md
Normal 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
|
||||||
243
docs/08-epicas/EPIC-CL-005-recetas.md
Normal file
243
docs/08-epicas/EPIC-CL-005-recetas.md
Normal 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
|
||||||
242
docs/08-epicas/EPIC-CL-006-laboratorio.md
Normal file
242
docs/08-epicas/EPIC-CL-006-laboratorio.md
Normal 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
|
||||||
239
docs/08-epicas/EPIC-CL-007-farmacia.md
Normal file
239
docs/08-epicas/EPIC-CL-007-farmacia.md
Normal 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
|
||||||
268
docs/08-epicas/EPIC-CL-008-facturacion.md
Normal file
268
docs/08-epicas/EPIC-CL-008-facturacion.md
Normal 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
|
||||||
223
docs/08-epicas/EPIC-CL-009-reportes.md
Normal file
223
docs/08-epicas/EPIC-CL-009-reportes.md
Normal 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
|
||||||
278
docs/08-epicas/EPIC-CL-010-telemedicina.md
Normal file
278
docs/08-epicas/EPIC-CL-010-telemedicina.md
Normal 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
|
||||||
241
docs/08-epicas/EPIC-CL-011-expediente.md
Normal file
241
docs/08-epicas/EPIC-CL-011-expediente.md
Normal 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
|
||||||
314
docs/08-epicas/EPIC-CL-012-imagenologia.md
Normal file
314
docs/08-epicas/EPIC-CL-012-imagenologia.md
Normal 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
38
docs/README.md
Normal 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
40
docs/_MAP.md
Normal 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.
|
||||||
159
orchestration/00-guidelines/CONTEXTO-PROYECTO.md
Normal file
159
orchestration/00-guidelines/CONTEXTO-PROYECTO.md
Normal 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*
|
||||||
89
orchestration/00-guidelines/HERENCIA-DIRECTIVAS.md
Normal file
89
orchestration/00-guidelines/HERENCIA-DIRECTIVAS.md
Normal 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*
|
||||||
184
orchestration/00-guidelines/HERENCIA-ERP-CORE.md
Normal file
184
orchestration/00-guidelines/HERENCIA-ERP-CORE.md
Normal 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*
|
||||||
138
orchestration/00-guidelines/HERENCIA-SIMCO.md
Normal file
138
orchestration/00-guidelines/HERENCIA-SIMCO.md
Normal 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
|
||||||
199
orchestration/00-guidelines/HERENCIA-SPECS-CORE.md
Normal file
199
orchestration/00-guidelines/HERENCIA-SPECS-CORE.md
Normal 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
|
||||||
162
orchestration/00-guidelines/HERENCIA-SPECS-ERP-CORE.md
Normal file
162
orchestration/00-guidelines/HERENCIA-SPECS-ERP-CORE.md
Normal 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
|
||||||
33
orchestration/00-guidelines/PROJECT-STATUS.md
Normal file
33
orchestration/00-guidelines/PROJECT-STATUS.md
Normal 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
|
||||||
122
orchestration/PROXIMA-ACCION.md
Normal file
122
orchestration/PROXIMA-ACCION.md
Normal 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
|
||||||
242
orchestration/directivas/DIRECTIVA-EXPEDIENTE-CLINICO.md
Normal file
242
orchestration/directivas/DIRECTIVA-EXPEDIENTE-CLINICO.md
Normal 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**
|
||||||
242
orchestration/directivas/DIRECTIVA-GESTION-CITAS.md
Normal file
242
orchestration/directivas/DIRECTIVA-GESTION-CITAS.md
Normal 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**
|
||||||
262
orchestration/environment/PROJECT-ENV-CONFIG.yml
Normal file
262
orchestration/environment/PROJECT-ENV-CONFIG.yml
Normal 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)
|
||||||
80
orchestration/inventarios/BACKEND_INVENTORY.yml
Normal file
80
orchestration/inventarios/BACKEND_INVENTORY.yml
Normal 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"
|
||||||
158
orchestration/inventarios/DATABASE_INVENTORY.yml
Normal file
158
orchestration/inventarios/DATABASE_INVENTORY.yml
Normal 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"
|
||||||
61
orchestration/inventarios/DEPENDENCY_GRAPH.yml
Normal file
61
orchestration/inventarios/DEPENDENCY_GRAPH.yml
Normal 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
|
||||||
57
orchestration/inventarios/FRONTEND_INVENTORY.yml
Normal file
57
orchestration/inventarios/FRONTEND_INVENTORY.yml
Normal 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"
|
||||||
213
orchestration/inventarios/MASTER_INVENTORY.yml
Normal file
213
orchestration/inventarios/MASTER_INVENTORY.yml
Normal 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
|
||||||
103
orchestration/inventarios/README.md
Normal file
103
orchestration/inventarios/README.md
Normal 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
|
||||||
514
orchestration/inventarios/TRACEABILITY_MATRIX.yml
Normal file
514
orchestration/inventarios/TRACEABILITY_MATRIX.yml
Normal 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
|
||||||
182
orchestration/prompts/PROMPT-CL-BACKEND-AGENT.md
Normal file
182
orchestration/prompts/PROMPT-CL-BACKEND-AGENT.md
Normal 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
|
||||||
97
orchestration/referencias/DEPENDENCIAS-ERP-CORE.yml
Normal file
97
orchestration/referencias/DEPENDENCIAS-ERP-CORE.yml
Normal 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"
|
||||||
62
orchestration/referencias/DEPENDENCIAS-SHARED.yml
Normal file
62
orchestration/referencias/DEPENDENCIAS-SHARED.yml
Normal 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"
|
||||||
38
orchestration/trazas/TRAZA-TAREAS-BACKEND.md
Normal file
38
orchestration/trazas/TRAZA-TAREAS-BACKEND.md
Normal 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*
|
||||||
38
orchestration/trazas/TRAZA-TAREAS-DATABASE.md
Normal file
38
orchestration/trazas/TRAZA-TAREAS-DATABASE.md
Normal 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*
|
||||||
38
orchestration/trazas/TRAZA-TAREAS-FRONTEND.md
Normal file
38
orchestration/trazas/TRAZA-TAREAS-FRONTEND.md
Normal 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*
|
||||||
Loading…
Reference in New Issue
Block a user