← Methods repository
CONCEPTINTERMEDIATEPYTHON · R · SAS4 citations

Switch, Add-On, and Augmentation Rules

A set of pre-specified operational rules that classify a treatment modification observed in longitudinal data as a switch, an add-on, an augmentation, a combination start, or a line advancement, based on the timing and overlap of exposure episodes across drug classes.

Exposure Definitionexposure-definitiontreatment-modificationswitchingadd-on-therapyaugmentationcombination-therapylines-of-therapytreatment-patterns
On this page
Methods reference only. Use primary source citations and local policy before applying this in a study protocol, regulatory submission, payer dossier, or clinical decision.
In plain language

When a patient changes their drug regimen, analysts need a precise rule to decide what kind of change happened. A switch means the first drug stopped and a second drug took its place; an add-on (or augmentation) means the second drug was added while the first was still being taken. The difference is decided by one thing you can see in pharmacy claims data: does the first drug's supply of pills still have days left on the calendar when the second drug's fills begin? If yes, the two drugs overlap and it is an add-on; if no, the first drug had already run out (or nearly so) before the second started, and it is a switch. Getting this right matters because grouping switchers and add-on patients together quietly mixes two very different clinical decisions.

When to use it
Any consequential treatment-pattern, comparative-effectiveness, persistence, or regulatory/HTA analysis.
At scale and when day-level timing drives the estimand; validate against charts where switch-vs-augment is decisive.
Whenever sequencing, lines of therapy, or time-to-next-treatment is the outcome rather than a nuisance.
Watch out for
More programming, more diagnostics, and each threshold must be justified and sensitivity-tested.
Cannot directly observe intent (inadequate response, intolerance) that defines true augmentation; approximates it via prior persistence.
More structure to specify and defend than a single time-varying confounder term.

Switch, add-on, and augmentation rules

are the algorithm that turns a stream of dispensings or administrations into a classified treatment trajectory. Once exposure episodes have been built (see exposure-episode-construction-rwe), every point where a patient's regimen changes must be labeled, because the label — not the raw fill — is what defines cohorts, index dates, follow-up start, lines of therapy, and the comparator in a treatment-pattern or comparative-effectiveness study. The same calendar event (a new fill of drug B while the patient is on drug A) is a switch, an add-on, or an augmentation depending entirely on the timing rules and the clinical interpretation you pre-specify; getting the rule wrong silently misclassifies exposure for everyone in the cohort.

Core conceptual distinction

Four transitions must be separated, and the operational tell for each is timing, not the drug itself.

  • Switch — class A stops (no fill within a grace/gap window) and class B starts. The patient is on B instead of A. Operationally: `start(B) - end_of_supply(A) <= SWITCH_GAP_DAYS` (a near-contiguous handoff) AND no further A fills.
  • Add-on / combination — class B starts while class A's `days_supply` is still active. Both classes overlap. If A was itself recently initiated (the patient was effectively treatment-naive to the combination), this is a planned combination start; if A had been running for a while, B is an add-on.
  • Augmentation — a specific, clinically loaded subtype of add-on: B is added to an ongoing, persistent A that was given an adequate therapeutic trial without resolution (e.g., adding an atypical antipsychotic to an SSRI in treatment-resistant depression, or a thiazide to an ACE inhibitor in uncontrolled hypertension). The operational tell that distinguishes augmentation from a plain add-on is prior persistence on A (`days_on_A_before_B >= AUGMENT_PRIOR_PERSISTENCE_DAYS`, often an adequate-trial window such as 28–56 days) plus continuation of A after B starts.
  • Line advancement — the regimen as a whole changes after a maintenance gap or a documented progression/failure event, starting a new line of therapy. This is the unit oncology, MS, and IRA Medicare price-negotiation analyses report on. These thresholds — `SWITCH_GAP_DAYS`, `OVERLAP_DAYS_FOR_ADDON`, `AUGMENT_PRIOR_PERSISTENCE_DAYS`, the maintenance-gap that closes a line — are the judgment-dependent parameters; every consequential analysis must vary them in sensitivity analyses.

