Medical AI, 2026
AI-Powered Stroke Emergency Triage System
Two medical imaging models, one on CT and one on MRI, combined into a single triage decision that shows its evidence and exports a clinical-style PDF report.


A completed triage in the React dashboard.
- Stroke
- Yes
- Type
- Mixed or uncertain
- Severity
- High
- Priority
- Urgent
CT haemorrhage probability, 8 slices, highest per label
MRI ischaemic lesion volume100.05 ml
Research prototype. Not clinically validated and not a medical device.
- Mean validation AUC across six CT haemorrhage labels
- 0.9878
- Best single label: intraventricular haemorrhage
- 0.9949
- Validation Dice, MRI lesion segmentation (ISLES 2022)
- 0.552 ± 0.272
- ISLES 2022 MRI cases, preprocessed once into a tensor cache
- 250
The problem
Stroke is the textbook time-critical emergency. The treatment depends on the type: a clot-dissolving drug can save a patient with a blocked vessel and harm a patient who is bleeding. So imaging comes first, and in many hospitals imaging waits for a radiologist, reading scans slice by slice.
The project asked whether software could triage those scans fast enough to matter, while showing its reasoning clearly enough that a clinician would trust it. It was designed with Sri Lankan hospitals in mind, where radiology cover outside the major cities can be thin.
The constraint
CT and MRI answer different questions. Non-contrast CT is fast and widely available, and it shows bleeding well. MRI, especially diffusion-weighted imaging, shows early ischaemic tissue that CT can miss. No single model does both well, and the two public datasets are labelled differently: RSNA labels CT slices, while ISLES 2022 provides 3D MRI volumes with lesion masks.
Explainability was a requirement, not a feature. A probability alone is not enough in emergency care. And there were the practical limits of a student project: one RTX 3080 with 12 GB of memory, a Ryzen 5 3600, 24 GB of RAM, and Windows.
The decision
A dual-model architecture with a transparent triage layer.
- CT branch. DICOM slices are converted with RescaleSlope and RescaleIntercept, windowed to brain-relevant intensities, resized to 512 × 512 and duplicated into three channels so ImageNet-pretrained weights apply. An EfficientNet-B0 with six outputs is trained with BCEWithLogitsLoss, because one slice can show more than one haemorrhage type. Class weighting handles rare labels, and mixed-precision training keeps memory in budget.
- MRI branch. DWI, ADC and FLAIR volumes are resampled, reoriented to RAS, normalised, cropped to the foreground and stacked into one three-channel volume. A MONAI 3D U-Net is trained with DiceCE loss. Because lesions occupy a tiny fraction of the brain,
RandCropByPosNegLabeldmakes sure the model actually sees lesion voxels. - Fusion. A rule-based triage layer combines both outputs into stroke presence, type, severity, review priority and a list of reasons. Rules instead of a third learned model, so every decision can be traced to the evidence behind it. Borderline results are flagged for a radiologist to confirm.
- Evidence. Grad-CAM heatmaps show which regions drove each CT prediction. On MRI, the predicted lesion mask is its own explanation, reported with its volume in millilitres.
- Delivery. A FastAPI backend with
/health,/auth/login,/triage/paths,/gradcam/ct_sliceand/report/pdf, protected by an HMAC-signed bearer token. A React and Tailwind dashboard. A ReportLab PDF report for each study.
The outcome
| Model | Task | Metric | Result |
|---|---|---|---|
| EfficientNet-B0 | CT haemorrhage, six labels | Mean AUC | 0.9878 |
| EfficientNet-B0 | Any haemorrhage | AUC | 0.9858 |
| EfficientNet-B0 | Intraventricular | AUC | 0.9949 |
| EfficientNet-B0 | Epidural | AUC | 0.9921 |
| EfficientNet-B0 | Intraparenchymal | AUC | 0.9898 |
| EfficientNet-B0 | Subdural | AUC | 0.9841 |
| EfficientNet-B0 | Subarachnoid | AUC | 0.9800 |
| 3D U-Net | MRI ischaemic lesions | Mean Dice | 0.5524 ± 0.2721 |
| 3D U-Net | MRI ischaemic lesions | Mean HD95 | 23.49 ± 19.40 |
The CT classifier separates positive and negative cases very well on the validation split. The MRI segmenter is the part with room to grow: some small or difficult lesions scored a Dice close to zero, and those cases are reported rather than hidden. The next steps are an nnU-Net baseline, lesion-size stratified evaluation, post-processing and uncertainty estimates.
On a test case combining an RSNA CT sample with an ISLES MRI case, the system reported a stroke of mixed or uncertain type, high severity and urgent review priority, with an any-haemorrhage probability of 0.67, an intraventricular probability of 0.35 and an ischaemic lesion volume of 100.05 ml. Its reasons list read exactly that.
The real screens








