Package: mudnester 0.7.8

Nicolas Smoll

mudnester: Surveillance Data Cleaning and Preparation for Public Health

Clean, prepare, and aggregate surveillance data for public health analysis. Provides structural data cleaning and standardisation (clean_the_nest()), age categorisation against ~50 published schemes with publication-ready labelling (preening()), time-unit aggregation with zero-filling and seasonal awareness (roost()), joint aggregation of several linked event dates (e.g. onset, admission, ICU, complication, fatality) into one table of comparable rate columns (flyway()), under-ascertainment correction via a stratified, time-varying multiplier factor supplied directly, derived by the ratio (multiplier) method, or derived by inverting an externally sourced severity rate (e.g. an infection-fatality-rate anchor) against an observed severity ratio (corncrake()), comorbidity detection from ICD-10-AM clinical coding (plumage()), vaccine coverage data construction (brood()), hash-based de-identification (molting()), and relinking of previously de-identified data (homing()). brood() produces a brood_df object supporting two population models: pre-aggregated denominators (population_model = "pre_aggregated") and record-level cohort designs (population_model = "cohort"). The cohort model handles single time-point coverage snapshots, interrupted time series analysis via a built-in sweep returning monthly coverage rates (time_series = TRUE), and birth cohort designs with person-time computation. This cohort/time-series coverage model was applied in Roughan et al. (2026) <doi:10.33321/cdi.2026.50.031> to estimate infant immunisation coverage against respiratory syncytial virus over an 18-month period. Both wide format (one row per person with dose columns, from 'starling'::murmuration()) and long format (one row per dose) are accepted. corncrake() returns both a point-corrected count and uncertainty bounds wherever they can be derived, including the inverse relationship between a severity-anchored factor and the bounds of its own reference rate. Built for Australian public health surveillance practice but not specific to it -- see individual function documentation for notes on non-Australian use (e.g. Northern Hemisphere season boundaries).

Authors:Nicolas Smoll [aut, cre], Moderna [fnd]

mudnester_0.7.8.tar.gz
mudnester_0.7.8.zip(r-4.7-any)mudnester_0.7.8.zip(r-4.6-any)
mudnester_0.7.8.tar.gz(r-4.7-any)mudnester_0.7.8.tar.gz(r-4.6-any)
mudnester_0.7.8.tgz(r-4.6-emscripten)
manual.pdf |manual.html✨
DESCRIPTION
card.svg |card.png
mudnester/json (API)

# Install 'mudnester' in R:
install.packages('mudnester', repos = c('https://cran.r-universe.dev', 'https://cloud.r-project.org'))

Bug tracker:https://github.com/nrsmoll/mudnester/issues

Datasets:

On CRAN:

Conda:

3.04 score 10 exports 26 dependencies

Last updated from:f7d9bb56bd. Checks:6 OK. Indexed: no.

TargetResultTimeFilesSyslog
linux-develOK182
source / vignettesOK371
linux-releaseOK131
windows-develOK103
windows-releaseOK94
wasm-releaseOK156

Exports:broodclean_the_nestcorncrakeflywayhominglist_age_schemesmoltingplumagepreeningroost

Dependencies:clicpp11digestdplyrgenericsgluehmsjanitorlifecyclelubridatemagrittrpillarpkgconfigpurrrR6rlangsnakecasestringistringrtibbletidyrtidyselecttimechangeutf8vctrswithr

Age Scheme Catalogue
Using this catalogue | Design rules that apply to every scheme | Family A — National statistical standards (Australia) | Family B — International statistical standards | Family C — Vaccination & immunisation guidance | Family D — Surveillance-system conventions | Family E — Clinical & developmental staging | Family F — Disease- and research-specific bands | Verifying illustrative schemes

Last update: 2026-10-02
Started: 2026-10-02

