Sistema integral de gestión de salud ocupacional para Servysalud, desarrollado con tecnologías modernas y mejores prácticas de desarrollo. Cumple con la normativa peruana de seguridad y salud en el trabajo.
Sistema completo de gestión de salud ocupacional que permite administrar todos los aspectos relacionados con la seguridad y salud en el trabajo. Incluye módulos para vigilancia médica, gestión de SST, matriz IPER, trabajo modificado, ausentismo laboral, normativas y compliance, gestión de personal, y módulos móviles. Cumple con la normativa peruana de seguridad y salud en el trabajo (Ley 29783) y sus reglamentos.
- ✅ Dashboard Principal: Vista consolidada con resumen de todos los módulos SST
- ✅ Dashboard de Trabajo Modificado: Gestión de casos de trabajo modificado
- ✅ Exámenes Médicos Ocupacionales (EMO): Visualización de exámenes médicos
- ✅ Análisis de EMOs: Análisis de PDFs de exámenes médicos con IA (Gemini)
- ✅ Historial de Análisis: Historial completo de análisis realizados
- ✅ Sistema EMO: Gestión completa de exámenes médicos ocupacionales
- ✅ Fatiga y Somnolencia: Evaluación completa según normativas peruanas (Yoshitake, DBQ, Pittsburgh)
- ✅ Protocolos de Vigilancia: Gestión de protocolos de vigilancia médica
- ✅ Plan Anual SST: Programación y seguimiento de actividades anuales
- ✅ Ausentismo Laboral: Control y análisis de ausentismo
- ✅ Capacitaciones: Programa anual de capacitaciones SST
- ✅ Comité SST: Gestión de miembros y reuniones del comité
- ✅ Inspecciones: Programación y registro de inspecciones de seguridad
- ✅ Indicadores SST: Dashboard de indicadores de seguridad y salud
- ✅ Matriz IPER: Identificación de Peligros y Evaluación de Riesgos
- ✅ Normativas y Compliance: Gestión de cumplimiento normativo (Ley 29783, DS 005-2012-TR, etc.)
- ✅ Trabajadores: Registro y gestión de trabajadores
- ✅ Empresas: Gestión de empresas y multi-tenancy
- ✅ Administración: Gestión de usuarios, permisos y accesos
- ✅ Ley 29733: Consentimiento informado para protección de datos personales
- ✅ Panel de Supervisor:
/supervisor- Dashboard para supervisores con check-ins, EPP y observaciones - ✅ Panel de Trabajador:
/trabajador- Portal para trabajadores con capacitaciones, chat médico y EMOs
- Frontend: Next.js 16.1.1 (Turbopack), React 19, TypeScript, Tailwind CSS 4
- Backend: Supabase (PostgreSQL, Auth, Storage, Realtime)
- IA: Google Gemini API para análisis y asistente virtual
- Almacenamiento: 4 buckets de Storage con políticas RLS (reportes, chat, observaciones, epp)
- Testing: Jest, Playwright, Testing Library
- Build: Turbopack para desarrollo rápido, lazy loading y code splitting
- Chatbot especializado en salud ocupacional
- Respuestas basadas en normativa peruana (Ley 29783)
- Análisis de PDFs de exámenes médicos
- Extracción automática de datos estructurados
- Servidor MCP (Model Context Protocol) para análisis avanzado de EMOs
- Servidor MCP completo para análisis de exámenes médicos ocupacionales
- Endpoint JSON-RPC 2.0 en
/api/mcp - Herramientas para casos, trabajadores, exámenes y storage
- Análisis de PDFs con Gemini 2.0 Flash
- Scripts de automatización para análisis masivo
- Instalable en dispositivos móviles y desktop
- Service Worker para funcionamiento offline
- Manifest.json configurado
- Iconos optimizados (192x192, 512x512)
- Soporte para notificaciones push
- Tema oscuro/claro: Toggle para cambiar entre temas
- Búsqueda Global: Búsqueda unificada en todos los módulos
- Chat Global: Chat integrado para comunicación
- Lazy Loading: Carga diferida de componentes pesados
- Responsive Design: Optimizado para móvil, tablet y desktop
- Notificaciones Toast: Sistema de notificaciones en tiempo real
profiles- Perfiles de usuariouser_empresas- Relación usuario-empresaempresas- Registro de empresasregistros_trabajadores- Gestión de trabajadoresexamenes_medicos- Exámenes médicos ocupacionalesprotocolos_vigilancia- Protocolos de vigilancia médicamatriz_iper- Matriz de riesgostrabajo_modificado- Casos de trabajo modificadoausentismo_laboral- Registro de ausentismocheckins_diarios- Check-ins de trabajadores (móvil)observaciones_campo- Observaciones de seguridad (móvil)verificaciones_epp- Verificaciones de EPP (móvil)chat_medico- Chat trabajador-médico (móvil)fatiga_somnolencia- Evaluaciones de fatiga y somnolencia- Más tablas para capacitaciones, inspecciones, planes SST, normativas, etc.
- ✅ Row Level Security (RLS) habilitado en todas las tablas
- ✅ Políticas de acceso por empresa (multi-tenant)
- ✅ Autenticación con Supabase Auth
- ✅ Protección de datos personales (D.S. N° 016-2024-JUS, Ley 29733)
- ✅ Gestión de permisos por nivel (superadmin, admin, usuario, trabajador)
- ✅ Consentimiento informado para datos personales
servysalud-pro/
├── app/ # Páginas Next.js (App Router)
│ ├── page.tsx # Página principal (dashboard)
│ ├── layout.tsx # Layout raíz
│ ├── dashboard/ # Dashboard principal
│ │ └── admin/ # Panel de administración
│ ├── supervisor/ # Panel de supervisores
│ │ ├── checkin/ # Check-ins
│ │ ├── epp/ # Verificaciones EPP
│ │ └── observaciones/ # Observaciones de campo
│ ├── trabajador/ # Panel de trabajadores
│ │ ├── capacitaciones/ # Capacitaciones
│ │ ├── chat/ # Chat médico
│ │ ├── emo/ # Exámenes médicos
│ │ └── reportar/ # Reportar incidentes
│ ├── api/ # API routes
│ │ ├── consultar-ruc/ # Consulta RUC (SUNAT)
│ │ └── mcp/ # Endpoint MCP Server
│ ├── login/ # Página de login
│ ├── privacidad/ # Política de privacidad
│ └── 403/ # Página de acceso denegado
├── components/ # Componentes React
│ ├── Dashboard.tsx # Dashboard principal
│ ├── DashboardPrincipal.tsx # Dashboard consolidado SST
│ ├── WorkModifiedDashboard.tsx # Dashboard trabajo modificado
│ ├── CaseForm.tsx # Formulario de casos
│ ├── GestionTrabajadores.tsx # Gestión de trabajadores
│ ├── GestionEmpresas.tsx # Gestión de empresas
│ ├── MatrizIPER.tsx # Matriz IPER
│ ├── PlanAnualSST.tsx # Plan Anual SST
│ ├── AusentismoLaboral.tsx # Ausentismo laboral
│ ├── GestionCapacitaciones.tsx # Capacitaciones SST
│ ├── ComiteSST.tsx # Comité SST
│ ├── InspeccionesSST.tsx # Inspecciones SST
│ ├── IndicadoresSST.tsx # Indicadores SST
│ ├── GestionNormativas.tsx # Normativas y compliance
│ ├── GestionSistemaEMO.tsx # Sistema EMO
│ ├── AnalizarEMOs.tsx # Análisis de EMOs
│ ├── HistorialAnalisis.tsx # Historial de análisis
│ ├── UploadEMO.tsx # Carga de EMOs
│ ├── GestionProtocolosVigilancia.tsx # Protocolos de vigilancia
│ ├── GestionFatigaSomnolencia.tsx # Fatiga y somnolencia
│ ├── GlobalSearch.tsx # Búsqueda global
│ ├── GlobalChat.tsx # Chat global
│ ├── AccessManagement.tsx # Gestión de accesos
│ ├── ImportTrabajadores.tsx # Importación de trabajadores
│ ├── ThemeToggle.tsx # Toggle de tema
│ ├── PWARegister.tsx # Registro PWA
│ ├── AuthGuard.tsx # Protección de rutas
│ ├── Sidebar.tsx # Menú lateral
│ ├── Header.tsx # Encabezado
│ └── sections/ # Secciones de formularios
├── mcp-server/ # Servidor MCP independiente
│ ├── src/
│ │ ├── index.ts # Punto de entrada MCP
│ │ ├── services/ # Servicios (Supabase, Gemini)
│ │ └── tools/ # Herramientas MCP
│ └── package.json
├── lib/ # Utilidades
│ ├── supabase.ts # Cliente de Supabase
│ └── fatigaSomnolencia.ts # Utilidades fatiga/somnolencia
├── sql/ # Scripts SQL organizados
│ ├── setup/ # Creación de tablas
│ ├── migrations/ # Migraciones
│ ├── seeds/ # Datos de prueba
│ ├── fixes/ # Correcciones RLS
│ └── archive/ # Scripts antiguos
├── scripts/ # Scripts de automatización
│ ├── analizar-emo.ts # Análisis de EMO
│ ├── generar-reporte-vigilancia.ts # Generar reportes
│ ├── generar-pdf-reporte.ts # Generar PDFs
│ └── verificar-modulos.ts # Verificación de módulos
├── hooks/ # Custom React hooks
├── contexts/ # React contexts
├── utils/ # Funciones utilitarias
├── types.ts # Definiciones TypeScript
└── public/ # Archivos estáticos
├── manifest.json # Manifest PWA
└── sw.js # Service Worker
# Supabase
NEXT_PUBLIC_SUPABASE_URL=tu_url_de_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_anon_key_de_supabase
SUPABASE_SERVICE_ROLE_KEY=tu_service_role_key
# Google Gemini
NEXT_PUBLIC_GEMINI_API_KEY=tu_api_key_de_gemini
# APIs Perú (opcional, para consulta RUC)
APIS_PERU_TOKEN=tu_token_de_apis_peruLos scripts están organizados en sql/. Para configurar la base de datos:
- Setup inicial: Ejecuta scripts en
sql/setup/ - Datos de prueba: Ejecuta scripts en
sql/seeds/ - Correcciones: Si necesitas, usa scripts en
sql/fixes/
Consulta sql/README.md para más detalles sobre la organización y orden de ejecución.
git clone https://github.com/ivanlion/SERVYSALUD360.git
cd SERVYSALUD360npm installCrea un archivo .env.local:
NEXT_PUBLIC_SUPABASE_URL=tu_url_supabase
NEXT_PUBLIC_SUPABASE_ANON_KEY=tu_anon_key
NEXT_PUBLIC_GEMINI_API_KEY=tu_gemini_api_keyEjecuta los scripts SQL en orden:
- Scripts en
sql/setup/(crear tablas) - Scripts en
sql/seeds/(datos de prueba, opcional)
npm run devnpm run build
npm start- Node.js 18+
- npm o yarn
- Cuenta de Supabase
- API Key de Google Gemini
- Next.js 16.1.1 - Framework React con App Router y Turbopack
- TypeScript - Tipado estático para mayor seguridad
- Tailwind CSS 4 - Framework de estilos utility-first
- React 19 - Biblioteca UI moderna
- React Query (TanStack Query) - Gestión de estado y caché de datos
- React Hook Form - Gestión de formularios
- Zod - Validación de esquemas
- Supabase - Backend as a Service (BaaS)
- PostgreSQL como base de datos
- API REST automática
- Autenticación y seguridad integrada
- Storage con políticas RLS
- Realtime para actualizaciones en vivo
- Google Gemini API - Modelo de lenguaje para asistente IA
- Análisis de documentos PDF
- Extracción de datos estructurados
- Respuestas contextuales especializadas
- Gemini 2.0 Flash para análisis de EMOs
- Jest - Framework de testing unitario
- Playwright - Testing end-to-end
- Testing Library - Utilidades para testing de componentes React
- Lucide React - Iconos modernos y consistentes
- Recharts - Gráficos y visualización de datos
- React Hot Toast - Notificaciones toast
- jsPDF - Generación de PDFs
- XLSX - Exportación a Excel
- Turbopack - Bundler rápido para desarrollo
- ESLint - Linter de código
- TypeScript - Compilador y type checker
- tsx - Ejecutor TypeScript para scripts
- App móvil PWA para trabajadores
- Panel móvil para supervisores
- Extracción automática de PDFs con IA
- Dashboard de analíticas avanzadas
- Reportes automatizados
- Integración con plataformas de EMO
✅ Ley 29783 - Ley de Seguridad y Salud en el Trabajo ✅ D.S. 005-2012-TR - Reglamento de SST ✅ R.M. 312-2011-MINSA - Protocolos de EMO ✅ D.S. 024-2016-EM - SST en Minería ✅ D.S. 016-2024-JUS - Protección de Datos Personales
Compatible con Vercel, Netlify y otros servicios:
- Conecta tu repositorio GitHub
- Configura variables de entorno
- Deploy automático en cada push
- Las variables de entorno nunca deben subirse al repositorio
- El archivo
.env.localestá en.gitignore - Usa variables de entorno en producción
- Revisa los permisos de Supabase (RLS - Row Level Security)
- Todas las tablas tienen RLS habilitado
- Políticas de acceso multi-tenant por empresa
- Cumplimiento con protección de datos personales
- Gestión de permisos por roles (superadmin, admin, usuario, trabajador)
- Consentimiento informado para tratamiento de datos personales
# Desarrollo
npm run dev # Servidor de desarrollo (localhost:3000)
npm run build # Compilar para producción
npm run start # Iniciar servidor de producción
npm run lint # Ejecutar linter
# Testing
npm run test # Ejecutar tests unitarios
npm run test:watch # Tests en modo watch
npm run test:coverage # Tests con cobertura
npm run test:e2e # Tests end-to-end (Playwright)
npm run test:e2e:ui # Tests E2E con UI
npm run test:e2e:report # Ver reporte de tests E2E
# Análisis y reportes
npm run analizar-emo # Analizar un EMO
npm run analizar-emos # Analizar múltiples EMOs
npm run generar-reporte # Generar reporte de vigilancia
npm run generar-pdf # Generar PDF de reporte
npm run verificar # Verificar módulos
npm run check-secrets # Verificar variables de entorno- Autenticación de usuarios con Supabase Auth
- Exportación de reportes en PDF y Excel
- Dashboard con gráficos y estadísticas (Recharts)
- Sistema de notificaciones toast
- Análisis de PDFs con IA (Gemini)
- Gestión multi-empresa
- Sistema de auditoría y versionado
- PWA (Progressive Web App) con Service Worker
- Búsqueda global unificada
- Sistema de logos para empresas
- Gestión de trabajadores con campo unificado
apellidos_nombre - Organización de scripts SQL en estructura modular
- Servidor MCP para análisis avanzado de EMOs
- Integración con APIs de SUNAT para consulta RUC
- Sistema de temas (oscuro/claro)
- Chat global integrado
- Gestión de permisos por niveles
- Importación masiva de trabajadores
- Módulo de fatiga y somnolencia
- Lazy loading y code splitting
- Testing unitario y E2E
- Scripts de automatización para análisis
- ✅ Lazy Loading: Componentes pesados se cargan bajo demanda
- ✅ Code Splitting: Separación automática de código por rutas
- ✅ Turbopack: Bundler rápido para desarrollo
- ✅ React Query: Caché inteligente de datos
- ✅ Optimización de imágenes: Next.js Image optimization
- ✅ Service Worker: PWA con funcionamiento offline
- Endpoint:
POST /api/consultar-ruc - Descripción: Consulta información de empresas por RUC usando APIs públicas de SUNAT
- Uso: Integración con
apisperu.comyapis.net.pe
- Endpoint:
POST /api/mcp - Formato: JSON-RPC 2.0
- Herramientas disponibles:
casos_listar- Listar casos de trabajo modificadocasos_obtener- Obtener caso por IDcasos_buscar- Buscar casostrabajadores_listar- Listar trabajadorestrabajadores_obtener- Obtener trabajador por DNIexamenes_listar- Listar exámenes médicosexamenes_analizar- Analizar PDF de EMO con Geministorage_listar- Listar archivos en bucketstorage_descargar- Descargar archivo
Para consultas sobre el sistema, contacta al equipo de desarrollo de Servysalud 360.
Proyecto privado © 2025 Servysalud 360
Ivan Leon para Servysalud 360