zeon01's picture
Upload folder using huggingface_hub
adb39f0 verified
Raw
History Blame Contribute Delete
1.25 kB
from __future__ import annotations
from dataclasses import dataclass, asdict, fields
DOMAINS = ["mobility", "tremor", "stiffness", "mood", "sleep", "alertness"]
EVENTS = ["off_episodes", "dyskinesia_spells", "freezing_episodes", "falls", "missed_or_late_meds", "hallucinations"]
@dataclass
class Entry:
date: str # ISO "YYYY-MM-DD"
mobility: int | None = None
tremor: int | None = None
stiffness: int | None = None
mood: int | None = None
sleep: int | None = None
alertness: int | None = None
off_episodes: int = 0
dyskinesia_spells: int = 0
freezing_episodes: int = 0
falls: int = 0
missed_or_late_meds: int = 0
hallucinations: int = 0
note: str = ""
def to_dict(self) -> dict:
return asdict(self)
@classmethod
def from_dict(cls, d: dict) -> "Entry":
names = {f.name for f in fields(cls)}
return cls(**{k: v for k, v in d.items() if k in names})
@dataclass
class Finding:
kind: str # "direction" | "streak" | "event"
domain: str # domain or event name
summary: str # human-readable, descriptive (never diagnostic)
direction: str = "" # "up" | "down" | "stable" | ""
value: float = 0.0
detail: str = ""