mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 13:01:00 +00:00
Introduce src/lib/reference-ranges.ts: a structured, citation-backed per-metric reference-range backbone (band + source body + year) with a deterministic four-state placement helper, read by the UI surfaces. Each band traces to the medical-citations registry, which gains the supporting sources (ACC/AHA 2017 and ESC 2024 blood pressure, StatPearls pulse pressure and mean arterial pressure, ESC/ESH 2018 pulse-wave velocity, FDA 2024 and StatPearls pulse oximetry, J Gen Intern Med 2019 temperature, RCP NEWS2 and American Lung Association respiratory rate, visceral-fat imaging literature, AHA 2024 resting heart rate, ESC/NASPE 1996 HRV, Wilcox 2000, ACOG 651, Phillips 2017 and CDC 2024 sleep). Blood pressure keeps ESH 2023 as the labelled default; ACC/AHA 2017 and ESC 2024 appear only as displayed placement context. Enrich the metric explainers with concise cited reference bands and a general-guidance tooltip on every metric page: a darker-skin pulse-oximeter over-read caveat, device-proxy honesty for readiness/recovery/strain/stress, an HRV day-to-day-noise note, and a resting-heart-rate clarification. Fill the empty registry normal ranges, reconcile the steps green floor to 8,000, and tighten the body-temperature band below the fever line. Add free pulse-pressure and mean-arterial-pressure context on the blood- pressure detail page, plus cycle-physiology and sleep-hygiene copy across all six locales. Cycle thresholds carry a verification marker pending an ACOG source check.
498 lines
19 KiB
TypeScript
498 lines
19 KiB
TypeScript
/**
|
||
* Single source of truth for medical guideline citations.
|
||
*
|
||
* Every threshold, every range, every "ESC/ESH says…" statement in the
|
||
* code or AI prompts MUST reference one of the entries below — either
|
||
* by importing the constant directly or by quoting the same `name` and
|
||
* `url` in a comment above the value.
|
||
*
|
||
* Adding a new citation:
|
||
* 1. Verify the source against THREE independent reputable references
|
||
* (guideline document + WHO/fachgesellschaft + peer-reviewed paper
|
||
* or government publication is the gold standard).
|
||
* 2. Capture the publication URL so the truthfulness drift-test can
|
||
* re-resolve it.
|
||
* 3. Document any caveat ("BIA-derived, not DEXA-equivalent",
|
||
* "pediatric only", "treated cohort only") inline so consumers
|
||
* can decide whether the citation applies to their use case.
|
||
*
|
||
* Drift-test (`src/lib/__tests__/medical-citations.test.ts`) asserts
|
||
* that every CITATIONS entry has a non-empty url + caveat field.
|
||
*/
|
||
|
||
export interface Citation {
|
||
/** Stable id used to reference this citation in code. */
|
||
readonly id: string;
|
||
/** Human-readable name shown in UI ("source" attribution). */
|
||
readonly name: string;
|
||
/** Year of publication. */
|
||
readonly year: number;
|
||
/** Stable URL to the source document. */
|
||
readonly url: string;
|
||
/** One-sentence caveat about scope or limitation. */
|
||
readonly caveat: string;
|
||
}
|
||
|
||
export const CITATIONS = {
|
||
/**
|
||
* 2023 ESH Guidelines for the management of arterial hypertension.
|
||
* The last joint ESC/ESH guideline was 2018; ESH published 2023
|
||
* standalone (ESC withdrew from the joint authoring). Targets that
|
||
* HealthLog uses (SBP 120-129 / DBP 70-79 for <65; SBP 130-139 / DBP
|
||
* 70-79 for ≥65) are unchanged from 2018 to 2023.
|
||
*/
|
||
ESH_2023_HYPERTENSION: {
|
||
id: "esh-2023-hypertension",
|
||
name: "ESH 2023",
|
||
year: 2023,
|
||
url: "https://journals.lww.com/jhypertension/fulltext/2023/12000/2023_esh_guidelines_for_the_management_of_arterial.2.aspx",
|
||
caveat: "Pure-hypertension guideline; not a joint ESC document since 2023.",
|
||
},
|
||
|
||
/**
|
||
* Saint-Maurice PF, et al. "Association of daily step count and step
|
||
* intensity with mortality among US adults." JAMA. 2020.
|
||
* The paper reports continued dose-response benefit (HR 0.49 at 8k
|
||
* vs 4k, HR 0.35 at 12k vs 4k) — NOT a plateau. The plateau-shaped
|
||
* finding belongs to Paluch 2022 Lancet Public Health (PMID
|
||
* 35247352, age-stratified meta-analysis). WHO 2020 PA guidelines
|
||
* publish minutes per week, NOT a step quota — DO NOT cite WHO
|
||
* for a step number.
|
||
*/
|
||
STEPS_SAINT_MAURICE_2020: {
|
||
id: "steps-saint-maurice-2020",
|
||
name: "Saint-Maurice JAMA 2020",
|
||
year: 2020,
|
||
url: "https://jamanetwork.com/journals/jama/fullarticle/2763292",
|
||
caveat:
|
||
"U.S. adult cohort, observational; benefit accumulates strongly through ~12k steps/day (continued dose-response, not a plateau).",
|
||
},
|
||
|
||
/**
|
||
* WHO 2020 Guidelines on Physical Activity and Sedentary Behaviour.
|
||
* Adults: 150-300 min/wk moderate OR 75-150 min/wk vigorous activity.
|
||
* Cite this document for activity time, NOT for steps.
|
||
*/
|
||
WHO_2020_PA: {
|
||
id: "who-2020-physical-activity",
|
||
name: "WHO 2020 Physical Activity",
|
||
year: 2020,
|
||
url: "https://www.who.int/publications/i/item/9789240015128",
|
||
caveat: "Publishes minutes/week, not a step quota.",
|
||
},
|
||
|
||
/**
|
||
* BTS Emergency Oxygen Guideline 2017 — explicit treatment target
|
||
* 94-98% saturation (88-92% for chronic hypercapnia risk). Used as
|
||
* comparison anchor for HealthLog's consumer band.
|
||
*/
|
||
BTS_2017_OXYGEN: {
|
||
id: "bts-2017-emergency-oxygen",
|
||
name: "BTS 2017 Emergency Oxygen",
|
||
year: 2017,
|
||
url: "https://thorax.bmj.com/content/72/Suppl_1/ii1",
|
||
caveat: "Hospital emergency context, not consumer monitoring.",
|
||
},
|
||
|
||
/**
|
||
* NICE NG115 — Chronic obstructive pulmonary disease in over 16s:
|
||
* diagnosis and management. Recommends ≤92% SpO2 as escalation
|
||
* threshold ("call provider").
|
||
*/
|
||
NICE_NG115_COPD: {
|
||
id: "nice-ng115-copd",
|
||
name: "NICE NG115",
|
||
year: 2018,
|
||
url: "https://www.nice.org.uk/guidance/ng115",
|
||
caveat: "COPD-focused; useful as the 'call provider' floor.",
|
||
},
|
||
|
||
/**
|
||
* ADA Standards of Medical Care in Diabetes — 2024 (§6 Glycemic
|
||
* Targets). Pre-prandial 80-130 mg/dL, post-prandial <180 mg/dL.
|
||
* No published adult bedtime target — ISPAD 2022 publishes 80-140
|
||
* for pediatric T1D.
|
||
*/
|
||
ADA_2024_GLYCEMIC: {
|
||
id: "ada-2024-glycemic",
|
||
name: "ADA 2024 Standards of Care",
|
||
year: 2024,
|
||
url: "https://diabetesjournals.org/care/article/47/Supplement_1/S111/153957",
|
||
caveat:
|
||
"Pre-prandial 80-130, post-prandial <180; no published adult bedtime target.",
|
||
},
|
||
|
||
/**
|
||
* ISPAD Clinical Practice Consensus Guidelines 2022 — pediatric
|
||
* T1D bedtime target 80-140 mg/dL. NOT validated for adults.
|
||
*/
|
||
ISPAD_2022_PEDIATRIC: {
|
||
id: "ispad-2022-pediatric",
|
||
name: "ISPAD 2022",
|
||
year: 2022,
|
||
url: "https://onlinelibrary.wiley.com/doi/10.1111/pedi.13455",
|
||
caveat: "Pediatric T1D context; not validated for adult use.",
|
||
},
|
||
|
||
/**
|
||
* ACE (American Council on Exercise) body-fat percentage standards.
|
||
* Essential fat: M 2-5% / F 10-13%. Athletes: M 6-13% / F 14-20%.
|
||
* Fitness: M 14-17% / F 21-24%. Acceptable: M 18-24% / F 25-31%.
|
||
* Obese: M 25%+ / F 32%+. Source widely cited; ACE bases the bands
|
||
* on Heyward & Wagner "Applied Body Composition Assessment".
|
||
*/
|
||
ACE_BODY_FAT: {
|
||
id: "ace-body-fat-standards",
|
||
name: "ACE Body-Fat Standards",
|
||
year: 2009,
|
||
url: "https://www.acefitness.org/resources/everyone/blog/112/what-are-the-guidelines-for-percentage-of-body-fat-loss/",
|
||
caveat:
|
||
"Reference categories; clinical decisions should use DEXA or hydrostatic.",
|
||
},
|
||
|
||
/**
|
||
* AASM 2015 — adults need 7+ hours of sleep on a regular basis.
|
||
* 9+ hours acceptable for young adults, less for older adults.
|
||
*/
|
||
AASM_2015_SLEEP: {
|
||
id: "aasm-2015-adult-sleep",
|
||
name: "AASM 2015 Adult Sleep Duration",
|
||
year: 2015,
|
||
url: "https://aasm.org/resources/pdf/pressroom/adult-sleep-duration-consensus.pdf",
|
||
caveat: "Target ≥7h adults; older adults may need slightly less.",
|
||
},
|
||
|
||
/**
|
||
* Watson PE, et al. "Total body water volumes for adult males and
|
||
* females estimated from simple anthropometric measurements." Am J
|
||
* Clin Nutr. 1980. Establishes the canonical TBW (L) equations
|
||
* referenced by Withings hydration estimates.
|
||
*/
|
||
WATSON_1980_TBW: {
|
||
id: "watson-1980-tbw",
|
||
name: "Watson 1980 TBW formula",
|
||
year: 1980,
|
||
url: "https://pubmed.ncbi.nlm.nih.gov/6986753/",
|
||
caveat:
|
||
"Original anthropometric TBW equations; predictive, not measurement.",
|
||
},
|
||
|
||
/**
|
||
* ICRP Publication 89 (2002) — Reference values for adult human TBW
|
||
* (~42 L male, ~29 L female). Used as bounds for plausibility checks.
|
||
*/
|
||
ICRP_89_REFERENCE_MAN: {
|
||
id: "icrp-89-reference-man",
|
||
name: "ICRP 89 Reference Man",
|
||
year: 2002,
|
||
url: "https://www.icrp.org/publication.asp?id=ICRP%20Publication%2089",
|
||
caveat:
|
||
"Reference values for an idealised adult; individual variation broad.",
|
||
},
|
||
|
||
// ── v1.18.6 — reference-range backbone sources ──
|
||
|
||
/**
|
||
* AHA — All About Heart Rate (resting + target heart rates), 2024.
|
||
* Normal adult resting 60–100 bpm; endurance athletes benignly 40–60.
|
||
* Consumer-facing orientation; symptomatic concern is the trigger for
|
||
* care, not the number alone.
|
||
*/
|
||
AHA_2024_RHR: {
|
||
id: "aha-2024-rhr",
|
||
name: "AHA 2024 Heart Rate",
|
||
year: 2024,
|
||
url: "https://www.heart.org/en/health-topics/high-blood-pressure/the-facts-about-high-blood-pressure/all-about-heart-rate-pulse",
|
||
caveat:
|
||
"General adult band; a trained heart can sit 40–60, and a new low with dizziness/fainting is the concern, not the number alone.",
|
||
},
|
||
|
||
/**
|
||
* StatPearls/NIH — Pulse Oximetry (2023). Healthy adult room-air SpO₂
|
||
* 95–100% (bulk 96–99%); mild hypoxaemia 91–94%; clinically significant
|
||
* <90%. Consumer wrist/finger optical readers are wellness-grade
|
||
* (±2–4%) and a single low reading is often artefact.
|
||
*/
|
||
STATPEARLS_PULSE_OX: {
|
||
id: "statpearls-pulse-ox",
|
||
name: "StatPearls Pulse Oximetry",
|
||
year: 2023,
|
||
url: "https://www.ncbi.nlm.nih.gov/books/NBK470348/",
|
||
caveat:
|
||
"Healthy room-air band; consumer optical SpO₂ is ±2–4% and a single low reading is often artefact — sustained runs are the signal.",
|
||
},
|
||
|
||
/**
|
||
* 2017 ACC/AHA Guideline for the Prevention, Detection, Evaluation and
|
||
* Management of High Blood Pressure in Adults. Lowers the US disease
|
||
* line: Normal <120/<80; Elevated 120–129/<80; Stage 1 130–139 or
|
||
* 80–89; Stage 2 ≥140 or ≥90. Surfaced only as the stricter COMPARISON
|
||
* anchor next to the shipped ESH default — never the labelled band.
|
||
*/
|
||
ACC_AHA_2017_BP: {
|
||
id: "acc-aha-2017-bp",
|
||
name: "ACC/AHA 2017",
|
||
year: 2017,
|
||
url: "https://www.ahajournals.org/doi/10.1161/HYP.0000000000000065",
|
||
caveat:
|
||
"US guideline; labels 130–139/80–89 as Stage 1 — a stricter line than the ESH default, shown for placement only.",
|
||
},
|
||
|
||
/**
|
||
* 2024 ESC Guidelines for the management of elevated blood pressure and
|
||
* hypertension. Adds an "Elevated" diagnostic band (120–139/70–89) and a
|
||
* treated SBP target of 120–129. Disease line stays ≥140/90 office.
|
||
* Displayed as context alongside the ESH 2023 default.
|
||
*/
|
||
ESC_2024_BP: {
|
||
id: "esc-2024-bp",
|
||
name: "ESC 2024",
|
||
year: 2024,
|
||
url: "https://academic.oup.com/eurheartj/article/45/38/3912/7741010",
|
||
caveat:
|
||
"European; introduces an 'Elevated' 120–139/70–89 band and a treated 120–129 target — context, not the shipped classification.",
|
||
},
|
||
|
||
/**
|
||
* StatPearls/NCBI — Physiology, Pulse Pressure (NBK482408). PP = SBP −
|
||
* DBP; ~40 mmHg typical at rest, wide ≳60 mmHg marks large-artery
|
||
* stiffening, narrow ≲25 mmHg can accompany low stroke volume. A
|
||
* "discuss with a clinician" signal, not a diagnosis.
|
||
*/
|
||
STATPEARLS_PULSE_PRESSURE: {
|
||
id: "statpearls-pulse-pressure",
|
||
name: "StatPearls Pulse Pressure",
|
||
year: 2023,
|
||
url: "https://www.ncbi.nlm.nih.gov/books/NBK482408/",
|
||
caveat:
|
||
"Educational physiology reference; PP is a discussion prompt, never a standalone diagnosis.",
|
||
},
|
||
|
||
/**
|
||
* StatPearls/NCBI — Physiology, Mean Arterial Pressure (NBK538226).
|
||
* MAP ≈ (SBP + 2·DBP)/3; resting band ~70–100 mmHg, ~60 mmHg the
|
||
* conventional organ-perfusion floor — an acute-care concept, NOT a
|
||
* consumer self-alarm threshold.
|
||
*/
|
||
STATPEARLS_MAP: {
|
||
id: "statpearls-map",
|
||
name: "StatPearls Mean Arterial Pressure",
|
||
year: 2023,
|
||
url: "https://www.ncbi.nlm.nih.gov/books/NBK538226/",
|
||
caveat:
|
||
"The ~60 mmHg floor is an acute-care perfusion concept, not a consumer alarm threshold.",
|
||
},
|
||
|
||
/**
|
||
* 2018 ESC/ESH Guidelines for the management of arterial hypertension.
|
||
* Source of the carotid-femoral PWV >10 m/s organ-damage cut-off and
|
||
* the BP grade bands still widely cited. The PWV number is European;
|
||
* AHA/ACC do not enshrine an equivalent consumer PWV threshold.
|
||
*/
|
||
ESC_ESH_2018_PWV: {
|
||
id: "esc-esh-2018-pwv",
|
||
name: "ESC/ESH 2018",
|
||
year: 2018,
|
||
url: "https://academic.oup.com/eurheartj/article/39/33/3021/5079119",
|
||
caveat:
|
||
"cf-PWV >10 m/s is the European clinical reference; consumer PWV / vascular-age estimates are proxies, not clinical cf-PWV.",
|
||
},
|
||
|
||
/**
|
||
* US FDA — pulse-oximeter accuracy and limitations (Feb 2024 advisory
|
||
* committee review + safety communication). Oximeters can overestimate
|
||
* true saturation in people with darker skin, roughly 3× more often
|
||
* than in lighter-skinned patients (occult hypoxaemia).
|
||
*/
|
||
FDA_2024_PULSE_OX: {
|
||
id: "fda-2024-pulse-ox",
|
||
name: "FDA 2024 Pulse Oximeter Review",
|
||
year: 2024,
|
||
url: "https://www.fda.gov/medical-devices/safety-communications/pulse-oximeter-accuracy-and-limitations-fda-safety-communication",
|
||
caveat:
|
||
"Documents over-reading in darker skin; a single near-normal reading is not a clearance — confirm when concerned.",
|
||
},
|
||
|
||
/**
|
||
* "Normal Body Temperature: A Systematic Review" — J Gen Intern Med,
|
||
* 2019. Population oral-equivalent mean ~36.6 °C (normal ~35.7–37.4 °C),
|
||
* superseding the conventional 37.0 °C set point. Fever ≥38.0 °C oral.
|
||
*/
|
||
JGIM_2019_TEMPERATURE: {
|
||
id: "jgim-2019-temperature",
|
||
name: "J Gen Intern Med 2019",
|
||
year: 2019,
|
||
url: "https://link.springer.com/article/10.1007/s11606-019-05148-7",
|
||
caveat:
|
||
"Oral-equivalent mean; sites differ by up to ~1 °C — tag the measurement site before comparing.",
|
||
},
|
||
|
||
/**
|
||
* Royal College of Physicians — National Early Warning Score 2 (NEWS2),
|
||
* 2017. Respiratory-rate scoring: highest-risk ≤8 and ≥25/min. A
|
||
* hospital deterioration tool, not a consumer alarm.
|
||
*/
|
||
RCP_2017_NEWS2: {
|
||
id: "rcp-2017-news2",
|
||
name: "RCP NEWS2 2017",
|
||
year: 2017,
|
||
url: "https://www.rcp.ac.uk/improving-care/resources/national-early-warning-score-news-2/",
|
||
caveat:
|
||
"Hospital deterioration score; the ≥25/min cutoff is clinical context, not a self-monitoring alarm.",
|
||
},
|
||
|
||
/**
|
||
* American Lung Association — resting respiratory rate reference
|
||
* (12–20 breaths/min for healthy adults). Consumer-facing vital-sign
|
||
* orientation.
|
||
*/
|
||
ALA_RESPIRATORY_RATE: {
|
||
id: "ala-respiratory-rate",
|
||
name: "American Lung Association",
|
||
year: 2024,
|
||
url: "https://www.lung.org/lung-health-diseases/how-lungs-work/breathing-rate",
|
||
caveat:
|
||
"General adult resting band; rates run higher in children and shift with activity, fever and emotion.",
|
||
},
|
||
|
||
/**
|
||
* Peer-reviewed visceral-adipose-tissue imaging literature (2014–2025):
|
||
* CT/MRI/DXA VAT area >~100 cm² increased-risk, >~160 cm² high-risk.
|
||
* Ethnicity-dependent; the consumer scale "rating" is NOT a cm² value.
|
||
*/
|
||
VAT_IMAGING_THRESHOLD: {
|
||
id: "vat-imaging-threshold",
|
||
name: "VAT imaging literature",
|
||
year: 2025,
|
||
url: "https://pubmed.ncbi.nlm.nih.gov/24008002/",
|
||
caveat:
|
||
"Imaging cm² thresholds; the consumer scale 'visceral fat rating' is a separate unitless scale, not interchangeable.",
|
||
},
|
||
|
||
/**
|
||
* Wilcox AJ, Dunson D, Baird DD. "The timing of the 'fertile window' in
|
||
* the menstrual cycle." BMJ, 2000. The 6-day fertile window ends on
|
||
* ovulation day; ovulation timing is highly variable even in regular
|
||
* cyclers.
|
||
*/
|
||
WILCOX_2000_FERTILE_WINDOW: {
|
||
id: "wilcox-2000-fertile-window",
|
||
name: "Wilcox BMJ 2000",
|
||
year: 2000,
|
||
url: "https://www.bmj.com/content/321/7271/1259",
|
||
caveat:
|
||
"Fertile-window timing is highly variable; calendar estimates approximate and are not a contraceptive method.",
|
||
},
|
||
|
||
/**
|
||
* ACOG Committee Opinion 651 (2015) — "Menstruation in Girls and
|
||
* Adolescents: Using the Menstrual Cycle as a Vital Sign." Adult cycle
|
||
* 24–38 days, bleeding ~5 days (up to ~7).
|
||
*
|
||
* NEEDS-VERIFY ACOG — the cycle-length / bleeding-duration figures cited
|
||
* in the `insights.subPage.explainer.cycleEducationBody` copy, and any
|
||
* "when to see a clinician" thresholds (cycle <21 / >35, amenorrhea ≥3
|
||
* months, heavy bleeding >7 days), must be confirmed against the live
|
||
* ACOG FAQ before shipping that copy to users (automated fetch was
|
||
* rate-limited during research).
|
||
*/
|
||
ACOG_CO651_2015: {
|
||
id: "acog-co651-2015",
|
||
name: "ACOG CO 651 2015",
|
||
year: 2015,
|
||
url: "https://www.acog.org/clinical/clinical-guidance/committee-opinion/articles/2015/12/menstruation-in-girls-and-adolescents-using-the-menstrual-cycle-as-a-vital-sign",
|
||
caveat:
|
||
"Cycle as a vital sign; exact clinician-consultation thresholds should be confirmed against the live ACOG FAQ.",
|
||
},
|
||
|
||
/**
|
||
* Phillips AJK, et al. "Irregular sleep/wake patterns are associated
|
||
* with poorer academic performance and delayed circadian and sleep/wake
|
||
* timing." Sci Rep, 2017 — origin of the Sleep Regularity Index (SRI).
|
||
* UK Biobank (Windred 2023/24) tied higher regularity to lower mortality.
|
||
*/
|
||
PHILLIPS_2017_SRI: {
|
||
id: "phillips-2017-sri",
|
||
name: "Phillips Sci Rep 2017",
|
||
year: 2017,
|
||
url: "https://www.nature.com/articles/s41598-017-03171-4",
|
||
caveat:
|
||
"Sleep-regularity construct; no universal good/bad threshold — present as a personal trend.",
|
||
},
|
||
|
||
/**
|
||
* US CDC — About Sleep / tips for better sleep (2024). Evidence-based
|
||
* sleep-hygiene behaviours (consistent schedule, morning light, dim
|
||
* evenings, caffeine timing, cool dark room).
|
||
*/
|
||
CDC_2024_SLEEP: {
|
||
id: "cdc-2024-sleep",
|
||
name: "CDC 2024 Sleep",
|
||
year: 2024,
|
||
url: "https://www.cdc.gov/sleep/about/index.html",
|
||
caveat: "General sleep-hygiene guidance; individual needs vary.",
|
||
},
|
||
|
||
/**
|
||
* WHO — Obesity: preventing and managing the global epidemic (TRS 894),
|
||
* 2000. The BMI classification still in use: underweight <18.5, normal
|
||
* 18.5–24.9, overweight 25.0–29.9, obesity ≥30. Asian-population risk
|
||
* rises at lower cut-offs (WHO 2004).
|
||
*/
|
||
WHO_2000_BMI: {
|
||
id: "who-2000-bmi",
|
||
name: "WHO 2000 BMI",
|
||
year: 2000,
|
||
url: "https://www.who.int/publications/i/item/WHO_TRS_894",
|
||
caveat:
|
||
"Population screen, not a diagnosis; Asian-population risk rises at lower cut-offs and BMI does not distinguish muscle from fat.",
|
||
},
|
||
|
||
/**
|
||
* WHO/IDF — Definition and Diagnosis of Diabetes Mellitus and
|
||
* Intermediate Hyperglycaemia, 2006. Impaired fasting glucose floor of
|
||
* 110 mg/dL (vs ADA's 100); the diabetes line (≥126) is shared.
|
||
*/
|
||
WHO_IDF_2006_GLUCOSE: {
|
||
id: "who-idf-2006-glucose",
|
||
name: "WHO/IDF 2006",
|
||
year: 2006,
|
||
url: "https://www.who.int/publications/i/item/definition-and-diagnosis-of-diabetes-mellitus-and-intermediate-hyperglycaemia",
|
||
caveat:
|
||
"Sets the impaired-fasting-glucose floor at 110 mg/dL; the diabetes threshold (≥126) is shared with ADA.",
|
||
},
|
||
|
||
/**
|
||
* ESC/NASPE Task Force — Heart Rate Variability: Standards of
|
||
* Measurement, Physiological Interpretation and Clinical Use.
|
||
* Circulation / Eur Heart J, 1996. Defines SDNN/RMSSD norms and the
|
||
* prognostic 24-h SDNN bands; day-to-day swings of ~±10% are routine.
|
||
*/
|
||
ESC_NASPE_1996_HRV: {
|
||
id: "esc-naspe-1996-hrv",
|
||
name: "ESC/NASPE HRV Standards 1996",
|
||
year: 1996,
|
||
url: "https://www.ahajournals.org/doi/10.1161/01.CIR.93.5.1043",
|
||
caveat:
|
||
"Clinical 24-h SDNN norms are NOT interchangeable with an overnight wearable RMSSD; only the personal trend is meaningful.",
|
||
},
|
||
} as const satisfies Record<string, Citation>;
|
||
|
||
export type CitationId = keyof typeof CITATIONS;
|
||
|
||
/** Returns the URL for the given citation id. */
|
||
export function citationUrl(id: CitationId): string {
|
||
return CITATIONS[id].url;
|
||
}
|
||
|
||
/**
|
||
* Returns a localized "source: NAME (YEAR)" string for UI use.
|
||
* Locale-agnostic for now (English-first); German UI consumers can
|
||
* format the year via `Intl.NumberFormat` if needed but the citation
|
||
* name itself is canonical and not translated.
|
||
*/
|
||
export function citationLabel(id: CitationId): string {
|
||
const c = CITATIONS[id];
|
||
return `${c.name} (${c.year})`;
|
||
}
|