PFT Interpretation Builder
Select codes → Build narrative → Copy to report · v4.7
0 codes selected
Enter codes directly
Type a code such as AA1 and press Enter — or add several at once separated by spaces or commas. Each recognized code is added below with a severity dropdown wherever one is needed. This works alongside the checkboxes; anything added here also appears in the Narrative tab and in the copied report.
0 codes
Select codes to build narrative
📄
Select codes from the left panel
to build your interpretation
Additional notes
BMI Calculator
Ratio Calculators
IVC / VC
VA / TLC
MVV Calculator
Per ATS/ERS: predicted MVV ≈ 40 × FEV₁; LLN ≈ 80% predicted ≈ 32 × FEV₁. A measured MVV below LLN may reflect obstruction, NMD, effort, or deconditioning.
MIP / MEP z-score
MIP (Maximal Inspiratory Pressure)
MEP (Maximal Expiratory Pressure)
Enter your report's age/sex/height-specific predicted and LLN values (same units and sign convention as the measured value). z = (measured − predicted) / RSD, with RSD = (predicted − LLN) / 1.645 — i.e. LLN taken as the 5th percentile (1.645 SD below predicted).
Changes Over Time
Enter prior and current values. FEV₁/FVC in liters; DLCO in mL/min·mmHg.
ParamPriorCurrentΔ AbsΔ %Sig?
FEV₁ ———
FVC ———
DLCO ———
FEV₁/FVC significance: |Δ| ≥ 0.10 L AND |Δ%| ≥ 10% from prior value
DLCO significance: |Δ| ≥ 2.5 mL/min·mmHg AND |Δ%| ≥ 15%
Annualized Rate of Change
Typical age-related FEV₁/FVC decline: ~25–35 mL/year; accelerated >40 mL/yr loss.
Typical age-related DLCO decline: ~0.2–0.4 mL/min·mmHg/year; accelerated >1 mL/min·mmHg/yr loss.
Adjusted LLN DLCO (Hemoglobin Correction)
Cotes formula for Hb-corrected DLCO LLN:
  Male: LLN × (1.7 × Hb) / (10.22 + Hb)
  Female: LLN × (1.7 × Hb) / (9.38 + Hb)
Quick reference for fellows & attendings. This panel summarizes the workflow, the decision logic encoded by each code section, and includes the laboratory's reference flowcharts.
Tool how-to with screenshots, decision logic per code section, clinical guidance.
The lab's authoritative source document on PFT interpretation methodology.

Reference flowcharts

Click a chart to expand. Use the 📊 View decision flowchart link in the left panel (above the code list) to jump directly to the chart matching your current section.

Spirometry & flow-volume loops A & B codes
Spirometry decision flowchart
MVV (Maximum Ventilatory Volume) D codes
MVV decision flowchart
Lung volumes E codes
Lung volumes decision flowchart
DLCO / KCO G codes
DLCO decision flowchart

Five-step workflow

  1. Pick a Quality code (QC always; plus QS/QV/QD per modality tested).
  2. Move through Spirometry → Lung Volumes → DLCO picking one or more codes per section. Severity dropdowns appear under codes that need them.
  3. If a prior study exists, use Changes Over Time. HA/HB/HC have chips for which parameters changed; M1/M2 pull rates from the calculator.
  4. Use the Calculations tab for BMI, ratios, MVV, MIP/MEP z-score, longitudinal change, annualized rate, and the Hb-adjusted DLCO LLN.
  5. Read the Narrative tab. Fill any red placeholders. Copy.

Decision logic — by section

Spirometry (A / B codes)

FEV₁/FVC < LLN (obstruction):
• FVC > LLN → grade by FEV₁ z-score: AB1 (dysanapsis variant), AB2 mild, AB3 moderate, AB4 severe.
• FVC < LLN → mixed-disorder branch: AD2 (TLC normal — air-trapping only), AD3 (TLC reduced — pick severity), AD1 (no volumes available).
FEV₁/FVC > LLN (no obstruction):
• AA1 all normal; AA2 normal with small-airway coving.
• Low-PEF or known NMD: AC1/AC2; add AC3 (PEF reduced out of proportion — may mimic obstruction/restriction; clinical correlation).
• Isolated low FEV₁: AE1 (PRISm).
• Low FVC, non-specific: AE2.
• FVL looks obstructive despite normal ratio: AE3 (pseudonormalization).
• Lung volumes available to clarify: AE4.
FVL morphology: AF1 intrathoracic, AF2 extrathoracic, AF3 fixed CAO, AF4 sawtooth, AF5 knee variant, AF6 biphasic (possible unilateral CAO).
Add-ons: AU borderline · AV1/AV2 volumes · AO obesity · BA/BB/BC FVC commentary when volumes unavailable · AZ unreliable.

MVV & respiratory muscle pressures (D codes; MIP / MEP)

• MVV > LLN: DA.
• MVV < LLN, FEV₁ normal: weakness/effort pattern (DB, or DM if known NMD).
• MVV < LLN, FEV₁ low, MVV > 32×FEV₁: DC (reflects reduced FEV₁).
• MVV < LLN, FEV₁ low, MVV < 32×FEV₁: DD (out of proportion), or DE if obstruction present (dynamic hyperinflation).
• Unreliable: DZ.
Respiratory muscle pressures (MIP / MEP):
Bottom subsection of the MVV tab. Pick a severity for each (not reduced → severely reduced); the sentence carries a general reference value (MIP ~100, MEP ~180 cmH₂O). Reference values are age/sex/height-specific — grade against the lab's predicted/LLN. The MIP/MEP z-score calculator (Calculations tab) returns z = (measured − predicted) / RSD, RSD = (predicted − LLN) / 1.645, and flags below-LLN (z ≤ −1.65).

