# Pre-registered plan: does mass azithromycin save young children's lives when only infants get it?

## Question

Twice-yearly mass distribution of a single dose of azithromycin to every child 1 to 59 months old lowered childhood mortality in the MORDOR trial (Niger, Malawi, and Tanzania; 14% overall, 18% in Niger; Keenan et al., NEJM 2018, doi:10.1056/NEJMoa1715474). Because mass antibiotic use selects for resistance, the World Health Organization's 2020 guideline recommended against giving azithromycin to all children under five, and said that where it is given, in high-mortality settings of sub-Saharan Africa, it should go to infants 1 to 11 months old, the age group with the largest effect in MORDOR, with mortality and resistance monitored; the guideline was to be revised within two to three years.

At the time no trial had tested giving azithromycin to infants alone. Since then three cluster-randomized, placebo-controlled trials have: AVENIR in Niger (an infant arm beside an arm treating all children 1 to 59 months; O'Brien et al., NEJM 2024), LAKANA in Mali (infants twice a year or four times a year; NEJM 2025), and MIRAMA in Burkina Faso (infants through Child Health Days; BMJ Global Health 2026). Further trials treated all children 1 to 59 months: AVENIR's child arm, CHAT in Burkina Faso (JAMA 2024), and MORDOR II, which re-randomized MORDOR's communities in Niger. Two individually randomized trials gave azithromycin to every neonate or infant reached at a visit (NAITRE and the CHAT well-infant visit trial, both Burkina Faso).

The most recent meta-analysis (searched to September 2024; Journal of Antimicrobial Chemotherapy 2025, doi:10.1093/jac/dkaf092) pooled five trials by the age at which children died, not by which children were treated, and found the effect on infant mortality uncertain. It predates LAKANA and MIRAMA. No synthesis has pooled the trials of the infant-only strategy, compared it with treating all children, or asked whether infants benefit from treating the children around them.

**Questions.**

1. **P1.** Does twice-yearly mass azithromycin to all children 1 to 59 months lower mortality among children 1 to 59 months?
2. **P2.** Does twice-yearly mass azithromycin to infants 1 to 11 months only lower infant mortality?
3. **P3.** Is infant mortality lowered more when all children 1 to 59 months are treated than when only infants are?
4. **Secondary.** How the effect varies with the mortality rate where it is given, whether it lasts over years of treatment, how it compares by age within the trials that treated all children, whether more frequent dosing or individual dosing of infants at visits works, and how many registered trials never reported.

## What was known before this plan

Before writing this plan the author read the abstracts of the main reports of MORDOR, AVENIR, CHAT, LAKANA, MIRAMA, and the PRET trial's mortality analysis, the abstracts of the 2025 meta-analysis and of a 2019 pooled analysis, and the abstract of a secondary analysis of AVENIR that gives infant mortality rates in its three arms: their headline estimates are known. No number has been extracted. This plan fixes, before extraction: which trials and comparisons count, which estimate each contributes, how estimates are combined, which sensitivity analyses run, and how each result will be read.

## Data

**Reports.** PubMed (E-utilities) and Europe PMC (titles and abstracts, which adds preprints), searched on 2026-10-17 for azithromycin, mass or community or population-scale administration, mortality, and randomization (queries in `data/search.json`): 233 PubMed records and 259 Europe PMC records, 277 distinct.

**Registrations.** ClinicalTrials.gov, searched the same day for interventional studies of azithromycin with mortality or survival among their outcomes: 172 registrations.

**Reports linked to registrations.** PubMed records that name an eligible registration in their secondary-source identifiers or text, found by searching PubMed for each registration's number: this finds reports whose abstracts the search terms miss (listed in `data/screening.json`).

## Screening

Two coders, separate instances of Claude Opus 5.5 (the model that wrote this study), each working alone from `screening_codebook.md` with only titles and abstracts, coded every record (`trial_report`, `protocol`, `review`, `exclude`) and every registration (`eligible`, `exclude`). They agreed on 251 of 277 records (κ = 0.74 for keeping a record; one kept 78, the other 52) and on all 172 registrations (κ = 1; 15 eligible). A third instance, given the codebook, the record, and both decisions, decided the 26 records they differed on, all reports from eligible trials' substudies (malaria, growth, serology, morbidity) that one coder kept in case they reported deaths: it kept one (a MORDOR safety substudy in infants) and excluded 25. 57 records were kept: 42 trial reports, 11 protocols, and 4 reviews (`data/records.json`, `data/screening.json`).

## Trials and their designs

Reports and registrations were grouped into trials by registration number, trial name, and links in their text (`data/groups.json`, each grouping with its reason). That gives 17 trials, 16 of which were coded for design; the 17th, AVENIR II in Niger, is still recruiting, has no results, and wasn't coded. Three kept records belong to no trial's mortality comparison (two analyses of malnutrition screening nested in CHAT, and a doctoral thesis without open full text), and the included trials of the four reviews are all in this list. Reports linked to eligible registrations added 46 PubMed records the search didn't return; seven of them report on an included trial and are read here (`data/screening.json`).

Two further coders, working alone from `design_codebook.md`, coded each trial's design from its design text only: its registration, the Methods of its open reports and protocols, and, for a report without open full text, its abstract up to where its results begin. They coded eligibility, the unit randomized, arms (who got azithromycin and who placebo, how often, how many rounds), the control, masking, each comparison's strategy, how deaths were ascertained, and co-interventions. They agreed on eligibility, the unit randomized, the control, and masking for all 16 trials, and on each trial's comparisons and their strategies for 14; a third reader decided the other two (TIRET and SANTE, neither of which has reported mortality), with reasons (`coding/`). While they worked, the design text of three trials (TANA, ELICIT, GAMIN) gained text from reports found through their registrations; both coders noticed and coded those three from the final text. Fourteen trials are eligible; ELICIT (azithromycin only ever given with nitazoxanide, in a growth trial) and GAMIN (a microbiome trial of 500 children) aren't. Where the coders agree on every field the analyses use, the first coder's object stands for both.

**Strategies.** Each randomized comparison of an azithromycin arm with its control has one strategy:

- `all_children_mda`: communities randomized; azithromycin to every child 1 to 59 months (or a wider band within childhood) against placebo, no treatment, or delayed treatment.
- `infant_only_mda`: communities randomized; azithromycin to infants 1 to 11 months only, older children getting placebo or nothing, against placebo.
- `individual_infant`: individuals randomized; azithromycin to every neonate or infant at a visit, against placebo.
- `individual_child`: individuals randomized; azithromycin to every child reached by a programme, against placebo.
- `community_wide_mda`: communities randomized; azithromycin to everyone from some age (trachoma programmes).
- `schedule_comparison`: azithromycin schedules compared, with no untreated arm.

**Comparisons.** Each azithromycin arm against the trial's untreated (placebo, no treatment, or delayed treatment) arm is one comparison, with the strategy of who that arm treated. Where two azithromycin arms share one control, each is compared with it, the two comparisons are marked as sharing it, and the two arms' direct contrast is a `schedule_comparison`. A trial randomized separately within several countries gives one comparison per country.

`data/trials.json` holds each trial's decided design. The comparisons, by strategy:

- `all_children_mda` (P1): MORDOR in Niger, Malawi, and Tanzania (three comparisons); MORDOR II in Niger, which re-randomized MORDOR's Niger communities after a third year in which all of them were treated; AVENIR's child arm; CHAT. Six comparisons from four trials.
- `infant_only_mda`: AVENIR's infant arm; LAKANA's twice-yearly and four-times-yearly arms, which share its control; MIRAMA. P2 uses the three twice-yearly comparisons.
- `individual_infant`: the CHAT well-infant visit trial and NAITRE, with results; ICARIA and SANTE, without.
- `individual_child`: azithromycin added to seasonal malaria chemoprevention.
- `community_wide_mda`: TANA (its annual and twice-yearly arms against delayed treatment, and its three treated arms together, which its report compares, added as a comparison of their own); TIRET, without mortality results. TANA's arm treating children 1 to 9 years four times a year is coded `other`.
- `schedule_comparison`: AVENIR's child arm against its infant arm (P3's within-trial check), LAKANA's four-times-yearly arm against its twice-yearly arm, and PRET's twice-yearly treatment of children against annual treatment of everyone.

