SuperLab es una aplicación web moderna y profesional diseñada para la gestión integral de laboratorios clínicos. Permite administrar pacientes, órdenes de pruebas, resultados, reportes y más, todo en un solo lugar con interfaz en español.
- Características Principales
- Tecnologías
- Requisitos Previos
- Instalación
- Configuración
- Base de Datos
- Estructura del Proyecto
- Uso del Sistema
- Planes y Precios
- API de IA
- Seguridad
- Contribución
- Licencia
- Gestión de pacientes: Registro, búsqueda por cédula o teléfono, historial completo
- Catálogo de pruebas: Amplia base de pruebas con rangos de referencia por edad y sexo
- Paneles/Perfiles: Agrupación de pruebas en paneles con precio combinado
- Órdenes de laboratorio: Creación, seguimiento de estado y gestión de resultados
- Resultados con indicadores: Resaltado automático de valores altos (rojo), bajos (azul) y normales (verde)
- Reportes: Estadísticas diarias, semanales y mensuales
- Integración con IA: Consultas inteligentes para análisis de resultados
- Resultados seguros: Acceso mediante enlace único + token de seguridad
- Visualización clara: Resultados con rangos de referencia y marcadores visuales
- Compartir resultados: Opción de imprimir o guardar como PDF
- Diseño responsivo: Funciona en desktop y dispositivos móviles
- Modo oscuro/claro: Tema personalizable con persistencia en localStorage
- Idioma: Interfaz completamente en español
- Autenticación: Roles de administrador y asistente
- Node.js - Entorno de ejecución
- Express - Framework web
- EJS - Motor de plantillas (con extensión .html)
- cookie-parser - Manejo de cookies firmadas
- pg - Cliente de PostgreSQL
- PostgreSQL - Sistema de gestión de bases de datos relacional
- HTML5 - Estructura semántica
- CSS3 - Diseño con variables CSS, modos claro/oscuro
- JavaScript - Interactividad del lado del cliente
- Sin dependencias externas - No se utilizan FontAwesome, Google Fonts ni librerías externas
- Node.js v14 o superior
- PostgreSQL v12 o superior
- npm v6 o superior
git clone https://github.com/tu-usuario/superlab.git
cd superlabnpm init -y
npm install express ejs cookie-parser pgCrear archivo .env en la raíz del proyecto:
PORT=3000
DB_HOST=localhost
DB_PORT=5432
DB_NAME=labapp
DB_USER=postgres
DB_PASSWORD=postgres
SECRET_KEY=SuperLab2024SecureKey!@#$%
AGENT_API_KEY=sk-your-agent-api-key-here
UPLOAD_MAX_SIZE=10485760# Crear la base de datos y las tablas
psql -U postgres -f database.sql
# Cargar datos de ejemplo
psql -U postgres -d labapp -f dummydata.sqlnode app.jsLa aplicación estará disponible en http://localhost:3000
| Variable | Descripción | Valor por Defecto |
|---|---|---|
PORT |
Puerto del servidor | 3000 |
DB_HOST |
Host de PostgreSQL | localhost |
DB_PORT |
Puerto de PostgreSQL | 5432 |
DB_NAME |
Nombre de la base de datos | labapp |
DB_USER |
Usuario de PostgreSQL | postgres |
DB_PASSWORD |
Contraseña de PostgreSQL | postgres |
SECRET_KEY |
Clave secreta para cookies | (cambiar en producción) |
AGENT_API_KEY |
API Key de agente | (opcional) |
UPLOAD_MAX_SIZE |
Tamaño máximo de subida | 10485760 (10MB) |
| Contraseña | Rol | Laboratorio | |
|---|---|---|---|
| admin@superlab.com | admin123 | admin | SuperLab Central |
| admin2@superlab.com | admin123 | admin | LabAnalytica Norte |
| assistant@superlab.com | assist123 | assistant | SuperLab Central |
La base de datos labapp contiene las siguientes tablas:
| Tabla | Descripción |
|---|---|
plans |
Planes de suscripción (FREE, BASIC, PRO) |
labs |
Laboratorios registrados |
users |
Usuarios del sistema (admins, asistentes) |
categories |
Categorías de pruebas |
tests |
Pruebas de laboratorio |
ranges |
Rangos de referencia por edad/sexo |
panels |
Paneles/Perfiles de pruebas |
panel_tests |
Asociación panel-prueba |
patients |
Pacientes |
orders |
Órdenes de laboratorio |
order_tests |
Pruebas dentro de una orden |
patient_tokens |
Tokens de acceso para pacientes |
queries |
Historial de consultas a IA |
activity_log |
Registro de actividad |
Los pacientes menores de edad se identifican con un número de cédula que consiste en la cédula del padre/madre seguida de un punto y un número secuencial:
001-1234567-01 → Padre/Madre
001-1234567-01.1 → Hijo 1
001-1234567-01.2 → Hijo 2
El archivo tests-es.txt contiene más de 250 pruebas de laboratorio en español, y panels-es.md describe 8 paneles clínicos prioritarios (PMC, BMP, Perfil Lipídico, Hemograma, etc.)
superlab/
├── app.js # Punto de entrada principal
├── database.js # Clase Database con métodos de consulta
├── database.sql # Script de creación de base de datos
├── dummydata.sql # Datos de ejemplo
├── .env # Variables de entorno
├── README.md # Documentación
├── tests-es.txt # Lista de pruebas en español
├── panels-es.md # Paneles de pruebas clínicas
├── funciton.md # Requisitos funcionales detallados
├── prompt.txt # Especificación del proyecto
├── package.json # Dependencias de Node.js
├── views/ # Plantillas EJS (.html)
│ ├── header.html # Componente de cabecera
│ ├── footer.html # Componente de pie de página
│ ├── index.html # Página de inicio (landing page)
│ ├── login.html # Inicio de sesión
│ ├── register.html # Registro de laboratorio
│ ├── forgot.html # Recuperación de contraseña
│ ├── dashboard.html # Panel de control
│ ├── labs.html # Listado de laboratorios
│ ├── lab-view.html # Detalle de laboratorio con pruebas
│ ├── orders.html # Listado de órdenes
│ ├── order-new.html # Nueva orden
│ ├── order-view.html # Detalle de orden
│ ├── order-results.html # Ingreso de resultados
│ ├── order-pdf.html # Versión imprimible/PDF
│ ├── share-results.html # Compartir resultados
│ ├── patients.html # Listado de pacientes
│ ├── patient-view.html # Detalle de paciente
│ ├── patient-results.html # Resultados para paciente
│ ├── admin-tests.html # Gestión de pruebas
│ ├── reports.html # Reportes y estadísticas
│ └── error.html # Página de error
├── public/
│ ├── styles/
│ │ ├── common.css # Estilos compartidos (globales)
│ │ ├── index.css # Estilos de la landing page
│ │ ├── auth.css # Estilos de autenticación
│ │ ├── dashboard.css # Estilos del panel
│ │ ├── labs.css # Estilos de laboratorios
│ │ ├── orders.css # Estilos de órdenes
│ │ ├── patients.css # Estilos de pacientes
│ │ └── patient-results.css # Estilos de resultados
│ ├── scripts/
│ │ └── main.js # JavaScript principal
│ ├── media/ # Archivos multimedia
│ └── uploads/ # Archivos subidos
└── package.json
- Página principal: Información del sistema, planes y precios
- Ver laboratorios: Lista de laboratorios y sus pruebas con precios
- Consultar resultados: Acceder a resultados mediante enlace + token
- Dashboard: Vista general con estadísticas y actividad reciente
- Gestión de pacientes: CRUD completo, búsqueda avanzada
- Gestión de pruebas: Crear, editar pruebas y rangos de referencia
- Paneles: Agrupar pruebas en perfiles
- Órdenes: Crear, gestionar y dar seguimiento
- Reportes: Estadísticas y exportación
- IA: Consultas sobre resultados de pacientes
- Órdenes: Crear y gestionar órdenes de laboratorio
- Resultados: Ingresar resultados de pruebas
- Cambiar estados: Avanzar órdenes en el flujo de trabajo
- Compartir: Enviar resultados a pacientes
- Borrador → Se crea la orden con paciente y pruebas
- Muestra tomada → Se recolecta la muestra
- En análisis → La muestra está siendo procesada
- Resultados ingresados → Técnico ingresa los valores
- Verificado → Admin verifica los resultados
- Publicado → Resultados disponibles para el paciente
| Característica | GRATIS | BÁSICO ($10/mes) | PRO ($25/mes) |
|---|---|---|---|
| Pruebas por mes | Hasta 100 | Hasta 1,000 | Ilimitadas |
| Gestión de pacientes | Básica | Avanzada | Completa |
| Catálogo de pruebas | Estándar | Personalizado | Todos |
| Paneles/Perfiles | ❌ | ✅ | ✅ |
| Reportes | Básicos | Detallados | Avanzados |
| Integración con IA | ❌ | ✅ | Ilimitada |
| Soporte | Prioritario | 24/7 | |
| API | ❌ | ❌ | ✅ |
SuperLab se integra con Agentes de IA para permitir a los laboratorios realizar consultas sobre resultados de pacientes.
- Obtén una API key de DeepSeek
- Colócala en el archivo
.env:AGENT_API_KEY=tu-api-key - Las consultas se realizarán desde el panel de administración
- Preguntar sobre rangos de referencia
- Interpretación de valores anormales
- Posibles causas y tratamientos
- Historial de consultas por paciente
Si no se configura una API key, el sistema generará respuestas simuladas para demostración.
- Contraseñas: Hash SHA-256 usando
node:crypto - Cookies: Firmadas con
cookie-parsery clave secreta - Tokens: Generados con
crypto.randomBytes(32)(64 caracteres hex) - Acceso a resultados: Token único + URL segura (el token no va en la URL)
- Roles: Separación entre administradores y asistentes
- HTTP Only: Cookies no accesibles desde JavaScript
- SameSite: Protección contra CSRF
El archivo tests-es.txt contiene más de 250 pruebas de laboratorio en español, incluyendo:
- Hematología: Hemograma completo, hemoglobina, hematocrito, etc.
- Química Clínica: Glucosa, perfil lipídico, función hepática, función renal
- Endocrinología: TSH, T4, T3, hormonas
- Microbiología: Cultivos, PCR, serologías
- Inmunología: Anticuerpos, autoinmunes
- Urianálisis: Exámenes de orina completos
- Y más: Marcadores tumorales, genéticos, drogas, etc.
- Panel Metabólico Completo (PMC)
- Panel Metabólico Básico (BMP)
- Perfil Lipídico
- Hemograma Completo con Diferencial
- Panel de Función Hepática
- Panel de Función Renal
- Panel Tiroideo
- Panel de Hepatitis Aguda
- Fork it
- ...
- Profit!
- Mantén el código limpio y comentado
- Todas las variables, funciones y tablas en inglés
- Solo la UI y mensajes en español
- Sigue la estructura de archivos establecida
Este proyecto es de código abierto. Todos los derechos reservados por SuperLab
Hecho con ❤️ para laboratorios clínicos
