Medica_DecisionSupportAI / mdsi_analysis.py
Rajan Sharma
Upload 14 files
f051f2e verified
raw
history blame
1.81 kB
\
from typing import Dict, List
def capacity_projection(clients_per_day: int = 18, clinic_days_per_team: int = 48, teams: int = 6) -> int:
return clients_per_day * clinic_days_per_team * teams
def cost_estimate(n_clients: int, variable_per_client: float = 74.0, fixed_total: float = 75000.0) -> Dict:
total_variable = variable_per_client * n_clients
total = total_variable + fixed_total
return {
"n_clients": n_clients,
"variable_per_client": variable_per_client,
"fixed_total": fixed_total,
"total_variable": total_variable,
"total_cost": total,
"cost_per_client": total / max(1, n_clients)
}
def prioritize_settlements(records: List[Dict]) -> List[Dict]:
# records: [{name, population, risk_index, access_burden, repeat_opportunity}]
if not records:
return []
def scale(vals):
mn, mx = min(vals), max(vals)
return [0.0 if mx==mn else (v-mn)/(mx-mn) for v in vals]
pop_s = scale([r.get("population", 0) for r in records])
risk_s = scale([r.get("risk_index", 0) for r in records])
acc_s = scale([r.get("access_burden", 0) for r in records])
rep_s = scale([r.get("repeat_opportunity", 0) for r in records])
out = []
for i, r in enumerate(records):
score = 0.35*pop_s[i] + 0.35*risk_s[i] + 0.15*acc_s[i] + 0.15*rep_s[i]
rr = dict(r); rr["priority_score"] = round(score, 3)
out.append(rr)
out.sort(key=lambda x: x["priority_score"], reverse=True)
return out
def outcomes_summary(delta_a1c=-0.4, delta_sbp=-5, delta_bmi=-0.8, delta_ldl=-12):
return {
"median_delta_a1c_pct": delta_a1c,
"median_delta_systolic_bp_mmHg": delta_sbp,
"median_delta_bmi_kg_m2": delta_bmi,
"median_delta_ldl_mg_dl": delta_ldl
}