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