Spaces:
Sleeping
Sleeping
| import math | |
| import json | |
| def _in_range(val, min_v, max_v): | |
| return (val is None) or (min_v <= val <= max_v) | |
| def assert_valid(data: dict, global_policy_path: str): | |
| with open(global_policy_path, "r", encoding="utf-8") as f: | |
| policy = json.load(f) | |
| ranges = policy["numeric_ranges"] | |
| # Very lightweight checks; the output must contain numeric deltas in the text strings. | |
| # Here, we simply ensure required numeric fields in cost/capacity are non-negative, | |
| # and clinical sections contain unit tokens. | |
| cost = data.get("cost", {}) | |
| for k in ["startup_per_client", "ongoing_per_client", "total_per_client", "total_for_n"]: | |
| v = cost.get(k) | |
| if v is None or v < 0: | |
| raise ValueError(f"UnitValidator: cost.{k} must be >= 0") | |
| cap = data.get("capacity", {}) | |
| if cap.get("total_clients", 0) < 0: | |
| raise ValueError("UnitValidator: capacity.total_clients must be >= 0") | |
| # Check presence of unit tokens in clinical text | |
| clin = data.get("clinical_benefits", {}) | |
| di = (clin.get("diabetes_group") or "").lower() | |
| ndi = (clin.get("non_diabetes_group") or "").lower() | |
| must_tokens = ["%", "mmhg", "kg/m²"] | |
| if not any(tok in di for tok in must_tokens): | |
| raise ValueError("UnitValidator: diabetes_group must include units (%, mmHg, kg/m² where applicable).") | |
| if not any(tok in ndi for tok in must_tokens): | |
| raise ValueError("UnitValidator: non_diabetes_group must include units (%, mmHg, kg/m² where applicable).") | |