from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel from typing import Any, Dict, List, Optional class Answer(BaseModel): question_code: str value: Any class SessionCreate(BaseModel): language: str answers: List[Answer] class MtsPreparation(BaseModel): session_id: str proposed_presenting_flowchart: Optional[str] = None red_flag_indicators: List[str] = [] suggested_priority_level: Optional[str] = None app = FastAPI(title="Triage-Fragen API", version="0.1.0") app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/health") async def health() -> Dict[str, str]: return {"status": "ok"} @app.post("/sessions", response_model=MtsPreparation) async def create_session(payload: SessionCreate) -> MtsPreparation: session_id = "dummy-session-id" flowchart: Optional[str] = None red_flags: List[str] = [] priority: Optional[str] = None for ans in payload.answers: if ans.question_code == "chief_complaint" and ans.value == "chest_pain": flowchart = "CHEST_PAIN" if ans.question_code == "breathlessness" and ans.value is True: red_flags.append("breathlessness") if ans.question_code == "pain_intensity" and isinstance(ans.value, int) and ans.value >= 8: red_flags.append("severe_pain") if "breathlessness" in red_flags: priority = "RED_OR_ORANGE" return MtsPreparation( session_id=session_id, proposed_presenting_flowchart=flowchart, red_flag_indicators=red_flags, suggested_priority_level=priority, )