qaisar701shan commited on
Commit
6b0de0f
·
verified ·
1 Parent(s): 11e0111

Update rules_engine.py

Browse files
Files changed (1) hide show
  1. rules_engine.py +27 -21
rules_engine.py CHANGED
@@ -1,30 +1,36 @@
1
  # rules_engine.py
2
 
3
- import pandas as pd
 
 
 
 
 
4
 
5
- def evaluate_health_risks(df: pd.DataFrame) -> pd.DataFrame:
6
- """
7
- Very simple health risk scoring engine.
8
- Takes input dataframe with health data and adds risk scores.
9
- """
10
 
11
- results = []
 
 
12
 
13
- for _, row in df.iterrows():
14
- risks = {}
15
 
16
- # Example rules (you can expand / modify later)
17
- risks["risk_Type 2 Diabetes Risk"] = 0.8 if row["glucose"] > 126 else 0.2
18
- risks["risk_Hypertension Risk"] = 0.7 if row["systolic_bp"] > 140 else 0.3
19
- risks["risk_Depression/Mood Concern"] = 0.6 if row["sleep_hours"] < 5 else 0.2
20
- risks["risk_Migraine Risk"] = 0.5 if row["screen_time"] > 8 else 0.2
21
- risks["risk_Sleep Apnea Risk"] = 0.7 if row["bmi"] > 30 else 0.3
22
- risks["risk_Anemia Risk"] = 0.6 if row["hemoglobin"] < 12 else 0.2
23
 
24
- results.append(risks)
 
25
 
26
- # Merge with original dataframe
27
- risks_df = pd.DataFrame(results)
28
- final_df = pd.concat([df, risks_df], axis=1)
29
 
30
- return final_df
 
 
 
 
 
 
 
 
 
 
1
  # rules_engine.py
2
 
3
+ def compute_bmi(weight_kg, height_cm):
4
+ """Compute Body Mass Index (BMI)."""
5
+ if height_cm <= 0:
6
+ return 0
7
+ height_m = height_cm / 100
8
+ return round(weight_kg / (height_m ** 2), 2)
9
 
 
 
 
 
 
10
 
11
+ def evaluate_risks(age, bmi, glucose, systolic_bp, diastolic_bp, cholesterol, hemoglobin):
12
+ """Return a dictionary of risk scores (0–100)."""
13
+ risks = {}
14
 
15
+ # Type 2 Diabetes Risk
16
+ risks["Type 2 Diabetes Risk"] = min(100, 0.2 * glucose + 0.3 * bmi + 0.1 * age)
17
 
18
+ # Hypertension Risk
19
+ risks["Hypertension Risk"] = min(100, 0.25 * systolic_bp + 0.15 * diastolic_bp + 0.1 * age)
 
 
 
 
 
20
 
21
+ # Depression/Mood Concern
22
+ risks["Depression/Mood Concern"] = min(100, 0.05 * age + 0.05 * bmi)
23
 
24
+ # Migraine Risk
25
+ risks["Migraine Risk"] = min(100, 0.05 * age + 0.1 * systolic_bp)
 
26
 
27
+ # Sleep Apnea Risk
28
+ risks["Sleep Apnea Risk"] = min(100, 0.3 * bmi + 0.05 * age)
29
+
30
+ # Anemia Risk
31
+ if hemoglobin < 13.5:
32
+ risks["Anemia Risk"] = min(100, (13.5 - hemoglobin) * 15 + 0.1 * age)
33
+ else:
34
+ risks["Anemia Risk"] = 0
35
+
36
+ return risks