**Precision.** From the intervals the three infant-only trials' abstracts print, a common-effect pooled estimate for P2 would have a standard error of about 0.054 on the log scale: about 80% power, at two-sided α = 0.05, to detect the 14% reduction MORDOR reported for all children.

## Outcomes

Numbers are extracted after this plan is registered, by two coders working alone from `extraction_codebook.md`, copying what each source prints in the form printed; a third coder decides every entry on which they differ, against the source. Sources for each trial: the Results, tables, and figure captions of its open reports, the abstracts of reports without open full text, and results posted on ClinicalTrials.gov. The code does every conversion.

The outcome is **all-cause mortality**, as each trial measured it, in the age band each analysis names.

## Effect measure

Each estimate is a log ratio of mortality, azithromycin against control, with its standard error, negative meaning fewer deaths with azithromycin:

- A printed incidence rate ratio, rate ratio, hazard ratio, risk ratio, or odds ratio with its confidence interval gives the log ratio and its standard error from the interval, $\mathrm{SE} = (\log U - \log L) / (2 z)$, with $z$ for the interval's level. A percent reduction with its interval is converted to a ratio, $1 - p/100$. Deaths in these trials are rare enough (a few percent) that these ratios are treated as one measure.
- An estimate printed only as deaths and person-years (or deaths and children) per arm gives the log rate ratio (or risk ratio) with its Poisson (or binomial) standard error, multiplied by the square root of that trial's **design effect**: the ratio of the variance of the trial's primary estimate, as printed with its interval, to the Poisson variance of the same estimate from its counts. Where a trial's primary estimate doesn't allow that, the median design effect of the trials that do is used.
- **Which estimate.** For each comparison and age band: the estimate over the whole planned follow-up, among all children in the band (no subgroup), from the trial's primary (intention-to-treat) analysis, adjusted for the randomization of communities. If a trial prints the band only as narrower bands (such as 1 to 5 and 6 to 11 months), their log ratios are combined by inverse variance into one. Where two reports print different numbers for the same estimate, the main report's is used.
- **Countries.** A trial randomized separately within several countries (MORDOR) gives one comparison per country, from its country estimates. Where it prints an age band only for all its countries together, that estimate stands for the trial, as one comparison, in the analyses of that band.
- **Shared control.** Where two comparisons of one trial share a control arm and enter the same analysis (AVENIR's infant and child arms in P3), the control's deaths and person-time are split between them (Cochrane Handbook 23.3.4): each comparison's variance is recomputed from counts with half the control's deaths, times the comparison's design effect.

## Estimates

All pooled effects are random-effects estimates by restricted maximum likelihood with Knapp–Hartung confidence intervals and tests (`metafor::rma`, `method = "REML"`, `test = "knha"`), with τ², I², and the 95% prediction interval.

- **P1:** the pooled log rate ratio, mortality among children 1 to 59 months, over the `all_children_mda` comparisons against placebo.
- **P2:** the pooled log rate ratio, mortality among infants 1 to 11 months, over the `infant_only_mda` comparisons with twice-yearly dosing against placebo (the schedule the WHO guideline describes).
- **P3:** among the `all_children_mda` comparisons' infant estimates (deaths among infants 1 to 11 months) and the P2 comparisons, the meta-regression coefficient of `infant_only` (1 for P2's comparisons, 0 for the others) in a model of the infant log rate ratio: the log of the ratio of the two strategies' rate ratios, positive when treating infants alone lowers infant mortality less than treating all children.
- **Multiplicity:** Holm's correction over the three primary p values.

