Descripción
El módulo de Tareas es un sistema de gestión de actividades y recordatorios que permite a los profesionales del centro médico organizar su trabajo diario, asignar tareas a otros usuarios, y realizar seguimiento de actividades pendientes. Las tareas pueden estar relacionadas con pacientes específicos, vinculadas a citas, o ser tareas administrativas generales. Este módulo funciona como un sistema de productividad y gestión del trabajo, complementando la agenda médica con un seguimiento de actividades que no necesariamente tienen una hora específica de cita pero que deben ser recordadas y completadas.Usuarios Objetivo
- Recepcionistas: Crean tareas recordatorios para llamar a pacientes, enviar documentación, gestionar pagos pendientes
- Profesionales médicos: Tareas de seguimiento de pacientes, solicitud de pruebas, revisión de resultados
- Administradores: Tareas administrativas, gestión de trámites, tareas de supervisión
- Coordinadores: Asignación de tareas al equipo, seguimiento de flujos de trabajo
1. Crear Recordatorio de Llamada a Paciente
- Actor: Recepcionista
- Objetivo: Recordar llamar a un paciente para confirmar cita
- Precondiciones: Tener información del paciente
- Pasos:
- Clic en “Crear tarea”
- Seleccionar tipo “Llamada telefónica”
- Vincular con el paciente
- Establecer fecha y prioridad
- Añadir notas con motivo de la llamada
- Guardar
- Resultado: Tarea pendiente visible en listado de tareas pendientes
2. Asignar Tarea de Seguimiento Post-Consulta
- Actor: Médico
- Objetivo: Asignar tarea para revisar resultados de pruebas de un paciente
- Precondiciones: Paciente atendido, pruebas solicitadas
- Pasos:
- Desde ficha del paciente o tras finalizar cita
- Crear tarea de tipo “Seguimiento”
- Establecer fecha futura (ej. 1 semana)
- Añadir notas sobre qué revisar
- Opcionalmente: crear cita futura relacionada
- Guardar como pública para que el equipo la vea
- Resultado: Tarea programada que aparecerá en fecha indicada
3. Gestionar Tarea con Flujo de Trabajo
- Actor: Coordinador
- Objetivo: Seguir un proceso de varias etapas (ej. gestión de autorización de seguro)
- Precondiciones: Flujo de trabajo configurado
- Pasos:
- Crear tarea seleccionando flujo “Autorización seguro”
- Tarea se crea en primera etapa: “Solicitud enviada”
- Al avanzar etapa: “Documentación recibida”
- Continuar hasta “Autorización aprobada” o “Rechazada”
- Resultado: Seguimiento estructurado del proceso completo
4. Buscar Tareas Pendientes por Paciente
- Actor: Cualquier usuario
- Objetivo: Ver todas las tareas pendientes de un paciente específico
- Precondiciones: Paciente existe en sistema
- Pasos:
- Abrir ficha de paciente
- Ver sección de tareas en la ficha
- Alternativamente: usar búsqueda de tareas filtrando por paciente
- Resultado: Listado de todas las tareas asociadas al paciente
5. Marcar Tarea como Finalizada
- Actor: Usuario asignado
- Objetivo: Completar una tarea y registrar su finalización
- Precondiciones: Tarea existe y está asignada al usuario
- Pasos:
- Abrir tarea desde listado pendientes
- Cambiar estado a “Finalizado”
- Opcionalmente: añadir nota con resultado
- Guardar
- Resultado: Tarea marcada como completada con fecha/hora automática
6. Crear Tarea Privada
- Actor: Cualquier profesional
- Objetivo: Crear recordatorio personal que otros no vean
- Precondiciones: Ninguna
- Pasos:
- Crear tarea normal
- Cambiar switch “Carácter” a “Privado”
- Completar datos
- Guardar
- Resultado: Tarea visible solo para el creador
Opciones del Menú
El módulo Tareas contiene 3 opciones principales:Opción 1: Tareas pendientes
- Función JavaScript:
openTasks() - Icono:
fa-solid fa-list-check(Lista con checks) - Descripción: Muestra el listado de tareas pendientes del usuario actual
- Privilegios: Ninguno específico
- Comportamiento:
- Carga automáticamente tareas en estado “Pendiente” o “Comenzado”
- Filtra por usuario actual por defecto
- Permite cambio rápido de estado
- Muestra tareas públicas del centro y privadas del usuario
Opción 2: Crear tarea
- Función JavaScript:
createTask() - Icono:
fa fa-plus-circle(Círculo con +) - Descripción: Abre formulario para crear nueva tarea
- Privilegios: Ninguno específico
- Comportamiento:
- Formulario en blanco con valores por defecto
- Usuario actual preseleccionado
- Estado “Pendiente” preseleccionado
- Prioridad “Normal” preseleccionada
- Fecha actual como sugerencia
Opción 3: Buscar tareas
- Función JavaScript:
openTaskSearch() - Icono:
fa fa-search(Lupa) - Descripción: Búsqueda avanzada de tareas con múltiples filtros
- Privilegios:
- Comportamiento:
- Búsqueda con rango de fechas
- Filtrado por múltiples criterios
- Resultados paginados
- Ejecuta búsqueda automáticamente al abrir
Pantalla 1: Listado de Tareas Pendientes
Función de acceso:openTasks()
Descripción
Pantalla principal del módulo que muestra las tareas pendientes y en curso del usuario. Se presenta en forma de grid con capacidad de paginación y acciones rápidas sobre cada tarea.Secciones de la Pantalla
1. Contenedor de Tareas- ID:
tasks-main - Muestra grid paginado de tareas
- Columnas: ID, Tipo, Usuario, Título, Notas, Fecha Inicio, Fecha Fin, Estado
- Coloración por estado y prioridad
- Tareas en estado “Pendiente” (1) o “Comenzado” (2)
- Del usuario actual o públicas del centro
- Ordenadas por fecha de creación
- Ver/Editar tarea (clic en fila)
- Cambiar estado rápidamente
- Eliminar tarea
- Ver detalles completos
Pantalla 2: Formulario de Tarea (Nueva/Editar)
Función de acceso:createTask(), updateTask(taskId)
Descripción
Formulario completo para crear o modificar una tarea. Incluye todos los campos necesarios para definir la tarea, asignarla, establecer prioridad y vincularla opcionalmente con pacientes.Secciones de la Pantalla
1. Encabezado- Título: “Nueva tarea” o “Modificar tarea”
- Breadcrumb con icono de tareas
- Botón “ACEPTAR” (verde) para guardar
- Usuario:* Combo select con profesionales del centro
- Preseleccionado: usuario actual
- Puede cambiar si tiene permisos
- Tipo:* Combo select con tipos de tarea
- Tipos configurables por centro
- Ejemplos: Llamada, Seguimiento, Administrativa, etc.
- Estado:* Combo select
- Valores: Pendiente, Comenzado, Finalizado
- Prioridad:* Combo select
- Valores: Baja, Normal, Alta, Muy Alta
- Preseleccionada: Normal
- Tarea: Textarea para nombre/título
- Altura: 50px
- Ancho: 99%
- Notas adicionales: Textarea para descripción
- Altura: 50px
- Ancho: 99%
- Carácter: Switch Público/Privado
- Público: visible para todos
- Privado: solo visible para el usuario asignado
- Fecha Inicio: DateTimePicker
- Formato: dd/mm/yyyy HH:mm
- Fecha finalización: DateTimePicker
- Debe ser ≥ Fecha Inicio
- Opcional
- Flujo de trabajo: Combo select
- Workflows configurables
- Solo editable en creación (disabled en modificación)
- Paciente: Campo autocompletar
- Búsqueda por nombre
- Botón lupa para buscar paciente
- Opcional
- Nº HC: Número de historia clínica
- Se autocompleta al seleccionar paciente
- Solo lectura
- Detalles: Ver información extendida en diálogo
- Modificar: Habilitar edición
Estados Visuales de los Campos
- Campos con asterisco (*) son obligatorios
- Campos deshabilitados en gris cuando no editable
- Flujo de trabajo bloqueado tras creación
Pantalla 3: Búsqueda de Tareas
Función de acceso:openTaskSearch()
Descripción
Pantalla de búsqueda avanzada con múltiples criterios de filtrado. Permite localizar tareas históricas, filtrar por rangos de fechas, profesionales, tipos y estados.Secciones de la Pantalla
1. Panel de Filtros- Profesionales: Multiselect de usuarios
- Permite seleccionar múltiples
- Vacío = todos los usuarios
- Categoría: Multiselect de tipos de tarea
- Filtra por tipo configurado
- Inicio entre Fecha: Rango de fechas
- Fecha desde (por defecto: hoy 00:01)
- Fecha hasta (por defecto: hoy 23:59)
- Título: Campo texto libre
- Búsqueda LIKE en task_name
- Notas: Campo texto libre
- Búsqueda LIKE en task_notes
- Estados: Multiselect
- Pendiente, Comenzado, Finalizado
- Permite seleccionar múltiples
- Buscar: Ejecuta la búsqueda
- Limpiar: Vacía todos los campos
- Filtro avanzado: (Deshabilitado actualmente)
- Grid paginado con resultados
- Muestra mismas columnas que listado pendientes
- Clic en fila para ver/editar
Formulario: Nueva/Editar Tarea
Propósito: Crear o modificar una tarea en el sistema Ubicación: Modal/Tab tras clic en “Crear tarea” o editar tarea existente ID HTML:new-task-form-[randomID]
Campos del Formulario
| Campo | Tipo | Obligatorio | Descripción | Validación |
|---|---|---|---|---|
task_id | hidden | - | ID de la tarea (vacío si nueva) | - |
task_user_id | select | Sí | Usuario/profesional asignado | Requerido, debe existir usuario |
task_tasktype_id | select | Sí | Tipo de tarea (configurable por centro) | Requerido, error: “Debe indicarse el tipo de tarea” |
task_status | select | Sí | Estado: 1=Pendiente, 2=Comenzado, 3=Finalizado, 4=Cancelado | Requerido, error: “Debe seleccionar un estado” |
task_priority | select | Sí | Prioridad: 0=Baja, 1=Normal, 2=Alta, 3=Muy Alta | Requerido, error: “Debe seleccionar una prioridad” |
task_name | textarea | No | Nombre/título de la tarea | Máx. texto permitido por DB |
task_notes | textarea | No | Notas adicionales, descripción | Sin límite visual |
task_isprivate | switch | No | 0=Público, 1=Privado | Checkbox invertido |
task_begindate | datetime | No | Fecha y hora de inicio | Formato: yyyy-MM-dd HH:mm:ss |
task_enddate | datetime | No | Fecha y hora de finalización | Debe ser ≥ begindate |
task_taskflow_id | select | No | Flujo de trabajo asociado | Solo editable en creación |
task_patient_id | autocomplete | No | Paciente vinculado | Debe existir en sistema |
patient_number | text | No | Número de historia clínica | Autocompletado, readonly |
task_color | color | No | Color de la tarea | Por defecto: #FFFFFF |
Validaciones Especiales
-
Fechas:
- Si
enddateexiste, debe ser mayor o igual quebegindate - Mensaje error: “La fecha Fin debe ser mayor o igual que la fecha de inicio”
- Si
-
Campos requeridos:
task_tasktype_id: “Debe indicarse el tipo de tarea”task_user_id: “Debe indicarse un usuario”task_status: “Debe seleccionar un estado” (validación JS)task_priority: “Debe seleccionar una prioridad” (validación JS)
-
Reglas de negocio:
- Al cambiar estado a “Comenzado” (2): se establece
begindateautomáticamente si está vacío - Al cambiar estado a “Finalizado” (3): se establece
enddateautomáticamente si está vacío task_taskflow_idqueda disabled tras primera guardada
- Al cambiar estado a “Comenzado” (2): se establece
Botones y Acciones
-
ACEPTAR (verde, clase
hpc-form-okbutton)- Función:
sendTask(task_id, formId, context) - Acción: Valida y envía formulario por AJAX
- Validaciones previas:
- Tipo de tarea seleccionado
- Estado seleccionado
- Prioridad seleccionada
- Fechas válidas (fin ≥ inicio)
- Callback: Recarga vista de tareas pendientes
openTasks(true)
- Función:
-
Detalles (naranja, solo si tarea existe)
- Función:
openTaskDetailsDialog(taskId, formId) - Acción: Abre diálogo modal con información extendida
- Muestra: Interacciones, notas, historial de cambios
- Función:
-
Modificar (gris, solo si tarea existe y no editable)
- Función:
updateTask(taskId, patientId, null, null) - Acción: Recarga formulario en modo edición
- Función:
Formulario: Búsqueda de Tareas
Propósito: Buscar tareas con criterios avanzados Ubicación: Opción “Buscar tareas” del menú ID HTML:tasksearch-form
Campos del Formulario de Búsqueda
| Campo | Tipo | Obligatorio | Descripción | Comportamiento |
|---|---|---|---|---|
task_user_id[] | multiselect | No | Profesionales | Búsqueda en múltiples usuarios |
task_tasktype_id[] | multiselect | No | Categorías/Tipos | Filtrado por tipo |
searchtaskdatepickerfrom | datetime | No | Fecha desde | Inicio del rango |
searchtaskdatepickerto | datetime | No | Fecha hasta | Fin del rango |
task_name | text | No | Título | Búsqueda LIKE % |
task_notes | text | No | Notas | Búsqueda LIKE % |
task_status[] | multiselect | No | Estados | 1=Pendiente, 2=Comenzado, 3=Finalizado |
checkboxApposTaskLinkedYes | checkbox | No | Con cita vinculada | Filtra task_appointment_id NOT NULL |
checkboxApposTaskLinkedNo | checkbox | No | Sin cita vinculada | Filtra task_appointment_id IS NULL |
Validaciones
- Rango de fechas:
- Si ambas fechas están informadas:
datefromno puede ser mayor quedateto - Mensaje error: “La fecha de inicio no puede ser mayor que la fecha final”
- Si ambas fechas están informadas:
Botones y Acciones
-
Buscar (azul, con lupa)
- Función:
doTaskSearch(paneId) - Acción: Ejecuta búsqueda con criterios seleccionados
- Destino:
result-[paneId] - Operación:
findAndShowPaginated
- Función:
-
Limpiar (círculo con goma)
- Función:
cleanform(context) - Acción: Vacía todos los campos de búsqueda
- No ejecuta nueva búsqueda
- Función:
Workflow 1: Crear Nueva Tarea
-
Error: “Debe indicarse el tipo de tarea”
- Causa: No se seleccionó tipo (task_tasktype_id vacío)
- Solución: Seleccionar un tipo de la lista desplegable
-
Error: “Debe indicarse un usuario”
- Causa: Campo usuario vacío (task_user_id vacío)
- Solución: Seleccionar profesional asignado
-
Error: “La fecha Fin debe ser mayor o igual que la fecha de inicio”
- Causa: enddate < begindate
- Solución: Ajustar fechas correctamente
Workflow 2: Cambiar Estado de Tarea
- Si cambia de “Finalizado” a “Pendiente”: enddate se mantiene, no se borra
- Si cambia prioridad: solo actualiza task_priority, sin efectos en fechas
updatestatus($request):
Workflow 3: Buscar Tareas con Filtros
-
Búsqueda por paciente: Desde ficha de paciente
- Añade:
WHERE task_patient_id = [patient_id] - No filtra por usuarios
- Añade:
-
Vinculación con citas: (Funcionalidad deshabilitada por defecto)
- checkboxApposTaskLinkedYes:
WHERE task_appointment_id IS NOT NULL - checkboxApposTaskLinkedNo:
WHERE task_appointment_id IS NULL
- checkboxApposTaskLinkedYes:
Workflow 4: Vincular Tarea con Cita
Workflow 5: Gestión con Flujos de Trabajo
- Estados de Tarea (task_status): Pendiente, Comenzado, Finalizado, Cancelado
- Estados de Flujo (taskflowstatus): Personalizados según cada flujo
- Ambos son independientes: una tarea puede estar “Comenzada” y en estado de flujo “Documentación”
Integraciones
Con Módulo Pacientes:- Tareas pueden vincularse a pacientes específicos vía
task_patient_id - Desde ficha de paciente se pueden ver todas sus tareas
- Al vincular paciente: se muestra nombre y número de historia
- Búsqueda de paciente integrada en formulario de tarea
- Datos compartidos: patient_id, patient_name, patient_number
- Tareas pueden crear citas automáticamente vía
createAppointment() - Tareas pueden vincularse a citas existentes vía
task_appointment_id - Al vincular cita: se muestra fecha, hora, paciente y color de la cita
- Desde cita se puede crear tarea de seguimiento
- Datos compartidos: appointment_id, appointment_date, appointment_patient_id
- Toda tarea debe tener usuario asignado (
task_user_id) - Filtrado por permisos: ver solo tareas propias o de todo el centro
- Tareas privadas: solo visibles para usuario asignado
- Tareas públicas: visibles para todos los usuarios del centro
- Color de usuario se refleja en visualización de tarea
- Sincronización automática si usuario tiene configurado Google Calendar
- Campos:
task_googleid,task_googlesyncdate - Método:
syncWithGoogleCalendar($timestamp) - Si falla sincronización: muestra warning pero no impide guardar tarea
- Actualización bidireccional de cambios
Dependencias
Requiere:- Usuarios: Toda tarea debe tener usuario asignado
- Módulo Administración → Usuarios debe tener al menos un usuario
- Tipos de Tarea: Tipos configurados en el centro
- Módulo Administración → Tareas → Tipos de tarea
- Al menos un tipo de tarea debe existir
- Customer activo: Sistema multi-tenant requiere customer_id
- Flujos de Trabajo: TaskFlow depende de tareas para ejecutarse
- Historial de Paciente: Tareas forman parte del historial del paciente
- Reportes: Listados de productividad usan datos de tareas
- Flujos de Trabajo (TaskFlow): Permiten gestión estructurada por etapas
- Pacientes: Tareas pueden existir sin paciente (tareas administrativas)
- Citas: Tareas pueden existir sin cita vinculada
Regla 1: Asignación Automática de Fechas según Estado
- Descripción: Cuando cambia el estado de una tarea, ciertas fechas se establecen automáticamente
- Cuándo aplica:
- Al cambiar estado de cualquier valor a “Comenzado” (2)
- Al cambiar estado de cualquier valor a “Finalizado” (3)
- Efecto:
- Si nuevo estado = 2 (Comenzado) y
task_begindatees NULL: → Se establecetask_begindate = NOW() - Si nuevo estado = 3 (Finalizado) y
task_enddatees NULL: → Se establecetask_enddate = NOW()
- Si nuevo estado = 2 (Comenzado) y
- Código: Task.php líneas 436-442 (método save)
Regla 2: Privacidad de Tareas
- Descripción: Las tareas pueden ser públicas o privadas, controlando su visibilidad
- Cuándo aplica: Siempre, en toda visualización y búsqueda de tareas
- Efecto:
- Tareas públicas (
isprivate = 0): visibles para todos los usuarios del centro - Tareas privadas (
isprivate = 1): solo visibles para el usuario asignado (task_user_id) - Filtro aplicado:
WHERE (isprivate = 0 OR task_user_id = [usuario_actual])
- Tareas públicas (
- Código: Task.php línea 1047
Regla 3: Flujo de Trabajo Inmutable tras Creación
- Descripción: Una vez asignado un flujo de trabajo a una tarea, no puede cambiarse
- Cuándo aplica: Al editar una tarea existente que tiene
task_taskflow_idinformado - Efecto:
- El combo “Flujo de trabajo” se muestra
disabled - No se puede cambiar a otro flujo ni quitarlo
- Solo se puede avanzar por los estados del flujo asignado
- El combo “Flujo de trabajo” se muestra
- Razón: Mantener integridad del historial de estados del flujo
Regla 4: Inicialización Automática de Flujo de Trabajo
- Descripción: Al crear tarea con flujo, se establece automáticamente el primer estado
- Cuándo aplica: Al guardar tarea nueva (
taskID == null) contask_taskflow_idinformado - Efecto:
- Sistema busca estados del flujo ordenados por
theorder - Crea registro en
hpc_tasktaskflowstatuscon primer estado - Establece
tasktaskflowstatus_creationdate = NOW() - Tarea inicia en primer estado del flujo
- Sistema busca estados del flujo ordenados por
- Código: Task.php líneas 447-465
Regla 5: Validación de Rango de Fechas
- Descripción: La fecha de finalización debe ser posterior o igual a la de inicio
- Cuándo aplica: Al guardar tarea con ambas fechas informadas
- Efecto:
- Validación JavaScript previa al envío del formulario
- Si
enddate < begindate: muestra error y no envía - Mensaje: “La fecha Fin debe ser mayor o igual que la fecha de inicio”
Regla 6: Vinculación Única Cita-Tarea
- Descripción: Una cita solo puede estar vinculada a una tarea a la vez
- Cuándo aplica: Al intentar vincular cita a tarea (método
linktoappo) - Efecto:
- Sistema verifica si cita ya tiene tarea asociada
- Si
appo.getTask()devuelve tarea existente: muestra error - Mensaje: “Cita con código -[código]- ya está asociada a una tarea”
- Debe primero eliminarse la relación de la otra tarea
- Código: Task.php líneas 1205-1212
Regla 7: Campos Obligatorios Mínimos
- Descripción: Toda tarea debe tener usuario, tipo, estado y prioridad
- Cuándo aplica: Al guardar tarea (método
isValidToSave) - Efecto:
- Si
task_tasktype_idvacío: “Debe indicarse el tipo de tarea” - Si
task_user_idvacío: “Debe indicarse un usuario” - Si en formulario JS falta estado: “Debe seleccionar un estado”
- Si en formulario JS falta prioridad: “Debe seleccionar una prioridad”
- Si
Regla 8: Eliminación Lógica (Soft Delete)
- Descripción: Las tareas nunca se borran físicamente de la base de datos
- Cuándo aplica: Al eliminar una tarea
- Efecto:
- No se ejecuta
DELETE FROM hpc_task - Se ejecuta
UPDATE hpc_task SET deleted = 1 - Tarea deja de aparecer en búsquedas (filtro
WHERE deleted = 0) - Datos quedan preservados para auditoría
- No se ejecuta
- Código: Task.php método
delete()líneas 81-84, 91-94
Mensajes de Éxito
-
“Tarea creada correctamente”
- Cuándo: Al guardar nueva tarea sin errores
- Dónde: Formulario de tarea, mensaje info verde
- Código: Task.php línea 419
-
“Tarea modificada correctamente”
- Cuándo: Al actualizar tarea existente sin errores
- Dónde: Formulario de tarea, mensaje info verde
- Código: Task.php línea 426
-
“Tarea eliminada correctamente”
- Cuándo: Al eliminar tarea (marcar deleted=1) sin errores
- Dónde: Listado de tareas
- Código: Task.php línea 423
Mensajes de Error
-
“Debe indicarse el tipo de tarea”
- Cuándo: Al guardar tarea sin seleccionar tipo (
task_tasktype_idvacío) - Solución: Seleccionar un tipo de la lista desplegable “Tipo*”
- Código: Task.php líneas 631-636
- Cuándo: Al guardar tarea sin seleccionar tipo (
-
“Debe indicarse un usuario”
- Cuándo: Al guardar tarea sin usuario asignado (
task_user_idvacío) - Solución: Seleccionar profesional en combo “Usuario*”
- Código: Task.php líneas 639-646
- Cuándo: Al guardar tarea sin usuario asignado (
-
“Debe seleccionar un estado”
- Cuándo: Al guardar desde formulario sin estado seleccionado (validación JS)
- Solución: Seleccionar estado en combo “Estado*”
-
“Debe seleccionar una prioridad”
- Cuándo: Al guardar desde formulario sin prioridad (validación JS)
- Solución: Seleccionar prioridad en combo “Prioridad*”
-
“La fecha Fin debe ser mayor o igual que la fecha de inicio”
- Cuándo: Al guardar con enddate < begindate (validación JS)
- Solución: Ajustar fechas para que fin ≥ inicio o dejar una vacía
-
“Cita con código -[código]- no encontrada”
- Cuándo: Al intentar vincular cita inexistente o código incorrecto
- Solución: Verificar código de cita y que sea de tipo videoconferencia
- Código: Task.php líneas 1197-1202
-
“Cita con código -[código]- ya está asociada a una tarea”
- Cuándo: Al intentar vincular cita que ya tiene tarea asociada
- Solución: Eliminar relación de la otra tarea primero
- Código: Task.php líneas 1207-1212
-
“La fecha de inicio no puede ser mayor que la fecha final”
- Cuándo: En búsqueda, al poner fecha desde > fecha hasta
- Solución: Invertir fechas o corregir rango
Mensajes de Advertencia
-
“No se ha encontrado el calendario en Google Calendar. Los datos no se han sincronizado”
- Cuándo: Al guardar tarea con Google Calendar configurado pero calendario no encontrado
- Impacto: Tarea se guarda normalmente, solo falla sincronización
- Solución: Revisar configuración de Google Calendar del usuario
- Código: Task.php línea 356
-
“No está conectado con Google Calendar. Los datos no se han sincronizado”
- Cuándo: Al guardar tarea con usuario sin Google Calendar configurado
- Impacto: Tarea se guarda normalmente, no se sincroniza
- Solución: Configurar Google Calendar en perfil de usuario si se desea sincronización
- Código: Task.php línea 361
-
“Error al enviar la información a Google Calendar”
- Cuándo: Excepción durante sincronización con Google Calendar
- Impacto: Tarea guardada, sincronización fallida
- Solución: Revisar logs, verificar conexión a Google, reconfigurar si necesario
- Código: Task.php líneas 367-371
Preguntas Frecuentes
Q: ¿Cuál es la diferencia entre una tarea y una cita? A: Una cita es un evento en la agenda con fecha y hora específica, asociada siempre a un profesional y generalmente a un paciente. Una tarea es un recordatorio o pendiente que puede o no tener fecha específica, y su propósito es gestionar actividades que no son atención directa al paciente (llamadas, seguimientos, gestiones administrativas). Las tareas pueden vincularse a citas, pero son entidades independientes. Q: ¿Qué sucede si cambio el estado de una tarea a “Finalizado”? A: Al cambiar estado a “Finalizado” (valor 3), el sistema automáticamente registra la fecha y hora actual en el campotask_enddate si está vacío. La tarea desaparece del listado de “Tareas pendientes” pero puede encontrarse en la búsqueda histórica.
Q: ¿Puedo ver las tareas de otros profesionales?
A: Depende de dos factores:
- Tareas públicas: Siempre visibles para todos los usuarios del centro
- Tareas privadas: Solo visibles para el usuario asignado
isprivate = 1 y solo tú podrás ver esa tarea en el sistema.
Q: ¿Puedo cambiar el flujo de trabajo de una tarea después de crearla?
A: No. Una vez que guardas una tarea con un flujo de trabajo asignado, el campo queda bloqueado (disabled). Esto es para mantener la integridad del historial de estados. Si necesitas un flujo diferente, debes crear una nueva tarea.
Q: ¿Qué es un flujo de trabajo y para qué sirve?
A: Un flujo de trabajo (TaskFlow) es una secuencia predefinida de estados por los que debe pasar una tarea. Por ejemplo: “Solicitud → Documentación → Aprobación → Finalizada”. Cada cambio de estado queda registrado con fecha. Es útil para procesos estandarizados como gestión de autorizaciones, trámites administrativos, o protocolos clínicos con varias etapas.
Q: ¿Por qué no aparecen mis tareas en “Tareas pendientes”?
A: Verifica:
- Estado: Solo aparecen tareas en estado “Pendiente” (1) o “Comenzado” (2)
- Privacidad: Si es privada de otro usuario, no la verás
- Usuario: Por defecto filtra por tus tareas; usa búsqueda para ver todas
- Eliminada: Si fue eliminada (
deleted=1), no aparece
- Escribe el nombre del paciente en el campo
- O haz clic en el botón lupa (🔍) para buscar
- Selecciona el paciente de la lista
- El número de historia se autocompletará
deleted=1. La tarea:
- Desaparece de todos los listados
- Ya no es accesible desde la interfaz
- Queda preservada en base de datos para auditoría
- No puede recuperarse desde la interfaz (requiere acceso a BD)
- Al guardar tarea, se intenta sincronizar automáticamente
- La tarea aparece en Google Calendar del usuario
- Se guarda el ID de Google (
task_googleid) - Si falla, muestra advertencia pero guarda la tarea igualmente
- La sincronización es unidireccional: de Nubidoc a Google
- Estado (task_status): Estado básico de la tarea → Pendiente, Comenzado, Finalizado, Cancelado. Es obligatorio siempre.
- Flujo de trabajo (taskflow): Secuencia de estados personalizados opcionales para procesos específicos. Ejemplo: “Documentación pendiente → Revisión → Aprobado”.
- Ambos pueden coexistir: una tarea puede estar en Estado=“Comenzado” y al mismo tiempo en estado de flujo=“Revisión”.
task_user_id). Si necesitas asignar a varios usuarios, debes crear tareas separadas para cada uno. Alternativamente, crea una tarea pública que todos puedan ver.
Campos de Búsqueda
| Campo | Tipo | Operador | Descripción |
|---|---|---|---|
task_user_id | Array (multiselect) | IN | Profesionales asignados. Permite seleccionar múltiples. |
task_tasktype_id | Array (multiselect) | IN | Tipos/categorías de tarea. Permite seleccionar múltiples. |
task_creationdate (from) | Datetime | ≥ | Fecha de creación desde. Formato: yyyy-MM-dd HH:mm:ss |
task_creationdate (to) | Datetime | ≤ | Fecha de creación hasta. Formato: yyyy-MM-dd HH:mm:ss |
task_name | Text | LIKE | Búsqueda en título de la tarea. Búsqueda parcial %texto% |
task_notes | Text | LIKE | Búsqueda en notas. Búsqueda parcial %texto% |
task_status | Array (multiselect) | IN | Estados: Pendiente (1), Comenzado (2), Finalizado (3) |
task_patient_id | Integer | = | ID del paciente (cuando se busca desde ficha de paciente) |
task_appointment_id | Checkbox | IS NULL / IS NOT NULL | Con/sin cita vinculada (funcionalidad condicional) |
Lógica de Búsqueda
Operadores entre filtros: AND- Todos los filtros se combinan con AND
- Ejemplo: Profesionales AND Fecha AND Estado
- Múltiples valores del mismo filtro se combinan con OR
- Ejemplo:
(user_id=5 OR user_id=7 OR user_id=9)
Resultados
Columnas mostradas:| Columna | Descripción | Origen |
|---|---|---|
| ID | ID numérico de la tarea | task_id |
| Tipo | Nombre del tipo de tarea | tasktype_name (JOIN) |
| Usuario | Nombre corto del profesional | user_shortname (JOIN) |
| Tarea | Título de la tarea | task_name |
| Notas | Descripción/notas | task_notes |
| Fecha Inicio | Fecha y hora de inicio | task_begindate (formateado) |
| Fecha Fin | Fecha y hora de fin | task_enddate (formateado) |
| Estado | Nombre del estado | Estado traducido (1=Pendiente, etc.) |
| Color Usuario | Color del usuario (fondo) | user_color |
| Color Tarea | Color de la tarea | task_color |
| Color Estado | Color según estado | Calculado (verde=finalizado, etc.) |
- Por defecto:
ORDER BY task_creationdate DESC - Cuando se busca por paciente:
ORDER BY task_patient_id, task_begindate DESC
- Tamaño página por defecto: 10 registros (
rowCount = 10) - Paginación controlada por parámetros
pageyrowcount
- Clic en fila: Abre formulario de edición de la tarea
- Ver detalles: Diálogo modal con información extendida
- Eliminar: Marca tarea como deleted=1
- Cambiar estado: Modificación rápida de estado
Búsquedas Especiales
Tareas Pendientes (openTasks):Estados Visuales
Estados de Tarea (task_status):| Estado | Valor | Color | Icono | Significado |
|---|---|---|---|---|
| Pendiente | 1 | Azul | - | Tarea aún no iniciada |
| Comenzado | 2 | Amarillo/Naranja | - | Tarea en progreso |
| Finalizado | 3 | Verde | ✓ | Tarea completada |
| Cancelado | 4 | Rojo/Gris | ✗ | Tarea cancelada (no mostrado en UI normal) |
| Prioridad | Valor | Representación Visual | Uso |
|---|---|---|---|
| Baja | 0 | Texto normal, sin énfasis | Tareas no urgentes |
| Normal | 1 | Texto normal (por defecto) | Mayoría de tareas |
| Alta | 2 | Texto en negrita o destacado | Tareas importantes |
| Muy Alta | 3 | Texto rojo/destacado especial | Tareas urgentes |
| Tipo | Valor isprivate | Icono/Indicador | Visibilidad |
|---|---|---|---|
| Público | 0 | 👁️ (ojo abierto) | Todos los usuarios del centro |
| Privado | 1 | 🔒 (candado) | Solo usuario asignado |
Iconos Principales
- fa-solid fa-list - Icono del módulo Tareas en menú
- fa-solid fa-list-check - Tareas pendientes (lista con checks)
- fa fa-plus-circle - Crear nueva tarea
- fa fa-search - Buscar tareas
- fa fa-tasks - Icono genérico de tarea (en breadcrumb)
- fa fa-pencil - Modificar tarea
- fa fa-external-link-square - Ver detalles de tarea
- fa fa-trash - Eliminar relación (con cita) o eliminar tarea
- fa fa-eraser - Limpiar campos de búsqueda
- fa fa-fw fa-search-plus - Filtro avanzado (actualmente deshabilitado)
Colores y Badges
Por Estado:- Pendiente: Sin color especial o azul claro
- Comenzado: Amarillo/naranja
- Finalizado: Verde
- Cancelado: Gris
- Baja: Sin énfasis
- Normal: Color estándar
- Alta: Naranja o resaltado
- Muy Alta: Rojo
- Cada usuario tiene color configurado (
user_color) - Se usa como fondo o borde en visualización de tareas
- Ayuda a identificar rápidamente quién tiene la tarea
Niveles de Acceso
| Privilegio | Permite | Código Constante |
|---|---|---|
| Acceso al módulo Tareas | Ver y gestionar tareas propias | (Sin privilegio específico, acceso base) |
Restricciones
Visibilidad de Tareas:- Usuario puede editar:
- Sus propias tareas (siempre)
- Tareas de usuarios con agenda compartida con él
- Eliminación lógica (soft delete)
- Solo el usuario asignado o administradores
- No se puede eliminar si está vinculada a cita (debe primero quitar relación)
- Usuario puede avanzar estados del flujo
- No puede cambiar el flujo asignado
- Acciones automáticas del flujo se ejecutan con permisos del sistema
Reportes y Exportaciones
Actualmente el módulo de Tareas no incluye reportes específicos de exportación a Excel o PDF. Sin embargo, la información de tareas puede: Visualizarse en:- Listado de tareas pendientes (vista en pantalla)
- Resultados de búsqueda (vista en pantalla paginada)
- Ficha de paciente (sección de tareas del paciente)
- Tareas por usuario y rango de fechas
- Tareas por tipo y estado
- Tareas por paciente
- Historial de cambios de estado en flujos de trabajo
- Tiempos de finalización (enddate - begindate)
- Productividad por usuario (tareas completadas)
- Tiempo promedio de finalización por tipo
- Tareas pendientes por prioridad
- Eficiencia en flujos de trabajo (tiempo por estado)
Tipos de Tarea (TaskTypes)
Ubicación: Administración → Tareas → Tipos de tarea Configuración:- Cada centro puede definir sus propios tipos de tarea
- Ejemplos: “Llamada telefónica”, “Seguimiento paciente”, “Gestión administrativa”, “Revisión resultados”
- Campos: nombre, descripción, color
- Los tipos se muestran en combo al crear/editar tarea
Flujos de Trabajo (TaskFlows)
Ubicación: Administración → Tareas → Flujos de trabajo Configuración:- Crear flujo con nombre y descripción
- Definir estados del flujo en orden secuencial
- Asignar orden a cada estado (theorder)
- Opcionalmente: configurar acciones automáticas por estado
- Envío de emails
- Creación de otras tareas
- Actualización de datos
- Se ejecutan al alcanzar un estado específico
- Configurables por administrador
- Ejecutadas por sistema automáticamente
- Útiles para automatizar workflows complejos
Sincronización con Google Calendar
Configuración por usuario:- Perfil de usuario → Configuración Google Calendar
- Requiere OAuth con cuenta Google
- Campo
user_googlecalid: ID del calendario - Al guardar tarea: intenta sincronización automática
- Si falla: muestra warning pero guarda tarea
- Sincronización unidireccional: Nubidoc → Google
- Campos sincronizados: nombre, fechas, notas
- Actualización: si existe googleid, actualiza; si no, crea
- No sincroniza cambios de Google → Nubidoc
Permisos Personalizables
Configuración: Administración → Usuarios → Editar usuario → Permisos Permisos relacionados con tareas:- Ver lista de pacientes (para vincular a tareas)
- Ver agenda de otros (para ver tareas de otros)
- Modificar eventos de otros (para editar tareas de otros)
Tutorial 1: Crear mi primera tarea de seguimiento
Objetivo: Crear una tarea para llamar a un paciente en una semana Tiempo estimado: 2 minutos Pasos:-
Acceder al módulo
- En el menú lateral izquierdo, clic en “Tareas”
- Seleccionar “Crear tarea”
-
Completar campos obligatorios
- Usuario: Dejar preseleccionado (tú mismo)
- Tipo: Seleccionar “Llamada telefónica” (o tipo disponible)
- Estado: Dejar en “Pendiente”
- Prioridad: Seleccionar “Normal”
-
Añadir información de la tarea
- Tarea: Escribir “Llamar a paciente para confirmar cita”
- Notas adicionales: “Confirmar asistencia a cita del próximo martes”
- Carácter: Dejar en “Público”
-
Establecer fecha
- Fecha Inicio: Clic en calendario
- Seleccionar fecha: dentro de 7 días
- Hora: 10:00
- Fecha finalización: Dejar vacío (opcional)
-
Vincular paciente (opcional)
- En campo “Paciente”, escribir nombre del paciente
- O clic en lupa (🔍) para buscar
- Seleccionar paciente de la lista
- Número HC se autocompletará
-
Guardar
- Clic en botón verde “ACEPTAR”
- Esperar mensaje: “Tarea creada correctamente”
-
Verificar
- La tarea aparecerá en “Tareas pendientes”
- En la fecha indicada, recordar realizar la llamada
- Tras llamar: abrir tarea y cambiar estado a “Finalizado”
Tutorial 2: Gestionar tareas con flujo de trabajo
Objetivo: Crear y seguir una tarea de autorización de seguro con flujo Tiempo estimado: 5 minutos Pasos:-
Preparación (Primera vez - Administrador)
- Ir a Administración → Tareas → Flujos de trabajo
- Crear flujo “Autorización Seguro”
- Definir estados:
- “Solicitud enviada”
- “Documentación pendiente”
- “En revisión”
- “Aprobada” / “Rechazada”
- Guardar flujo
-
Crear tarea con flujo
- Menú Tareas → Crear tarea
- Usuario: Seleccionar responsable
- Tipo: “Gestión administrativa”
- Estado: “Pendiente”
- Prioridad: “Alta”
- Flujo de trabajo: Seleccionar “Autorización Seguro”
-
Completar información
- Tarea: “Autorización tratamiento Sr. García”
- Notas: “Tratamiento: [descripción]. Aseguradora: [nombre]”
- Paciente: Vincular paciente correspondiente
- Fecha inicio: Hoy
-
Guardar
- Clic “ACEPTAR”
- Sistema crea tarea en estado inicial: “Solicitud enviada”
- Nota: Flujo queda bloqueado, no se puede cambiar
-
Avanzar estado del flujo
- Abrir tarea desde “Tareas pendientes”
- Clic en “Detalles”
- En diálogo de detalles: sección “Estado del flujo”
- Seleccionar siguiente estado: “Documentación pendiente”
- Confirmar cambio
-
Continuar proceso
- Cada vez que se complete una etapa:
- Abrir detalles
- Avanzar al siguiente estado
- Sistema registra fecha de cada cambio
- Historial completo visible en detalles
- Cada vez que se complete una etapa:
-
Finalizar flujo
- Al llegar a estado final (“Aprobada” o “Rechazada”)
- Cambiar estado de la tarea a “Finalizado”
- Guardar
- Tarea desaparece de pendientes
-
Consultar historial (opcional)
- Usar “Buscar tareas”
- Filtrar por paciente o fechas
- Abrir tarea finalizada
- Ver detalles: todos los estados con fechas
Tutorial 3: Búsqueda avanzada de tareas
Objetivo: Encontrar todas las tareas finalizadas de un profesional en el último mes Tiempo estimado: 3 minutos Pasos:-
Acceder a búsqueda
- Menú Tareas → Buscar tareas
- Se abre formulario de búsqueda con búsqueda del día ejecutada
-
Limpiar filtros actuales
- Clic en botón circular con goma (🧹)
- Todos los campos se vacían
-
Establecer rango de fechas
- Inicio entre Fecha:
- Clic en primer campo de fecha
- Seleccionar: hace 1 mes desde hoy
- Hora: 00:00
- y fecha:
- Clic en segundo campo
- Seleccionar: hoy
- Hora: 23:59
- Inicio entre Fecha:
-
Seleccionar profesional
- Profesionales: Clic en combo
- Seleccionar nombre del profesional
- Puede seleccionar múltiples si deseas
-
Filtrar por estado
- Estados: Clic en combo
- Seleccionar solo “Finalizado”
- Deseleccionar “Pendiente” y “Comenzado” si están marcados
-
Filtros opcionales adicionales
- Categoría: Si quieres solo cierto tipo (ej. “Llamadas”)
- Título: Si recuerdas parte del título
- Notas: Si recuerdas alguna palabra de las notas
-
Ejecutar búsqueda
- Clic en botón azul “Buscar” (🔍)
- Sistema ejecuta búsqueda
- Resultados aparecen en grid debajo
-
Analizar resultados
- Revisar listado de tareas finalizadas
- Columnas muestran: ID, Tipo, Usuario, Título, Notas, Fechas, Estado
- Clic en cualquier fila para ver detalles completos
- Si muchos resultados: usar paginación al pie
-
Refinar búsqueda (si necesario)
- Modificar criterios
- Volver a hacer clic en “Buscar”
- Resultados se actualizan
-
Exportar o actuar (opciones)
- Para exportar: actualmente no disponible directamente
- Para actuar sobre tarea: clic en fila → editar o ver detalles
Tablero de Seguimiento de Cancelaciones
Cuando el modulo de seguimiento de cancelaciones esta activo, las citas canceladas con motivo pueden generar automaticamente una tarea de seguimiento en un tablero Kanban dedicado. Acceso: Menu Agenda > Cancelaciones Columnas predefinidas:- Sin revisar — Cancelacion recien creada, pendiente de revision
- Pendiente de contactar — Revisada, hay que contactar al paciente
- Contactado — Se ha contactado al paciente
- Reprogramada — El paciente ha reprogramado su cita
- No recuperada — El paciente no va a volver
- Al cancelar una cita con motivo, aparece la opcion “Crear seguimiento cancelacion” (activada por defecto)
- Si se deja activada, se crea automaticamente una tarea en la columna “Sin revisar”
- La tarjeta muestra el nombre del paciente, el motivo de cancelacion y el comentario
- Se puede arrastrar entre columnas para cambiar el estado del seguimiento
- Cada tarjeta muestra el numero de comentarios/notas si los tiene
Tablero CRM Comercial
Tablero Kanban para gestionar leads y oportunidades comerciales. Permite hacer seguimiento del ciclo de vida de un contacto comercial desde que llega hasta que contrata o se pierde. Acceso: Menu principal > CRM (requiere privilegio “Acceso CRM”) Columnas predefinidas:- Nuevo — Lead recien llegado
- Contactado — Se ha hablado con el contacto
- En seguimiento — Mostro interes, requiere follow-up
- Citado — Tiene cita programada
- Ganado — Contrato o se convirtio en paciente
- Perdido — No convirtio
- Origen — De donde viene el lead (web, telefono, recomendacion)
- Servicio de interes — Que servicio le interesa
- Proxima accion — Fecha para la siguiente accion de seguimiento
- Ultimo contacto — Fecha del ultimo contacto realizado
- Resultado — Resultado final del lead
- Motivo de perdida — Razon por la que no convirtio
Etiquetas de tareas
Las etiquetas permiten clasificar las tareas dentro de un tablero kanban con un nombre, color y opcionalmente un efecto visual de alerta (parpadeo). Crear etiquetas: Administracion > Datos Maestros > Tareas > Etiquetas de tareas. Cada etiqueta se asocia a un tablero kanban concreto. Campos de la etiqueta:- Nombre — Texto descriptivo (ej: “Urgente”, “Correo enviado”)
- Color — Color de fondo de la etiqueta
- Tablero Kanban — A que tablero pertenece
- Alertable — Si se activa, la etiqueta parpadea para llamar la atencion
Historial de estados en el tablero
Cada vez que una tarea se mueve de una columna a otra en el tablero kanban, el sistema registra automaticamente:- A que columna se movio
- Cuando se hizo el cambio
- Quien lo hizo
Crear tarea desde el tablero kanban
Debajo del tablero kanban hay un boton “Crear nueva tarea” que abre el formulario de creacion con el tablero kanban pre-seleccionado. La tarea creada aparecera en la primera columna del tablero.Accion “Seguimiento CRM” desde el paciente
Cuando el modulo CRM esta activo, en las acciones del paciente aparece un boton destacado “Seguimiento CRM” que permite crear rapidamente una tarea de seguimiento en el tablero CRM. El boton solo aparece si:- El paciente no tiene citas futuras programadas
- El paciente no tiene ya una tarea abierta en el CRM
Alerta de cita en Seguimiento de Cancelaciones
En el tablero de Seguimiento de Cancelaciones, si un paciente tiene una cita programada (no cancelada) posterior a la fecha del ultimo movimiento de la tarjeta, se muestra un boton verde con la fecha de la cita. Al hacer clic se abren las acciones de esa cita.Última actualización: 2026-04-05 Versión del módulo: 3.0 Autor: Documentación generada para asistencia por IA

