1. Arquitectura de roles y acceso a datos
Modelo estricto de roles, aislamiento de sucursales (branch_id) y protección de datos médicos.
Tabla resumen de derechos y responsabilidades del personal
Configuración → Personal de la clínica
• Superadministrador de la clínica (admin): Toda la clínica y todas las sucursales (branch_id = null). Acceso total: sucursales, personal, matriz de precios, reserva online, descuentos globales, toda la analítica, facturación, limpieza de BD, SMTP. No puede eliminarse a sí mismo ni cambiar su rol si es el único administrador.
• Administrador de sucursal (branch_admin): Solo su propia sucursal (branch_id). Gestiona el personal de su sucursal, lista de precios local, caja y citas de su sucursal, informe de caja. Prohibido: crear admin u otros branch_admin, eliminar sucursales, cambiar nombre de sucursal, acceder a secciones globales (facturación de plan, cuotas de disco, SMTP global).
• Dentista de la clínica (dentist): Su propia sucursal y solo pacientes asignados. Su propio horario, registro de citas, odontograma, radiografías e historial de tratamiento de pacientes asignados, chat 'Segunda opinión'. Acceso denegado a registros médicos (odontograma, radiografías, historial) si el paciente no está asignado a este dentista. No puede aceptar pagos.
• Dentista en solitario (dentist sin clinic_id): Cuenta personal (práctica privada). Funcionalidad completa: actúa como su propio admin, cajero y dentista. Acceso a descuentos, reserva online, logotipo personal, analítica, facturación. Sin módulo de sucursales ni plantilla de terceros.
• Operador / Recepción (operator): Solo su propia sucursal. Creación de pacientes, registro de citas, aceptación de pagos, impresión de recibos, informe de turno de caja. Prohibición total de datos médicos: no ve archivos de radiografías, odontogramas ni historial dental.
2. Configuración inicial y ajustes (clínica y dentista en solitario)
Para clínicas y dentistas en solitario: registro, zona horaria, moneda, logotipo y, para clínicas, también sucursales, personal y servidor de correo SMTP.
Videotutoriales: por dónde empezar
Unos vídeos cortos muestran cómo empezar a trabajar en OraFlow. Comience introduciendo el horario de trabajo; el resto se irá aclarando sobre la marcha. Sirven tanto para clínicas como para dentistas en solitario. Todos los vídeos están en una sola lista de reproducción y los nuevos se añaden allí.
Ver los videotutoriales en YouTube
Registro y activación de cuenta
Página /register
- Vaya a la página de registro (/register).
- Seleccione tipo de cuenta: 'Dentista' (práctica individual de 1 doctor) o 'Clínica' (organizaciones con múltiples doctores/sucursales; especifique límite de personal: 6, 11, 16, 31).
- Complete campos obligatorios: usuario, contraseña, nombre, apellido, email laboral, teléfono (con código de país) y nombre de la clínica.
- Revise su email. Haga clic en el enlace para activar su cuenta (el enlace caduca en 24 horas).
Configuración de datos, zona horaria y moneda
Configuración → Marca y widgets / Configuración → Lista de precios
- Zona horaria: Vaya a 'Configuración' → 'Marca y widgets' (parte inferior). Haga clic en el lápiz junto al campo de zona horaria y seleccione su región. Los límites de turno, slots online e informes financieros se calculan estrictamente por la zona horaria de la clínica, no por la del dispositivo del usuario.
- Moneda de facturación: Vaya a 'Configuración' → 'Lista de precios'. En la esquina superior derecha, seleccione la moneda (USD, EUR, RUB, AMD, AED, CNY o ingrese personalizada hasta 4 caracteres). La moneda es única para toda la clínica.
- Logotipo: En 'Marca y widgets' → 'Logotipos', suba el logo de la clínica (JPEG/PNG hasta 5 MB). El sistema optimiza automáticamente el tamaño al contenedor 288×96 px sin recortar texto.
Añadir sucursales y personal
Configuración → Personal de la clínica
- Sucursales: Vaya a 'Configuración' → 'Personal de la clínica' → pestaña 'Clínica y sucursales'. Haga clic en '+ Añadir sucursal', indique nombre, dirección exacta y teléfono(s).
- Personal: Vaya a la pestaña 'Personal', haga clic en '+ Añadir empleado'. Ingrese usuario, nombre completo, email, teléfono, seleccione rol y sucursal. Se enviará automáticamente una contraseña temporal generada al email del empleado.
Configuración de email para notificaciones (SMTP)
Configuración → Notificaciones → Configuración SMTP
- Abra 'Configuración' → 'Notificaciones' → 'Configuración SMTP'.
- Ingrese servidor, puerto (usualmente 465 para SSL o 587 para TLS), usuario (su email) y contraseña.
- Para Gmail / Yandex: Use la Contraseña de aplicación especial de 16 dígitos generada en la configuración de seguridad de su servicio de correo, no su contraseña principal.
- Ingrese una dirección de prueba en 'Email de prueba' y haga clic en 'Probar'.
- Tras el envío exitoso, haga clic en 'Guardar'.
3. Horarios de trabajo y gestión de turnos
Creación de horarios por días de la semana, días pares/impares, intervalos y excepciones interactivas.
Opciones de creación de horarios médicos
Configuración → Horario de trabajo
• Por días de la semana: Active los días laborables requeridos (Lun, Mar, Mié, etc.). Establezca hora de inicio y fin para cada día. Para añadir un descanso, haga clic en '+ Añadir intervalo' (ej: 09:00–14:00 y 15:00–19:00). Longitud mínima de intervalo: 15 minutos; los solapamientos se bloquean automáticamente.
• Días pares / impares: El sistema determina el horario por número de día calendario (2, 4, 6... o 1, 3, 5...). Configure horas laborales para turnos pares e impares. En el bloque 'Excluir días de la semana', desactive días libres regulares (ej: desmarque sábado y domingo para que siempre sean no laborables independientemente de la fecha).
Calendario de excepciones e historial de turnos
Configuración → Horario de trabajo → Calendario interactivo
• Asignar día libre no programado: Haga clic en un día laborable en el calendario — la fecha se marcará con contorno rojo. Las reservas online y regulares se cerrarán.
• Asignar turno laboral en día libre: Haga clic en cualquier día no laborable. En la ventana emergente, establezca horas laborales específicamente para esa fecha.
• Historial de horarios: El sistema guarda todas las versiones anteriores. Las citas pasadas no se desplazan al cambiar el horario actual.
4. Calendario y registro de citas
Cuadrícula de visitas, estados de servicio, reprogramación Drag-and-Drop y auditoría de citas.
Modos de cuadrícula del horario
Horario
• Vista diaria (por personal): El encabezado muestra todos los doctores de la sucursal seleccionada en columnas paralelas.
• Vista semanal: Muestra 7 días de la semana para el doctor seleccionado.
• Cambio rápido de formato horario: Haga clic en la escala temporal izquierda para alternar instantáneamente modo 24h / 12h (AM/PM).
Crear una cita
Horario
- Haga clic en un slot azul libre en la columna del doctor (o pulse 'Reservar cita'). El color azul indica que el tiempo cae dentro del horario laboral del doctor.
- En la ventana de reserva, busque paciente existente por nombre, teléfono o email (búsqueda desde 3 caracteres) o ingrese nuevo nombre y pulse 'Crear nuevo paciente'.
- Seleccione uno o más procedimientos de la lista de precios (duración y precio se suman automáticamente).
- Especifique tipo de visita: Visita única o Visita de plan de tratamiento (si el paciente tiene plan abierto).
- Ajuste duración manualmente si es necesario o añada nota.
- Haga clic en 'Guardar'.
Estados de visita y transiciones
Horario → Clic en bloque de visita
Al hacer clic en el bloque de cita se abre la tarjeta de gestión:
• pending (Pendiente, amarillo) — cita creada, paciente aún no confirmó.
• confirmed (Confirmado, verde) — paciente confirmó asistencia (teléfono/SMS).
• arrived (Llegó / Check-in, turquesa) — paciente llegó a recepción.
• completed (Completado, morado) — cita realizada. Si estaba vinculada a plan de tratamiento, el sistema pregunta: '¿Completar solo esta visita o todo el plan?'.
• no-show (No asistió, rojo) — paciente no vino sin aviso.
• cancelled (Cancelado, rojo) — cita cancelada.
Reprogramar cita (Drag-and-Drop)
Horario
• En PC: Mantenga presionado el bloque con botón izquierdo y arrastre a otra hora o columna de otro doctor.
• En Smartphone/Tablet: Mantenga presionado el bloque 300ms, tras vibración ligera arrastre el slot.
• El sistema solicita confirmación. Si el doctor objetivo ya tiene cita a esa hora o no trabaja, el sistema rechaza el movimiento con explicación clara.
5. Fichero de pacientes y deduplicación
Búsqueda, protección contra duplicados, perfil del paciente y asignación de médicos tratantes.
Reglas de verificación de duplicados al crear
Pacientes → Añadir paciente
• Bloqueo estricto: Si ya existe paciente con mismo teléfono o email — el sistema arroja error_duplicate_phone o error_duplicate_email. Imposible crear segunda cuenta idéntica.
• Advertencia suave: Si teléfono y email son únicos pero coinciden nombre completo y fecha de nacimiento, el sistema muestra: 'Posible duplicado. Ya existe paciente con estos datos. ¿Crear de todos modos?'. Pulse 'Crear de todos modos' solo si es homónimo confirmado.
Estructura de ficha del paciente y asignación de doctores
Pacientes → [Ficha del paciente]
• Perfil: Datos personales, edad (auto-calculada), bloque de notas con edición rápida.
• Doctores asignados (solo clínicas): Bloque en columna izquierda del perfil. Superadmin u operador selecciona doctores de la lista y pulsa 'Asignar'.
IMPORTANTE: Hasta que se asigne doctor al paciente, este no podrá ver radiografías, hacer entradas en odontograma ni ver historial dental.
6. Historia Clínica Electrónica (HCE)
Odontograma FDI/Universal, historial de tratamiento dental y protocolo fotográfico.
6.1. Odontograma (Dental Chart)
Ficha del paciente → Odontograma
- Conmutador de numeración abajo: FDI (11–48) o Universal (1–32).
- Establecer diagnósticos/restauraciones: Seleccione herramienta en panel superior (ej: 'Caries', 'Empaste', 'Corona', 'Implante') y haga clic en diente. El diente se colorea (o aparece tornillo/poste). Clic nuevamente con misma herramienta quita marca (vuelve a 'Sano').
- Construir puente: Clic en herramienta 'Puente' → clic en primer diente pilar (número pulsa en azul) → clic en segundo diente pilar en misma arcada. El sistema conecta automáticamente todos los dientes entre ellos. Para quitar puente, seleccione 'Puente' y haga clic en cualquier diente de la estructura.
6.2. Historial de tratamiento dental (Tooth History)
Ficha del paciente → Odontograma
- Desactive todas las herramientas en barra de odontograma (modo cursor).
- Haga clic en cualquier diente — se despliega panel de historial a la derecha.
- Pulse '+ Añadir entrada', ingrese protocolo de tratamiento, pulse 'Guardar'.
- Auditoría médica: Al pulsar 'Editar' en entrada antigua, el texto original no se borra. Se tacha y guarda en historial de versiones con nota de quién y cuándo editó.
6.3. Almacén de radiografías y fotos (Archivos)
Ficha del paciente → Archivos
• Subida: Clic en bloque de subida arriba de pestaña 'Archivos'. Seleccione archivos en PC o tome foto con móvil/tablet.
• Opción 'Comprimir foto': Activa por defecto. Reduce fotos pesadas a Full HD (1920×1080), ahorrando cuota de disco sin perder valor diagnóstico.
• Vinculación a dientes: Antes de subir, haga clic en números de dientes en mini-esquema mandibular interactivo. La imagen se vincula automáticamente y aparece en historial dental.
• Visualización (Lightbox): Clic en miniatura abre visor pantalla completa. Zoom suave con rueda ratón o gesto pinch-to-zoom en móvil.
9. Marketing: Descuentos, códigos promo, certificados y bonos
Políticas de combinación de descuentos, lotes de tarjetas regalo, generación de cupones únicos y cashback.
9.1. Reglas de interacción de descuentos (Políticas)
Configuración → Gestión de descuentos → Configuración general
• Prioridad: Compara todos los descuentos activados y aplica el más beneficioso para el paciente.
• Cascada: Los descuentos forman cadena aplicada secuencialmente al precio restante.
• Sumable: Porcentajes de descuento personal y promoción global se suman.
9.2. Creación de programas de fidelización
Configuración → Gestión de descuentos
Al pulsar 'Crear descuento' hay 4 opciones:
1. Promoción global: Descuento automático para todos (ej: '-20% profilaxis en mayo').
2. Asignación manual: Plantilla que admin adjunta manualmente a clientes VIP específicos en su ficha.
3. Código promo compartido: Palabra clave (ej: INSTA2026) que da descuento al ingresarla.
4. Plantilla generadora de códigos únicos: Base para imprimir cupones desechables.
9.3. Generador de códigos promo únicos
Configuración → Gestión de descuentos → Generador de códigos
- Vaya a bloque 'Generador de códigos promo únicos'.
- Seleccione plantilla de promoción.
- Establezca cantidad (hasta 1000 a la vez) y prefijo (hasta 12 caracteres latinos, ej: VERANO).
- Pulse 'Generar'. Códigos pueden copiarse como lista o exportarse CSV/TXT para imprenta/emailing.
9.4. Certificados regalo (Tarjetas regalo)
Configuración → Gestión de descuentos → Tarjetas regalo
- Certificado único: Elija 'Emisión única', indique valor nominal y validez. Sistema genera código único de 10 dígitos.
- Lote para impresión: Elija 'Emisión por lotes', ingrese nombre de serie (ej: 'Navidad 5000'), cantidad (hasta 500), valor nominal. Exporte lote CSV para producción de tarjetas plásticas.
- Activación: En ficha paciente pestaña 'Fidelización', ingrese código en campo 'Tarjetas regalo' y pulse 'Activar'.
12. Centro de comunicación (Chats internos, 'Segunda opinión', Red de socios)
Canales corporativos de sucursales, foro profesional médico, alianzas B2B y auto-limpieza 24h.
Canales de comunicación y reglas de seguridad
Icono mensaje en esquina superior derecha
Panel deslizable se abre pulsando icono diálogo en cabecera derecha:
• Chat sucursal/clínica: Mensajes operativos de turno de guardia.
• Mensajes directos (DMs): Correspondencia personal (punto verde = 'en línea').
• Feed 'Segunda opinión' (doctores): Seleccione especialidad (Terapia, Ortodoncia, Cirugía...) e idioma. Publique casos clínicos complejos y radiografías para discusión. Límites: Plan gratis — 1 msg/hora, Pago — hasta 30/hora.
• Catálogo 'Listos para ayudar': Active 'Listo para ayudar' para que otros doctores soliciten consulta urgente.
• Red de socios (Partners): Módulo B2B para colaboración entre clínicas independientes (derivación TC, anestesia, laboratorio). Busque clínica socia, envíe solicitud. Tras aprobación se abre chat inter-clínico.
POLÍTICA DE PRIVACIDAD: Chats funcionan en almacenamiento ultrarrápido con vida útil automática de 24 horas. Tras 24h el historial se purga automáticamente.
14. Planes, suscripción y sistema de referidos
Tabla tarifaria, descuentos por periodo, compra de disco extra, acumulaciones de referidos y modo Read-Only.
Tabla tarifaria y renovación
Configuración → Facturación y suscripción
• Tarjeta muestra plan actual, máximo personal médico y fecha caducidad.
• Descuentos prepago: 1 mes — precio base; 3 meses — 5% dto; 6 meses — 10% dto; 12 meses — paga 10 (2 meses gratis).
• Espacio extra en disco se compra en paquetes separados sin necesidad de subir a plan caro.
Programa de referidos
Configuración → Programa de referidos
• En 'Configuración' → 'Programa de referidos' copie su enlace único.
• Comparta enlace con colegas de otras clínicas.
• Cuando nueva clínica se registra vía enlace y realiza primer pago, tras periodo protector de 30 días se acredita bono USD no caducable en saldo de referidos.
• Crédito acumulado puede aplicarse a pago de propio plan o disco extra mediante botón 'Usar saldo'.
15. Aplicación móvil (PWA / iOS / Android)
Especificidades UI en smartphones: navegación inferior, pila de pacientes y gestos táctiles.
Características de operación en móviles
Interfaz smartphones y tablets
Interfaz OraFlow adaptada a smartphones/tablets vía tecnología Capacitor:
1. Navegación inferior: Secciones principales (Horario, Pacientes, Analítica, Config) movidas abajo bajo pulgar.
2. Pila de pacientes abiertos: Si hay varias fichas abiertas, aparece botón con icono pila y contador en panel inferior. Toque para alternar pacientes en un toque.
3. Gestión táctil de visitas: Toque corto abre tarjeta acciones; presión larga 300ms activa modo arrastrar dedo para reprogramar.
4. Gestos en radiografías: Doble toque amplía área, pellizcar (pinch-to-zoom) escala detalles suavemente.
16. Catálogo de errores del sistema y solución de problemas
Referencia completa de mensajes del sistema, causas y soluciones paso a paso.
Hora de cita ocupada por otra consulta
error_time_slot_busy
Causa: Hora seleccionada se solapa con otra cita de este doctor.
Solución: Cambie hora inicio, reduzca duración o elija otro doctor libre.
Doctor no trabaja en hora seleccionada
error_doctor_not_working
Causa: Hora de visita fuera del horario laboral del doctor.
Solución: Verifique horas en 'Horario de trabajo' o añada turno individual para ese día.
No se puede eliminar cita con pagos registrados
error_delete_appointment_with_payments
Causa: Intento de eliminar visita con pagos ingresados en caja.
Solución: Vaya a visita, pulse pagos, haga reversa (eliminar) de todos. Una vez anulados, la cita se elimina.
Ya existe paciente con este teléfono/email
error_duplicate_phone
Causa: Paciente registrado con este teléfono/email (error_duplicate_phone / error_duplicate_email).
Solución: Busque paciente existente en buscador 'Pacientes'. Sistema protege contra duplicados.
Coincidencia nombre y fecha nacimiento (Posible duplicado)
error_possible_duplicate_name_dob
Causa: Nombre y fecha nacimiento coinciden con paciente existente.
Solución: Verifique cuidadosamente. Si es realmente otra persona/homónimo — pulse 'Crear de todos modos'.
No se puede eliminar paciente con visitas activas
cannot_delete_patient_active_appointments
Causa: Intento de eliminar paciente con futuras visitas incompletas.
Solución: Cancele o complete todas las citas del paciente, luego elimine.
No se puede eliminar único admin de clínica
last_admin_cannot_delete
Causa: Intento de eliminar/cambiar rol del único admin (last_admin_cannot_delete / last_admin_cannot_change_role).
Solución: Prohibido. Clínica no puede quedarse sin gestor. Asigne rol admin a otro empleado primero.
No se puede eliminar doctor con citas programadas
cannot_delete_staff_with_active_appointments
Causa: Intento de eliminar doctor con citas futuras.
Solución: Abra horario, reasigne citas futuras a otros doctores.
No se puede eliminar sucursal con personal
cannot_delete_branch_with_staff
Causa: Intento de eliminar sucursal con usuarios vinculados.
Solución: En 'Personal clínica' transfiera empleados a otra dirección, luego elimine sucursal vacía.
No se puede eliminar sucursal con procesos activos
cannot_delete_branch_with_active_appointments
Causa: Sucursal tiene visitas o planes de tratamiento abiertos.
Solución: Complete, cancele o re-vincule procesos activos a otra sucursal.
Modo 'Solo lectura': Suscripción expirada
error_subscription_expired
Causa: Periodo de suscripción pagada expiró.
Solución: Sistema bloqueó ediciones (Read-Only). Vaya a 'Facturación y suscripción' y renueve plan.
Límite personal excedido para nuevo plan
error_downgrade_staff_limit_exceeded
Causa: Degradación a plan con menor límite personal que creados actualmente.
Solución: Más personas creadas que permite nuevo plan. Elimine personal inactivo primero.
Prohibido degradar clínica a plan 'Solo'
error_clinic_to_solo_forbidden
Causa: Clínica intenta degradar a 'Solo'.
Solución: Clínicas multi-empleado/sucursal no pueden arquitectónicamente pasar a plan monousuario 'Solo'.
Saldo bonos insuficiente para deducción
error_insufficient_bonus_balance
Causa: Monto a deducir excede saldo bonos paciente.
Solución: Especifique monto ≤ saldo actual paciente.
Fondos insuficientes en tarjeta regalo
error_insufficient_gift_card_balance
Causa: Deducción excede saldo tarjeta regalo.
Solución: Verifique saldo en pestaña 'Fidelización', deduzca solo monto disponible.
Límite mensajes feed 'Segunda opinión' excedido
error_feed_rate_limit
Causa: Límite publicaciones feed 'Segunda opinión' excedido.
Solución: Trial — máx 1 post/hora, Pago — hasta 30/hora. Espere reinicio ventana temporal.