# suzirz/medical-imaging-tumor-detection architecture

> Architecture diagram of the GitHub repository suzirz/medical-imaging-tumor-detection, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/suzirz/medical-imaging-tumor-detection
- Repository: https://github.com/suzirz/medical-imaging-tumor-detection

## Overview

NeuroScan is a research prototype for brain MRI classification and analysis, not a clinical device. Its main user workflow is to open the Streamlit workstation, provide a scan, and view a classification and related analysis; the repository also documents an independent prediction API. The interface exposes distinct segmentation, DICOM, retrieval, synthesis, prognosis, surgical-planning, contouring, and reporting capabilities. The sampled source confirms the app’s tab dispatch, API-to-predictor call, segmentation implementation, DICOM parsing, and retrieval calls. Other feature links reflect README descriptions and module paths; their internal wiring is not established by the excerpts.

Main entry points: [`app.py`](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/app.py) (Streamlit app), [`ui/tab_retrieval.py`](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_retrieval.py) (Case retrieval tab), [`ui/tab_workstation.py`](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_workstation.py) (Diagnostic workstation), [`ui/tab_segmentation.py`](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_segmentation.py) (Segmentation tab)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["User interfaces"]
  node_streamlit["Streamlit app<br/>[app.py]"]
  node_workstation["Diagnostic workstation<br/>[tab_workstation.py]"]
  node_sidebar["Patient history<br/>[sidebar.py]"]
  node_segmentation_ui["Segmentation tab"]
  node_retrieval_ui["Case retrieval tab<br/>[tab_retrieval.py]"]
  node_vlm_ui["VQA and report tab<br/>[tab_vlm.py]"]
  node_prognosis_ui["Prognosis tab<br/>[tab_prognosis.py]"]
  node_surgery_ui["Surgical planning tab<br/>[tab_surgery.py]"]
  node_dicom_ui["DICOM viewer tab<br/>[tab_dicom.py]"]
  node_contour_ui["Contour tab<br/>[tab_contour.py]"]
  node_synthesis_ui["Synthesis tab<br/>[tab_synthesis.py]"]
  node_registry_ui["Model registry tab<br/>[tab_registry.py]"]
end

subgraph group_inference["Classification and segmentation"]
  node_classifier["Tumor classifier"]
  node_predictor["Prediction engine<br/>[predictor.py]"]
  node_segmentation["Mask and morphometry"]
  node_attention_unet["Attention U-Net<br/>[attention_unet.py]"]
end

subgraph group_analysis["Clinical analysis"]
  node_retriever["Case and biomarker retrieval<br/>[case_retriever.py]"]
  node_vlm["VQA and reporting<br/>[vlm_copilot.py]"]
  node_prognosis["Survival prognosis"]
  node_surgery["Resection planning"]
  node_synthesis["Virtual contrast"]
end

subgraph group_imaging["Imaging tools"]
  node_dicom["DICOM parser and windows<br/>[dicom_parser.py]"]
  node_contour["Contour and cropping<br/>[contour_cropper.py]"]
end

subgraph group_service["Inference service"]
  node_api["Prediction API<br/>[main.py]"]
end

node_user(("Scan user"))
node_api_client(("API client"))

node_user -->|"uses"| node_streamlit
node_streamlit -->|"renders"| node_sidebar
node_streamlit -->|"renders"| node_workstation
node_streamlit -->|"renders"| node_segmentation_ui
node_streamlit -->|"renders"| node_retrieval_ui
node_streamlit -->|"renders"| node_vlm_ui
node_streamlit -->|"renders"| node_prognosis_ui
node_streamlit -->|"renders"| node_surgery_ui
node_streamlit -->|"renders"| node_dicom_ui
node_streamlit -->|"renders"| node_contour_ui
node_streamlit -->|"renders"| node_synthesis_ui
node_streamlit -->|"renders"| node_registry_ui
node_workstation -->|"classifies scans"| node_classifier
node_segmentation_ui -->|"requests masks"| node_segmentation
node_segmentation -->|"runs inference"| node_attention_unet
node_retrieval_ui -->|"retrieves cases"| node_retriever
node_retrieval_ui -->|"predicts biomarkers"| node_retriever
node_vlm_ui -->|"requests answers"| node_vlm
node_prognosis_ui -->|"requests forecasts"| node_prognosis
node_surgery_ui -->|"requests planning"| node_surgery
node_dicom_ui -->|"parses scans"| node_dicom
node_contour_ui -->|"requests cropping"| node_contour
node_synthesis_ui -->|"requests synthesis"| node_synthesis
node_api_client -->|"uploads image"| node_api
node_api -->|"calls prediction"| node_predictor
node_predictor -->|"runs model"| node_classifier