Pros, cons, and trade-offs

  • vs a single naive rule (e.g., "any new drug class = switch"): Explicit, separately-tunable rules are transparent, reproducible, and defensible to FDA/EMA/HTA reviewers, and they prevent the dominant error of collapsing add-ons and augmentations into switches (which inflates "switching" and empties out "combination" exposure). Cost: more code, more diagnostics, and the need to defend each threshold. Prefer explicit rules for any regulatory-grade or HTA study.
  • vs purely clinical (chart-adjudicated) classification: Rule-based classification scales to millions of patients and is fully reproducible; chart review captures intent ("inadequate response", "intolerance") that timing alone cannot. The augmentation-vs-add-on distinction in particular is an intent construct that claims approximate via prior persistence. Prefer rules at scale, but validate against charts where the switch/augment distinction drives the estimand.
  • vs ignoring the distinction entirely (treat all post-index drugs as time-varying covariates): Folding everything into a time-varying confounder is defensible for some causal questions but discards the treatment-pattern endpoint and makes "what did patients actually do next" unanswerable. Prefer explicit classification whenever sequencing, lines, or persistence-to-next-treatment is the outcome.

When NOT to use — and when it is actively misleading or dangerous

  • When the underlying exposure episodes are unreliable. These rules are only as good as the `days_supply`, gap, and stockpiling assumptions feeding them (see grace-period-gap-rules-rwe, stockpiling-carryover-rules-rwe). Garbage episodes produce confident, wrong labels.
  • When data cannot observe the comparator drug. In Medicare Advantage-only person-time, fee-for-service pharmacy and medical claims are absent, so an "add-on" can be an artifact of one class being invisible. Restrict to fully observable enrollment before classifying.
  • When augmentation requires intent that the data cannot carry. Calling an add-on an "augmentation" without evidence of prior adequate trial fabricates a treatment-resistance phenotype. If the estimand hinges on intent, validate against charts or drop the augmentation label.
  • Infused/clinic-administered or inpatient drugs. Oncology infusions, biologics, and inpatient bundles have no `days_supply`; applying oral gap logic to them is dangerous (see infused-biologic-administration-capture-rwe, inpatient-bridging-exposure-rwe). Use administration-interval logic instead.
  • When line definitions are imposed without progression data. In oncology, defining line advancement purely by drug gaps — without a progression or new-regimen signal — conflates a treatment holiday with progression and miscounts lines.

Data-source operational depth

  • Claims (FFS): The workhorse substrate. Build class-level episodes from pharmacy NDCs (`fill_date`, `days_supply`) and from medical/HCPCS J-codes for clinic-administered drugs. Failure modes: 90-day mail order and stockpiling distend `days_supply` so overlaps look like add-ons; same-day duplicate or reversed claims create phantom combinations (de-duplicate and net out reversals first); adjudication lag means recent fills are incomplete near the data cut. Require continuous medical and pharmacy enrollment across the classification window so "no fill of A" is true absence, not unobserved care.
  • Claims (Medicare Advantage vs FFS): MA-only person-time lacks FFS claims; a switch can look like a discontinuation and an add-on can be invisible. Exclude MA-only spans or restrict to A/B/D FFS enrollees (see medicare-ffs-ma-commercial-claims-differences-rwe).
  • EHR: Classification keys off orders/administrations, not dispensings, and order ≠ taken. Visit-driven capture means a drug added by an outside specialist is missing, so an augmentation is misread as monotherapy continuation; external care leakage is the dominant bias. Link to pharmacy fills where possible.
  • Registry: Often carries adjudicated regimen/line and progression but incomplete fill history; strong for the line-advancement label, weak for the day-level switch/add-on timing. Link to claims for fill-level resolution.
  • Linked claims–EHR: Best substrate — EHR progression/intent plus claims completeness — but order/fill/service date discrepancies must be reconciled before deciding which event came first, since the switch-vs-add-on label is decided by day-level ordering.

Worked claims example (antidepressant augmentation vs switch, FFS pharmacy)

