File size: 1,743 Bytes
570f681
 
 
 
 
 
8cf1170
570f681
 
8cf1170
 
 
 
570f681
 
 
 
 
 
 
 
 
 
 
 
 
e537345
 
 
570f681
 
e537345
570f681
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8cf1170
5901016
8cf1170
 
5901016
0417bdc
 
 
8cf1170
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from fastapi import FastAPI
import google.generativeai as genai
from pydantic import BaseModel
import os
from dotenv import load_dotenv

# Load API Key
load_dotenv()
API_KEY = os.getenv("GEMINI_API_KEY")

if not API_KEY:
    raise ValueError("GEMINI_API_KEY is missing. Set it in your .env file.")

genai.configure(api_key=API_KEY)

app = FastAPI()

# Request model
class InjuryInput(BaseModel):
    injury_type: str
    age: int
    past_injuries: str
    sport: str
    mobility: int
    pressure: int
    weight_bearing: int
@app.get("/")
def home():
    return {"message": "API is running!"}

@app.post("/analyze-injury")

def analyze_injury(data: InjuryInput):
    severity_level = max(data.mobility, data.pressure, data.weight_bearing)

    recovery_prompt = f"""
    Generate a **personalized recovery plan** for an athlete with the following details:
    - **Injury Type**: {data.injury_type}
    - **Age**: {data.age} years
    - **Sport**: {data.sport}
    - **Past Injuries**: {data.past_injuries}
    - **Injury Severity Level**: {severity_level} (1 = Low, 2 = Medium, 3 = High)
    
    Provide:
    1️⃣ **Rehabilitation Plan**
    2️⃣ **Estimated Recovery Time**
    3️⃣ **Diet & Supplements**
    4️⃣ **Precautions**
    """

    # Call Gemini API
    response = genai.GenerativeModel("gemini-1.5-pro").generate_content(recovery_prompt)

    # Extract response safely
    response = genai.GenerativeModel("gemini-1.5-pro").generate_content(recovery_prompt)
    recovery_plan = response.text if response and hasattr(response, 'text') else "No response received."

    #recovery_plan = response.candidates[0].content if response.candidates else "No response received."

    return {"recovery_plan": recovery_plan}