felicity-lims/README.md

103 lines
4.4 KiB
Markdown
Raw Normal View History

2021-10-17 21:54:22 +08:00
# FELICITY LIMS
2021-10-17 21:41:46 +08:00
2021-10-17 21:53:13 +08:00
![Screenshot1](https://user-images.githubusercontent.com/17094364/137630249-b84e5b1c-f525-4b0a-8d1e-1e2820910a5f.png)
2021-10-17 21:54:22 +08:00
A next generation open source laboratory information management system for clinical/medical laboratories.
2021-10-17 21:04:50 +08:00
## Descritpion
2021-10-17 21:41:46 +08:00
The Felicity LIMS project aims to create a Laboratory Information Management System (LIMS) that tracks the complete laboratory workflow providing all the functionalities of a Laboratory Information Management System.
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 biospecimen in the laboratory from receipt to dispacth.
Felicity Backend is developed in Python using the FastAPI framework and strawberry GraphQL.
Felicity FrontEnd is developed in VueJs, URQL, and Tailwind CSS.
2021-10-17 21:54:22 +08:00
Felicity is the quality of being good, pleasant, or desirable.
2021-10-17 21:47:46 +08:00
## Main Features
2021-10-17 21:48:33 +08:00
- Sample status tracking
- Flexible batched sample workflow
- Quality control
- Reporting
- Highly customizable and extensible
2021-10-17 22:12:48 +08:00
- Micro kanban Project management
2021-10-17 22:13:48 +08:00
- Experimental Markdown Document manager
2021-10-17 22:05:13 +08:00
## Installation
### Direct
2021-10-17 23:06:25 +08:00
#### Backend Installation
##### using poetry
2021-10-17 23:11:18 +08:00
Fist install [Poetry](https://python-poetry.org/docs/#installation)
2021-10-17 23:16:18 +08:00
Then follow instructions below
2021-10-17 23:11:18 +08:00
```shell
git clone https://github.com/aurthurm/felicity.git
cd felicity
cd backend/felicity_lims
poetry install
bash felicity.sh &
````
2021-10-17 23:06:25 +08:00
##### using anaconda
Fist install [Miniconda](https://docs.conda.io/en/latest/miniconda.html)
2021-10-17 23:16:18 +08:00
Then follow instructions below
2021-10-17 23:06:25 +08:00
```shell
2021-10-17 23:11:18 +08:00
conda create -n felicity python=3.9
conda activate felicity
git clone https://github.com/aurthurm/felicity.git
cd felicity
cd backend/felicity_lims
pip install -r requirements.txt
bash felicity.sh &
2021-10-17 23:06:25 +08:00
````
#### Frontend Installation
2021-10-17 23:16:18 +08:00
Install [NodeJs](https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions)
2021-10-17 23:19:31 +08:00
Install [Yarn](https://yarnpkg.com/getting-started/install)
2021-10-17 23:16:18 +08:00
Then follow instructions below
```shell
cd felicity/frontent/vite
yarn install
# for production mode
yarn build
yarn start
# for development mode
yarn dev
````
2021-10-17 22:05:13 +08:00
### Docker
2021-10-17 22:12:48 +08:00
This method uses Docker and docker-compose which handles the details of installing dependencies for you. On your Linux command line, run:
2021-10-17 22:51:36 +08:00
```shell
2021-10-17 23:11:18 +08:00
git clone https://github.com/aurthurm/felicity.git
cd felicity
docker-compose up -d
2021-10-17 22:12:48 +08:00
```
2022-01-13 05:06:57 +08:00
### Loadtest
Start the application with gunicorn and experiment with various workers
```shell
gunicorn --workers 4 --bind 0.0.0.0:8000 -k uvicorn.workers.UvicornWorker --reload felicity.main:flims
```
Experiment with various -c and --rps values
```shell
sudo npm install -g loadtest
loadtest --data '{"query": "query{clientAll{items{uid name code district{uid name email emailCc province{uid name code country{uid name}}}}}}"}' -c 4 --rps 500 http://localhost:8000/felicity-gql -T 'application/json'
loadtest --data '{"query": "query getAllSamples{sampleAll(pageSize:10 afterCursor:\"\" status:\"\" text:\"\" clientUid:0 sortBy:[\"uid\"]){totalCount pageInfo{hasNextPage hasPreviousPage endCursor startCursor __typename}items{uid analysisRequest{uid clientRequestId patient{uid firstName lastName clientPatientId gender dateOfBirth age ageDobEstimated consentSms __typename}client{uid name __typename}__typename}sampleType{uid name __typename}sampleId priority status analyses{uid name sortKey __typename}profiles{uid name __typename}rejectionReasons{uid reason __typename}__typename}__typename}}"}' -c 10 --rps 10000 http://localhost:8000/felicity-gql -T 'application/json'
```
The application seems to be very performant even without using a load balancer and caching.
## Other projects
- Felicity Docs - Built with Laboratory QMS in Mind but can be used anywhere for document management
- Felicity Stocker - Medical Laboratory Inventory Management system
2022-01-13 05:06:57 +08:00
- Felicity Request - Requests and Approvals (e-Requisitions)
- Felicity Teams - Project Management Tool
- Felicity Field - Survey Data Collection Tool, Forms ,Analytics etc
2021-10-17 22:12:48 +08:00
## Contact
2022-01-13 05:06:57 +08:00
- [EMail](mailto:aurthurmusendame@gmail.com?subject=[GitHub]%20Felicity%20Lims%20Enquiry)
- [Facebook](https://www.fb.me/aurthur.musendame)
- [LinkedIn](https://www.linkedin.com/in/aurthurmusendame)
- [Whatsapp](https://api.WhatsApp.com/send?phone=263776406399)
- [Telegram](https://www.t.me/aurthurm)