import requests import streamlit as st from auth import require_auth from nightscout_client import NightscoutConfigError from reporting import HIGH, VERY_HIGH from ui_common import ( get_colors, load_range_data, render_completeness_warning, render_event_level, select_period_days, ) st.set_page_config(page_title="Glucose dashboard — Hyper events", page_icon="📊", layout="wide") require_auth() st.title("Hyper events") st.caption( "Detectie van hyperglykemie-events volgens dezelfde persistentieregel als de " "Hypo Events-pagina (FR6), symmetrisch toegepast op de bovengrenzen." ) 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() render_completeness_warning(glucose, start, end) colors = get_colors() render_event_level(glucose, HIGH, "above", f"Level 1 (>{HIGH} mmol/L)", days, colors) st.divider() render_event_level(glucose, VERY_HIGH, "above", f"Level 2 (>{VERY_HIGH} mmol/L)", days, colors) st.caption(f"Periode: {start.strftime('%d-%m-%Y')} t/m {end.strftime('%d-%m-%Y')}")