Question: among adults who initiate an SSRI for depression, classify the first regimen modification. Inputs: pharmacy fills with `person_id`, `fill_date`, `days_supply`, `drug_class` in {SSRI, SNRI, ATYPICAL_ANTIPSYCHOTIC}; continuous medical+pharmacy FFS enrollment. Thresholds: `SWITCH_GAP_DAYS = 30`, `OVERLAP_DAYS_FOR_ADDON = 1`, `AUGMENT_PRIOR_PERSISTENCE_DAYS = 56` (an adequate SSRI trial).

  1. Build SSRI episodes by stitching consecutive fills with gaps <= 30 days; the episode's covered period runs from the first `fill_date` to the last `fill_date + days_supply`. Patient: SSRI fills 2024-01-03 (30d), 2024-02-01 (30d), 2024-03-02 (30d) — covered through 2024-03-31, 87 persistent days.
  2. On 2024-03-10 an aripiprazole (ATYPICAL) fill appears.
  3. Is the SSRI still active on 2024-03-10? Yes (covered through 2024-03-31), so this is an overlap → not a switch.
  4. Had the patient been persistent on the SSRI for >= 56 days before 2024-03-10? Days on SSRI before the add = 2024-03-10 − 2024-01-03 = 67 days >= 56 → label = augmentation (atypical added to an adequately-trialed, ongoing SSRI). Contrast: had the SSRI instead stopped (last covered day 2024-02-05) and an SNRI started 2024-02-20 with no further SSRI fills, then `start(SNRI) − end(SSRI) = 15 <= 30` and SSRI does not resume → label = switch. Had the aripiprazole been added on 2024-01-20 (only 17 SSRI-days, < 56) while the SSRI continued → label = add-on (not augmentation): combination too early to call treatment-resistant. Sensitivity analyses re-run all labels at `SWITCH_GAP_DAYS` ∈ {15, 30, 60} and `AUGMENT_PRIOR_PERSISTENCE_DAYS` ∈ {28, 56, 84}, and report a transition table (counts of switch / add-on / augmentation / line-advance) before and after each threshold change.

Decision diagram

