Resilient public-health intelligence when climate disruption breaks normal infrastructure.
Live Dashboard · Live API · Interactive API Docs · Hackathon Submission · Source Code
RISING means Resilient Intelligent Surveillance & Integrated Next-Generation Healthcare. It combines governed ASEAN health data, resilient climate-event processing, an explainable disease-risk model, FastAPI endpoints, and an interactive Streamlit decision-support dashboard.
From a fresh clone with Python 3.11+:
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python -m pytest -qStart the API:
python -m uvicorn main:app --reloadOpen http://127.0.0.1:8000/docs, or get a real sample prediction:
curl http://127.0.0.1:8000/api/v1/disease-risk/sampleFor a pilot-like local deployment, copy .env.example to .env, replace all
placeholder secrets, then run docker compose up --build -d. Liveness is at
/health, dependency readiness at /ready, and API-key-protected Prometheus
metrics at /metrics. See the pilot deployment runbook.
Start the dashboard in a second terminal:
python -m streamlit run demo/pipeline_operations_dashboard.pyThe dashboard opens at http://localhost:8501. It automatically creates the small streaming-demo outputs when they do not exist.
Typhoons, floods, heatwaves, and rural infrastructure outages can delay public-health data. Records may arrive late, duplicate, become malformed, or disappear before decision-makers can act. Project RISING treats disruption as an expected operating condition and preserves records through validation, buffering, retry, idempotency, and dead-letter isolation.
graph LR
subgraph Sources [Data sources]
A[ASEAN health CSVs]
B[Climate and weather events]
end
A --> C[Batch ingestion and transformation]
B --> D[Streaming ingestion]
C --> E{Schema and quality validation}
D --> E
E -->|Invalid| F[Dead Letter Queue]
E -->|Temporary failure| G[Local buffer and retry]
G --> E
E -->|Valid| H[Deduplication and checkpoints]
H --> I[Trusted storage and PostgreSQL]
I --> J[Feature calculation]
J --> K[Explainable climate-health risk model]
K --> L[FastAPI]
K --> M[Streamlit dashboard]
L --> N[Public-health decision support]
M --> N
The result is both operational resilience and a visible decision-support output: a country-specific, 14-day mosquito-borne disease-risk estimate with the climate and health factors that produced it.
POST /api/v1/disease-risk/predict combines requested weather conditions with the latest available country values for malaria prevalence and infant mortality. The transparent model weights climate suitability at 70% and historical health vulnerability at 30%. It is deterministic, explainable, and intentionally labeled as a hackathon decision-support model—not a clinical or epidemiological forecast.
Example request:
curl -X POST http://127.0.0.1:8000/api/v1/disease-risk/predict \
-H "Content-Type: application/json" \
-d '{"country":"Philippines","disease":"dengue","temperature_c":29,"rainfall_mm":180,"humidity_pct":85}'Example output (generated by the repository, abbreviated):
{
"country": "Philippines",
"disease": "Dengue",
"forecast_window": "next 14 days",
"risk_score": 66.9,
"risk_probability": 0.669,
"risk_level": "high",
"model": {
"name": "RISING Explainable Climate-Health Risk Model",
"version": "1.0.0",
"type": "deterministic statistical scoring model"
},
"recommendations": [
"Escalate vector-control and case-surveillance activities.",
"Pre-position diagnostics, treatment supplies, and response staff."
]
}Run the endpoint to obtain the current exact output. The checked-in test suite verifies that the wet-weather scenario has higher risk than a dry scenario.
The Streamlit app provides two judge-ready views in one lightweight UI:
- Climate-health decision support: choose country, disease, temperature, rainfall, and humidity; inspect the score, level, evidence, recommendations, and API-ready JSON.
- Pipeline operations: inspect accepted events, DLQ records, checkpoints, retry recovery, record routing, and optional warehouse status.
| Climate-health decision support | Pipeline operations dashboard |
|---|---|
![]() |
![]() |
The deployed FastAPI includes interactive Swagger documentation at the
live /docs endpoint.
Run the batch ETL:
python -m pipelines.run_etlRun the resilient streaming scenario:
python demo/run_streaming_demo.pyOptionally load accepted events into PostgreSQL:
docker compose up -d postgres
python demo/run_streaming_demo.py --load-postgresInspect warehouse rows:
docker compose exec postgres psql -U rising_user -d project_rising -c "SELECT event_id, observed_at, temperature_c, humidity_pct, rainfall_mm FROM fact_weather_observation ORDER BY observed_at DESC LIMIT 10;"| Method | Endpoint | Purpose |
|---|---|---|
GET |
/health |
Service health check |
GET |
/ready |
Required data and dependency readiness |
GET |
/metrics |
Prometheus metrics (protected when API keys are enabled) |
GET |
/api/v1/health-indicators |
Filter processed health indicators |
GET |
/api/v1/climate-events |
Read accepted climate events when configured |
GET |
/api/v1/pipeline/status |
Inspect pipeline readiness |
GET |
/api/v1/countries/{country}/risk |
Legacy comparative country score |
POST |
/api/v1/disease-risk/predict |
Explainable climate-health prediction |
GET |
/api/v1/disease-risk/sample |
Ready-to-show prediction sample |
Example health query:
curl "http://127.0.0.1:8000/api/v1/health-indicators?country=Philippines&indicator=malaria_prevalence&limit=5"| Layer | Technology |
|---|---|
| API and validation | FastAPI, Pydantic, Uvicorn |
| Data processing | Python, pandas, NumPy, Pandera |
| Decision support | Explainable deterministic statistical model |
| Dashboard | Streamlit, Plotly |
| Streaming resilience | JSONL event stream, retry queue, DLQ, checkpoints |
| Warehouse | PostgreSQL, SQLAlchemy, Docker Compose |
| Quality | pytest, GitHub Actions |
Project-Rising/
├── api/ FastAPI routes and services
│ ├── routes/ Health, climate, pipeline, and risk endpoints
│ └── services/ Data access and disease-risk model
├── data/ Raw and processed ASEAN datasets
├── demo/ Stream resilience demo and Streamlit dashboard
├── docs/ Architecture, governance, methodology, demo assets
├── pipelines/ Batch extract, transform, validate, and load stages
├── schemas/ Health and weather data contracts
├── sql/ Warehouse dimensions, facts, and metadata DDL
├── streaming/ Producer, consumer, retry, DLQ, and deduplication
├── tests/ API, model, pipeline, and resilience tests
├── warehouse/ PostgreSQL connectivity and weather loader
├── main.py FastAPI application entry point
└── docker-compose.yml Local PostgreSQL service
| Requirement | Implementation evidence | Status |
|---|---|---|
| ADHCRI / climate-resilient healthcare | Resilient hybrid pipeline, retries, DLQ, checkpoints | Implemented |
| Health and climate data integration | Processed ASEAN indicators plus climate-event scenarios | Implemented |
| AI / intelligent decision support | Explainable disease-risk endpoint and interactive controls | Implemented |
| Working backend | FastAPI app and Swagger/OpenAPI docs | Implemented |
| Data engineering / ETL | Batch pipeline, schema validation, metadata, warehouse loading | Implemented |
| Interactive presentation | Streamlit decision-support and operations dashboard | Implemented |
| End-to-end story | Source-to-decision diagram, API, dashboard, demo script | Implemented |
| Reliability and cybersecurity | Validation, isolation, idempotency, security architecture | Implemented/design documented |
| Testing and reproducibility | pytest suite and GitHub Actions | Implemented |
| UN SDG alignment | SDG 3, 9, 13, and 17 | Aligned |
| Public deployment | API and Streamlit dashboard | Implemented |
- System architecture
- End-to-end data flow
- AI and decision-support architecture
- Security architecture
- Climate-resilience architecture
- Original resilience demo guide
- The model uses aggregated public-health data and user-supplied weather conditions.
- It provides an explainable preparedness signal, not patient-level advice.
- It has not been trained or clinically validated against outbreak labels.
- Simulated climate events prove resilience behavior; a live weather provider remains a production integration.
- Human public-health teams remain responsible for decisions and local verification.
Released under the MIT License.

