Skip to content

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,671 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏥 SERVYSALUD 360 - Sistema de Gestión de Salud Ocupacional

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.

📋 Descripción

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.

🚀 Características Actuales

Módulos Implementados y Accesibles:

📊 Dashboards

  • ✅ Dashboard Principal: Vista consolidada con resumen de todos los módulos SST
  • ✅ Dashboard de Trabajo Modificado: Gestión de casos de trabajo modificado

🏥 Vigilancia Médica

  • ✅ 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

🛡️ Gestión de SST

  • ✅ 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.)

👥 Gestión de Personal

  • ✅ Trabajadores: Registro y gestión de trabajadores
  • ✅ Empresas: Gestión de empresas y multi-tenancy
  • ✅ Administración: Gestión de usuarios, permisos y accesos

⚖️ Cumplimiento Normativo

  • ✅ Ley 29733: Consentimiento informado para protección de datos personales

📱 Paneles Especializados (Rutas Separadas)

  • ✅ 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

Tecnologías:

  • 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

🤖 Asistente IA con Gemini

  • 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 (Model Context Protocol)

  • 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

📱 Progressive Web App (PWA)

  • Instalable en dispositivos móviles y desktop
  • Service Worker para funcionamiento offline
  • Manifest.json configurado
  • Iconos optimizados (192x192, 512x512)
  • Soporte para notificaciones push

🎨 Características de UX/UI

  • 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

📊 Base de Datos

Tablas Principales (14+):

  • profiles - Perfiles de usuario
  • user_empresas - Relación usuario-empresa
  • empresas - Registro de empresas
  • registros_trabajadores - Gestión de trabajadores
  • examenes_medicos - Exámenes médicos ocupacionales
  • protocolos_vigilancia - Protocolos de vigilancia médica
  • matriz_iper - Matriz de riesgos
  • trabajo_modificado - Casos de trabajo modificado
  • ausentismo_laboral - Registro de ausentismo
  • checkins_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.

Seguridad:

  • ✅ 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

🗂️ Estructura del Proyecto

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

🔧 Configuración

Variables de Entorno (.env.local):

# 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_peru

Scripts SQL:

Los scripts están organizados en sql/. Para configurar la base de datos:

  1. Setup inicial: Ejecuta scripts en sql/setup/
  2. Datos de prueba: Ejecuta scripts en sql/seeds/
  3. 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.

🔧 Instalación y Configuración

1. Clonar el repositorio

git clone https://github.com/ivanlion/SERVYSALUD360.git
cd SERVYSALUD360

2. Instalar dependencias

npm install

3. Configurar variables de entorno

Crea 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_key

4. Configurar Base de Datos

Ejecuta los scripts SQL en orden:

  1. Scripts en sql/setup/ (crear tablas)
  2. Scripts en sql/seeds/ (datos de prueba, opcional)

5. Ejecutar en desarrollo

npm run dev

Abre http://localhost:3000

6. Build para producción

npm run build
npm start

📋 Requisitos Previos

  • Node.js 18+
  • npm o yarn
  • Cuenta de Supabase
  • API Key de Google Gemini

🛠️ Stack Tecnológico

Frontend

  • 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

Backend & Base de Datos

  • 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

IA & Machine Learning

  • 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

Testing

  • Jest - Framework de testing unitario
  • Playwright - Testing end-to-end
  • Testing Library - Utilidades para testing de componentes React

UI/UX

  • 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

Build & Dev Tools

  • Turbopack - Bundler rápido para desarrollo
  • ESLint - Linter de código
  • TypeScript - Compilador y type checker
  • tsx - Ejecutor TypeScript para scripts

📱 Próximas Características

  • 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

📄 Normativas Peruanas Implementadas

✅ 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

🚀 Despliegue

Compatible con Vercel, Netlify y otros servicios:

  1. Conecta tu repositorio GitHub
  2. Configura variables de entorno
  3. Deploy automático en cada push

🔒 Seguridad

  • Las variables de entorno nunca deben subirse al repositorio
  • El archivo .env.local está 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

Scripts disponibles

# 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

Funcionalidades Implementadas

  • 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

Optimizaciones Implementadas

  • ✅ 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

🔌 API Routes

Consulta RUC (SUNAT)

  • 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.com y apis.net.pe

Servidor MCP

  • Endpoint: POST /api/mcp
  • Formato: JSON-RPC 2.0
  • Herramientas disponibles:
    • casos_listar - Listar casos de trabajo modificado
    • casos_obtener - Obtener caso por ID
    • casos_buscar - Buscar casos
    • trabajadores_listar - Listar trabajadores
    • trabajadores_obtener - Obtener trabajador por DNI
    • examenes_listar - Listar exámenes médicos
    • examenes_analizar - Analizar PDF de EMO con Gemini
    • storage_listar - Listar archivos en bucket
    • storage_descargar - Descargar archivo

📞 Soporte

Para consultas sobre el sistema, contacta al equipo de desarrollo de Servysalud 360.

📝 Licencia

Proyecto privado © 2025 Servysalud 360

👨‍💻 Desarrollado por

Ivan Leon para Servysalud 360

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages