{
  "_id": "6a53c4119b92047c28d591a2",
  "Package": "pft",
  "Type": "Package",
  "Title": "Reference Values and Interpretation for Pulmonary Function Tests",
  "Version": "1.0.1",
  "Authors@R": "c(\nperson(given = \"Pat\",   family = \"Johnson\",   email = \"johnson.pat@mayo.edu\",\nrole = c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0001-8365-1375\")),\nperson(given = \"Scott\", family = \"Helgeson\",\nrole = \"aut\",\ncomment = c(ORCID = \"0000-0001-7590-2293\")),\nperson(given = \"Zach\",  family = \"Quicksall\",\nrole = \"ctb\"),\nperson(given = \"Jairo\", family = \"Pena\",\nrole = \"ctb\")\n)",
  "Description": "Computes predicted values and lower/upper limits of normal\nfor pulmonary function tests according to American Thoracic\nSociety (ATS) and European Respiratory Society (ERS) reference\nstandards. Supports spirometry (Global Lung Function Initiative\nGLI 2012, Quanjer et al. (2012)\n<doi:10.1183/09031936.00080312>; and the race-neutral GLI 2022\n/ GLI Global equations, Bowerman et al. (2023)\n<doi:10.1164/rccm.202205-0963OC>), static lung volumes (GLI\n2021, Hall et al. (2021) <doi:10.1183/13993003.00289-2020>),\nand the carbon monoxide transfer factor / diffusion capacity\n(GLI 2017, Stanojevic et al. (2017)\n<doi:10.1183/13993003.00010-2017>, including the 2020 author\ncorrection <doi:10.1183/13993003.50010-2017>). Also assigns\ninterpretive pattern labels (Normal, Non-specific, Obstructed,\nRestricted, Mixed) from spirometry and lung-volume measurements\nfollowing the ERS/ATS 2022 interpretation algorithm, Stanojevic\net al. (2022) <doi:10.1183/13993003.01499-2021>.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/overdodactyl/pft",
  "BugReports": "https://github.com/overdodactyl/pft/issues",
  "Encoding": "UTF-8",
  "LazyData": "true",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.2",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Repository": "https://overdodactyl.r-universe.dev",
  "Date/Publication": "2026-07-12 15:38:17 UTC",
  "RemoteUrl": "https://github.com/overdodactyl/pft",
  "RemoteRef": "HEAD",
  "RemoteSha": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-12 16:38:57 UTC",
    "User": "root"
  },
  "Author": "Pat Johnson [aut, cre] (ORCID: <https://orcid.org/0000-0001-8365-1375>),\nScott Helgeson [aut] (ORCID: <https://orcid.org/0000-0001-7590-2293>),\nZach Quicksall [ctb],\nJairo Pena [ctb]",
  "Maintainer": "Pat Johnson <johnson.pat@mayo.edu>",
  "_user": "overdodactyl",
  "_type": "src",
  "_file": "pft_1.0.1.tar.gz",
  "_fileid": "https://r2.ropensci.org/91e66a3487781e7b2db4a1253bac6ff49fc6517d7b80b3c6255dfd02ce297548",
  "_filesize": 948356,
  "_sha256": "91e66a3487781e7b2db4a1253bac6ff49fc6517d7b80b3c6255dfd02ce297548",
  "_expires": "2026-10-20T16:42:55.000Z",
  "_created": "2026-07-12T16:38:57.000Z",
  "_published": "2026-07-12T16:42:57.381Z",
  "_jobs": [
    {
      "job": 86671002382,
      "time": 151,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8262266260"
    },
    {
      "job": 86671002342,
      "time": 201,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8262273223"
    },
    {
      "job": 86671002335,
      "time": 92,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8262257446"
    },
    {
      "job": 86671002346,
      "time": 86,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8262256746"
    },
    {
      "job": 86670677543,
      "time": 243,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8262244090"
    },
    {
      "job": 86671002356,
      "time": 103,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8262259193"
    },
    {
      "job": 86671002385,
      "time": 116,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8262261114"
    },
    {
      "job": 86671002392,
      "time": 86,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8262256905"
    },
    {
      "job": 86671002370,
      "time": 128,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8262262822"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453",
  "_status": "success",
  "_upstream": "https://github.com/overdodactyl/pft",
  "_commit": {
    "id": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
    "author": "Pat Johnson <Johnson.Pat@mayo.edu>",
    "committer": "Pat Johnson <Johnson.Pat@mayo.edu>",
    "message": "docs(scope): de-emphasize guideline years in package framing\n\nThe package title, README, `_pkgdown` home block, `CITATION`, Zenodo\nmetadata, and top-level vignette openings previously described `pft` as\nan \"ERS/ATS 2022\" implementation. That framing undersold GLI (reference\nequations) and GOLD (COPD grading) and read as scope-limiting for a\npackage that supports multiple guideline eras and is designed to keep\nincorporating new standards as they publish.\n\nReframe scope-declaring prose to present `pft` as reference-value and\ninterpretation tooling composing GLI, ATS/ERS, and GOLD standards, with\nthe 2022 ATS/ERS interpretive statement called out as the most recent\nstandard at the time of the current release.\n\n* New title everywhere (\"Reference Values and Interpretation for\n  Pulmonary Function Tests\") in DESCRIPTION, `@title`, `_pkgdown`,\n  CITATION.cff, inst/CITATION, .zenodo.json.\n* README opener rewritten; new \"Guideline currency\" callout.\n* `?pft` help page gets a \"Guideline currency\" section.\n* `_pkgdown` \"Predecessor 2005 standard\" section renamed to \"Legacy\n  interpretive primitives\".\n* Two scope-framing @title lines softened; provenance-style @title\n  lines (Pellegrino 2005, Stanojevic 2022 Figure N) left intact.\n* Vignette `pft.Rmd` opener and `interpretation-guide.Rmd` section\n  header \"When to use 2022 vs 2005\" rewritten in the same spirit.\n\nFunction names, output column suffixes, argument defaults,\n`@references` blocks, DOIs, internal constants, sysdata names, and\ntests are unchanged. This is a docs/framing pass only.\n",
    "time": 1783870697
  },
  "_maintainer": {
    "name": "Pat Johnson",
    "email": "johnson.pat@mayo.edu",
    "login": "overdodactyl",
    "description": "Data Scientist and Developer",
    "uuid": 33071129,
    "orcid": "0000-0001-8365-1375"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "role": "Imports"
    },
    {
      "package": "broom",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "overdodactyl",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-21",
      "n": 50
    },
    {
      "week": "2026-22",
      "n": 96
    },
    {
      "week": "2026-27",
      "n": 12
    },
    {
      "week": "2026-28",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v1.0.0",
      "date": "2026-07-04"
    },
    {
      "name": "v1.0.1",
      "date": "2026-07-04"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "overdodactyl",
      "count": 201,
      "uuid": 33071129
    }
  ],
  "_userbio": {
    "uuid": 33071129,
    "type": "user",
    "name": "Pat Johnson",
    "followers": 54,
    "description": "Data Scientist and Developer"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/pft"
  },
  "_devurl": "https://github.com/overdodactyl/pft",
  "_searchresults": 0,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/pft.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/overdodactyl/pft",
  "_realowner": "overdodactyl",
  "_cranurl": true,
  "_releases": [
    {
      "version": "1.0.1",
      "date": "2026-07-11"
    }
  ],
  "_exports": [
    "as_tibble",
    "pft_bdr",
    "pft_bdr_2005",
    "pft_change",
    "pft_classify",
    "pft_diffusion",
    "pft_diffusion_interpret",
    "pft_dlco_hb_correct",
    "pft_fev1q",
    "pft_gold",
    "pft_interpret",
    "pft_long",
    "pft_plot",
    "pft_prism",
    "pft_quality",
    "pft_severity",
    "pft_severity_2005",
    "pft_spirometry",
    "pft_volume_subpattern",
    "pft_volumes"
  ],
  "_datasets": [
    {
      "name": "pft_example",
      "title": "Synthetic example PFT cohort",
      "object": "pft_example",
      "class": [
        "tbl_df",
        "tbl",
        "data.frame"
      ],
      "fields": [
        "patient_id",
        "sex",
        "age",
        "height",
        "race",
        "fev1_measured",
        "fvc_measured",
        "fev1fvc_measured",
        "tlc_measured",
        "fev1_pre",
        "fev1_post"
      ],
      "rows": 20,
      "table": true,
      "tojson": true
    }
  ],
  "_help": [
    {
      "page": "pft_bdr",
      "title": "Bronchodilator response per the current ATS/ERS criterion",
      "topics": [
        "pft_bdr"
      ]
    },
    {
      "page": "pft_bdr_2005",
      "title": "Bronchodilator response per the Pellegrino 2005 standard",
      "topics": [
        "pft_bdr_2005"
      ]
    },
    {
      "page": "pft_change",
      "title": "Conditional change score for serial PFT measurements",
      "topics": [
        "pft_change"
      ]
    },
    {
      "page": "pft_classify",
      "title": "Classify ATS spirometry patterns from spirometry and lung-volume measurements",
      "topics": [
        "pft_classify"
      ]
    },
    {
      "page": "pft_diffusion",
      "title": "Compute carbon monoxide diffusion capacity or transfer factor reference values for given demographics",
      "topics": [
        "pft_diffusion"
      ]
    },
    {
      "page": "pft_diffusion_interpret",
      "title": "Classify a diffusion result into a clinical pattern category",
      "topics": [
        "pft_diffusion_interpret"
      ]
    },
    {
      "page": "pft_dlco_hb_correct",
      "title": "Adjust a measured DLCO / TLCO for the patient's hemoglobin",
      "topics": [
        "pft_dlco_hb_correct"
      ]
    },
    {
      "page": "pft_example",
      "title": "Synthetic example PFT cohort",
      "topics": [
        "pft_example"
      ]
    },
    {
      "page": "pft_fev1q",
      "title": "FEV1Q: ratio of FEV1 to a sex-specific survivable lower limit",
      "topics": [
        "pft_fev1q"
      ]
    },
    {
      "page": "pft_gold",
      "title": "Grade COPD severity by GOLD criteria",
      "topics": [
        "pft_gold"
      ]
    },
    {
      "page": "pft_interpret",
      "title": "Comprehensive ATS/ERS PFT interpretation in one call",
      "topics": [
        "pft_interpret"
      ]
    },
    {
      "page": "pft_long",
      "title": "Pivot a 'pft_result' to long form",
      "topics": [
        "pft_long"
      ]
    },
    {
      "page": "pft_plot",
      "title": "Clinical visualisation for a single PFT result",
      "topics": [
        "pft_plot"
      ]
    },
    {
      "page": "pft_prism",
      "title": "Screen for Preserved Ratio Impaired Spirometry (PRISm)",
      "topics": [
        "pft_prism"
      ]
    },
    {
      "page": "pft_quality",
      "title": "Grade spirometry quality per ATS/ERS 2019",
      "topics": [
        "pft_quality"
      ]
    },
    {
      "page": "pft_severity",
      "title": "Grade severity of lung function impairment from a z-score",
      "topics": [
        "pft_severity"
      ]
    },
    {
      "page": "pft_severity_2005",
      "title": "Severity grading per the Pellegrino 2005 standard",
      "topics": [
        "pft_severity_2005"
      ]
    },
    {
      "page": "pft_spirometry",
      "title": "Compute spirometry reference values for given demographics",
      "topics": [
        "pft_spirometry"
      ]
    },
    {
      "page": "pft_volume_subpattern",
      "title": "Classify lung-volume sub-pattern per Stanojevic 2022 Figure 10",
      "topics": [
        "pft_volume_subpattern"
      ]
    },
    {
      "page": "pft_volumes",
      "title": "Compute lung volume reference values for given demographics",
      "topics": [
        "pft_volumes"
      ]
    }
  ],
  "_pkglogo": "https://github.com/overdodactyl/pft/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/overdodactyl/pft/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "glue",
    "lifecycle",
    "magrittr",
    "pillar",
    "pkgconfig",
    "rlang",
    "tibble",
    "utf8",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "diffusion-capacity.Rmd",
      "filename": "diffusion-capacity.html",
      "title": "Diffusion capacity (DLCO / TLCO): reference, Hb correction, interpretation",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Reference values",
        "2. Hemoglobin correction",
        "3. Clinical sub-pattern (Hughes & Pride 2012)",
        "4. How VA shapes the classifier output",
        "5. Cohort-level diffusion summaries",
        "See also"
      ],
      "created": "2026-05-25 05:34:00",
      "modified": "2026-05-25 21:48:33",
      "commits": 6
    },
    {
      "source": "pft.Rmd",
      "filename": "pft.html",
      "title": "Getting started with pft",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Reference values from demographics alone",
        "2. Z-scores and percent predicted from measured values",
        "3. Severity grading",
        "4. ATS pattern classification",
        "5. Bronchodilator response",
        "6. PRISm screening",
        "7. Serial change",
        "8. The one-call workflow",
        "9. Visualisation",
        "10. Cohort analyses",
        "11. Long-form tidier for downstream analysis",
        "12. Diffusion clinical category",
        "Citations"
      ],
      "created": "2026-05-23 22:06:33",
      "modified": "2026-07-12 15:38:17",
      "commits": 14
    },
    {
      "source": "glossary.Rmd",
      "filename": "glossary.html",
      "title": "Glossary",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Measure abbreviations",
        "Statistical terms",
        "Patterns and clinical entities",
        "Tests and gradings",
        "Notation: the 4-character pattern combination",
        "Race / ancestry categories (GLI 2012 only)",
        "Common validation errors"
      ],
      "created": "2026-05-24 02:07:31",
      "modified": "2026-05-25 21:19:45",
      "commits": 8
    },
    {
      "source": "input-format.Rmd",
      "filename": "input-format.html",
      "title": "Input data format",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Required vs. optional columns",
        "Units and types",
        "Using non-canonical column names",
        "Common errors"
      ],
      "created": "2026-05-24 17:20:53",
      "modified": "2026-05-25 15:48:32",
      "commits": 6
    },
    {
      "source": "interpretation-guide.Rmd",
      "filename": "interpretation-guide.html",
      "title": "Interpretation reference: severity bands, patterns, and standards",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Severity bands",
        "Pattern decision tree",
        "Choosing between the current and legacy interpretive standards",
        "Worked examples",
        "Example 1: low FEV1/FVC with low FEV1",
        "Example 2: low TLC with preserved KCO",
        "Example 3: PRISm without TLC",
        "Applying vector helpers inside a data-frame workflow",
        "See also"
      ],
      "created": "2026-05-25 05:29:52",
      "modified": "2026-07-12 15:38:17",
      "commits": 11
    },
    {
      "source": "longitudinal-analysis.Rmd",
      "filename": "longitudinal-analysis.html",
      "title": "Longitudinal PFT analysis: change and FEV1Q",
      "engine": "knitr::rmarkdown",
      "headings": [
        "1. Two-point conditional change score: pft_change()",
        "2. FEV1Q in adults: pft_fev1q()",
        "3. Plotting trajectories",
        "See also"
      ],
      "created": "2026-05-25 05:32:10",
      "modified": "2026-05-25 21:16:07",
      "commits": 7
    }
  ],
  "_score": 5.079181246047625,
  "_indexed": true,
  "_nocasepkg": "pft",
  "_universes": [
    "overdodactyl"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "1.0.1",
      "date": "2026-07-12T16:41:21.000Z",
      "distro": "resolute",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/4892ab2090a74404216a072f422f2398080a5320763e7c1fc335f3e5f313edba",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "1.0.1",
      "date": "2026-07-12T16:42:07.000Z",
      "distro": "resolute",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/a8e36a4ee294b9dd1a83427fc6b582d54a202872f19b08c8b155f19de4513778",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "1.0.1",
      "date": "2026-07-12T16:40:28.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/8164b0c3284315731854a15de19c1ce2c2027bf775d0b80becf77de2b087687a",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "1.0.1",
      "date": "2026-07-12T16:40:25.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/9032a505b57c54d2d4e595cee57805d3b63f44939f017158eecc1ee993438659",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "1.0.1",
      "date": "2026-07-12T16:41:00.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/fde662969b74866d287a1b5abafb8a8a00e1e967b949d6246dc4d9ef4a53630f",
      "status": "success",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "1.0.1",
      "date": "2026-07-12T16:40:25.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/d6c3483b87c1249fcf9939716f802383d98ea563af7d196ca9589ed1ed6c4dbb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "1.0.1",
      "date": "2026-07-12T16:40:11.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/35c928480132d47364da7ad813884ba255af4951b6430c25dd2a900654c4000b",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "1.0.1",
      "date": "2026-07-12T16:40:42.000Z",
      "commit": "40c2bb91e91cda9cefaa105546627bf45a2620d5",
      "fileid": "https://r2.ropensci.org/2782a4cbe9a0e83a91f483b77fa366daf5e4cb8d4acc362065d08bb5c4ba8eac",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/overdodactyl/actions/runs/29200392453"
    }
  ]
}