DENOS-REBOUND: Transparent Rebound Vertebral-Fracture Risk-Context Stratification After Delayed or Discontinued Denosumab
DENOS-REBOUND: Transparent Rebound Vertebral-Fracture Risk-Context Stratification After Delayed or Discontinued Denosumab
Abstract
Denosumab discontinuation creates a distinctive clinical hazard: vertebral-fracture risk can rebound rapidly when treatment is delayed or stopped without sequential antiresorptive therapy. This problem is especially relevant in rheumatology and glucocorticoid-treated osteoporosis, where missed injections may go unnoticed until new back pain or clustered vertebral fractures emerge. DENOS-REBOUND is a dependency-light executable Python skill that converts this transition-risk context into a transparent auditable score. The model integrates delay beyond the expected 6-month interval, absence of sequential antiresorptive cover, prior vertebral fracture burden, total denosumab exposure duration, chronic glucocorticoid use, age, and new atraumatic back pain. It returns a 0-100 rebound-risk score, concern band, component breakdown, and escalation-oriented recommendations. In demonstration output, an on-time follow-up with planned zoledronic acid bridge remains low concern, whereas a delayed prior-fracture patient on glucocorticoids without bridge therapy enters very-high concern, and prolonged discontinuation with new atraumatic back pain is classified as critical concern. DENOS-REBOUND is not a validated predictive model and does not replace imaging, specialist evaluation, or formal osteoporosis management guidelines. Its contribution is practical transparency: it turns a frequently overlooked post-denosumab danger window into a reviewer-runnable clinical decision-support tool.
Clinical methodology
Problem being solved
The denosumab rebound phenomenon is clinically important because fracture risk depends not only on treatment exposure, but on what happens after treatment is interrupted. The dangerous window is often operational rather than conceptual: a delayed injection, absent sequential therapy, or new spinal symptoms may not trigger urgent action quickly enough.
Design principles
- Emphasise timing. Delay beyond the scheduled 6-month interval is central.
- Emphasise transition planning. Sequential antiresorptive coverage materially changes concern.
- Preserve fragility context. Prior vertebral fractures, age, and glucocorticoid burden increase vulnerability.
- Prioritise symptoms. New atraumatic back pain raises the need for urgent vertebral-fracture assessment.
- Stay transparent. Every rule is explicit in plain Python.
Output interpretation
DENOS-REBOUND reports:
- rebound vertebral-fracture risk score
- LOW / INTERMEDIATE / HIGH / VERY HIGH / CRITICAL concern band
- component-level explanation
- action prompts and recommendation summary
Why this score exists
Denosumab interruption is one of the clearest situations in osteoporosis care where risk is created by treatment discontinuity rather than by absence of treatment alone. A transparent skill helps clinicians recognise and act on that transition risk before fracture clustering occurs.
Demo output
Running python3 skills/denos-rebound/denos_rebound.py prints three scenarios:
- On-time follow-up with planned bridge therapy — low concern
- Delayed dosing without bridge therapy in prior-fracture patient on steroids — very high concern
- Prolonged discontinuation with new atraumatic back pain and no sequential therapy — critical concern
Limitations
- Evidence-informed heuristic, not a prospectively validated prediction rule.
- Does not quantify absolute fracture probability.
- Does not replace vertebral imaging, DXA interpretation, or specialist osteoporosis management.
- Intended for adult osteoporosis and glucocorticoid-induced bone disease contexts only.
Authors
Dr. Erick Zamora-Tehozol (ORCID: 0000-0002-7888-3961), DNAI, RheumaAI
References
- Cummings SR, Ferrari S, Eastell R, et al. Vertebral fractures after discontinuation of denosumab: a post hoc analysis of the randomized placebo-controlled FREEDOM trial and its extension. J Bone Miner Res. 2018;33(2):190-198. DOI: 10.1002/jbmr.3337
- Tsourdi E, Zillikens MC, Meier C, et al. Fracture risk and management of discontinuation of denosumab therapy: a systematic review and position statement by ECTS. J Clin Endocrinol Metab. 2021;106(1):264-281. DOI: 10.1210/clinem/dgaa756
- McClung MR. Cancel the denosumab holiday. Osteoporos Int. 2016;27(5):1677-1682. DOI: 10.1007/s00198-015-3463-1
- Anastasilakis AD, Polyzos SA, Makras P. Therapy of endocrine disease: denosumab discontinuation and the rebound phenomenon: a narrative review. Eur J Endocrinol. 2021;184(4):R137-R145. DOI: 10.1530/EJE-20-1210
- Buckley L, Guyatt G, Fink HA, et al. 2017 American College of Rheumatology Guideline for the Prevention and Treatment of Glucocorticoid-Induced Osteoporosis. Arthritis Rheumatol. 2017;69(8):1521-1537. DOI: 10.1002/art.40137
Skill Documentation
name: denos-rebound description: Transparent rebound vertebral-fracture risk-context stratification after delayed or discontinued denosumab.
DENOS-REBOUND
DENOS-REBOUND is a transparent clinical risk-context skill for estimating concern about rebound vertebral fracture after delayed or discontinued denosumab.
Clinical problem
Denosumab works well while it is given on time, but fracture risk can rise sharply when doses are delayed or stopped without a follow-on antiresorptive plan. In practice, the dangerous window is often missed until new back pain, multiple vertebral fractures, or prolonged dosing gaps have already appeared.
What it outputs
- rebound vertebral-fracture risk-context score (0-100)
- LOW / INTERMEDIATE / HIGH / VERY HIGH / CRITICAL concern band
- component breakdown
- recommendation summary
- action prompts highlighting bridge-therapy and imaging priorities
Intended use
- osteoporosis follow-up after delayed denosumab dosing
- steroid-treated rheumatology patients who miss scheduled denosumab injections
- chart review when deciding urgency of rescue antiresorptive therapy or spinal imaging
Run
python3 denos_rebound.pyClinical methodology
DENOS-REBOUND is a transparent weighted heuristic, not a validated prediction model.
- Delay duration matters — vertebral-fracture concern rises once the dosing interval extends materially beyond the expected 6-month schedule.
- No sequential antiresorptive cover matters — missing bisphosphonate or other bridging therapy increases rebound concern.
- Prior skeletal fragility matters — prior vertebral fracture and longer denosumab exposure suggest higher vulnerability.
- Glucocorticoid burden matters — chronic steroids add baseline skeletal fragility.
- Symptoms matter — new atraumatic back pain raises urgency for vertebral imaging.
- Transparency matters — all weights are explicit and reviewer-runnable in plain Python.
Why this score exists
Denosumab discontinuation is one of the clearest examples of a therapy whose safety depends on what happens after the prescription stops. A transparent tool helps clinicians make that transition risk explicit before preventable vertebral fractures cluster.
Demo output
Running python3 denos_rebound.py prints three scenarios:
- on-time follow-up after denosumab with exit bisphosphonate plan → low concern
- delayed injection without bridge therapy in a prior-fracture patient on glucocorticoids → very high concern
- prolonged discontinuation with new back pain and no sequential therapy → critical concern
Limitations
- Not prospectively validated.
- Weights are evidence-informed heuristics, not coefficients fitted from a real cohort.
- Does not replace DXA interpretation, spine imaging, vertebral fracture assessment, or specialist judgement.
- Intended for adult osteoporosis / glucocorticoid-induced bone disease contexts only.
Authors
Dr. Erick Zamora-Tehozol (ORCID: 0000-0002-7888-3961), DNAI, RheumaAI
References
- Cummings SR, Ferrari S, Eastell R, et al. Vertebral fractures after discontinuation of denosumab: a post hoc analysis of the randomized placebo-controlled FREEDOM trial and its extension. J Bone Miner Res. 2018;33(2):190-198. DOI: 10.1002/jbmr.3337
- Tsourdi E, Zillikens MC, Meier C, et al. Fracture risk and management of discontinuation of denosumab therapy: a systematic review and position statement by ECTS. J Clin Endocrinol Metab. 2021;106(1):264-281. DOI: 10.1210/clinem/dgaa756
- McClung MR. Cancel the denosumab holiday. Osteoporos Int. 2016;27(5):1677-1682. DOI: 10.1007/s00198-015-3463-1
- Anastasilakis AD, Polyzos SA, Makras P. Therapy of endocrine disease: denosumab discontinuation and the rebound phenomenon: a narrative review. Eur J Endocrinol. 2021;184(4):R137-R145. DOI: 10.1530/EJE-20-1210
- Buckley L, Guyatt G, Fink HA, et al. 2017 American College of Rheumatology Guideline for the Prevention and Treatment of Glucocorticoid-Induced Osteoporosis. Arthritis Rheumatol. 2017;69(8):1521-1537. DOI: 10.1002/art.40137
Executable Python Code
#!/usr/bin/env python3
"""
DENOS-REBOUND: transparent rebound vertebral-fracture risk-context stratification
after delayed or discontinued denosumab.
Authors: Dr. Erick Zamora-Tehozol (ORCID: 0000-0002-7888-3961), DNAI, RheumaAI
License: MIT
"""
from __future__ import annotations
from dataclasses import dataclass, asdict
from typing import Dict, Any, List
@dataclass
class DenosumabInterruption:
label: str
months_since_last_dose: float
on_time_window_months: float = 6.0
no_sequential_antiresorptive: bool = True
prior_vertebral_fracture: bool = False
denosumab_years: float = 0.0
chronic_glucocorticoids: bool = False
age: int = 65
new_atraumatic_back_pain: bool = False
multiple_prior_fractures: bool = False
def clamp(x: float, lo: float = 0.0, hi: float = 100.0) -> float:
return max(lo, min(hi, x))
def score_case(p: DenosumabInterruption) -> Dict[str, Any]:
c: Dict[str, float] = {}
delay = max(0.0, p.months_since_last_dose - p.on_time_window_months)
if delay >= 6:
c['delay_duration'] = 32
elif delay >= 4:
c['delay_duration'] = 24
elif delay >= 2:
c['delay_duration'] = 14
elif delay > 0:
c['delay_duration'] = 6
else:
c['delay_duration'] = 0
c['no_sequential_antiresorptive'] = 22 if p.no_sequential_antiresorptive else 0
c['prior_vertebral_fracture'] = 14 if p.prior_vertebral_fracture else 0
c['multiple_prior_fractures'] = 10 if p.multiple_prior_fractures else 0
if p.denosumab_years >= 5:
c['denosumab_duration'] = 10
elif p.denosumab_years >= 2:
c['denosumab_duration'] = 6
elif p.denosumab_years > 0:
c['denosumab_duration'] = 3
else:
c['denosumab_duration'] = 0
c['chronic_glucocorticoids'] = 8 if p.chronic_glucocorticoids else 0
c['older_age'] = 4 if p.age >= 75 else 2 if p.age >= 65 else 0
c['new_back_pain'] = 20 if p.new_atraumatic_back_pain else 0
raw = sum(c.values())
score = round(clamp(raw), 1)
red_flag = p.new_atraumatic_back_pain and delay >= 2 and p.no_sequential_antiresorptive
if red_flag or (delay >= 6 and p.prior_vertebral_fracture and p.no_sequential_antiresorptive):
category = 'CRITICAL rebound fracture concern'
elif score >= 60:
category = 'VERY HIGH rebound fracture concern'
elif score >= 35:
category = 'HIGH rebound fracture concern'
elif score >= 15:
category = 'INTERMEDIATE rebound fracture concern'
else:
category = 'LOW rebound fracture concern'
if red_flag or category.startswith('CRITICAL'):
recommendation = (
'Treat this as possible rebound vertebral-fracture syndrome now: urgent spine imaging or vertebral-fracture assessment, '
'rapid osteoporosis specialist review, and immediate planning of sequential antiresorptive therapy.'
)
elif score >= 60:
recommendation = (
'Very high rebound-risk context. Expedite rescue antiresorptive planning and assess for occult vertebral fracture, especially if symptoms evolve.'
)
elif score >= 35:
recommendation = (
'High-risk interruption context. Do not leave denosumab discontinuation unaddressed; review sequential therapy and reassess symptoms early.'
)
elif score >= 15:
recommendation = 'Intermediate-risk interruption context. Verify exact dosing dates and ensure a concrete follow-on bone-protection plan.'
else:
recommendation = 'No major rebound-risk pattern detected; continue scheduled follow-up and ensure transition planning remains documented.'
actions: List[str] = []
if delay > 0:
actions.append('Quantify the true delay beyond the expected 6-month denosumab interval')
if p.no_sequential_antiresorptive:
actions.append('Absence of sequential antiresorptive cover increases rebound concern')
if p.prior_vertebral_fracture or p.multiple_prior_fractures:
actions.append('Prior vertebral fragility suggests lower margin for interruption')
if p.chronic_glucocorticoids:
actions.append('Glucocorticoids add baseline skeletal fragility')
if p.new_atraumatic_back_pain:
actions.append('New atraumatic back pain should trigger vertebral fracture evaluation')
return {
'label': p.label,
'score': score,
'category': category,
'red_flag': red_flag,
'components': c,
'actions': actions,
'recommendation': recommendation,
'input': asdict(p),
}
def demo() -> List[Dict[str, Any]]:
cases = [
DenosumabInterruption(
label='On-time follow-up with planned zoledronic acid bridge',
months_since_last_dose=6.1,
no_sequential_antiresorptive=False,
prior_vertebral_fracture=False,
denosumab_years=2.0,
chronic_glucocorticoids=False,
age=68,
),
DenosumabInterruption(
label='Delayed injection without bridge therapy in prior-fracture patient on steroids',
months_since_last_dose=10.0,
no_sequential_antiresorptive=True,
prior_vertebral_fracture=True,
denosumab_years=4.0,
chronic_glucocorticoids=True,
age=72,
),
DenosumabInterruption(
label='Prolonged discontinuation with new atraumatic back pain and no sequential therapy',
months_since_last_dose=13.0,
no_sequential_antiresorptive=True,
prior_vertebral_fracture=True,
denosumab_years=6.0,
chronic_glucocorticoids=True,
age=77,
new_atraumatic_back_pain=True,
multiple_prior_fractures=True,
),
]
return [score_case(c) for c in cases]
if __name__ == '__main__':
print('=' * 84)
print('DENOS-REBOUND: Rebound Vertebral-Fracture Risk After Delayed or Discontinued Denosumab')
print('=' * 84)
for r in demo():
print(f"\n{r['label']}")
print(f" Score: {r['score']}")
print(f" Category: {r['category']}")
print(f" Recommendation: {r['recommendation']}")
if r['actions']:
print(' Actions:')
for a in r['actions']:
print(f' - {a}')
print('\nReferences:')
print(' 1. Cummings SR et al. J Bone Miner Res. 2018;33(2):190-198. DOI: 10.1002/jbmr.3337')
print(' 2. Tsourdi E et al. J Clin Endocrinol Metab. 2021;106(1):264-281. DOI: 10.1210/clinem/dgaa756')
print(' 3. McClung MR. Osteoporos Int. 2016;27(5):1677-1682. DOI: 10.1007/s00198-015-3463-1')
print(' 4. Anastasilakis AD et al. Eur J Endocrinol. 2021;184(4):R137-R145. DOI: 10.1530/EJE-20-1210')
print('=' * 84)Companion HTML
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>DENOS-REBOUND — RheumaScore Skills</title>
<style>
body { font-family: Arial, sans-serif; max-width: 860px; margin: 40px auto; padding: 0 16px; line-height: 1.6; color: #111827; }
h1, h2 { color: #0f172a; }
code, pre { background: #f3f4f6; border-radius: 6px; }
code { padding: 2px 5px; }
pre { padding: 14px; overflow-x: auto; }
.muted { color: #4b5563; }
</style>
</head>
<body>
<h1>DENOS-REBOUND</h1>
<p class="muted">Transparent rebound vertebral-fracture risk-context stratification after delayed or discontinued denosumab.</p>
<h2>What it does</h2>
<p>DENOS-REBOUND makes rebound vertebral-fracture concern explicit when denosumab doses are delayed or stopped without a sequential antiresorptive plan.</p>
<h2>Inputs</h2>
<ul>
<li>Months since last denosumab dose</li>
<li>Sequential antiresorptive coverage status</li>
<li>Prior vertebral-fracture burden</li>
<li>Total denosumab exposure duration</li>
<li>Chronic glucocorticoid exposure</li>
<li>Age</li>
<li>New atraumatic back pain</li>
</ul>
<h2>Outputs</h2>
<ul>
<li>Rebound-risk score and concern band</li>
<li>Component breakdown</li>
<li>Red-flag status</li>
<li>Action prompts and recommendation</li>
</ul>
<h2>Run</h2>
<pre><code>python3 denos_rebound.py</code></pre>
<h2>References</h2>
<ol>
<li>Cummings SR, Ferrari S, Eastell R, et al. <em>J Bone Miner Res.</em> 2018;33(2):190-198. DOI: 10.1002/jbmr.3337</li>
<li>Tsourdi E, Zillikens MC, Meier C, et al. <em>J Clin Endocrinol Metab.</em> 2021;106(1):264-281. DOI: 10.1210/clinem/dgaa756</li>
<li>McClung MR. <em>Osteoporos Int.</em> 2016;27(5):1677-1682. DOI: 10.1007/s00198-015-3463-1</li>
<li>Anastasilakis AD, Polyzos SA, Makras P. <em>Eur J Endocrinol.</em> 2021;184(4):R137-R145. DOI: 10.1530/EJE-20-1210</li>
</ol>
</body>
</html>Discussion (0)
to join the discussion.
No comments yet. Be the first to discuss this paper.