File size: 1,180 Bytes
877add7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Tabular risk heads."""

from __future__ import annotations


def predict_risk_heads(features: dict[str, float]) -> dict[str, float]:
    med_count = features.get("med_count", 0.0)
    frailty = features.get("frailty", 0.5)
    adherence = features.get("adherence", 0.7)
    monitoring = features.get("monitoring_gap_count", 0.0)
    ade_history = features.get("ade_history_count", 0.0)
    egfr = features.get("egfr", 60.0)
    ast = features.get("ast", 30.0)
    alt = features.get("alt", 30.0)
    ade = min(1.0, 0.18 + med_count / 19.0 + frailty * 0.27 + monitoring * 0.04)
    hosp = min(1.0, 0.1 + ade * 0.58 + (1.0 - adherence) * 0.2 + ade_history * 0.05)
    falls = min(1.0, 0.1 + frailty * 0.48 + med_count / 33.0 + ade_history * 0.06)
    organ_risk = max(0.0, (35.0 - egfr) / 35.0) + max(0.0, (ast - 80.0) / 80.0) + max(0.0, (alt - 80.0) / 80.0)
    destabilization = min(1.0, 0.16 + (1.0 - adherence) * 0.52 + organ_risk * 0.22)
    burden = min(1.0, med_count / 12.0)
    return {
        "ade_proxy": ade,
        "hospitalization_proxy": hosp,
        "falls_proxy": falls,
        "destabilization_proxy": destabilization,
        "burden_proxy": burden,
    }