Dashboard de Entidad de Salud
1. Definición y Propósito
Permite a la entidad gestionar sedes, convenios con aseguradoras, staff afiliado y agenda por consultorio, manteniendo la Validación Triple y ocupación óptima.
2. Lógica Visual y de Procesos
2.1 Board Miro (referencia visual)
2.2 Flujo Lógico Canonico
Resumen textual (fallback)
- Home: KPIs de ocupación por sede y alertas de convenios vencidos.
- Staff: alta/baja de profesionales de la salud afiliados, asignación de salas/horarios.
- Convenios: carga/actualización de aseguradoras y planes; invalida caché tras cambios.
- Agenda Sede: vista de slots por consultorio, bloqueos operativos.
- Multimedia: gestión de fotos/amenidades de la sede.
Evidencia visual
- Fuente canonica: diagrama Mermaid de esta seccion.
- Si UX adjunta board Miro, se agrega como anexo y no reemplaza la especificacion contractual.
3. Actores y Permisos (RBAC)
| Actor | Permisos |
|---|---|
| Entidad Admin | Gestiona sedes, staff, convenios, amenidades. Roles acumulativos: puede mantener PATIENT y/o DOCTOR además de ENTITY_ADMIN. |
| Profesional de Salud afiliado | Solo visualiza sus citas en esa sede. |
| Admin Plataforma | Puede forzar bloqueos y validar convenios críticos. |
4. Reglas de Negocio (BR)
- BR-DE-01: Cambios en convenios invalidan caché de búsqueda y Validación Triple de inmediato.
- BR-DE-02: No se puede eliminar una sede con citas futuras; aplicar borrado lógico (
deleted_at). - BR-DE-03: Staff afiliado requiere relación en
affiliationscon horarios válidos. - BR-DE-04: Imagen de portada obligatoria por sede visible en buscador.
- BR-DE-05: Datos mínimos para crear entidad (todos obligatorios, salvo donde se indique):
type: clínica | laboratorio | farmacia.name(Nombre comercial).legal_name(Razón social).email(precargado del usuario, editable).phone.geography_id(país/departamento/municipio) +address(texto libre).location(lat/lng) si se dispone; si no, derivar de geocoding de la dirección.schedules(horarios de atención) – al menos uno.services(JSON de servicios ofrecidos).terms_version_accepted(bool + timestamp).
5. Endpoints (referencia OpenAPI)
| Recurso | Método | Descripción |
|---|---|---|
/api/v1/insurance-agreements | POST | Registrar convenio sede-seguro. |
/api/v1/insurance-agreements | GET | Listar convenios por sede. |
/api/v1/entities | POST | Crear sede. |
/api/v1/entities/{id} | PATCH | Actualizar sede. |
/api/v1/affiliations | POST | Afiliar profesional de la salud a sede. |
/api/v1/appointments | GET | Lista citas por sede (role=ENTITY_ADMIN/DOCTOR). |
/api/v1/professional/coupons | POST | Crear cupón de la entidad. |
/api/v1/professional/coupons/{id} | PATCH | Editar cupón de la entidad. |
Implementación Backend (Go, DDD + Clean Architecture):
- Handlers en
interfaces/http/entitymapean DTOs a use casesCreateEntity,UpdateEntity,CreateAgreement,ListAgreements,AffiliateDoctor,ListEntityAppointmentsenapplication/entity. - Repos
EntityRepo,AgreementRepo,AffiliationRepo,AppointmentRepocomo interfaces; implementaciones eninfrastructure/persistence(Postgres) yinfrastructure/cache(invalidación inmediata). - DTOs de OpenAPI son de interfaz; entidades de dominio permanecen aisladas de persistencia.
- Nomenclatura completa: ver
arquitectura-y-despliegue.md§7.1.
6. Métricas y Observabilidad
- Ocupación por sede y consultorio.
- Tiempo de invalidación de caché tras cambio de convenio.
- Latencia P95 de
ListAgreements< 300ms;CreateAgreement< 500ms. - Trazas con
trace_id,entity_id,agreement_id,doctor_id.
7. Casos de Borde y Manejo de Errores
- Eliminar sede con citas futuras → 409 “Sede con citas activas”.
- Crear convenio duplicado (misma sede/seguro) → 409.
- Afiliar profesional de la salud sin horarios válidos → 422.
- Carga de imagen sin portada → 422.
- Archivo de portada/convenio con MIME/peso inválido → 422.
- Doble submit en convenio → idempotencia por combinación sede+seguro.
8. Control de Abuso/Fraude y Auditoría
- Rate limit en creación de convenios y afiliaciones para evitar spam.
- Validar MIME/peso de imágenes de sede.
- Auditoría obligatoria:
- ENTITIES: evento
ENTITY_UPDATEDconchanged_by, timestamp, IP/UA, diff; aprobaciones/rechazos registran motivo. - Convenios:
AGREEMENT_UPDATED. - Invitaciones/afiliaciones de staff:
AFFILIATION_CREATED/UPDATED.
- ENTITIES: evento
9. Checklist de QA / Testing
- Crear sede y actualizar datos básicos.
- Registrar convenio y verificar invalidación de cache en buscador.
- Afiliar profesional de la salud y ver citas filtradas por sede.
- Borrado lógico bloqueado si hay citas futuras.
- Subida de portada valida formato/peso.
- Doble submit de convenio no duplica registros.
10. Requerimientos No Funcionales (NFR)
- P95
entity_update< 400ms;agreement_create< 500ms. - Disponibilidad 99.9% para lectura de convenios y sedes.
- Cache hit >80% en lecturas de convenios.
11. Variables de Entorno (Front)
VITE_API_BASE=https://api.example.com/api/v1VITE_ENTITY_PAGE_SIZE=20VITE_ENTITY_IMAGE_MAX_MB=2
12. Accesibilidad (A11y)
- Formulario de sede navegable por teclado.
- Notificaciones de estado con
aria-liveal crear/actualizar. - Tabla de convenios con encabezados accesibles.
13. Métricas de Producto (Funnel)
- Sedes creadas → convenios activos → profesionales de la salud afiliados → citas atendidas.
- Tiempo medio de publicación de convenios; % de sedes con portada.
14. Enlaces y Trazabilidad
- Swagger UI:
/swagger.html(acceso desde/swagger) y contrato YAML en/openapi.yaml. - Relacionados:
admin-catalogos.md(geo/specialties),agenda-citas.md,esquema-de-base-de-datos.md(entities, agreements, affiliations).
15. Dependencias
health_entities,insurance_agreements,affiliations,appointments,file_assets.