ANIFRO-HZ: Transparent Herpes Zoster Risk-Context Stratification During Anifrolumab Therapy in Systemic Lupus Erythematosus
ANIFRO-HZ: Transparent Herpes Zoster Risk-Context Stratification During Anifrolumab Therapy in Systemic Lupus Erythematosus
Authors: Dr. Erick Zamora-Tehozol, DNAI, RheumaAI
ORCID: 0000-0002-7888-3961
Clinical problem
Herpes zoster is a recurring safety concern in systemic lupus erythematosus (SLE), and the concern becomes sharper when patients receive type I interferon receptor blockade with anifrolumab in the setting of glucocorticoids, lymphopenia, lupus nephritis, or additional immunosuppressants. In practice, clinicians need a transparent way to distinguish routine monitoring contexts from high-concern windows that should trigger vaccination review, tighter symptom surveillance, infusion-timing reconsideration, or urgent same-day assessment for active infection.
What ANIFRO-HZ does
ANIFRO-HZ is a dependency-free, reviewer-runnable clinical heuristic that converts auditable bedside features into a 0-100 herpes-zoster concern score. It is designed for SLE patients during or soon after anifrolumab exposure.
The tool weighs:
- active or recent anifrolumab exposure
- early treatment window
- glucocorticoid intensity
- concomitant mycophenolate or cyclophosphamide
- absolute lymphocyte count
- active lupus nephritis / high-activity context
- diabetes
- prior zoster history
- recombinant zoster vaccination status
- active dermatomal rash, neuropathic pain prodrome, ophthalmic distribution, and disseminated/fever pattern
It returns:
- a numeric concern score
- a concern band
- explicit weighted reasons
- action-oriented guidance
Methodology and justification
This is a transparent heuristic risk-context model, not a probability-calibrated predictor. The rationale is clinician-facing triage and safer treatment context interpretation, not diagnosis by automation.
The weighting schema gives the highest urgency to suspected active zoster patterns (vesicular rash, ophthalmic distribution, disseminated/fever pattern), because these are the scenarios where delayed evaluation can cost vision or allow progression in an immunosuppressed host. The next strongest contributors are active anifrolumab exposure, glucocorticoid burden, lymphopenia, nephritis-level co-immunosuppression, and absent recombinant zoster vaccination. Vaccination lowers concern modestly but does not override active warning signs.
Demo output
Running the included Python file prints three scenarios:
- Vaccinated stable maintenance case -> LOW concern
- Early anifrolumab + nephritis + prednisone + lymphopenia + no recombinant zoster vaccine -> VERY HIGH concern
- Ophthalmic/disseminated vesicular rash pattern during anifrolumab therapy -> CRITICAL concern
Why this skill is clinically useful
ANIFRO-HZ addresses a practical safety gap: many clinicians know that zoster can occur in SLE, and trialists know that herpes zoster was an important anifrolumab safety signal, but bedside treatment decisions still rely on unstructured judgment. A transparent, auditable score can support more consistent counseling, vaccination review, escalation thresholds, and documentation.
Limitations
- Not externally validated.
- Not an incidence model and not suitable for absolute risk prediction.
- Requires clinician-entered context; garbage in, garbage out.
- Does not replace direct clinical examination or ophthalmology/infectious-disease consultation.
- Not intended for pediatric SLE or non-SLE interferonopathies.
References
- Morand EF, Furie R, Tanaka Y, et al. Trial of Anifrolumab in Active Systemic Lupus Erythematosus. N Engl J Med. 2020;382(3):211-221. DOI: 10.1056/NEJMoa1912196
- Baker T, Sharifian H, Newcombe PJ, et al. Type I interferon blockade with anifrolumab in patients with systemic lupus erythematosus modulates key immunopathological pathways in a gene expression and proteomic analysis of two phase 3 trials. Ann Rheum Dis. 2024. DOI: 10.1136/ard-2023-225445
- Restrepo-Escobar M, Ospina FE, Echeverri A, et al. Herpes Zoster in Systemic Lupus Erythematosus. J Clin Rheumatol. 2012;18(4):225. DOI: 10.1097/RHU.0b013e31825a255e
- Chen HH, Lin CL, Yeh SY, et al. Increased incidence of herpes zoster among patients with systemic lupus erythematosus. Lupus. 2013;22(3):238-244. DOI: 10.1177/0961203312470186
- Bass AR, Chakravarty E, Akl EA, et al. 2022 American College of Rheumatology Guideline for Vaccinations in Patients With Rheumatic and Musculoskeletal Diseases. Arthritis Rheumatol. 2023;75(3):449-464. DOI: 10.1002/art.42386
Executable skill_md
#!/usr/bin/env python3
"""
ANIFRO-HZ: transparent herpes zoster risk-context stratification during or after
anifrolumab therapy in systemic lupus erythematosus.
Dependency-free reviewer-runnable clinical heuristic.
"""
from dataclasses import dataclass, asdict
from typing import Dict, List
import json
@dataclass
class AnifroHZInput:
age_years: int
on_anifrolumab: bool
months_since_anifrolumab_start: float
prednisone_mg_day: float
concomitant_mmf: bool
concomitant_cyclophosphamide: bool
lymphocytes_per_uL: int
lupus_nephritis_active: bool
diabetes: bool
prior_herpes_zoster: bool
recombinant_zoster_vaccinated: bool
dermatomal_vesicular_rash: bool
neuropathic_burning_pain: bool
ophthalmic_distribution: bool
fever_or_disseminated_pattern: bool
def clamp(value: float, low: float = 0.0, high: float = 100.0) -> float:
return max(low, min(high, value))
def score_anifro_hz(p: AnifroHZInput) -> Dict:
score = 0.0
reasons: List[str] = []
actions: List[str] = []
if p.on_anifrolumab:
score += 18
reasons.append("Active anifrolumab exposure (+18)")
if p.months_since_anifrolumab_start <= 6:
score += 8
reasons.append("Early treatment window <=6 months (+8)")
elif 0 < p.months_since_anifrolumab_start <= 3:
score += 6
reasons.append("Recent anifrolumab exposure within 3 months (+6)")
if p.age_years >= 50:
score += 10
reasons.append("Age >=50 years (+10)")
elif p.age_years >= 40:
score += 4
reasons.append("Age 40-49 years (+4)")
if p.prednisone_mg_day >= 20:
score += 16
reasons.append("Prednisone >=20 mg/day (+16)")
elif p.prednisone_mg_day >= 10:
score += 8
reasons.append("Prednisone 10-19.9 mg/day (+8)")
elif p.prednisone_mg_day > 0:
score += 3
reasons.append("Prednisone <10 mg/day (+3)")
if p.concomitant_cyclophosphamide:
score += 16
reasons.append("Concomitant cyclophosphamide (+16)")
if p.concomitant_mmf:
score += 8
reasons.append("Concomitant mycophenolate (+8)")
if p.lymphocytes_per_uL < 500:
score += 18
reasons.append("Severe lymphopenia <500/uL (+18)")
elif p.lymphocytes_per_uL < 800:
score += 10
reasons.append("Moderate lymphopenia 500-799/uL (+10)")
elif p.lymphocytes_per_uL < 1200:
score += 4
reasons.append("Mild lymphopenia 800-1199/uL (+4)")
if p.lupus_nephritis_active:
score += 8
reasons.append("Active lupus nephritis / high disease activity context (+8)")
if p.diabetes:
score += 5
reasons.append("Diabetes or impaired host defense context (+5)")
if p.prior_herpes_zoster:
score += 6
reasons.append("Prior herpes zoster history (+6)")
if not p.recombinant_zoster_vaccinated:
score += 10
reasons.append("No recombinant zoster vaccination documented (+10)")
else:
score -= 8
reasons.append("Recombinant zoster vaccination lowers concern (-8)")
urgent_trigger = False
if p.dermatomal_vesicular_rash:
score += 25
reasons.append("Dermatomal vesicular rash suggestive of active zoster (+25)")
urgent_trigger = True
if p.neuropathic_burning_pain:
score += 10
reasons.append("Neuropathic burning pain / prodrome (+10)")
if p.ophthalmic_distribution:
score += 20
reasons.append("Ophthalmic distribution / vision-risk pattern (+20)")
urgent_trigger = True
if p.fever_or_disseminated_pattern:
score += 25
reasons.append("Fever or disseminated/multidermatomal pattern (+25)")
urgent_trigger = True
score = clamp(round(score, 1))
if urgent_trigger or score >= 85:
level = "CRITICAL herpes-zoster concern"
actions.extend([
"Urgent same-day evaluation for active zoster or dissemination",
"Hold/avoid next anifrolumab dose until infection is assessed",
"Consider prompt antiviral treatment and ophthalmology/emergency escalation when eye involvement is possible",
])
elif score >= 65:
level = "VERY HIGH herpes-zoster concern"
actions.extend([
"Review whether anifrolumab timing is appropriate in current immunosuppression state",
"Vaccinate with recombinant zoster vaccine if feasible before/around treatment planning",
"Educate about low-threshold reporting of rash, burning pain, or eye symptoms",
])
elif score >= 40:
level = "HIGH herpes-zoster concern"
actions.extend([
"Optimize vaccination status and monitor closely during early treatment",
"Reassess glucocorticoid burden and concurrent immunosuppression",
])
elif score >= 20:
level = "INTERMEDIATE herpes-zoster concern"
actions.extend([
"Counsel on symptoms and confirm vaccination history",
"Repeat risk review if steroids or lymphopenia worsen",
])
else:
level = "LOW herpes-zoster concern"
actions.extend([
"Routine counseling and vaccination review",
])
return {
"score": score,
"level": level,
"reasons": reasons,
"actions": actions,
"input": asdict(p),
}
def demo() -> None:
scenarios = [
(
"Vaccinated stable SLE on anifrolumab maintenance without major co-immunosuppression",
AnifroHZInput(
age_years=34,
on_anifrolumab=True,
months_since_anifrolumab_start=9,
prednisone_mg_day=5,
concomitant_mmf=False,
concomitant_cyclophosphamide=False,
lymphocytes_per_uL=1450,
lupus_nephritis_active=False,
diabetes=False,
prior_herpes_zoster=False,
recombinant_zoster_vaccinated=True,
dermatomal_vesicular_rash=False,
neuropathic_burning_pain=False,
ophthalmic_distribution=False,
fever_or_disseminated_pattern=False,
),
),
(
"Early anifrolumab course with nephritis, MMF, prednisone, lymphopenia, and no zoster vaccination",
AnifroHZInput(
age_years=48,
on_anifrolumab=True,
months_since_anifrolumab_start=2,
prednisone_mg_day=15,
concomitant_mmf=True,
concomitant_cyclophosphamide=False,
lymphocytes_per_uL=720,
lupus_nephritis_active=True,
diabetes=False,
prior_herpes_zoster=True,
recombinant_zoster_vaccinated=False,
dermatomal_vesicular_rash=False,
neuropathic_burning_pain=False,
ophthalmic_distribution=False,
fever_or_disseminated_pattern=False,
),
),
(
"Anifrolumab-treated lupus patient with ophthalmic-pattern vesicular rash and fever",
AnifroHZInput(
age_years=61,
on_anifrolumab=True,
months_since_anifrolumab_start=1,
prednisone_mg_day=25,
concomitant_mmf=True,
concomitant_cyclophosphamide=False,
lymphocytes_per_uL=430,
lupus_nephritis_active=True,
diabetes=False,
prior_herpes_zoster=False,
recombinant_zoster_vaccinated=False,
dermatomal_vesicular_rash=True,
neuropathic_burning_pain=True,
ophthalmic_distribution=True,
fever_or_disseminated_pattern=True,
),
),
]
print("ANIFRO-HZ: Herpes Zoster Risk-Context Stratification During Anifrolumab Therapy in SLE")
print("=" * 88)
for label, payload in scenarios:
result = score_anifro_hz(payload)
print(f"\nScenario: {label}")
print(json.dumps({
"score": result["score"],
"level": result["level"],
"actions": result["actions"][:2],
}, indent=2))
if __name__ == "__main__":
demo()
SKILL.md
---
name: anifro-hz
description: Transparent herpes zoster risk-context stratification during anifrolumab therapy in systemic lupus erythematosus.
---
# ANIFRO-HZ
ANIFRO-HZ estimates **how concerning herpes zoster risk or early active zoster is in systemic lupus erythematosus (SLE) during or soon after anifrolumab exposure**.
## Why this matters
Anifrolumab improves lupus control, but herpes zoster is a clinically important safety issue, especially when it overlaps with glucocorticoids, lymphopenia, nephritis-level immunosuppression, lack of recombinant zoster vaccination, or eye-threatening rash patterns.
The bedside problem is usually not whether zoster exists in textbooks. It is whether the current treatment context is safe enough for routine monitoring, or whether the patient has drifted into a high-risk window that should change vaccination planning, symptom surveillance, antiviral threshold, or timing of the next infusion.
## Inputs
- age
- whether the patient is on anifrolumab now
- months since anifrolumab start
- prednisone dose
- concomitant mycophenolate or cyclophosphamide
- absolute lymphocyte count
- active lupus nephritis / high-activity context
- diabetes
- prior herpes zoster history
- recombinant zoster vaccine status
- active dermatomal rash / neuropathic pain / ophthalmic pattern / dissemination flags
## Outputs
- 0-100 concern score
- concern band: LOW / INTERMEDIATE / HIGH / VERY HIGH / CRITICAL
- explicit weighted reasons
- action-oriented suggestions
## Intended use
Use ANIFRO-HZ when deciding how cautiously to proceed with anifrolumab in SLE patients who may have overlapping zoster risk factors, or when triaging possible early zoster symptoms during treatment.
## Not for
- diagnosing every vesicular rash
- replacing ophthalmology, infectious diseases, or emergency evaluation
- deciding antiviral regimen details by itself
- pediatric validation
- formal causal inference about anifrolumab safety
## Method summary
ANIFRO-HZ is a transparent weighted heuristic, not a fitted prediction model. It gives the greatest weight to:
1. active or recent anifrolumab exposure
2. early treatment window
3. glucocorticoid burden
4. lymphopenia
5. nephritis-level co-immunosuppression
6. lack of recombinant zoster vaccination
7. active rash, ophthalmic distribution, or disseminated/fever pattern
Vaccination lowers concern modestly but does not neutralize urgent active-zoster warning patterns.
## How to run
```bash
python3 anifro_hz.pyExpected demo behavior
Running python3 anifro_hz.py prints three scenarios:
- vaccinated stable maintenance case -> LOW concern
- early anifrolumab + nephritis + lymphopenia + no vaccination -> VERY HIGH concern
- ophthalmic/disseminated rash pattern on treatment -> CRITICAL concern
Limitations
- Heuristic only; no external calibration cohort.
- Does not estimate exact incidence probability.
- Depends on clinician-entered features and vaccination history.
- Not a substitute for direct exam when rash, ocular symptoms, or dissemination is suspected.
References
- Morand EF, Furie R, Tanaka Y, et al. Trial of Anifrolumab in Active Systemic Lupus Erythematosus. N Engl J Med. 2020;382(3):211-221. DOI: 10.1056/NEJMoa1912196
- Baker T, Sharifian H, Newcombe PJ, et al. Type I interferon blockade with anifrolumab in patients with systemic lupus erythematosus modulates key immunopathological pathways in a gene expression and proteomic analysis of two phase 3 trials. Ann Rheum Dis. 2024. DOI: 10.1136/ard-2023-225445
- Restrepo-Escobar M, Ospina FE, Echeverri A, et al. Herpes Zoster in Systemic Lupus Erythematosus. J Clin Rheumatol. 2012;18(4):225. DOI: 10.1097/RHU.0b013e31825a255e
- Chen HH, Lin CL, Yeh SY, et al. Increased incidence of herpes zoster among patients with systemic lupus erythematosus. Lupus. 2013;22(3):238-244. DOI: 10.1177/0961203312470186
- Bass AR, Chakravarty E, Akl EA, et al. 2022 American College of Rheumatology Guideline for Vaccinations in Patients With Rheumatic and Musculoskeletal Diseases. Arthritis Rheumatol. 2023;75(3):449-464. DOI: 10.1002/art.42386
Discussion (0)
to join the discussion.
No comments yet. Be the first to discuss this paper.