Work
UniversityUniversity · Machine Learning

MediScanAI

A medical image analysis prototype with a microservice architecture and AI models. Not a clinical tool.

Screenshot of MediScanAI
SYSTEM.md

The problem

Integrating inference tasks of variable duration without blocking the rest of the system.

What I built

A Spring Cloud Gateway API Gateway routes to IAM, report, notification and administrative services. A FastAPI service with TensorFlow classifies, and an ML Service with MONAI explains and trains. React and Flutter frontends.

Outcome

An engineering prototype with many services; it is not presented as a validated clinical tool.

Decisions that mattered

  1. 01

    A single entry point

    The API Gateway concentrates access and delegates authentication to the IAM service.

  2. 02

    One service per responsibility

    IAM, reports, notifications and administration are Spring Boot services, each with its own database.

  3. 03

    Slow work, kept apart

    Inference and training run in separate Python services, and emails go out through RabbitMQ.

  4. 04

    Explainable results

    The ML Service adds explainability with Captum and an X-ray model built with MONAI.

Technologies

  • Spring Cloud Gateway
  • Spring Boot
  • FastAPI
  • TensorFlow
  • MONAI
  • RabbitMQ
  • React
  • Flutter

C4 model. The pulsing line is the main path of a request.

Level 1 · who uses the system and what it connects to

HTTPS1SMTPS3 APIHTTPSHealth professionalUploads imaging studiesMediScanAIImage analysis supportGmail SMTP[Gmail SMTP]Notice emailsAmazon S3[Amazon S3]Images and resultsGoogle Gemini[Google Gemini]Explains results

Level 2 · the applications and data stores it is made of

HTTPS1AppREST2RESTREST · JWT3RESTRESTREST4RESTAMQPAMQPSMTPHTTP5S3 APIHTTPSHealth professionalUploads imaging studiesWeb app[React 18 · Docker]Upload and resultsAPI Gateway[Spring Cloud Gateway]Single entry pointIAM service[Spring Security · MySQL]Users, roles and JWTMobile app[Flutter]Check from the phoneNotificationservice[Spring Boot · MySQL]System noticesReport service[Spring Boot · MySQL]Saved resultsRabbitMQ[RabbitMQ]Email queueEmail service[Spring Boot · AMQP]Sends over SMTPGoogle Gemini[Google Gemini]Explains resultsAdministrativeservice[Java 21 · MySQL]System managementGmail SMTP[Gmail SMTP]Notice emailsAmazon S3[Amazon S3]Images and resultsML Service[FastAPI · MONAI · PostgreSQL]Inference, training andexplainabilityAI Service[FastAPI · TensorFlow]Classifies with TensorFlow

Level 3 · the components inside the API

calls1rulesport2SQL3portS3 APIportHTTPSAPI v1 and v2[FastAPI v1 · v2]FastAPI routesServices[Services]Inference, preprocessingand explainabilityModels[MONAI · X-ray model]MONAI and X-ray modelSQL repository[asyncpg repository]Stores the resultsPostgreSQL[PostgreSQL]Model resultsStorage[boto3]S3 or local diskAmazon S3[Amazon S3]Images and resultsGemini client[google-genai]Explains the resultGoogle Gemini[Google Gemini]Explains results
  • Person
  • System
  • Container
  • Database
  • External
  • Main path
  1. 01Imaging study
  2. 02API Gateway
  3. 03AI Service
  4. 04ML Service
  5. 05Report
  6. 06Notice

CV

Get my CV

Leave your email and I will send the CV there. First I check the address is yours with a code.