🏠 Homepage
Description : Rp Optimizer (short for Radiopharmaceuticals Optimizer) is an open source web app used to make the use of Radioactive pharmaceuticals used in the detection of cancerous cells more efficient during PET scans.
The Sahloul University Hospital ,being the first Hospital to make use of this app, had a great deal of impact on the development process. In fact this app was built solely for Sahloul University Hospital but then I decided to open source it.
At said hospital, the PET (Positron Emission Tomography) unit used fluor 18 marked fluorodeoxyglucose who's radioactivity allowed the PET camera to visualise the cancerous cells during the scan.
This pharmaceutical is both expensive and his radioactivity decrease rapidly (half life of 110 min).
On the scan day, the PET unit receives the pharmaceutical and it has to decide on an optimal way to divide it between several patients (each with different needs in term of : scan time & required radioactivity needed for the scan).
In comes our app whose purpose is to effectively and efficiently order patients during a PET scan given an initial state, and also to show usefull statistics and predictions that are crucial for the PET machine operator.
The current project is using the following toolkit:
- Email.js : for sending user feedback via email.
- Sentry : for monitoring app health in the production environment and loggig errors.
- Amplitude : for collecting business metrics and displaying them in a nice comprehensive dashboard (example : number of patients / day).
- Vercel : for deploying the app to main domain in the production environment, and each commit to a temporary url in the preview environment.
- Cypress Dashboard : for running e2e tests in the CI pipeline and uploading video of the tests to an online dashboard.
Use the node package manager npm to install the RP-Optimizer project and run it.
cd app && npm install;
npm start
npm run test
This is a codesandbox to test the sorting / prediction logic in isolation : Link
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.
- A change is commited to the
dev
branch. - Vercel detects the commit and deploys to a temporary url that is accessible to test the changes live.
- I create a PR to merge with
master
branch - Cypress detects the PR, runs the e2e tests and uploads a video of the execution the Cypress dashboard, and then replies to the PR with the test results.
- Now, that Branch protection rules are satisfied, I can successfully merge the PR.
- Vercel detects the merge and deploys the project to main url.
PS: Branch protection rules are :
- Require a pull request before merging to master
- Require status checks to pass before merging (the Cypress e2e tests)