click node_streamlit "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/app.py"
click node_workstation "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_workstation.py"
click node_sidebar "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/sidebar.py"
click node_classifier "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/efficientnet_tumor_classifier.py"
click node_predictor "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/predictor.py"
click node_segmentation_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_segmentation.py"
click node_segmentation "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/segmentation_engine.py"
click node_attention_unet "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/attention_unet.py"
click node_retrieval_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_retrieval.py"
click node_retriever "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/case_retriever.py"
click node_vlm_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_vlm.py"
click node_vlm "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/vlm_copilot.py"
click node_prognosis_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_prognosis.py"
click node_prognosis "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/survival_prognosticator.py"
click node_surgery_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_surgery.py"
click node_surgery "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/surgical_planner.py"
click node_dicom_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_dicom.py"
click node_dicom "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/dicom_parser.py"
click node_contour_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_contour.py"
click node_contour "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/preprocessing/contour_cropper.py"
click node_synthesis_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_synthesis.py"
click node_synthesis "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/generative_synthesis.py"
click node_registry_ui "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_registry.py"
click node_api "https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/api/main.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_streamlit,node_workstation,node_sidebar,node_segmentation_ui,node_retrieval_ui,node_vlm_ui,node_prognosis_ui,node_surgery_ui,node_dicom_ui,node_contour_ui,node_synthesis_ui,node_registry_ui,node_user,node_api_client toneBlue
class node_classifier,node_predictor,node_segmentation,node_attention_unet toneAmber
class node_retriever,node_vlm,node_prognosis,node_surgery,node_synthesis toneMint
class node_dicom,node_contour toneRose
class node_api toneIndigo
```

## Components

### User interfaces

- [Streamlit app](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/app.py): `app.py`
- [Diagnostic workstation](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_workstation.py): `ui/tab_workstation.py`
- [Patient history](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/sidebar.py): `ui/sidebar.py`
- [Segmentation tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_segmentation.py): `ui/tab_segmentation.py`
- [Case retrieval tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_retrieval.py): `ui/tab_retrieval.py`
- [VQA and report tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_vlm.py): `ui/tab_vlm.py`
- [Prognosis tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_prognosis.py): `ui/tab_prognosis.py`
- [Surgical planning tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_surgery.py): `ui/tab_surgery.py`
- [DICOM viewer tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_dicom.py): `ui/tab_dicom.py`
- [Contour tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_contour.py): `ui/tab_contour.py`
- [Synthesis tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_synthesis.py): `ui/tab_synthesis.py`
- [Model registry tab](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/ui/tab_registry.py): `ui/tab_registry.py`

### Classification and segmentation

- [Tumor classifier](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/efficientnet_tumor_classifier.py): `models/efficientnet_tumor_classifier.py`
- [Prediction engine](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/predictor.py): `models/predictor.py`
- [Mask and morphometry](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/segmentation_engine.py): `evaluation/segmentation_engine.py`
- [Attention U-Net](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/attention_unet.py): `models/attention_unet.py`

### Clinical analysis

- [Case and biomarker retrieval](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/case_retriever.py): `evaluation/case_retriever.py`
- [VQA and reporting](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/vlm_copilot.py): `evaluation/vlm_copilot.py`
- [Survival prognosis](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/survival_prognosticator.py): `evaluation/survival_prognosticator.py`
- [Resection planning](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/surgical_planner.py): `evaluation/surgical_planner.py`
- [Virtual contrast](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/models/generative_synthesis.py): `models/generative_synthesis.py`

### Imaging tools

- [DICOM parser and windows](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/evaluation/dicom_parser.py): `evaluation/dicom_parser.py`
- [Contour and cropping](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/preprocessing/contour_cropper.py): `preprocessing/contour_cropper.py`

### Inference service

- [Prediction API](https://github.com/suzirz/medical-imaging-tumor-detection/blob/main/api/main.py): `api/main.py`

### Other components

- **Scan user**
- **API client**

## Connections

- Scan user → Streamlit app: uses
- Streamlit app → Patient history: renders
- Streamlit app → Diagnostic workstation: renders
- Streamlit app → Segmentation tab: renders
- Streamlit app → Case retrieval tab: renders
- Streamlit app → VQA and report tab: renders
- Streamlit app → Prognosis tab: renders
- Streamlit app → Surgical planning tab: renders
- Streamlit app → DICOM viewer tab: renders
- Streamlit app → Contour tab: renders
- Streamlit app → Synthesis tab: renders
- Streamlit app → Model registry tab: renders
- Diagnostic workstation → Tumor classifier: classifies scans
- Segmentation tab → Mask and morphometry: requests masks
- Mask and morphometry → Attention U-Net: runs inference
- Case retrieval tab → Case and biomarker retrieval: retrieves cases
- Case retrieval tab → Case and biomarker retrieval: predicts biomarkers
- VQA and report tab → VQA and reporting: requests answers
- Prognosis tab → Survival prognosis: requests forecasts
- Surgical planning tab → Resection planning: requests planning
- DICOM viewer tab → DICOM parser and windows: parses scans
- Contour tab → Contour and cropping: requests cropping
- Synthesis tab → Virtual contrast: requests synthesis
- API client → Prediction API: uploads image
- Prediction API → Prediction engine: calls prediction
- Prediction engine → Tumor classifier: runs model
