Diagnosis API

A REST API Microservice to query data on Breast Cancer Diagnosis with asynchronous analysis engine, built using Flask with Redis NoSQL Database integration. The application was containarized using Docker and deployed on a Kubernetes cluster for public access.

Diagnosis API - REST API Microservice

REST API Microservice

Back-End

Tools used

  • Flask
  • Redis
  • Docker
  • Docker Compose
  • Kubernetes
  • Git

View Code


Team members: Dhanny Indrakusuma, Pranjal Adhikari, Amanda Lee.

The Breast Cancer Wisconsin dataset includes data from hundreds of breast cancer cases to develop an effective diagnosis for future cases. Utilizing the measurements from cell nuclei observations in the dataset, an effective and reliable diagnosis can be made to determine the outcome of each case and to predict the survival status based on these features.

The dataset contains 32 attributes, and all feature values are recoded with four significant digits, with no missing attribute values and class distribution of 357 benign and 212 malignant. The original dataset is available from UCI Machine Learning Repository, and detailed documentation is available on University of Wisconsin-Madison research page.

Designed as a user-friendly microservice, the application is organized as a set of APIs that conform to the RESTful architecture with 14 endpoints, implemented in Flask with Redis NoSQL database integration. The API allow users to perform basic CRUD operations on the diagnosis data - Create, Read, Update, Delete - to load in the data, view it in a RESTful / collections style with filtering options, and delete the data.

We also implemented an Analysis Engine that allow users to submit analysis jobs to a queue, which is then offloaded asynchronously to workers to generate plot images based on the request, and store the results in a database. The users can check on the job status and fetch the results once the analysis job is complete.

The application was containerized using Docker and hosted on the Kubernetes cluster, making it accessible to the outside world at a unique, public URL. For more information about the project please check out the Diagnosis API repository.