Undergraduate dissertation project: web application for geospatial and temporal mapping of infectious diseases in Zimbabwe
# ZimEpi Tracker 🌍🦠
**ZimEpi Tracker** is a web-based geospatial and temporal infectious disease surveillance PROTOTYPE developed for Zimbabwe. It is designed to modernize disease reporting, facilitate real-time spatial analytics, and ensure patient privacy through automated geomasking.
> **IMPORTANT**: This system is a PROTOTYPE. The data included in the repository and local databases is entirely synthetic, anonymized, or public-derived. **NO REAL PATIENT DATA** is included in this prototype.
This repository contains the source code for the prototype, demonstrating a full-stack spatial architecture capable of handling national-scale line-list epidemiological data.
---
## 🎯 Key Features
### 1. 🔐 Role-Oriented Access & Workflows
* **Custom Login Interface**: A dedicated, branded entry point separating clinical and administrative pathways.
* **Health Personnel Dashboard**: A custom case management interface (CRUD) for reporting and managing individual disease records.
* **Administrator Dashboard**: A high-level spatial analytics dashboard for national disease tracking.
### 2. 🗺️ Advanced Geospatial Visualisation
* **Point-Level Mapping**: High-performance rendering of thousands of individual case points using **Deck.GL** and **Leaflet**.
* **Interactive Coordinate Capture**: Integrated **MapLibre** and **OpenLocationCode (Plus Codes)** in the reporting form to ensure highly accurate, standardized patient origin capture.
* **Administrative Context**: Overlays of 101 province and district-level administrative boundaries.
### 3. 📊 Spatial Analytics & Privacy
* **Automated Donut Geomasking**: A privacy-preserving algorithm executed during API serialization. It automatically shifts true patient coordinates into an obscured radius (e.g., min 50m, max 500m) to protect identities while maintaining analytical validity.
* **Backend Statistical Clustering**: Outbreak detection is offloaded directly to the database using **PostGIS `ST_ClusterDBSCAN`* …