Saltar al contenido principal

Dashboard del Profesional


1. Definición y Propósito

Portal operativo donde el profesional de la salud gestiona su agenda, perfil público, acreditaciones y reseñas.


2. Lógica Visual y de Procesos

2.1 Board Miro (referencia visual)

2.2 Flujo Lógico Canonico

Resumen textual (fallback)

  • Home: resumen de citas de hoy, alertas de acreditación y reseñas pendientes.
  • Agenda: vista semanal; acciones confirmar/cancelar/reagendar.
  • Perfil: edición de bio, especialidades, horarios, seguros; requiere aprobación para publicar cambios críticos.
  • Reseñas: moderación de respuestas a reseñas (sin editar rating).
  • Acreditaciones: subir credenciales y ver estado (PENDING/APPROVED/REJECTED).
  • Blog profesional: crear/listar/editar/eliminar artículos visibles en perfil público.

Evidencia visual

  • Fuente canonica: diagrama Mermaid de esta seccion.
  • Si UX adjunta board Miro, se referencia como anexo no contractual.

3. Actores y Permisos (RBAC)

ActorPermisos
Profesional de la Salud (DOCTOR)Edita su perfil, horarios y responde reseñas propias. Roles son acumulativos: puede conservar PATIENT y, si gestiona sedes, también ENTITY_ADMIN.
AdminAprueba cambios críticos (especialidades, seguros), fuerza bloqueos.

4. Reglas de Negocio (BR)

  • BR-DD-01: Cambios en especialidades o seguros requieren aprobación de Admin antes de ser públicos.
  • BR-DD-02: Slots bloqueados en agenda no afectan citas ya confirmadas.
  • BR-DD-03: Respuesta a reseñas no puede modificar rating; solo un comentario por reseña.
  • BR-DD-04: El perfil profesional debe incluir professional_prefix para construir display_name público (Dr., Dra., Enf., Lic., etc.).

Catálogo sugerido de prefijos profesionales

CódigoEtiqueta UIUso recomendado
DRDr.Medicina general y especialidades médicas.
DRADra.Medicina general y especialidades médicas.
ENFEnf.Enfermería.
LICLic.Psicología clínica, nutrición u otras licenciaturas de salud.
ODONTOdont.Odontología.
PSICPsic.Psicología/Psicoterapia.
NUTNut.Nutrición clínica/deportiva.
FISIOFisio.Fisioterapia/Rehabilitación.
QFQ.F.Químico farmacéutico.
TECTec.Técnicos de salud autorizados.

5. Endpoints (referencia OpenAPI)

RecursoMétodoDescripción
/api/v1/appointmentsGETLista citas del profesional de la salud (filtro role=DOCTOR).
/api/v1/appointments/{id}PATCHConfirmar/Cancelar/Reagendar.
/api/v1/profiles/doctorPATCHActualizar perfil (pendiente aprobación).
/api/v1/doctor-accreditationsPOSTSubir acreditación.
/api/v1/reviewsGETListar reseñas del profesional de la salud.
/api/v1/availability/schedulesPUTActualizar horarios base del profesional.
/api/v1/availability/blocksPOSTCrear bloqueos de agenda (vacaciones/emergencias).
/api/v1/professional/couponsPOSTCrear cupón profesional.
/api/v1/professional/coupons/{id}PATCHEditar cupón profesional.
/api/v1/professional/postsGET/POSTListar/crear artículos del profesional.
/api/v1/professional/posts/{id}PATCH/DELETEEditar/eliminar artículo del profesional.

Implementación Backend (Go, DDD + Clean Architecture):

  • Handlers en interfaces/http/doctor mapean DTOs a use cases ListDoctorAppointments, UpdateDoctorProfile, SubmitAccreditation, RespondReview en application/doctor.
  • Repos AppointmentRepo, DoctorRepo, AccreditationRepo, ReviewRepo como interfaces; implementaciones en infrastructure/persistence (Postgres) y infrastructure/cache.
  • DTOs de OpenAPI son de interfaz; modelos de dominio permanecen aislados de persistencia.
  • Nomenclatura completa: ver arquitectura-y-despliegue.md §7.1.

Auditoría

  • Emitir eventos DOCTOR_PROFILE_UPDATED y DOCTOR_PROFILE_APPROVED/REJECTED con changed_by, timestamp, IP/UA.

6. Métricas y Observabilidad

  • P95 de carga de dashboard < 400ms (datos cacheados).
  • Tasa de reseñas respondidas vs totales.
  • Ratio de citas confirmadas vs no-show por profesional.
  • Trazas con trace_id, doctor_id, appointment_id en acciones de agenda y perfil.

7. Casos de Borde y Manejo de Errores

  • Cambio de especialidad/seguro sin aprobación → estado PENDING_APPROVAL, no publica.
  • Reagendar cita fuera de disponibilidad → 409.
  • Intento de responder reseña ajena → 403.
  • Acreditación duplicada → 409.
  • Subida de archivo de acreditación con MIME/peso inválido → 422.
  • Doble submit en acreditación → idempotencia por hash de archivo.

8. Checklist de QA / Testing

  • Lista citas (role=DOCTOR) respeta filtro estado y paginación.
  • Confirmar/Cancelar/Reagendar actualiza estado y libera slot.
  • Perfil: cambios críticos quedan pendientes hasta aprobación admin.
  • Subida de acreditación almacena archivo y crea registro en doctor_accreditations.
  • Respuesta a reseña no altera rating y se guarda una sola vez.
  • Validar rechazo por MIME/peso de archivo; doble submit idempotente.

9. Requerimientos No Funcionales (NFR)

  • dashboard_load_p95 < 400ms; cache hit >80% en widgets.
  • Disponibilidad 99.9% para lecturas; escrituras pueden tener colas cortas.

10. Variables de Entorno (Front)

  • VITE_API_BASE=https://api.example.com/api/v1
  • VITE_DASH_DOC_PAGE_SIZE=20

11. Accesibilidad (A11y)

  • Tablas de citas navegables con teclado y encabezados accesibles.
  • Alertas de estado (confirmación/cancelación) con aria-live.

12. Control de Abuso/Fraude

  • Throttling en cambios de perfil y acreditaciones para evitar spam.
  • Validar MIME/peso de archivos de acreditación.

13. Métricas de Producto (Funnel)

  • Citas vistas → citas confirmadas → citas atendidas.
  • % reseñas respondidas, tiempo medio de respuesta.

14. Enlaces y Trazabilidad

  • Swagger UI: /swagger.html (acceso desde /swagger) y contrato YAML en /openapi.yaml.
  • Relacionados: agenda-citas.md, admin-catalogos.md (especialidades/seguros), esquema-de-base-de-datos.md (tablas de profesional/acreditaciones), arquitectura-y-seguridad.md (observabilidad).

15. Dependencias

  • appointments, doctor_accreditations, reviews, file_assets.