Research

My research program centers on sport-related concussion and its prolonged consequences in physically active populations, with an emphasis on translating evidence into actionable clinical practice.

Current Projects

Foundation Stack — 52-Week PPCS Aerobic Prescription Series

Active · 2026–2027

Structured long-form installments for clinicians, researchers, and families: problem → comparison table → disagreements → methods → SOP → limitations. Four pillars (reproduction, methods, synthesis, pitfalls). Week 1 published.

Foundation Stack →

Bayesian Meta-Analysis: Physical Activity Interventions for PPCS

Active · 2025–2026

A systematic review and Bayesian hierarchical meta-analysis examining the efficacy of structured exercise protocols — particularly sub-symptom threshold aerobic exercise — on symptom severity and functional recovery in adolescents and young adults with persistent post-concussion symptoms (PPCS, ≥28 days post-injury).

Methods: PRISMA-compliant systematic search · Hedges’ g effect sizes · brms / Stan Bayesian random-effects model · ggdist visualization

Analysis platform: guanglab.org/labs/ · RStudio Server · Oracle Cloud ARM

PPCS-SR project page →

PPCSexRx — Clinical Exercise Prescription

CRAN v0.1.0 (June 2026) · v0.2 in development

PPCSexRx encodes my 2026 NATA Foundation CAT as three R steps — screenprescribetrack — with GRADE disclosure and safety stops at every step. Works for high school ATs without BCTT and clinics with BCTT data; no extra R packages required on CRAN v0.1.0.

Functions: screen_ppcs() · prescribe_ppcs() · track_progress()

install.packages("PPCSexRx")
library(PPCSexRx)

Links: CRAN · Vignette · GitHub · OSF · Shiny demo (no R needed)

GRADE certainty: LOW. For licensed clinicians only; not a substitute for clinical judgement.

Install from CRAN

How it works — 5-minute walkthrough (outputs from CRAN v0.1.0)
1. screen_ppcs()Eligible for SSTAE?
2. prescribe_ppcs()Target HR + dose
3. track_progress()Log sessions · adjust HR

Step 1 — Screen (16 y/o, 35 days post-injury):

screen_ppcs(age = 16, days_post_injury = 35)
========================================
  PPCSexRx Eligibility Screen
  GRADE: LOW certainty | Li (2026)
========================================
✅  STATUS: ELIGIBLE

CLINICAL REASON:
 Patient meets PICO eligibility criteria: age 16 years, 35 days post-injury
 (>= 28), no active contraindications.

NEXT STEP:
 Proceed to prescribe_ppcs(). BCTT preferred; age-predicted fallback if unavailable.
========================================

Step 2 — Prescribe (no BCTT at a high school):

rx <- prescribe_ppcs(age = 16, days_post_injury = 35)
print(rx)
Target HR  : 133 bpm
Duration   : 20 min/session · Frequency: 5/week
Method     : Age-predicted: 60-70% HRmax (BCTT unavailable)
SAFETY     : Stop if symptoms worsen >= 2 PCSS points.
EVIDENCE   : GRADE: LOW certainty. Conditional recommendation FOR.

With BCTT (hrst = 160) → 128 bpm (80% HRst). Same safety shell, two fidelity tiers.

Step 3 — Track three sessions (PCSS 32→28→25):

log <- NULL
for (i in 1:3) {
  tr  <- track_progress(log, c(32, 28, 25)[i], c(100, 102, 104)[i], 20, rx)
  log <- tr$updated_log
}
print(tr)
plot(tr)
Sessions completed : 3
PCSS change        : ↓ 7 points (improvement)
NEXT SESSION HR    : 138 bpm  (+5 after 2 stable sessions)

PCSS decreasing and heart rate increasing over three sessions

Safety stop — 18 days post-injury (verbose = FALSE for athlete-facing text):

Result: CONTRAINDICATED — Not yet ready. Speak with your clinician.

Full demo script (copy into RStudio):

library(PPCSexRx)
screen_ppcs(age = 16, days_post_injury = 35)
rx <- prescribe_ppcs(age = 16, days_post_injury = 35)
print(rx)
log <- NULL
for (i in 1:3) {
  tr  <- track_progress(log, c(32, 28, 25)[i], c(100, 102, 104)[i], 20, rx)
  log <- tr$updated_log
}
print(tr); plot(tr)
screen_ppcs(age = 16, days_post_injury = 18, verbose = FALSE)
prescribe_ppcs(age = 17, days_post_injury = 42, hrst = 160)

PPCS Pilot Study: Multimodal Clinical Assessment

Planned · 2027

A prospective pilot study developing and validating a multimodal clinical assessment battery for PPCS in adolescent athletes. Assessments include oculomotor tracking, speech-motor performance (Pataka diadochokinesis), and standardized symptom inventories.

Methods: Eye-tracking · Pataka paradigm · Repeated-measures design · Mixed-effects modelling

Methods & Infrastructure

I maintain a self-hosted research computing environment at guanglab.org for reproducible Bayesian analysis:

Tool Purpose
PPCSexRx (CRAN) SSTAE clinical decision support · walkthrough · install
R / brms / Stan Bayesian meta-analysis
RStudio Server Cloud-based analysis environment
ASReview AI-assisted literature screening
Zotero Reference management
Quarto Reproducible reporting & this website

All analysis code and outputs for published work are made publicly available to support open science practices.