**Sensitivity analyses** for each primary: a common-effect (inverse-variance) estimate; a Bayesian random-effects estimate with a half-normal prior of scale 0.5 on τ (Röver et al. 2021) and a flat prior on the mean, by numerical integration; each comparison left out in turn; only double-masked, placebo-controlled comparisons. For P1, also without MORDOR II (whose communities MORDOR had treated before re-randomization). For P2, also with LAKANA's four-times-yearly arm in place of its twice-yearly arm, with both of LAKANA's arms (control split between them), without MIRAMA (whose deaths were counted from birth histories at the end), and with the `individual_infant` comparisons added. For P3, AVENIR's within-trial comparison of its child and infant arms on infant mortality, from the trial's own estimate where printed, otherwise from counts with its design effect.

## How results will be read

- **P1** lowers mortality if its Holm-corrected p < 0.05. It is **robust** if, in addition, the common-effect estimate has p < 0.05 and every leave-one-out estimate has p < 0.05.
- **P2** lowers infant mortality if its Holm-corrected p < 0.05. Otherwise the paper says no reduction was found and states the largest reduction its 95% confidence interval allows (one minus its lower limit), and whether that interval excludes the reduction in P1.
- **P3** says treating all children lowers infant mortality more than treating infants alone if the coefficient is positive with Holm-corrected p < 0.05, and is **robust** if AVENIR's within-trial comparison also favours treating all children (rate ratio below 1, child arm against infant arm) with p < 0.05.
- Every pooled result is reported with its interval whatever its p value, and the paper reports every analysis below, planned or not, and says which is which.

