from fastapi import APIRouter, HTTPException from pydantic import BaseModel from typing import Any, Dict, List from app.services.cameroon_data import get_cameroon_data router = APIRouter() class SimilarCasesRequest(BaseModel): query_text: str top_k: int = 10 @router.get("/stats/overview") def stats_overview() -> Dict[str, Any]: data = get_cameroon_data() return data.stats_overview() @router.get("/stats/diseases/{disease_name}") def stats_disease(disease_name: str) -> Dict[str, Any]: data = get_cameroon_data() return data.stats_disease(disease_name) @router.post("/search/similar-cases") def search_similar_cases(req: SimilarCasesRequest) -> Dict[str, Any]: data = get_cameroon_data() results = data.search_similar_cases(req.query_text, top_k=req.top_k) return { "similar_cases": [ { "summary_id": r.summary_id, "diagnosis": r.diagnosis, "age": r.age, "gender": r.gender, "summary_snippet": r.summary_snippet, "similarity_score": r.similarity_score, } for r in results ] } @router.get("/patterns/seasonal") def patterns_seasonal() -> Dict[str, Any]: data = get_cameroon_data() return data.seasonal_patterns() @router.get("/patterns/age-gender") def patterns_age_gender() -> Dict[str, Any]: data = get_cameroon_data() return data.age_gender_distribution()