LianHP's picture
Upload folder using huggingface_hub
61c5cfc verified
import pandas as pd
import gradio as gr
def risk_stratify(file):
try:
df = pd.read_csv(file.name)
except Exception as e:
return f"❌ Error reading file: {e}"
required_cols = [
"member_id",
"age",
"chronic_conditions",
"ed_visits_past_year",
"inpatient_admissions",
"total_cost",
"behavioral_health_flag",
"pharmacy_rx_count",
"social_risk_score"
]
missing = [c for c in required_cols if c not in df.columns]
if missing:
return f"❌ Missing required columns: {missing}"
# Risk scoring
df["risk_score"] = 0
df["risk_score"] += (df["age"] >= 65).astype(int)
df["risk_score"] += (df["chronic_conditions"] >= 2).astype(int) * 2
df["risk_score"] += (df["ed_visits_past_year"] >= 3).astype(int) * 2
df["risk_score"] += (df["inpatient_admissions"] >= 1).astype(int) * 2
df["risk_score"] += (df["total_cost"] >= 20000).astype(int) * 2
df["risk_score"] += (df["behavioral_health_flag"] == 1).astype(int) * 2
df["risk_score"] += (df["pharmacy_rx_count"] >= 10).astype(int)
df["risk_score"] += (df["social_risk_score"] >= 5).astype(int)
# Categorization
def categorize(score):
if score >= 6:
return "High Risk"
elif score >= 3:
return "Moderate Risk"
else:
return "Low Risk"
df["risk_category"] = df["risk_score"].apply(categorize)
# Summary output
counts = df["risk_category"].value_counts().to_dict()
summary = f"""
# Medicaid Risk Stratification Results
### **Member Count by Risk Group:**
- High Risk: **{counts.get("High Risk", 0)}**
- Moderate Risk: **{counts.get("Moderate Risk", 0)}**
- Low Risk: **{counts.get("Low Risk", 0)}**
---
### **Method Summary**
This risk stratification uses:
- Chronic disease counts
- ED and inpatient utilization
- Annual cost
- Pharmacy use
- Behavioral health indicator
- Social risk
- Member age
A risk score ≥ 6 indicates **High Need** for care management outreach.
Upload another file to re-run the analysis.
"""
return summary
with gr.Blocks() as demo:
gr.Markdown("""
# Medicaid Risk Stratification Tool
Upload a Medicaid member dataset to calculate risk scores.
### Required CSV Columns:
`member_id, age, chronic_conditions, ed_visits_past_year, inpatient_admissions, total_cost, behavioral_health_flag, pharmacy_rx_count, social_risk_score`
""")
file = gr.File(label="Upload Medicaid CSV")
output = gr.Markdown()
file.upload(risk_stratify, file, output)
if __name__ == "__main__":
demo.launch(share=True)