## Secondary analyses

- **Mortality where it is given.** Among all mass-distribution comparisons against placebo (`all_children_mda` and `infant_only_mda`, each in the age band it treated), the meta-regression slope of the log rate ratio on the log of the control arm's mortality rate in that band (deaths per 1,000 person-years), with `infant_only` as a second covariate. With few comparisons this has little power; it is reported with its interval and read as descriptive.
- **Durability.** Among `all_children_mda` and `infant_only_mda` comparisons that print estimates for successive periods (years, or periods after successive distributions), the slope of the log rate ratio on the period's midpoint in years since the first distribution, with a random intercept for each comparison (`metafor::rma.mv`).
- **Age within all-children trials.** Among `all_children_mda` comparisons, the pooled ratio of the infant (1 to 11 months) rate ratio to the 12 to 59 months rate ratio, each comparison giving the difference of its two log rate ratios with the variance of their sum (the two age groups are different children, so their estimates are treated as independent).
- **Individual dosing of infants.** The pooled log rate ratio (or risk ratio) of infant mortality over the `individual_infant` comparisons.
- **Frequency.** LAKANA's four-times-yearly arm against its twice-yearly arm on infant mortality, from the trial's estimate where printed, otherwise from counts with its design effect; and PRET's twice-yearly treatment of children against annual treatment of everyone, as printed.
- **Community-wide treatment.** The `community_wide_mda` comparisons' estimates, each as printed, not pooled with the others.
- **Individual dosing of children** (`individual_child`): each estimate as printed.
- **The file drawer.** Of the registrations both screeners found eligible, less those of trials the design coders found ineligible, whose primary completion date was at least 12 months before the search and that weren't withdrawn or still recruiting, how many reported mortality (in a report this review found, or by results posted on ClinicalTrials.gov) and how many didn't (`data/registry.json`).

## Integrity

Before extraction: three trials' registrations were first submitted after enrollment began, by the month: MORDOR II (by 18 days), PRET (by six months), and the seasonal malaria chemoprevention trial (by two months). No report of an included trial carries a retraction or expression-of-concern notice. Of the three, only MORDOR II enters a primary analysis, and P1's sensitivity analysis without it covers this.

For each eligible trial: whether its registration came before enrollment began (by the month), whether a retraction or expression of concern is linked to any of its reports, whether its reports agree on the number of units and children randomized, and whether participants and those counting deaths were masked. A trial failing any of the first three is reported with the failure and left out in a sensitivity analysis of each primary it enters.

## Software

R 4.6.1 with metafor 5.2.1 and jsonlite 2.0.0, in the container `env/Dockerfile` builds. `code/analyze.R`, registered with this plan under `plan/code/`, reads `data/` and writes every result; it was run end to end on made-up data before registration. Once the numbers are extracted, it is first run with `--blind`, which flips the sign of each comparison's log ratios at random (seed in `data/parameters.json`), to check that every estimate is found and every model fits before the results mean anything. Any change to the code after registration is listed in `deviations.json`.
