Felicity is the Next Generation LIMS Software for the modern Medical Laboratory.
Find a file
2025-02-13 21:37:15 +02:00
bin removed make 2024-08-08 16:59:54 +02:00
felicity updated f string quotes escape bug 2025-02-13 21:31:36 +02:00
public merged backend and frontend 2023-11-10 08:05:15 +02:00
reads update font awesome 2024-03-23 10:25:02 +02:00
services updated sample workflow tests 2024-07-27 21:52:31 +02:00
types merged backend and frontend 2023-11-10 08:05:15 +02:00
webapp fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
.gitignore removed code editor 2024-09-01 19:26:01 +02:00
.prettierignore perfected patient adding and update 2023-04-10 03:29:10 +02:00
.prettierrc perfected patient adding and update 2023-04-10 03:29:10 +02:00
al_revision.sh updated user preferences and tests 2024-10-27 08:25:31 +02:00
alembic.ini updated user preferences and tests 2024-10-27 08:25:31 +02:00
auto-imports.d.ts updated graphqy to use typed version --fontend broken 2024-11-20 18:16:49 +02:00
codegen.yml frontend broken --graphql refactoring 2024-11-20 06:39:33 +02:00
docker-compose.dev.yml removed intermidiary states and replaced with process tracker +resid 2024-09-20 10:58:52 +02:00
docker-compose.other.yml fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
docker-compose.yml fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
Dockerfile.dev removed intermidiary states and replaced with process tracker +resid 2024-09-20 10:58:52 +02:00
Dockerfile.prod added version checking 2024-11-22 19:04:47 +02:00
env.example disabled open telemetry tracing by default 2024-09-14 17:03:32 +02:00
felicity.iml added reflex rules 2022-02-05 21:36:45 +02:00
index.html removed goodbye message 2024-11-18 13:03:06 +02:00
mypy.ini moved pdf storage to minio object storage 2024-07-31 19:38:20 +02:00
notes.txt fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
os-requirements.txt added version checking 2024-11-22 19:04:47 +02:00
package.json fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
pnpm-lock.yaml added version updates checking 2024-11-23 08:15:51 +02:00
postcss.config.js upgraded all packages 2024-01-22 19:42:18 +02:00
postgres-db-setup.txt updated user password reset, added starter documentation reads 2023-12-30 09:51:11 +02:00
Procfile generated static files 2023-04-10 14:24:32 +02:00
pyproject.toml mypy corrections 2024-09-28 09:29:22 +02:00
pytest.ini restructures backend 2023-04-07 17:52:19 +02:00
README.md added dev docker setup 2025-02-13 21:37:15 +02:00
requirements-dev.txt mypy corrections 2024-09-28 09:29:22 +02:00
requirements.txt added version checking 2024-11-22 19:04:47 +02:00
runtime.txt moved pdf storage to minio object storage 2024-07-31 19:38:20 +02:00
setup.py fixed dashboard layout, added watcher to controls charts, rebuild frontend 2024-12-19 17:25:20 +02:00
tailwind.config.js UI refatcorings 2024-11-17 14:33:54 +02:00
tsconfig.json added info detail for results, init components 2024-06-29 15:19:21 +02:00
vite.config.js updated graphqy to use typed version --fontend broken 2024-11-20 18:16:49 +02:00

Felicity LIMS

The Next Generation Open Source Laboratory Information Management System (LIMS)

Felicity LIMS


Overview

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.

Key Features

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

Technology Stack

Frontend

  • Framework: Vite, Vue.js
  • Styling: Tailwind CSS
  • State Management: URQL

Backend

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

Modules

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

Development setup (docker)

git clone https://github.com/beak-insights/felicity-lims.git
cd felicity-lims
# build and run
docker compose -f docker-compose.dev.yml up -d --build
# database setup 
docker compose -f docker-compose.dev.yml exec felicity-api felicity-lims db upgrade

Production Installation

Felicity LIMS can be quickly deployed using Docker Compose.

Step 1: Clone the Repository

git clone https://github.com/beak-insights/felicity-lims.git
cd felicity-lims
docker compose -f docker-compose.dev.yml up -d <preset> --build

Step 2: Choose a Preset

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.

Step 3: Deploy

docker compose -f docker-compose.yml up -d <preset> --build
docker compose -f docker-compose.yml exec <preset> bash -c "felicity-lims upgrade"
docker compose -f docker-compose.yml logs <preset> -f -n100

Manual Installation (Alternative)

For environments where Docker is not an option:

  1. Install OS Requirements:
    sudo apt update && apt install libcairo2-dev pkg-config python3-dev gcc g++
    
  2. Setup Python Virtual Environment:
    conda create -n felicity python=3.11
    conda activate felicity
    
  3. Install Dependencies:
    pip install -r requirements.txt
    
  4. Build the Frontend:
    pnpm install
    pnpm standalone:build
    
  5. Run the Backend:
    pnpm server:gu
    

For production, use Supervisor to demonize processes as follows:

  1. Install supervisor

    sudo systemctl status supervisor
    
  2. create supervisor config file

    sudo nano /etc/supervisor/conf.d/felicity_lims.conf
    
  3. 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
    
  4. Inform supervisor of our new programs:

    sudo supervisorctl update
    sudo supervisorctl reload
    
  5. Tail Error logs:

    tail -f /var/log/felicity_lims.err.log
    
  6. Tail output logs:

    tail -f /var/log/felicity_lims.out.log
    

Application Monitoring

Felicity LIMS integrates OpenTelemetry for application performance monitoring.

  1. Enable Tracing:

    export RUN_OPEN_TRACING=True
    opentelemetry-bootstrap --action=install
    
  2. 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.


Performance Testing

Evaluate system performance using Locust or other load-testing tools. We recommend testing concurrency to simulate real-world scenarios.


Contributing

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.

Contact