{
  "_id": "6abfae1d99f7aa8c6aa59349",
  "Package": "mudnester",
  "Title": "Surveillance Data Cleaning and Preparation for Public Health",
  "Version": "0.7.8",
  "Description": "Clean, prepare, and aggregate surveillance data for public\nhealth analysis. Provides structural data cleaning and\nstandardisation (clean_the_nest()), age categorisation against\n~50 published schemes with publication-ready labelling\n(preening()), time-unit aggregation with zero-filling and\nseasonal awareness (roost()), joint aggregation of several\nlinked event dates (e.g. onset, admission, ICU, complication,\nfatality) into one table of comparable rate columns (flyway()),\nunder-ascertainment correction via a stratified, time-varying\nmultiplier factor supplied directly, derived by the ratio\n(multiplier) method, or derived by inverting an externally\nsourced severity rate (e.g. an infection-fatality-rate anchor)\nagainst an observed severity ratio (corncrake()), comorbidity\ndetection from ICD-10-AM clinical coding (plumage()), vaccine\ncoverage data construction (brood()), hash-based\nde-identification (molting()), and relinking of previously\nde-identified data (homing()). brood() produces a brood_df\nobject supporting two population models: pre-aggregated\ndenominators (population_model = \"pre_aggregated\") and\nrecord-level cohort designs (population_model = \"cohort\"). The\ncohort model handles single time-point coverage snapshots,\ninterrupted time series analysis via a built-in sweep returning\nmonthly coverage rates (time_series = TRUE), and birth cohort\ndesigns with person-time computation. This cohort/time-series\ncoverage model was applied in Roughan et al. (2026)\n<doi:10.33321/cdi.2026.50.031> to estimate infant immunisation\ncoverage against respiratory syncytial virus over an 18-month\nperiod. Both wide format (one row per person with dose columns,\nfrom 'starling'::murmuration()) and long format (one row per\ndose) are accepted. corncrake() returns both a point-corrected\ncount and uncertainty bounds wherever they can be derived,\nincluding the inverse relationship between a severity-anchored\nfactor and the bounds of its own reference rate. Built for\nAustralian public health surveillance practice but not specific\nto it -- see individual function documentation for notes on\nnon-Australian use (e.g. Northern Hemisphere season\nboundaries).",
  "Authors@R": "c(\nperson(\"Nicolas\", \"Smoll\", email = \"nicolas.smoll@health.qld.gov.au\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-6923-9701\")),\nperson(\"Moderna\", role = \"fnd\",\ncomment = \"Support for this package's development was provided via the Moderna Global Research Fellowship\")\n)",
  "License": "MIT + file LICENSE",
  "Config/testthat/edition": "3",
  "Encoding": "UTF-8",
  "Language": "en-GB",
  "LazyData": "true",
  "RoxygenNote": "8.0.0",
  "VignetteBuilder": "knitr",
  "URL": "https://github.com/nrsmoll/mudnester",
  "BugReports": "https://github.com/nrsmoll/mudnester/issues",
  "NeedsCompilation": "no",
  "Author": "Nicolas Smoll [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-6923-9701>), Moderna [fnd]\n(Support for this package's development was provided via the\nModerna Global Research Fellowship)",
  "Maintainer": "Nicolas Smoll <nicolas.smoll@health.qld.gov.au>",
  "Packaged": {
    "Date": "2026-10-02 13:10:15 UTC",
    "User": "root"
  },
  "Repository": "https://cran.r-universe.dev",
  "Date/Publication": "2026-10-02 12:52:35 UTC",
  "RemoteUrl": "https://github.com/cran/mudnester",
  "RemoteRef": "HEAD",
  "RemoteSha": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
  "_user": "cran",
  "_type": "src",
  "_file": "mudnester_0.7.8.tar.gz",
  "_fileid": "https://r2.ropensci.org/6a626d7a796bf8ca27a323b9d751562f18d085decadead06d4fa4bb79b837ef1",
  "_filesize": 605263,
  "_sha256": "6a626d7a796bf8ca27a323b9d751562f18d085decadead06d4fa4bb79b837ef1",
  "_expires": "2027-01-10T13:14:03.000Z",
  "_created": "2026-10-02T13:10:15.000Z",
  "_published": "2026-10-02T13:14:05.207Z",
  "_jobs": [
    {
      "job": 110851324703,
      "time": 182,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11228665157"
    },
    {
      "job": 110851324731,
      "time": 131,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11228326319"
    },
    {
      "job": 110849116296,
      "time": 371,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11227499268"
    },
    {
      "job": 110851324784,
      "time": 156,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11227474954"
    },
    {
      "job": 110851324788,
      "time": 103,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11227623428"
    },
    {
      "job": 110851324793,
      "time": 94,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11227871681"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279",
  "_status": "success",
  "_upstream": "https://github.com/cran/mudnester",
  "_commit": {
    "id": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
    "author": "Nicolas Smoll <nicolas.smoll@health.qld.gov.au>",
    "committer": "cran-robot <csardi.gabor+cran@gmail.com>",
    "message": "version 0.7.8\n",
    "time": 1790945555
  },
  "_maintainer": {
    "name": "Nicolas Smoll",
    "email": "nicolas.smoll@health.qld.gov.au",
    "orcid": "0000-0002-6923-9701"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "dplyr",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "tidyr",
      "version": ">= 1.3.0",
      "role": "Imports"
    },
    {
      "package": "lubridate",
      "version": ">= 1.9.0",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "version": ">= 1.5.0",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "version": ">= 3.2.0",
      "role": "Imports"
    },
    {
      "package": "digest",
      "version": ">= 0.6.30",
      "role": "Imports"
    },
    {
      "package": "janitor",
      "version": ">= 2.2.0",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "version": ">= 1.42",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "version": ">= 2.20",
      "role": "Suggests"
    },
    {
      "package": "usethis",
      "version": ">= 2.1.0",
      "role": "Suggests"
    },
    {
      "package": "gtsummary",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    }
  ],
  "_owner": "cran",
  "_selfowned": false,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-40",
      "n": 1
    }
  ],
  "_tags": [
    {
      "name": "0.7.8",
      "date": "2026-10-02"
    }
  ],
  "_stars": 0,
  "_userbio": {
    "uuid": 6899542,
    "type": "organization",
    "name": "cran",
    "followers": 630,
    "description": "Unofficial read-only mirror of all CRAN R packages"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/mudnester"
  },
  "_devurl": "https://github.com/nrsmoll/mudnester",
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/mudnester.html",
    "LICENSE"
  ],
  "_cranurl": false,
  "_exports": [
    "brood",
    "clean_the_nest",
    "corncrake",
    "flyway",
    "homing",
    "list_age_schemes",
    "molting",
    "plumage",
    "preening",
    "roost"
  ],
  "_datasets": [
    {
      "name": "age_schemes",
      "title": "Age Banding Scheme Definitions",
      "object": "age_schemes",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "scheme",
        "family",
        "focus_tags",
        "n_bands",
        "breaks",
        "labels",
        "age_unit",
        "source",
        "source_url",
        "last_checked",
        "is_illustrative"
      ],
      "rows": 50,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "age_schemes",
      "title": "Age Banding Scheme Definitions",
      "topics": [
        "age_schemes"
      ]
    },
    {
      "page": "brood",
      "title": "Construct a Vaccine Coverage Data Object",
      "topics": [
        "brood"
      ]
    },
    {
      "page": "clean_the_nest",
      "title": "Clean and Standardise Surveillance Data",
      "topics": [
        "clean_the_nest"
      ]
    },
    {
      "page": "corncrake",
      "title": "Correct Surveillance Counts for Under-Ascertainment",
      "topics": [
        "corncrake"
      ]
    },
    {
      "page": "flyway",
      "title": "Aggregate Multiple Sequential Event Dates in One Table",
      "topics": [
        "flyway"
      ]
    },
    {
      "page": "homing",
      "title": "Relink De-identified Data Using the molting() Lookup Table",
      "topics": [
        "homing"
      ]
    },
    {
      "page": "list_age_schemes",
      "title": "List Available Age Banding Schemes",
      "topics": [
        "list_age_schemes"
      ]
    },
    {
      "page": "molting",
      "title": "De-identify a Dataset with Hash-Based Relinking",
      "topics": [
        "molting"
      ]
    },
    {
      "page": "plumage",
      "title": "Identify Chronic Comorbidities Using ICD-10-AM U-Codes and Acute Admission Codes",
      "topics": [
        "plumage"
      ]
    },
    {
      "page": "preening",
      "title": "Age Categorisation and Variable Labelling",
      "topics": [
        "preening"
      ]
    },
    {
      "page": "print.brood_df",
      "title": "Print Method for brood_df Objects",
      "topics": [
        "print.brood_df"
      ]
    },
    {
      "page": "roost",
      "title": "Build an Epicurve: Aggregate Surveillance Records by Time Unit",
      "topics": [
        "roost"
      ]
    }
  ],
  "_pkglogo": "https://github.com/cran/mudnester/raw/HEAD/man/figures/logo.png",
  "_rundeps": [
    "cli",
    "cpp11",
    "digest",
    "dplyr",
    "generics",
    "glue",
    "hms",
    "janitor",
    "lifecycle",
    "lubridate",
    "magrittr",
    "pillar",
    "pkgconfig",
    "purrr",
    "R6",
    "rlang",
    "snakecase",
    "stringi",
    "stringr",
    "tibble",
    "tidyr",
    "tidyselect",
    "timechange",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "age-schemes.Rmd",
      "filename": "age-schemes.html",
      "title": "Age Scheme Catalogue",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "brood.Rmd",
      "filename": "brood.html",
      "title": "brood(): Vaccine Coverage Data Structures for All Study Designs",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "clean-the-nest.Rmd",
      "filename": "clean-the-nest.html",
      "title": "clean_the_nest(): Standardising Surveillance Data",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "corncrake.Rmd",
      "filename": "corncrake.html",
      "title": "corncrake(): Correcting Surveillance Counts for Under-Ascertainment",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "flyway.Rmd",
      "filename": "flyway.html",
      "title": "flyway(): Aggregating Several Linked Event Dates in One Table",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "mudnester-getting-started.Rmd",
      "filename": "mudnester-getting-started.html",
      "title": "Getting Started with mudnester",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "homing.Rmd",
      "filename": "homing.html",
      "title": "homing(): Relinking De-identified Data",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "molting.Rmd",
      "filename": "molting.html",
      "title": "molting(): Hash-Based De-identification",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "plumage.Rmd",
      "filename": "plumage.html",
      "title": "plumage(): Comorbidity Detection from ICD-10-AM Coding",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "preening.Rmd",
      "filename": "preening.html",
      "title": "preening(): Age Categorisation Against ~50 Named Schemes",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    },
    {
      "source": "roost.Rmd",
      "filename": "roost.html",
      "title": "roost(): Time-Unit Aggregation for Surveillance Data",
      "author": "Dr Nicolas Smoll, SCPHU, Sunshine Coast Hospital and Health Service",
      "engine": "knitr::rmarkdown",
      "headings": [
        "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"
      ],
      "created": "2026-10-02 12:52:35",
      "modified": "2026-10-02 12:52:35",
      "commits": 1
    }
  ],
  "_score": 3.041392685158225,
  "_indexed": false,
  "_nocasepkg": "mudnester",
  "_universes": [
    "cran",
    "nrsmoll"
  ],
  "_indexurl": "https://nrsmoll.r-universe.dev/mudnester",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.7.8",
      "date": "2026-10-02T13:13:18.000Z",
      "distro": "resolute",
      "commit": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
      "fileid": "https://r2.ropensci.org/a156b129635c7e6c93448e1c1320d1ef7e6d3409f91ae7b6405e503b6d52e3f4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.7.8",
      "date": "2026-10-02T13:12:35.000Z",
      "distro": "resolute",
      "commit": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
      "fileid": "https://r2.ropensci.org/4c066dcfdeb4f541031b4c6835d4898c6c5d864522a2bcc89976791b9991055d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.7.8",
      "date": "2026-10-02T13:13:15.000Z",
      "commit": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
      "fileid": "https://r2.ropensci.org/2be8d156301695060138415c17669bde4dbf78d200363f54f6cd4fec931e3ed1",
      "status": "success",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.7.8",
      "date": "2026-10-02T13:11:44.000Z",
      "commit": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
      "fileid": "https://r2.ropensci.org/326d9bdb5cf3af23c32335250e5856f9ec086e68a39de64330e64b000b80fcd3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.7.8",
      "date": "2026-10-02T13:11:37.000Z",
      "commit": "f7d9bb56bde2a1a502fd8e0c9a8080ab0044f216",
      "fileid": "https://r2.ropensci.org/27418c6e2921982319251ef3cdf75cbf7495149257126e2fde7a97b2a8a56881",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/cran/actions/runs/37010553279"
    }
  ]
}