overview

Oncology Quest is a web app designed to support Medical Oncology trainees by tracking their progress throughout various rotations. It also provides rotation directors with a secure and accessible way to monitor trainee progression and update the rotation structure as needed.

It was in use by 6+ trainees and 2 rotation directors at the Tom Baker Cancer Centre.

key_features

Trainees are able to access any existing rotations, mark tasks as complete or in progress, leave comments on tasks, and view their progress in a visual format. Additionally, they can also export progress reports in PDF format and delete their account if needed.

Admins can create and delete rotations, add and remove tasks from rotations, and manage trainee accounts. Management for trainee accounts includes the ability to view their progress, export their progress, generate password reset tokens, and delete their account.

technical_highlights

Performance optimizations include caching and memoization of frequently accessed data to reduce server load and improve load times.

Security features include password hashing with BCRYPT and salting with a random 64-bit integer, rate limiting on sensitive routes, user authentication with JWT, input sanitization with REGEX, requests secured with HTTPS, and appropriate CORS policies are in place.

testing_integrity

Automated testing is done with a seperate client that sends requests to the API and checks the responses. The tests are run within a Github Actions workflow.

Container orchestration is used to execute these tests via Docker Compose. The containers used are: API, Database (PostgreSQL), and Test Client.

Manual testing is done by me to ensure that the app is functioning and appearing as expected.

deployment

The web app is deployed as a single container on AWS ECS with a PostgreSQL database. A monolithic architecture was chosen to simplify deployment and reduce costs.

images

Below are some screenshots of the web app.

Login Page Trainee Dashboard 1 Rotation Director Dashboard Trainee Dashboard 2 Rotation Director Trainee Search Rotation Director Trainee Progress