flowchart TD
  Mod[New fill of class B while/after class A] --> Q1{Class A still has active days_supply<br/>when B starts? overlap >= OVERLAP_DAYS_FOR_ADDON}
  Q1 -- No --> Q2{B starts within SWITCH_GAP_DAYS of A's<br/>last covered day, and A does not resume?}
  Q2 -- Yes --> SW[SWITCH<br/>B instead of A]
  Q2 -- No --> LA[LINE ADVANCE / NEW EPISODE<br/>gap exceeds maintenance window]
  Q1 -- Yes --> Q3{Persistent on A for >=<br/>AUGMENT_PRIOR_PERSISTENCE_DAYS<br/>adequate trial before B?}
  Q3 -- Yes --> AUG[AUGMENTATION<br/>B added to adequately-trialed ongoing A]
  Q3 -- No --> AO[ADD-ON / COMBINATION<br/>B added to A early]
Decision logic that classifies a treatment modification. Overlap of active supply separates switch/line-advance (sequential) from add-on/augmentation (concurrent); prior persistence on the index class separates augmentation (adequately-trialed) from a plain add-on.
gantt
  title Augmentation example - atypical added to an adequately-trialed SSRI
  dateFormat YYYY-MM-DD
  axisFormat %b
  section SSRI (index class)
  SSRI episode (fills 1/3, 2/1, 3/2; covered through 3/31) :done, ssri, 2024-01-03, 2024-03-31
  section Atypical antipsychotic
  Aripiprazole start (day 67 of SSRI, SSRI still active) :milestone, ari, 2024-03-10, 0d
  Augmentation: B added to ongoing, persistent A :active, aug, 2024-03-10, 21d
Worked augmentation timeline. The atypical starts on day 67 of a still-active SSRI episode (overlap present, prior persistence 67 >= 56), so the modification is classified as augmentation rather than switch or early add-on.

Worked example

Scenario

Patient 2001 is an adult who starts sertraline (an SSRI antidepressant) on January 5, 2024. We want to classify what happens when a second drug appears in their pharmacy record on March 10, 2024 — but the answer depends entirely on whether the patient also refilled their sertraline in early March. We trace two parallel versions of events: Scenario S (Switch) where the sertraline was not refilled before March 10, and Scenario A (Add-on/Augmentation) where a March 1 refill means sertraline is still active when the second drug arrives.

Dataset

Pharmacy fills as they appear in a claims table — same patient, two scenarios that differ only in whether Drug A (sertraline) has a third fill on 2024-03-01.

person_idscenariofill_datedrugdrug_classdays_supply
2001Both2024-01-05sertralineSSRI30
2001Both2024-02-02sertralineSSRI30
2001Scenario A only2024-03-01sertralineSSRI30
2001Both2024-03-10aripiprazoleATYPICAL30
FIG. 1 — DESIGN TIMELINE
Timeline with two drug tracks. Drug A (sertraline) shows two fills Jan 5 and Feb 2 in both scenarios. In Scenario S the drug track ends March 2, a gap bar covers March 3–9, and Drug B starts March 10 with no overlap — labeled SWITCH. In Scenario A a third fill added March 1 extends Drug A through March 30; Drug B starts March 10 while Drug A is still active, and a shaded overlap bar covers March 10–30 — labeled AUGMENTATION (65 days prior persistence ≥ 56-day threshold).
Two-scenario timeline for patient 2001. The top row (Drug A, sertraline) differs between the scenarios: Scenario S has no March 1 refill so Drug A expires March 2, leaving a 7-day gap before Drug B arrives on March 10 — a switch. Scenario A includes the March 1 refill so Drug A is still active on March 10 when Drug B begins, producing a 21-day overlap — and because the patient had 65 days on Drug A before Drug B...

Steps

1Drug A (sertraline) Fill 1 starts 2024-01-05 and covers 30 days: active through 2024-02-03.
2Drug A Fill 2 starts 2024-02-02 — one day before Fill 1 runs out — so the fills stitch together with no gap; the combined episode is active through 2024-03-02.
3SCENARIO S (Switch): No third sertraline fill. Drug A's supply expires 2024-03-02. Drug B (aripiprazole) starts 2024-03-10. There are 7 uncovered days between them (March 3–9). Because 7 days is within the 30-day grace period AND sertraline does not resume, this is classified as a SWITCH: aripiprazole replaced sertraline.
4SCENARIO A (Add-on/Augmentation): Drug A Fill 3 starts 2024-03-01, adding 30 more days; sertraline is now active through 2024-03-30. Drug B (aripiprazole) starts 2024-03-10 — eight days before sertraline runs out. The two drugs overlap for 21 days (March 10–30). Because sertraline is still active when aripiprazole begins, this is NOT a switch.
5To distinguish add-on from augmentation: count how many days the patient had been taking sertraline before aripiprazole was added. From 2024-01-05 to 2024-03-10 is 65 days. Our pre-specified adequate-trial threshold is 56 days. Because 65 >= 56 and sertraline was ongoing, this is classified as AUGMENTATION: aripiprazole was added to a sertraline regimen that had already been given a full trial.

Result

Switch

Scenario S: Drug A last active 2024-03-02, Drug B starts 2024-03-10, gap = 7 days <= 30-day grace period, Drug A does not resume → classification = SWITCH

Augmentation

Scenario A: Drug A active through 2024-03-30, Drug B starts 2024-03-10, overlap = 21 days, prior persistence on Drug A = 65 days >= 56-day threshold → classification = AUGMENTATION

Trade-offs

vs. A single naive rule (any new drug class = switch)
Pros of this
Separately-tunable, transparent rules avoid the dominant error of collapsing add-ons and augmentations into switches; reproducible and defensible for FDA/EMA/HTA review.
vs. Chart adjudicated clinical classification
Pros of this
Scales to millions of patients and is fully reproducible; thresholds are explicit rather than tacit.
vs. Treating all post index drugs as time varying covariates (no classification)
Pros of this
Preserves the treatment-pattern and lines-of-therapy endpoint and answers "what did patients do next".

Runnable example

Classify the FIRST treatment modification per patient as switch / add_on / augmentation / line_advance from claims-style pharmacy fills. Required input (cleaned, de-duplicated, reversals netted out): rx : person_id, fill_date (datetime), drug_class (str), days_supply (int) # one row per fill Episodes are built per...

requires: pandas · numpy
import pandas as pd
import numpy as np

SWITCH_GAP_DAYS = 30               # max gap to treat consecutive fills as one episode / a contiguous switch handoff
OVERLAP_DAYS_FOR_ADDON = 1         # min active-supply overlap of two classes to call an add-on/combination
AUGMENT_PRIOR_PERSISTENCE_DAYS = 56  # adequate-trial persistence on the first class before an add-on becomes augmentation

def _episodes(g: pd.DataFrame) -> pd.DataFrame:
    # Stitch one drug_class's fills into covered episodes (gap-tolerant).
    g = g.sort_values("fill_date")
    g["end"] = g["fill_date"] + pd.to_timedelta(g["days_supply"], unit="D")
    ep_start, ep_end, rows = None, None, []
    for _, r in g.iterrows():
        if ep_start is None:
            ep_start, ep_end = r["fill_date"], r["end"]
        elif r["fill_date"] <= ep_end + pd.Timedelta(days=SWITCH_GAP_DAYS):
            ep_end = max(ep_end, r["end"])               # extend (stockpiling caps at observed end)
        else:
            rows.append((ep_start, ep_end)); ep_start, ep_end = r["fill_date"], r["end"]
    rows.append((ep_start, ep_end))
    return pd.DataFrame(rows, columns=["ep_start", "ep_end"])

def classify_first_modification(rx: pd.DataFrame) -> pd.DataFrame:
    out = []
    for pid, p in rx.groupby("person_id"):
        eps = (p.groupby("drug_class", group_keys=True)
                 .apply(_episodes)
                 .reset_index(level=0).reset_index(drop=True))
        eps = eps.sort_values("ep_start")
        first = eps.iloc[0]                               # the index regimen class/episode
        index_class = first["drug_class"]
        later = eps[(eps["ep_start"] > first["ep_start"]) & (eps["drug_class"] != index_class)]
        if later.empty:
            out.append((pid, index_class, None, "no_modification")); continue
        nxt = later.iloc[0]                               # first modification event
        overlap_days = (min(first["ep_end"], nxt["ep_end"]) - nxt["ep_start"]).days
        index_still_active = overlap_days >= OVERLAP_DAYS_FOR_ADDON
        prior_persistence = (nxt["ep_start"] - first["ep_start"]).days
        if not index_still_active and (nxt["ep_start"] - first["ep_end"]).days <= SWITCH_GAP_DAYS:
            label = "switch"
        elif index_still_active and prior_persistence >= AUGMENT_PRIOR_PERSISTENCE_DAYS:
            label = "augmentation"
        elif index_still_active:
            label = "add_on"
        else:
            label = "line_advance"                       # gap exceeds maintenance window -> new line/episode
        out.append((pid, index_class, nxt["drug_class"], label))
    return pd.DataFrame(out, columns=["person_id", "index_class", "modifier_class", "modification"])

Citations

FOUNDATIONAL / METHODS
  1. [1]Hess LM, Krein PM, Haldane D, Han Y, Sireci AN. Defining treatment regimens and lines of therapy using real-world data in oncology. Future Oncology. 2021;17(15):1865-1877.
  2. [2]Hripcsak G, Ryan PB, Duke JD, et al. Characterizing treatment pathways at scale using the OHDSI network. Proceedings of the National Academy of Sciences. 2016;113(27):7329-7336.
APPLIED EXAMPLES
  1. [3]Andrade SE, Kahler KH, Frech F, Chan KA. Methods for evaluation of medication adherence and persistence using automated databases. Pharmacoepidemiology and Drug Safety. 2006;15(8):565-574.
REPORTING & GUIDANCE
  1. [4]Mahlich J, Tsukazawa S, Wiegand F. Estimating prevalence and healthcare utilization for treatment-resistant depression in Japan: a retrospective claims database study. Drugs - Real World Outcomes. 2018;5(1):35-43.