The Next Generation Open Source Laboratory Information Management System (LIMS)
Felicity LIMS is an open-source Laboratory Information Management System designed to streamline laboratory workflows in clinical and medical environments. It empowers laboratories to accurately manage sample lifecycles, metadata, and experimental data while ensuring compliance and efficiency.
Felicity strives to promote an accurate flow of sample and associated experimental data to and through a laboratory to produce information that is used to make conclusions and critical decisions.
Felicity LIMS will ensure that sufficient metadata is captured and clinical laboratory personnel can track the lifecycle of a bio-specimen in the laboratory from receipt to dispatch.
Felicity is the quality of being good, pleasant, or desirable.
- Comprehensive Workflow Management: Track samples from receipt to dispatch.
- Real-Time Analytics: Interactive dashboards for actionable insights.
- Data Integrity: Metadata tracking to ensure reliability in decision-making.
- User Management: Role-based access control (RBAC) and user profiles.
- Scalability: Modular architecture supporting integration with emerging technologies.
- Framework: Vite, Vue.js
- Styling: Tailwind CSS
- State Management: URQL
- Framework: FastAPI, Strawberry GraphQL
- Database: PostgreSQL (main DB), MongoDB (audit logs, etc)
- Storage: MinIO (object storage for reports, etc)
- Caching: Dragonfly Redis (locks, WebSocket subscriptions)
- Dashboard: Analytics and performance tracking.
- Patient Management: Listings, details, audit logs, and search capabilities.
- Sample Management: Lifecycle tracking, worksheets, reports, and audit trails.
- Inventory: Transactions, adjustments, orders, and requests.
- Shipments: FHIR-ready functionality, listing, and details.
- Storage: Management of storerooms, containers, and templates.
- User & Client Management: Listings, profiles, and contact details.
- Admin Tools: Advanced administrative controls and reflex rules.
- Billing (in development): Profiles and RBAC integration.
Felicity LIMS can be quickly deployed using Docker Compose.
git clone https://github.com/beak-insights/felicity-lims.git
cd felicity-lims
Choose between FastAPI serving static files or using Nginx/Caddy as a reverse proxy.
Preset Examples:
felicity-aio
: FastAPI for API and static files without a reverse proxy.felicity-aio-nginx
: FastAPI for API and static files and Nginx as a reverse proxy in front.felicity-aio-caddy
: FastAPI for API and static files and Caddy as a reverse proxy in front.felicity-static-nginx
: FastAPI for API, Nginx for static files.felicity-static-caddy
: FastAPI for API, Caddy for static files.
docker-compose -f docker-compose.prod.yml up -d <preset> --build
docker-compose -f docker-compose.prod.yml exec <preset> bash -c "felicity-lims upgrade"
docker-compose -f docker-compose.prod.yml logs <preset> -f -n100
For environments where Docker is not an option:
- Install OS Requirements:
sudo apt update && apt install libcairo2-dev pkg-config python3-dev gcc g++
- Setup Python Virtual Environment:
conda create -n felicity python=3.11 conda activate felicity
- Install Dependencies:
pip install -r requirements.txt
- Build the Frontend:
pnpm install pnpm standalone:build
- Run the Backend:
pnpm server:gu
For production, use Supervisor to demonize processes as follows:
-
Install supervisor
sudo systemctl status supervisor
-
create supervisor config file
sudo nano /etc/supervisor/conf.d/felicity_lims.conf
-
Copy and Paste the following and edit correct accordingly
command=/home/<user>/miniconda3/bin/python <full path to felicity lims root folder> autostart=true autorestart=true stderr_logfile=/var/log/felicity_lims.err.log stdout_logfile=/var/log/felicity_lims.out.log
-
Inform supervisor of our new programs:
sudo supervisorctl update sudo supervisorctl reload
-
Tail Error logs:
tail -f /var/log/felicity_lims.err.log
-
Tail output logs:
tail -f /var/log/felicity_lims.out.log
Felicity LIMS integrates OpenTelemetry for application performance monitoring.
-
Enable Tracing:
export RUN_OPEN_TRACING=True opentelemetry-bootstrap --action=install
-
Deploy SigNoz (Recommended for Metrics):
git clone -b main https://github.com/SigNoz/signoz.git cd signoz/deploy/ docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d
Access the SigNoz dashboard at http://localhost:3301.
Evaluate system performance using Locust or other load-testing tools. We recommend testing concurrency to simulate real-world scenarios.
We welcome contributions from the community!
- Follow the contribution guide in the repository.
- Ensure all code adheres to the project's linting and testing standards.
- Email: aurthurmusendame@gmail.com
- LinkedIn: Aurthur Musendame
- WhatsApp: Chat with us
- Telegram: Join the discussion