# -*- coding: utf-8 -*- """LastwebSiteforAlzahimer.ipynb Automatically generated by Colab. Original file is located at https://colab.research.google.com/drive/14idWYo0QCi5Bokd4Fhb6Apz8XdBPIa4b """ import gradio as gr import numpy as np sections = { "Mediterranean Diet Assessment (Yes/No)": [ "1. Use olive oil as main cooking fat?", "2. Eat more than or equal 2 servings of vegetables daily?", "3. Eat more than or equal 3 servings of fruit daily?", "4. Eat fish/seafood more than or equal 3 times/week?", "5. Eat legumes more than or equal 2 times/week?", "6. Eat nuts more than or equal 3 times/week?", "7. Limit red/processed meats?", "8. Choose whole grains?", "9. Avoid sugary snacks/drinks?", "10. Drink 6-8 glasses water/day?" ], "Sleep Quality Assessment": [ "1. Trouble falling asleep more 30 mins?", "2. Wake up more 1 time/night?", "3. Restless/disturbed sleep?", "4. Poor sleep quality?", "5. Daytime fatigue?" ], "Health Metrics": [ "Weight (kg)", "Height (cm)", "Diabetes?", "Smoker?" ] } def calculate_total_score(*answers): try: # التحقق من المدخلات if any(a is None for a in answers[:10]): return "❌ Please answer all Mediterranean Diet questions.", 0 if any(a is None for a in answers[10:15]): return "❌ Please answer all Sleep Quality questions.", 0 # حساب النتائج med_diet = sum([1 if a == "Yes" else 0 for a in answers[0:10]]) sleep_score = sum([2 if a == "Yes" else 0 for a in answers[10:15]]) # معالجة النشاط البدني vigorous_days, vigorous_hrs, vigorous_mins, \ moderate_days, moderate_hrs, moderate_mins, \ walk_days, walk_hrs, walk_mins, \ sitting_hrs, sitting_mins = [a or 0 for a in answers[15:26]] vigorous = vigorous_days * (vigorous_hrs*60 + vigorous_mins) moderate = moderate_days * (moderate_hrs*60 + moderate_mins) walking = walk_days * (walk_hrs*60 + walk_mins) met = (vigorous*8.0) + (moderate*4.0) + (walking*3.3) activity = 0 if met >= 6000: activity = 10 elif met >= 3000: activity = 9 elif met >= 1500: activity = 7 elif met >= 600: activity = 5 elif met >= 100: activity = 3 # حساب الBMI weight, height = answers[25:27] bmi_score = 10 if (weight / ((height / 100) ** 2)) >= 30 else 0 # عوامل الخطر diabetes, smoker = answers[27:29] risk = 5*(diabetes == "Yes") + 5*(smoker == "Yes") total_score = med_diet + sleep_score + activity + bmi_score + risk final_score = int(round((total_score/50)*10)) # إنشاء التقرير if final_score >= 7: status_color = "#2ecc71" status_title = "Low Alzheimer's Risk - Excellent" status_icon = "🛡️" elif final_score >= 4: status_color = "#f1c40f" status_title = "Moderate Risk - Needs Improvement" status_icon = "⚠️" else: status_color = "#e74c3c" status_title = "High Alzheimer's Risk - Take Action" status_icon = "🚨" # تحليل الفئات categories = { "Diet": { "score": med_diet, "max": 10, "advice": { "good": ["Maintain your healthy eating habits!", "Increase fish and olive oil consumption"], "bad": ["Reduce red meat intake", "Choose whole grains over refined carbs"] } }, "Sleep": { "score": sleep_score, "max": 10, "advice": { "good": ["Maintain consistent sleep schedule"], "bad": ["Avoid caffeine before bedtime", "Limit screen time before sleep"] } }, "Activity": { "score": activity, "max": 10, "advice": { "good": ["Great activity level! Keep it up!"], "bad": ["Aim for 150 mins exercise/week", "Take walking breaks regularly"] } }, "Health": { "score": 20 - (bmi_score + risk), "max": 20, "advice": { "good": ["Maintain healthy weight"], "bad": ["Monitor blood sugar levels", "Consider smoking cessation programs"] } } } category_cards = "" for name, data in categories.items(): percent = (data['score']/data['max'])*100 color = "#2ecc71" if percent >= 60 else "#f1c40f" if percent >= 40 else "#e74c3c" category_cards += f"""
{str(e)}
Please verify all input values
Answer all questions honestly
""") inputs = [] # Mediterranean Diet with gr.Group(elem_classes="section"): gr.Markdown("### Mediterranean Diet (Yes/No)") for q in sections["Mediterranean Diet Assessment (Yes/No)"]: inputs.append(gr.Radio(["Yes", "No"], label=q)) # Sleep Quality with gr.Group(elem_classes="section"): gr.Markdown("### Sleep Quality Evaluation") for q in sections["Sleep Quality Assessment"]: inputs.append(gr.Radio(["Yes", "No"], label=q)) # Physical Activity - IPAQ with gr.Group(elem_classes="section"): gr.Markdown("### International Physical Activity Questionnaire (IPAQ – Short Form)") gr.Markdown("**1. Vigorous Physical Activity**") gr.Markdown("During the last 7 days, on how many days did you do vigorous physical activities (e.g., heavy lifting, aerobics, fast bicycling)?") inputs.append(gr.Number(label="Days per week", precision=0, minimum=0, maximum=7)) inputs.append(gr.Number(label="Hours per day", precision=0, minimum=0)) inputs.append(gr.Number(label="Minutes per hour", precision=0, minimum=0, maximum=59)) gr.Markdown("**2. Moderate Physical Activity**") gr.Markdown("During the last 7 days, on how many days did you do moderate physical activities (e.g., carrying light loads, cycling at regular pace, doubles tennis)?") inputs.append(gr.Number(label="Days per week", precision=0, minimum=0, maximum=7)) inputs.append(gr.Number(label="Hours per day", precision=0, minimum=0)) inputs.append(gr.Number(label="Minutes per hour", precision=0, minimum=0, maximum=59)) gr.Markdown("**3. Walking**") gr.Markdown("During the last 7 days, on how many days did you walk for at least 10 minutes at a time (including work, home, travel, and leisure)?") inputs.append(gr.Number(label="Days per week", precision=0, minimum=0, maximum=7)) inputs.append(gr.Number(label="Hours per day", precision=0, minimum=0)) inputs.append(gr.Number(label="Minutes per hour", precision=0, minimum=0, maximum=59)) gr.Markdown("**4. Sitting Time**") gr.Markdown("During the last 7 days, how much time did you spend sitting on a weekday?") inputs.append(gr.Number(label="Hours per day", precision=0, minimum=0)) inputs.append(gr.Number(label="Minutes per hour", precision=0, minimum=0, maximum=59)) # Health Metrics with gr.Group(elem_classes="section"): gr.Markdown("### Health Indicators") for q in sections["Health Metrics"]: if q in ["Diabetes?", "Smoker?"]: inputs.append(gr.Dropdown(["Yes", "No"], label=q)) else: inputs.append(gr.Number(label=q, precision=1)) submit_btn = gr.Button("Generate Risk Report", variant="primary") output = gr.HTML(label="Risk Assessment Report") submit_btn.click(fn=calculate_total_score, inputs=inputs, outputs=[output, diet_score_state]) demo.launch(share=True)