brood(): Vaccine Coverage Data Structures for All Study Designs
Overview | Why "brood"? | Two population models | Model 1: Pre-aggregated denominator | Multi-vaccine product comparison | Model 2: Cohort -- single time point | Window 2a: Vaccination status at exit | Window 2b: Baseline (pre-entry) vaccination status | Window 2c: Vaccination within 1 year of cohort entry | Window 2d: Post-intervention vaccination | Model 3: Cohort -- birth cohort with person-time | Model 4: Cohort -- time series (interrupted time series analysis) | Stratified time series | Passing to bowerbird::brood_plot() | The denominator_notes requirement | Session info

Last update: 2026-10-02
Started: 2026-10-02

clean_the_nest(): Standardising Surveillance Data
What clean_the_nest() does | The three data types | Worked examples | Cases (notifiable disease linelist) | Hospital admissions | Vaccination data — long to wide | Birth-cohort studies | Australian Medicare numbers | Structure | Which column to use for linkage? | The drop_eggs argument | What comes next

Last update: 2026-10-02
Started: 2026-10-02

corncrake(): Correcting Surveillance Counts for Under-Ascertainment
What corncrake() does | Three ways to get a factor | Synthetic data | User-supplied factors | Uncertainty: two different questions | Deriving a factor instead: the ratio (multiplier) method | Severity anchor: the CFR/IFR-anchor inversion | A worked example, reproducing the paper's own numbers | The bounds invert — and corncrake() handles that for you | A stratified or time-varying reference rate | Rates alongside corrected counts | A note on missing factors

Last update: 2026-10-02
Started: 2026-10-02

flyway(): Aggregating Several Linked Event Dates in One Table
What flyway() does | Synthetic linked data | One call, several event columns | Observed rates, directly | Why a wrapper, not a change to roost() | Feeding straight into corncrake() | Unnamed events

Last update: 2026-10-02
Started: 2026-10-02

Getting Started with mudnester
Why mudnester? | The pipeline at a glance | Synthetic data | Step 1 — clean_the_nest(): standardise and prepare | Step 2 — preening(): age categorisation | Step 3 — roost(): aggregate to a time unit | Step 4 — corncrake(): correct for under-ascertainment | Step 5 — molting() + homing(): de-identification | Complete pipeline summary | Further reading

Last update: 2026-10-02
Started: 2026-10-02

homing(): Relinking De-identified Data
When to use homing() | The basic relink workflow | Controlling the hash column name | Removing the hash after relinking | Partial matches and unmatched records | Security and governance checklist | What comes next

Last update: 2026-10-02
Started: 2026-10-02

molting(): Hash-Based De-identification
Why de-identify? | What gets removed | The output list | Hash algorithm selection | Controlling which columns are hashed | Adding columns to the removal list | Irreversible de-identification | Hash collisions | What comes next

Last update: 2026-10-02
Started: 2026-10-02

plumage(): Comorbidity Detection from ICD-10-AM Coding
Why a dual-code strategy? | Conditions detected | Basic usage | The conditions_category summary | No-decimal code format | Including AR-DRG codes | Prefixing output columns | Lean output with drop_eggs | After plumage(): what comes next | Notes for SCPHU practice

Last update: 2026-10-02
Started: 2026-10-02

preening(): Age Categorisation Against ~50 Named Schemes
The problem preening() solves | Three ways to specify a scheme | 1. Exact name | 2. Filter to a single match | 3. Let list_age_schemes() guide you | The scheme families | Focus tags — cross-cutting filters | Neonatal schemes: age_unit = "days" | Custom schemes | Catch-all bands and the full-lifespan rule | After preening: what comes next

Last update: 2026-10-02
Started: 2026-10-02

roost(): Time-Unit Aggregation for Surveillance Data
What roost() does | Synthetic data | Available time units | Examples | Monthly counts by pathogen | Epidemiological weeks | Seasons (southern hemisphere) | Biannual — half-year aggregation | Event columns — counting outcomes | Stratified aggregation after preening() | The roost_tbl object | Zero-filling matters | What comes next

Last update: 2026-10-02
Started: 2026-10-02