Descripción
El módulo Inicio (Dashboard) es la pantalla principal y punto de entrada de Nubidoc tras iniciar sesión. Proporciona una vista resumida y centralizada de la actividad diaria del profesional, mostrando sus citas y eventos del día, notas importantes, cumpleaños de pacientes, y opcionalmente estadísticas del centro médico. El dashboard está diseñado para ofrecer una visión rápida de “qué tengo que hacer hoy” y “qué está pasando en mi centro”, permitiendo al usuario orientarse rápidamente y acceder a las funciones que necesita con un solo clic. Es un panel de control personalizado según el rol y permisos del usuario.Usuarios Objetivo
- Profesionales médicos: Ven sus citas del día, eventos agendados, y notas clínicas importantes
- Recepcionistas: Ven citas de todos los profesionales, cumpleaños de pacientes, recordatorios
- Administradores: Además de lo anterior, ven estadísticas del centro (usuarios, pacientes, espacio, SMS)
- Todos los usuarios: Acceso centralizado a notas importantes y calendario del mes
1. Consultar Citas del Día al Llegar
- Actor: Profesional médico
- Objetivo: Ver qué pacientes tiene programados hoy
- Precondiciones: Tener citas agendadas
- Pasos:
- Iniciar sesión en Nubidoc
- Sistema muestra dashboard automáticamente
- Visualizar sección “citas” con listado del día actual
- Ver hora, paciente, estado de cada cita
- Resultado: Conocimiento rápido de la agenda del día
2. Revisar Notas Importantes Pendientes
- Actor: Cualquier usuario
- Objetivo: Leer notas destacadas que requieren atención
- Precondiciones: Existen wall notes con “Alertar al lector”
- Pasos:
- Abrir dashboard
- Sistema muestra diálogo automático con notas de alerta
- Leer contenido de la nota
- Opcionalmente: marcar como leída
- Resultado: Notificaciones importantes no se pierden
3. Verificar Cumpleaños de Pacientes
- Actor: Recepcionista o profesional
- Objetivo: Saber qué pacientes cumplen años hoy para felicitarlos
- Precondiciones: Configuración
showBirthdaySectionOnMainPage()activa - Pasos:
- Abrir dashboard
- Revisar panel “Hoy cumple años” (columna derecha)
- Ver fotos y nombres de pacientes
- Opcionalmente: clic en paciente para abrir su ficha
- Llamar o enviar mensaje de felicitación
- Resultado: Atención personalizada que fideliza pacientes
4. Consultar Estadísticas del Centro (Admin)
- Actor: Administrador
- Objetivo: Monitorizar uso de recursos y límites del plan
- Precondiciones: Ser administrador, configuración
showStadisticsOnInitPage()activa - Pasos:
- Abrir dashboard
- Visualizar 4 círculos de estadísticas:
- Nº usuarios vs límite
- Nº pacientes vs límite
- Espacio disco vs límite
- SMS enviados vs límite
- Revisar gráficos de actividad:
- Citas últimos 30 días
- Citas últimos 12 meses
- Resultado: Visión general del estado del centro
5. Navegar a Día Específico del Mes
- Actor: Cualquier usuario
- Objetivo: Ver citas/eventos de otro día del mes actual
- Precondiciones: Ninguna
- Pasos:
- En dashboard, localizar calendario mensual (columna izquierda)
- Hacer clic en día deseado del calendario
- Sistema recarga sección “citas” y “eventos” con datos de ese día
- Revisar citas/eventos
- Resultado: Planificación de días futuros o revisión de pasados
6. Acceder Rápidamente a una Cita
- Actor: Profesional o recepcionista
- Objetivo: Abrir detalles de una cita del día para atenderla
- Precondiciones: Cita programada para hoy
- Pasos:
- En dashboard, localizar cita en listado
- Hacer clic en el link de la cita
- Sistema abre diálogo “Acciones de Cita”
- Realizar acciones: cambiar estado, añadir notas, crear factura, etc.
- Resultado: Flujo rápido sin navegar por menús
Opción del Menú
El Dashboard se accede de dos formas:Opción 1: Al Iniciar Sesión
- Automático: Se carga automáticamente tras autenticación exitosa
- No requiere clic en menú
Opción 2: Botón “Inicio” en Menú
- Función JavaScript:
openMainPage() - Icono:
fa fa-home(Casa) - Descripción: Vuelve al dashboard desde cualquier otra pantalla
- Privilegios: Ninguno específico
- Comportamiento:
- Recarga dashboard con datos actuales
- Resetea fecha seleccionada a hoy
- Refresca todos los widgets
Pantalla 1: Dashboard Principal
Función de acceso:openMainPage() o inicio automático
Descripción
Pantalla dividida en columnas con widgets de información. Layout responsivo que se adapta a diferentes tamaños de pantalla.Distribución de Pantalla
Secciones de la Pantalla
1. Columna Izquierda: Calendario Mensual- Tamaño: col-md-4 (33% ancho)
- Componente: Calendar widget (CLNDR plugin)
- Funcionalidad:
- Muestra mes actual por defecto
- Navegación: flechas < > para cambiar mes
- También: teclas ← → del teclado
- Click en día: recarga citas/eventos de ese día
- Día seleccionado queda destacado
- Variable JS:
mainpageDateSelected(guarda fecha seleccionada)
- Tamaño: col-md-4 (33% ancho)
-
ID Contenedor:
userdaysummary -
Subsecciones:
2a. Citas del Día
- Título: “citas”
- Muestra: Hora | Paciente | Estado
- Coloración por estado de cita
- Timer en vivo para citas “En sala” (muestra tiempo transcurrido)
- Click en cita: abre
openAppoActionsDialog(appoId) - Si no hay citas: mensaje info “No hay citas en la fecha seleccionada”
- Título: “eventos”
- Muestra: Nombre evento @ Hora
- Click en evento: abre
openEventDetailsDialog(eventId) - Si no hay eventos: mensaje info “No hay eventos en la fecha seleccionada”
- Tamaño: col-md-4 (33% ancho)
-
Compuesta por hasta 3 paneles:
3a. Comunicaciones (Desactivado por defecto)
- Contenido: Interacciones asignadas al usuario
- Título: “Comunicaciones”
- Botón refresh: Recarga con
reloadUserInteract(userId) - Nota: Actualmente con
if (false)→ no visible
- Título: “Notas”
- Contenido: Wall notes del usuario
- Botón refresh:
reloadWallNote(null, userId) - Botón “ver notas leídas”: Muestra historial
- Funcionalidad especial:
- Notas con
alertreader = 1: se muestran en popup automático al cargar - Si usuario es médico y hay patient: botón ”+ añadir nota”
- Notas con
- Si no hay notas: “No hay notas que mostrar”
- Título: “Hoy cumple años”
- Contenido:
- Foto miniatura del paciente
- Nombre del paciente
- Edad (calculada desde fecha nacimiento)
- Opcionalmente fecha nacimiento
- Botón refresh:
reloadMainPageBirthdays() - Click en paciente: Abre
openRecord(patientId) - Filtro opcional: Si
patientBirthdayOnlyIfAppointment(): solo pacientes con citas previas - Si no hay: “Ningún [paciente] cumple años en esta fecha”
-
Condición:
customer->showStadisticsOnInitPage() == true
-
Tamaño: 4 columnas de col-md-3 (25% cada una)
4a. Círculo: Nº de usuarios
- Muestra: Usuarios actuales vs límite del plan
- Fuente datos:
module_maxusersdel módulo base- Suma módulos adicionales de usuarios
customer->getNumValidUsers()para usuarios actuales
- Visualización: Gráfico circular (epie-chart)
- Porcentaje: (usuarios actuales / límite) * 100
- Ejemplo: “5 usuarios | Límite 10”
- Muestra: Pacientes creados vs límite del plan
- Fuente datos:
module_maxpatientsdel módulo base- Suma módulos adicionales de pacientes
- COUNT de hpc_patient donde deleted=0
- Visualización: Gráfico circular
- Porcentaje: (pacientes / límite) * 100
- Nota: Término “pacientes” puede cambiar según configuración (ej. “clientes”)
- Muestra: Espacio usado vs límite de almacenamiento
- Fuente datos:
module_maxstorageen MB, convertido a bytes (* 1024^2)- Suma módulos adicionales de disco (type=3, status activo): se lee
unitsleftde cadahpc_customer_module(en MB)
- Visualización: Gráfico circular
- Porcentaje: (usado / límite) * 100
- Formato: MB/GB (convertido automáticamente)
- Nota: Si el centro tiene módulos adicionales de almacenamiento contratados, el límite refleja la suma del almacenamiento base del plan más los módulos adicionales
- Alertas:
- Si > 90%: Warning en log
- Si > 100%: Error en log (comentado)
- Muestra: SMS enviados vs SMS contratados
- Fuente datos:
customer->getCustomerModuleSmsActives()- módulos SMS activos- Para cada: units (total) - unitsleft (restantes) = enviados
- Suma total de enviados y total contratado
- Visualización: Gráfico circular
- Porcentaje: (enviados / total) * 100
- Ejemplo: “250 sms | Límite 500”
-
Condición:
customer->showStadisticsOnInitPage() == true - Tamaño: 2 columnas de col-md-6 (50% cada una)
-
Librería: Morris.js (área charts)
5a. Gráfico: Citas de los últimos 30 días
- Tipo: Gráfico de área (Area chart)
- Fuente datos:
User::getMyLastFigures(30, 'day') - Series:
- “Mis citas” (rojo #E67A77): citas del usuario actual
- “Total citas” (turquesa #79D1CF): todas las citas (solo si admin)
- Eje X: Periodo (días)
- Eje Y: Número de citas
- Interactividad: Hover muestra valor exacto
- Botón: Chevron down para colapsar panel
- Tipo: Gráfico de área (Area chart)
- Fuente datos:
User::getMyLastFigures(12, 'month') - Series:
- “Mis citas”: citas del usuario actual por mes
- “Total citas”: todas las citas (solo si admin)
- Eje X: Periodo (meses)
- Eje Y: Número de citas
- Mismo formato visual que gráfico anterior
- Layout: Grid responsive, col-md-4 por video (3 por fila)
- Fuente datos: Tabla
hpc_video - Tipos de video:
- Videos locales:
<video>HTML5 desdeapp.nubidoc.com/videos/[filename] - Videos YouTube:
<iframe>embedded de YouTube con ID
- Videos locales:
- Funcionalidad:
- Play en video local: registra visualización en
hpc_video_user - Evento JS:
handleVideoClick(videoId) - Permite controles nativos de video
- Play en video local: registra visualización en
- Si no hay videos: No se muestra sección
Workflow 1: Inicio de Sesión y Carga del Dashboard
- Si
customerModuleBase not found: Error crítico, configuración incorrecta - Si no hay datos: Se muestran mensajes informativos, no errores
Workflow 2: Cambiar Día del Calendario
- Si selecciona día sin citas: “No hay citas en la fecha seleccionada”
- Si selecciona día sin eventos: “No hay eventos en la fecha seleccionada”
- Flechas teclado (← →): cambian mes sin recargar día
Workflow 3: Ver Detalles de Cita desde Dashboard
Workflow 4: Gestión de Nota con Alerta
- Si hay múltiples notas con alerta: se muestran popups consecutivos
- Usuario puede marcar como leída explícitamente desde panel de notas
- Notas leídas se pueden consultar con botón “ver notas leídas”
Workflow 5: Verificar Cumpleaños y Contactar Paciente
- Paciente recibe atención personalizada
- Se fortalece relación paciente-centro
- Potencial fidelización y marketing positivo
Regla 1: Dashboard como Pantalla por Defecto
- Descripción: El dashboard siempre se muestra automáticamente tras login exitoso
- Cuándo aplica: Al iniciar sesión en el sistema
- Efecto:
- No requiere navegación manual
- Usuario ve inmediatamente su actividad del día
- Punto de partida para cualquier operación
- Código: IndexController tras autenticación exitosa
Regla 2: Personalización según Tipo de Usuario
- Descripción: El contenido del dashboard varía según el rol del usuario
- Efecto:
- Profesionales médicos: Ven sus propias citas y eventos
- Recepcionistas: Pueden ver citas de varios profesionales (según permisos)
- Administradores: Ven estadísticas adicionales del centro
- Todos: Ven notas y cumpleaños (si configurado)
- Código: Condiciones
isUserMedicalCenter(),isAdmin()en vista
Regla 3: Día Actual como Fecha por Defecto
- Descripción: Al cargar dashboard, siempre muestra datos del día actual
- Cuándo aplica: Al abrir dashboard o hacer clic en “Inicio”
- Efecto:
- Variable
mainpageDateSelected= null inicialmente - Si null: usa
new DateTime()→ hoy - Calendario destaca día actual
- Resumen muestra citas/eventos de hoy
- Variable
Regla 4: Alertas Automáticas de Wall Notes
- Descripción: Notas con flag “Alertar al lector” se muestran en popup automático
- Cuándo aplica: Al cargar dashboard, si existen wall notes con
alertreader = 1 - Efecto:
- Sistema itera wallnotes renderizadas
- Para cada con alertreader = 1: añade a array
- En document.ready(): ejecuta alertWallnote() para cada una
- Popups se muestran secuencialmente
- Propósito: Garantizar que información crítica no se pierda
Regla 5: Visibilidad Condicional de Componentes
- Descripción: Ciertos componentes solo se muestran si están configurados para el centro
- Cuándo aplica: Al renderizar dashboard
- Efecto: Cada componente verifica su condición:
- Cumpleaños:
if (showBirthdaySectionOnMainPage()) - Estadísticas:
if (isAdmin() && showStadisticsOnInitPage()) - Videos:
if (showNubidocVideosOnMainPage()) - Comunicaciones:
if (allowCRM())← actualmente siempre false - Control horario:
if (allowUserTimeCheck() && user->timecheck)
- Cumpleaños:
- Razón: Personalización por centro, evita sobrecarga visual
Regla 6: Actualización de Fecha no Recarga Página
- Descripción: Cambiar día en calendario solo recarga sección de citas/eventos, no toda la página
- Cuándo aplica: Al hacer clic en día del calendario
- Efecto:
- Solo se actualiza contenido de div
#userdaysummary - Resto de dashboard permanece igual (notas, cumpleaños, stats)
- Performance mejorada, no se pierden estados de otros widgets
- Solo se actualiza contenido de div
- Tecnología: AJAX con
loadPartial()
Regla 7: Cálculo de Estadísticas Solo para Administradores
- Descripción: Los círculos de estadísticas y gráficos consumen recursos, solo se calculan si se van a mostrar
- Cuándo aplica: Al renderizar dashboard
- Efecto:
- Verificación:
if (isAdmin() && showStadisticsOnInitPage()) - Si false: no se ejecutan queries de conteo, no se generan datos de gráficos
- Ahorro de tiempo de procesamiento para usuarios no admin
- Consultas complejas (ej.
getMyLastFigures(30)) pueden tardar segundos
- Verificación:
Regla 8: Filtrado de Cumpleaños por Relación con Usuario
- Descripción: Opcionalmente, solo se muestran cumpleaños de pacientes con citas previas con el usuario
- Cuándo aplica: Si
patientBirthdayOnlyIfAppointment() == true - Efecto:
- Para cada paciente con cumpleaños hoy:
→ Verifica:
patient->hasAnyAppointmentWith(userId)→ Si no tiene citas con este usuario: no se muestra - Evita mostrar cumpleaños de pacientes que no conoce el profesional
- Especialmente útil en centros multiprofesionales
- Para cada paciente con cumpleaños hoy:
→ Verifica:
Regla 9: Límites de Recursos con Alertas
- Descripción: Sistema monitoriza uso vs límites del plan y genera alertas
- Cuándo aplica: Al calcular estadísticas de espacio en disco
- Efecto:
- Si espacio usado > 90% del límite: → new Hpc_Exception_Generic(“Customer has reached 90% storage”) → Registra en log
- Si espacio usado > 100%: → new Hpc_Exception_Generic (línea comentada) → Potencialmente bloquea ciertas operaciones
- Propósito: Prevenir problemas de espacio antes que ocurran
Regla 10: Sincronización de Timers en Citas
- Descripción: Citas en estado “En sala” muestran timer en vivo con tiempo transcurrido
- Cuándo aplica: Si cita tiene estado = “started” (En sala de espera)
- Efecto:
- Se calcula timerDate = momento en que entró en sala
- JavaScript inicia contador en vivo:
startTime(divId, timerDate) - Contador se actualiza cada segundo
- Muestra formato: HH:mm:ss o “hace X minutos”
- Propósito: Control visual del tiempo de espera del paciente
Mensajes Informativos
-
“No hay citas en la fecha seleccionada”
- Cuándo: Al seleccionar día sin citas programadas
- Dónde: Panel central, sección “citas”
- Estilo: Info azul
-
“No hay eventos en la fecha seleccionada”
- Cuándo: Al seleccionar día sin eventos agendados
- Dónde: Panel central, sección “eventos”
- Estilo: Info azul
-
“No hay notas que mostrar”
- Cuándo: Usuario no tiene wall notes pendientes
- Dónde: Panel derecho, sección “Notas”
- Estilo: Info azul
-
“Ningún [paciente] cumple años en esta fecha”
- Cuándo: No hay pacientes con cumpleaños hoy, o ninguno cumple condiciones de filtro
- Dónde: Panel derecho, sección “Hoy cumple años”
- Estilo: Info azul
Mensajes de Alerta
-
“No ha registrado hora de entrada hoy. ¿Desea registrarla ahora?”
- Cuándo: Control horario activado, usuario no fichó entrada hoy
- Condiciones:
allowUserTimeCheck() == trueuser->timecheck == 1- No existe registro en hpc_timeregistry para hoy sin datetimeout
- Dónde: Popup modal automático al cargar dashboard
- Título popup: “Registrar hora entrada”
- Botones: “Aceptar” / “Cancelar”
- Si acepta: ejecuta
registerUserTime(userId, 0)→ crea registro entrada
-
Popup automático de Wall Note con alerta
- Cuándo: Existe wall note con
alertreader = 1no leída - Contenido: Texto completo de la nota
- Título: “Nota”
- Estilo: Modal medium
- Cierre: Usuario debe cerrar manualmente
- Cuándo: Existe wall note con
Mensajes de Error (Logs)
-
“customerModuleBase not found”
- Cuándo: No se encuentra módulo base del centro
- Gravedad: CRÍTICO - impide cargar dashboard
- Causa: Configuración corrupta en base de datos
- Solución: Revisar tabla hpc_customermodule, contactar soporte
-
“User ID not found on daysummaryuser”
- Cuándo: No se puede determinar userId en resumen del día
- Gravedad: ERROR - impide mostrar citas/eventos
- Causa: Sesión corrupta o parámetros incorrectos
- Solución: Cerrar sesión y volver a iniciar
-
“patient and user are null on wallnotesshow”
- Cuándo: Panel de notas llamado sin patient ni user
- Gravedad: ERROR - impide mostrar notas
- Causa: Error en invocación del partial
- Solución: Reportar bug a desarrolladores
Advertencias en Log
-
“Customer has reached 90% storage: [X]%”
- Cuándo: Espacio en disco supera 90% del límite
- Dónde: Log del servidor
- Acción: Advertencia a administrador, considerar ampliar plan o limpiar archivos
-
“Customer! has reached 100% storage: [X]%” (Comentado)
- Cuándo: Espacio en disco supera 100% del límite
- Dónde: Log del servidor (actualmente comentado)
- Acción potencial: Bloquear subida de archivos
Preguntas Frecuentes
Q: ¿Por qué al iniciar sesión siempre veo el dashboard primero? A: El dashboard está diseñado para ser la pantalla de inicio por defecto. Proporciona una visión general rápida de tu actividad del día (citas, eventos, notas) sin necesidad de navegar. Si prefieres ir directamente a otra sección, puedes hacerlo desde el menú inmediatamente después de cargar. Q: ¿Cómo cambio la fecha para ver citas de otro día? A: En la columna izquierda del dashboard hay un calendario mensual. Simplemente haz clic en el día que desees consultar y el panel central se actualizará mostrando las citas y eventos de ese día. También puedes usar las flechas ← → del teclado para cambiar de mes. Q: ¿Por qué no veo las estadísticas de usuarios, pacientes y espacio en disco? A: Las estadísticas solo son visibles para usuarios administradores y si el centro tiene configurada la opciónshowStadisticsOnInitPage(). Si eres administrador y no las ves, contacta con soporte técnico para activar esta funcionalidad.
Q: ¿Qué significa el timer que aparece en algunas citas?
A: El timer aparece en citas que están en estado “En sala de espera”. Muestra el tiempo transcurrido desde que el paciente entró en sala, ayudándote a controlar visualmente cuánto lleva esperando. Se actualiza en tiempo real cada segundo.
Q: ¿Cómo funcionan las notas con alerta?
A: Cuando alguien crea una nota (wall note) y marca la opción “Alertar al lector”, esa nota se mostrará automáticamente en un popup cuando inicies sesión o recargues el dashboard. Esto garantiza que no se te escape información importante. Una vez cerrado el popup, la nota sigue visible en el panel de notas pero no volverá a alertar automáticamente.
Q: ¿Por qué solo veo algunos pacientes en “Hoy cumple años”?
A: Depende de la configuración de tu centro. Si patientBirthdayOnlyIfAppointment() está activo, solo se mostrarán pacientes que han tenido al menos una cita contigo previamente. Esto evita mostrar cumpleaños de pacientes que atienden otros profesionales y que tú no conoces.
Q: ¿Puedo ocultar algún componente del dashboard que no uso?
A: Los componentes del dashboard son configurables a nivel de centro, no a nivel individual de usuario. Si hay algo que no necesitas (ej. videos tutoriales, estadísticas), debe ser configurado por el administrador del centro. Contacta con tu administrador para solicitar cambios.
Q: ¿Qué son los gráficos de “Citas de los últimos 30 días” y “12 meses”?
A: Son gráficos de área que muestran la evolución de tu actividad de citas en el tiempo. El primero muestra día a día los últimos 30 días, útil para ver tendencias recientes. El segundo muestra mes a mes el último año, útil para análisis de largo plazo. Si eres administrador, verás dos líneas: tus citas y el total del centro.
Q: ¿Qué pasa si mi red o mi navegador bloquean la carga de gráficos externos?
A: El dashboard y la pantalla de inicio deben seguir cargando igualmente. Puede que algún gráfico puntual no llegue a mostrarse, pero el acceso, las citas y el resto de la pantalla seguirán funcionando con normalidad.
Q: ¿Cómo añado una nota en el dashboard?
A: Las notas (wall notes) del dashboard están asociadas a usuarios o pacientes. Si eres profesional médico y estás viendo el dashboard desde la ficha de un paciente, verás un botón ”+ añadir nota” en el panel de notas. Si quieres añadir una nota general para ti, hazlo desde el módulo de Pacientes o desde tu perfil de usuario.
Q: ¿Puedo cambiar el orden de los componentes del dashboard?
A: No, el layout del dashboard está predefinido y no es personalizable por el usuario. El orden está optimizado según la importancia de la información: calendario y citas (lo más importante) a la izquierda y centro, información complementaria (notas, cumpleaños) a la derecha.
Q: ¿Qué significan los colores en el listado de citas?
A: Los colores representan el estado de cada cita:
- Azul: Programada
- Verde: Confirmada
- Amarillo/Naranja: En sala de espera
- Gris: Atendida/Finalizada
- Rojo: No asistió
- Blanco: Cancelada El mismo código de colores se usa en toda la aplicación (agenda, búsquedas, etc.).
- No se pueden calcular comisiones por profesional
- No se puede saber quién escribió en la parte clínica
- No se puede registrar la hora de entrada/salida de cada persona
- Pérdida de trazabilidad de acciones individuales Por estas razones, se recomienda encarecidamente que cada persona tenga su propio usuario personal, aunque trabaje en el mismo departamento.
- Un usuario puede tener acceso solo a su agenda y su centro
- Un usuario puede ver todos los centros del grupo
- Un usuario puede ver solo ciertos centros específicos (por ejemplo, centros “A” y “B” pero no “C”) Los profesionales están asociados a un centro principal, pero también pueden tener asignados otros centros adicionales. Por ejemplo, el Dr. Juan puede pasar consulta en el centro “A” y “B”, y su agenda permitirá ver la disponibilidad y citar en ambos centros.
- Tienes un centro principal asignado
- Opcionalmente, puedes tener centros adicionales asignados
- Tus citas y facturas se pueden crear para cualquiera de los centros a los que tienes acceso Por ejemplo, un profesional puede trabajar para el centro A los lunes/miércoles y para el centro B los martes/jueves, todo con el mismo usuario.
Layout y Estructura
Sistema de Grid:- Bootstrap 3 responsive grid
- Breakpoints: xs (móvil), sm (tablet), md (escritorio), lg (pantallas grandes)
- Dashboard optimizado para md (≥992px)
- Columna izquierda: col-md-4 (calendar)
- Columna central: col-md-4 (day summary)
- Columna derecha: col-md-4 (notes, birthdays)
- Filas completas: col-md-12 (statistics row, graphs row, videos row)
Componentes Visuales
Calendario (CLNDR Plugin):- Estilo: Grid 7x6 (lunes a domingo)
- Día actual: Resaltado en color primario
- Día seleccionado: Borde destacado
- Navegación: Flechas < > en header
- Mes/Año: Centrado en header
- Días adyacentes: Opcionalmente visibles en gris claro
- Formato: Lista
<ul class="event-list"> - Item:
<li>con link clickeable - Contenido: “HH:mm - Nombre Paciente”
- Badge estado:
<div class="label pull-right">con color - Timer:
<div>inline si estado=En sala - Hover: Subrayado del link
- Formato: Igual que citas
- Contenido: “Nombre evento @ HH:mm”
- Sin badge: No tienen estado visual
- Click: Abre detalles de evento
- Contenedor:
<section class="panel"> - Header: Título “Notas” + iconos refresh y chevron
- Body: Lista de wallnotes renderizadas
- Cada nota:
- Creador y fecha
- Contenido (texto/HTML)
- Botón acción (si editable)
- Footer: Botones “añadir nota” y “ver leídas”
- Layout: Grid col-lg-3 (4 por fila)
- Elementos:
- Foto circular (miniprofile-pic)
- Nombre paciente debajo
- Edad en años
- Opcionalmente fecha nacimiento
- Click: Área completa clickeable
- Hover: Efecto visual (generalmente ligero zoom o sombra)
- Librería: Easy Pie Chart
- Visualización: Círculo progress con porcentaje
- Colores: Degradado según porcentaje
- Verde: 0-70%
- Amarillo: 70-90%
- Rojo: 90-100%
- Estructura:
- Título arriba
- Lado izquierdo: Valor actual + unidad
- Centro: Círculo animado
- Lado derecho: “Límite” + valor máximo
- Tipo: Area chart (gráfico de área)
- Ejes:
- X: Periodos (días o meses)
- Y: Número de citas
- Colores:
- Rojo (#E67A77): “Mis citas”
- Turquesa (#79D1CF): “Total citas” (solo admin)
- Interactividad:
- Hover sobre punto: muestra tooltip con valor exacto
- hideHover: ‘auto’ (tooltip desaparece al quitar mouse)
- Opciones:
- behaveLikeLine: true (área se comporta como línea)
- gridEnabled: false (sin grid de fondo)
- fillOpacity: 0.7 (transparencia del área)
- pointSize: 0 (sin puntos visibles)
- lineWidth: 0 (sin línea visible, solo área)
- Videos locales:
- Tag:
<video controls> - Ancho: 100% (responsivo)
- Controles nativos HTML5
- Tag:
- Videos YouTube:
- Tag:
<iframe> - Dimensiones: width=100%, height=315px
- allowfullscreen habilitado
- Tag:
- Layout: Grid col-md-4 (3 por fila)
Iconos Principales
- fa fa-home - Inicio (icono del módulo)
- fa fa-chevron-down - Colapsar panel
- fa fa-chevron-left / fa fa-chevron-right - Navegación calendario
- fa fa-refresh - Recargar componente
- fa fa-plus - Añadir nota
- fa fa-external-link - Ver más (notas leídas, etc.)
- fa fa-check - Marcar como completado (en timers o acciones)
Estados Visuales de Citas
| Estado | Valor | Color Fondo | Color Texto | Clase Adicional |
|---|---|---|---|---|
| Programada | 1 | Azul (#5bc0de) | Blanco | - |
| Confirmada | 2 | Verde (#5cb85c) | Blanco | - |
| En sala | 3 | Amarillo/Naranja (#f0ad4e) | Negro | hpc-patientlabel-alert (parpadeo) |
| Atendida | 4 | Gris (#999) | Blanco | - |
| No asistió | 5 | Rojo (#d9534f) | Blanco | - |
| Cancelada | 6 | Blanco (#fff) | Gris | - |
hpc-patientlabel-alert:
- Aplicada a citas en estado “En sala”
- CSS con animación de parpadeo o pulsación
- Llama atención visual sobre pacientes esperando
Niveles de Acceso
| Usuario | Dashboard Básico | Estadísticas | Gráficos | Control Horario | Notas Paciente |
|---|---|---|---|---|---|
| Profesional | ✓ Sus citas/eventos | ✗ | ✗ | Opcional (individual) | ✓ Lectura/Escritura |
| Recepcionista | ✓ Citas según permisos | ✗ | ✗ | Opcional (individual) | ✗ o Solo lectura |
| Administrador | ✓ Todas las citas | ✓ Si configurado | ✓ Si configurado | Opcional (individual) | ✓ Todas |
| MasterAdmin | ✓ Completo | ✓ Siempre | ✓ Siempre | Gestión de todos | ✓ Todas |
Restricciones
Visibilidad de Citas:- Similar a citas
- Filtrado por
event_user_id - Eventos públicos (
isprivate = 0) visibles para todos
- Profesionales médicos: Pueden crear notas en fichas de pacientes
- Recepcionistas: Según privilegio
CREATE_WALLNOTES(si existe) - Administradores: Siempre pueden crear
- Si no admin: secciones de estadísticas ni siquiera se renderizan (no solo ocultas)
- Previene intentos de acceso vía inspección HTML
- Solo
MasterAdmino usuarios conprivilegeADM_CustomerModifypueden cambiar configuraciones - Afecta visibilidad de componentes para todos los usuarios del centro
- Configuración a dos niveles:
- Centro:
allowUserTimeCheck()debe ser true - Usuario individual:
user->timecheckdebe ser 1
- Centro:
- Solo si ambos activos se muestra popup de registro
Reportes y Exportaciones
El módulo de Inicio (Dashboard) no incluye funcionalidades directas de exportación o impresión de reportes. Su propósito es visualización en pantalla de información del día. Datos visualizados:- Citas y eventos (pueden exportarse desde módulo Agenda)
- Notas (pueden gestionarse desde módulo Pacientes)
- Cumpleaños (datos de pacientes, exportables desde módulo Pacientes)
- Estadísticas (visualización solo, sin exportación directa)
- Gráficos (visualización solo, sin exportación directa)
- Módulo Listados: Reportes de citas, facturación, actividad
- Módulo Agenda: Exportación de citas a Excel
- Módulo Pacientes: Listados y exportación de pacientes
- Los gráficos Morris no tienen botón de exportación
- Pueden capturarse con screenshot si es necesario
- Datos subyacentes están en base de datos (tablas appointment)
️ Configuraciones Especiales
showBirthdaySectionOnMainPage()- Tipo: Boolean
- Por defecto: Varía según centro
- Efecto: Muestra/oculta panel “Hoy cumple años”
- Configuración: Tabla
hpc_customer, campo específico o método personalizado - Cuándo activar: Centros que quieren atención personalizada a pacientes
- Tipo: Boolean
- Por defecto: false (para evitar sobrecarga)
- Efecto: Muestra/oculta círculos estadísticas y gráficos Morris
- Requisito adicional: Usuario debe ser administrador
- Cuándo activar: Centros con administradores que monitorean uso de recursos
- Performance: Genera múltiples queries, puede ralentizar carga de dashboard
- Tipo: Boolean
- Por defecto: true (en instalaciones Nubidoc)
- Efecto: Muestra/oculta sección de videos tutoriales
- Configuración: Generalmente ligado a branding (Nubidoc sí, instalaciones privadas no)
- Cuándo desactivar: Centros que no quieren contenido de formación en dashboard
- Tipo: Boolean
- Por defecto: false (actualmente)
- Efecto: Mostraría panel de “Comunicaciones” con interacciones
- Estado actual: Desactivado con
if (false)adicional - Cuándo activar: Funcionalidad CRM completa en futuro
- Tipo: Boolean
- Por defecto: Varía según centro
- Efecto: Filtra cumpleaños para mostrar solo pacientes con citas previas con el usuario
- Cuándo activar: Centros multiprofesionales donde cada profesional tiene sus propios pacientes
- Cuándo desactivar: Centros pequeños donde todos conocen a todos
- Tipo: Boolean
- Por defecto: false
- Efecto: Habilita sistema de control horario (fichaje entrada/salida)
- Requisito adicional: Usuario individual debe tener
user->timecheck = 1 - Cuándo activar: Centros que necesitan registro de jornada laboral
- Funcionalidad:
- Popup al iniciar sesión si no fichó entrada
- Registro en tabla
hpc_timeregistry - Reportes de jornada laboral
Configuraciones de Usuario Individual
user->timecheck- Tipo: TINYINT (0 o 1)
- Efecto: Activa control horario para este usuario específico
- Requiere:
allowUserTimeCheck()activo a nivel centro - Gestión: Administración → Usuarios → Editar usuario
- Tipo: TINYINT (0 o 1)
- Efecto: Muestra botón para cambiar versión de interfaz (legacy, actualmente desactivado)
Configuraciones de Videos
Tabla hpc_video:- Tabla:
hpc_video_user - Al hacer play en video local: INSERT con video_id y user_id
- Permite estadísticas de qué videos ve cada usuario
Plugins y Librerías JavaScript
CLNDR (Calendario):- Versión: Compatible con jQuery
- Configuración actual:
- weekOffset: 0 (semana empieza lunes)
- showAdjacentMonths: true (muestra días del mes anterior/siguiente)
- adjacentDaysChangeMonth: false (clic en día adyacente no cambia mes)
- Versión: Compatible incluida en Nubidoc
- Tipos usados: Morris.Area (gráfico de área)
- Configuración:
- behaveLikeLine: true
- gridEnabled: false
- fillOpacity: 0.7
- pointSize: 0 (sin puntos)
- lineWidth: 0 (solo área, sin línea)
- hideHover: ‘auto’
- Colores personalizables: Modificar lineColors en código
- Clase CSS:
.epie-chart - Data attribute:
data-percent="XX"(0-100) - Inicialización: Automática por plugin
- Colores: Definidos por CSS, gradiente según porcentaje
Tutorial 1: Revisar mi Agenda del Día
Objetivo: Consultar rápidamente qué citas y eventos tengo hoy Tiempo estimado: 30 segundos Pasos:-
Iniciar sesión en Nubidoc
- Introduce usuario y contraseña
- Haz clic en “Entrar”
-
Dashboard se carga automáticamente
- No es necesario hacer nada más
- Pantalla muestra información del día actual por defecto
-
Localizar sección “citas” (columna central)
- Título: “citas”
- Debajo del calendario
-
Revisar listado de citas
- Cada línea muestra: Hora - Nombre paciente
- Color del badge indica estado:
- Azul: Programada
- Verde: Confirmada
- Amarillo: En sala de espera (con timer)
- Gris: Ya atendida
-
Revisar sección “eventos” (debajo de citas)
- Eventos personales o recordatorios del día
- Formato: Nombre evento @ Hora
-
Resultado
- Visión completa de tu agenda del día en segundos
- Sin necesidad de navegar a otros módulos
Tutorial 2: Consultar Citas de Otro Día del Mes
Objetivo: Ver qué citas tengo un día específico del mes actual Tiempo estimado: 15 segundos Pasos:-
Localizar calendario mensual (columna izquierda)
- Muestra mes actual con todos los días
- Día de hoy destacado visualmente
-
Identificar día que deseas consultar
- Puede ser día futuro o pasado del mes
-
Hacer clic en el día
- Un solo clic sobre el número del día
-
Sistema recarga información central
- Sección “citas” se actualiza con citas de ese día
- Sección “eventos” se actualiza con eventos de ese día
- Encabezado muestra: “[Día de semana] [Fecha]”
- Ejemplo: “Martes 19/12/2025”
-
Navegar a otro mes (si necesario)
- Clic en flecha < (mes anterior)
- Clic en flecha > (mes siguiente)
- O usar teclas ← → del teclado
-
Volver a hoy
- Clic en día de hoy en calendario
- O simplemente clic en “Inicio” del menú (recarga todo)
Tutorial 3: Atender Cita desde Dashboard
Objetivo: Acceder rápidamente a una cita del día para gestionarla Tiempo estimado: 1 minuto Pasos:-
Identificar cita a atender en listado
- Columna central, sección “citas”
- Buscar por hora o nombre de paciente
-
Hacer clic en el link de la cita
- Línea completa es clickeable
- Ejemplo: clic en “10:00 - García Pérez, Juan”
-
Se abre diálogo “Acciones de Cita”
- Modal con opciones disponibles
-
Seleccionar acción deseada:
Opción A: Cambiar estado a “En sala”
- Clic en botón “Marcar en sala”
- Paciente pasa a sala de espera
- Timer se inicia automáticamente
- Clic en “Ver detalles” o “Editar”
- Se abre formulario completo de cita
- Modificar notas, duración, etc.
- Clic en “Añadir nota”
- Escribir observaciones de la consulta
- Guardar
- Clic en “Crear factura”
- Sistema pre-rellena con datos de la cita
- Añadir servicios prestados
- Guardar factura
-
Completar acción seleccionada
- Según opción elegida
-
Cerrar diálogo
- Clic en X o botón “Cerrar”
- O automáticamente tras guardar
-
Dashboard se actualiza
- Estado de la cita refleja el cambio
- Color del badge actualizado
- Si cambió a “Atendida”: puede desaparecer del listado (según filtros)
Tutorial 4: Gestionar Notas Importantes
Objetivo: Leer y gestionar notas que requieren mi atención Tiempo estimado: 2 minutos Pasos:-
Al cargar dashboard, si hay notas con alerta:
- Popup automático aparece con contenido de la nota
- Título: “Nota”
- Contenido completo visible
-
Leer contenido del popup
- Información importante que no puedes perderte
- Puede ser recordatorio, aviso clínico, tarea urgente, etc.
-
Cerrar popup
- Clic en X o fuera del modal
- Si hay varias notas con alerta: siguiente popup aparece automáticamente
-
Revisar panel de notas (columna derecha)
- Título: “Notas”
- Lista de todas las notas pendientes (incluyendo las que alertaron)
-
Leer cada nota en el panel:
- Cabecera: Quién la creó y cuándo
- Contenido: Texto de la nota
- Acciones: Botones si es editable
-
Marcar nota como leída (opcional):
- Algunas notas tienen botón “Marcar leída”
- Clic en el botón
- Nota pasa a historial de leídas
-
Añadir nueva nota (si eres profesional médico):
- Botón verde ”+ añadir nota” al pie del panel
- Solo visible si estás en contexto de paciente
- Clic en botón
- Se abre formulario de nueva nota
- Escribir contenido
- Opcionalmente: marcar “Alertar al lector”
- Guardar
-
Ver notas leídas (historial):
- Clic en botón “ver notas leídas”
- Se abre listado con notas antiguas ya leídas
- Útil para consultar información pasada
-
Refrescar panel de notas:
- Clic en icono refresh (🔄) en header del panel
- Recarga lista de notas por si hay nuevas
Tutorial 5: Monitorizar Recursos del Centro (Solo Admin)
Objetivo: Revisar uso de usuarios, pacientes, espacio y SMS Tiempo estimado: 2 minutos Requisitos previos:- Ser administrador del centro
- Configuración
showStadisticsOnInitPage()activa
-
Abrir dashboard
- Como admin, verás secciones adicionales
-
Localizar fila de estadísticas
- Debajo del resumen del día
- 4 círculos con gráficos
-
Revisar círculo “Nº de usuarios”:
- Lado izquierdo: Usuarios actuales (ej. “5 usuarios”)
- Centro: Gráfico circular con porcentaje lleno
- Lado derecho: Límite del plan (ej. “Límite 10”)
- Interpretación:
- Verde (0-70%): Uso normal
- Amarillo (70-90%): Cerca del límite
- Rojo (90-100%): Límite casi alcanzado, considerar ampliar plan
-
Revisar círculo “Nº de pacientes”:
- Misma estructura
- Pacientes creados vs límite del plan
- Si estás cerca del límite: contactar con proveedor para ampliar
-
Revisar círculo “Espacio en disco”:
- Lado izquierdo: Espacio usado (ej. “2.3 GB”)
- Lado derecho: Límite (ej. “Límite 5 GB”)
- Interpretación:
- Si >90%: Advertencia en log del servidor
- Acción: Limpiar archivos innecesarios o ampliar plan
- Archivos ocupan: PDFs de facturas, fotos de pacientes, documentos adjuntos
-
Revisar círculo “Mensajes SMS”:
- Lado izquierdo: SMS enviados (ej. “250 sms”)
- Lado derecho: Total contratado (ej. “Límite 500”)
- Interpretación:
- Monitorizar para no quedarse sin SMS
- Los SMS se usan para: recordatorios de citas, confirmaciones, avisos
- Si se agota: contratar pack adicional
-
Revisar gráfico “Citas de los últimos 30 días”:
- Columna izquierda debajo de estadísticas
- Línea roja: Tus citas día a día
- Línea turquesa: Total de citas del centro
- Hover sobre gráfico: Ver número exacto de un día
- Utilidad: Identificar tendencias, días con más/menos actividad
-
Revisar gráfico “Citas de los últimos 12 meses”:
- Columna derecha
- Mismas líneas pero por mes
- Utilidad: Análisis de largo plazo, estacionalidad, crecimiento
-
Tomar decisiones basadas en datos:
- Si usuarios cerca del límite: planificar ampliación o gestionar inactivos
- Si pacientes cerca del límite: actualizar plan antes de bloquearse
- Si espacio >80%: iniciar limpieza de archivos antiguos
- Si SMS se agotan: contratar más antes de quedarse sin
- Si gráficos muestran caída: analizar causas, mejorar marketing
-
Refrescar datos (si necesario):
- Clic en “Inicio” del menú para recargar todo
- Estadísticas se recalculan en tiempo real

