add Dagoverzicht, Hypo Events, and Hyper Events pages (FR4, FR5, FR6)
Dagoverzicht stacks one glucose trace per calendar day (small multiples via a shared 0-24h x-axis). The two event pages share a new render_event_level() helper in ui_common.py so Level 1/Level 2 hypo and hyper are rendered identically: count/avg/longest/events-per-week metrics, a time-of-day histogram, and a table of individual events. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
import requests
|
||||
import streamlit as st
|
||||
|
||||
from auth import require_auth
|
||||
from nightscout_client import NightscoutConfigError
|
||||
from reporting import LOW, VERY_LOW
|
||||
from ui_common import (
|
||||
get_colors,
|
||||
load_range_data,
|
||||
render_event_level,
|
||||
select_period_days,
|
||||
)
|
||||
|
||||
st.set_page_config(page_title="Glucose dashboard — Hypo events", page_icon="📊", layout="wide")
|
||||
require_auth()
|
||||
|
||||
st.title("Hypo events")
|
||||
st.caption(
|
||||
"Detectie van hypoglykemie-events volgens de persistentieregel (FR5): een event "
|
||||
"telt pas na >=15 minuten ononderbroken onder de drempel, en eindigt pas na "
|
||||
">=15 minuten ononderbroken herstel."
|
||||
)
|
||||
|
||||
start, end, days = select_period_days(default_label="90 dagen")
|
||||
|
||||
try:
|
||||
glucose, _treatments = load_range_data(start, end)
|
||||
except NightscoutConfigError as exc:
|
||||
st.error(str(exc))
|
||||
st.stop()
|
||||
except (requests.RequestException, ValueError) as exc:
|
||||
st.error(f"Kon geen data ophalen van Nightscout: {exc}")
|
||||
st.stop()
|
||||
|
||||
if glucose.empty:
|
||||
st.info("Geen glucosemetingen gevonden in deze periode.")
|
||||
st.stop()
|
||||
|
||||
colors = get_colors()
|
||||
|
||||
render_event_level(glucose, LOW, "below", f"Level 1 (<{LOW} mmol/L)", days, colors)
|
||||
st.divider()
|
||||
render_event_level(glucose, VERY_LOW, "below", f"Level 2 (<{VERY_LOW} mmol/L)", days, colors)
|
||||
|
||||
st.caption(f"Periode: {start.strftime('%d-%m-%Y')} t/m {end.strftime('%d-%m-%Y')}")
|
||||
Reference in New Issue
Block a user