Lung volumes (E codes)

TLC < LLN (restriction):
• RV/TLC normal, no obstruction → EB1/EB2/EB3 (graded by TLC z-score).
• RV/TLC > ULN, no obstruction → EC (pick both severities: restriction + air-trapping).
• RV/TLC > ULN, obstruction present → ED (pick both severities).
TLC > ULN:
• RV/TLC > ULN → EH2 (hyperinflation; pick air-trapping severity).
• RV/TLC < ULN, VC > ULN → EH3 (supraphysiologic, no air-trapping).
TLC normal (LLN < TLC < ULN):
• RV/TLC > ULN → EH1 (air-trapping; pick severity).
• TLC/VC mismatch → EK1 or EK2.
• All normal → EA.
Add-ons: EN1/EN2 N₂ washout · EU borderline · EZ unreliable · EO obesity.

DLCO (G codes)

• Unreliable: GZ.
• DLCO > ULN: GE (elevated).
• DLCO within normal: GA. Borderline: GU.
• DLCO < LLN: GB1/GB2/GB3 (by z-score). Add GH1 (Hb unavailable, formula provided) or GH2 (Hb-adjusted predicted in use).
• Poor gas mixing: GI. Low VA + high KCO: GK.

Changes over time (H / M codes)

Change Assessment:
HA no change, HB improvement, HC worsening — each with chips for {lung mechanics, lung volumes, spirometric indices, air-trapping, DLCO}. HZ no prior.
Modifiers & Add-ons:
M1/M2 — rate context (within / exceeds expected); chips for FEV₁/FVC/DLCO, values auto-fill from the calculator.
M3 consistent decline · M4 DLCO change non-significant · M5 FVC obstruction caveat.

Thresholds

MetricMildModerateSevere
z-score−1.65 to −2.50−2.51 to −4.00< −4.00
Significant changeThreshold (both required)
FEV₁ / FVC|Δ| ≥ 0.10 L AND |Δ%| ≥ 10%
DLCO|Δ| ≥ 2.5 mL/min·mmHg AND |Δ%| ≥ 15%
Annualized rateWithin typicalAccelerated
FEV₁ / FVC≤ 40 mL/yr loss> 40 mL/yr loss
DLCO≤ 1 mL/min·mmHg/yr loss> 1 mL/min·mmHg/yr loss

Placeholder & chip types

  • Severity dropdown (single) — codes like AD3, EH1, EH2 with one mild/mod/severe selection.
  • Two severity dropdowns — EC and ED: restriction severity and air-trapping severity, picked independently.
  • Custom single-select dropdown — MIP/MEP: choose not reduced / mildly / moderately / severely reduced.
  • Multi-select chips (parameters) — HA/HB/HC: chips toggle which parameters the change applies to.
  • Multi-select with calculator — M1/M2: chips for FEV₁/FVC/DLCO; selected parameters pull their annualized rate from the calculator. Selected-but-not-entered shows red [not entered].

Special populations

  • Transgender / gender-diverse: add QG (Quality → Population-specific Notes) for the standardized reference-equation note.
  • Obesity (BMI ≥ 40): AO (spirometry) and/or EO (lung volumes).
  • Anemia: use GH1 if Hb unavailable, GH2 if lab provides Hb-corrected DLCO. Use the Adjusted LLN DLCO calculator to re-grade.
  • NMD: AC1/AC2/AC3, BC, DM, MIP/MEP, and CS1/CS2 threads.

References

  • ATS PFT Interpretation 2026 flowcharts (A/B, D, E, G codes).
  • Duke South Lab PFT Interpretation Guide v1.9.
  • GLI spirometry race-neutral: Bowerman et al., AJRCCM 2023.
  • GLI lung volumes: Hall et al., ERJ 2021.
  • GLI DLCO: Stanojevic et al., 2017.
📑 Append interpretation to PFT report
Upload the original PFT report (PDF). The tool will append a new page with your interpretation narrative and signature block, then download the combined PDF. Everything runs locally in your browser — the PDF is never uploaded anywhere.
1
Upload the original PFT PDF
No file selected
2
Signature
Optional metadata (patient, MRN, study date)
3
Generate combined PDF
Tip: the appended page reflects whatever is currently in the Narrative tab. Switch back to Narrative to add or remove codes before generating.
100%
Scroll to zoom · drag to pan · double-click to reset

Keyboard shortcuts

Single-key shortcuts work whenever you are not typing in a text box. The keycap on each section tab shows the digit that jumps to it. Press ? any time to reopen this.

Sections (left tabs)

1 … 7Jump straight to a section
[ ]Previous / next section
Alt + ← →Previous / next section — works while typing
Alt + 1–7Jump to a section — works while typing

Code list

TabStep through statements
↓ ↑Next / previous statement
← →Move between columns
SpaceCheck / uncheck the focused statement
Home EndFirst / last statement
↑From the top statement, back up to the section tabs

Right panel

/Jump to the Code Entry box (fastest path)
nNarrative
eCode Entry
cCalculations
gGuide
sSign & Append

Anywhere

Ctrl + EnterCopy the narrative to the clipboard
EscLeave the current text box / close this panel
?Show or hide this panel
Fastest workflow: press / once, then stay in the Code Entry box for the whole study. Codes are global — typing QC Enter AB1 Enter works no matter which section tab is showing, so you never need to change tabs at all. Type several at once (QC AB1 EC) and press Enter. Use ↓↑Enter to pick from the autocomplete list, then Tab to reach any severity dropdown, and Ctrl+Enter to copy when you are done.