Pulmonologists
Everyday medical support built on trust, quality checkups, and personal attention to your overall wellness.

Clinical Update — June 2026: This playbook has been revised to reflect the CY2026 Medicare Physician Fee Schedule final rule's updated MDM complexity thresholds for chronic illness management, CMS's expanded scrutiny of oxygen-related DME documentation under the Targeted Probe and Educate (TPE) program, and the ATS/ERS 2022 Technical Standards' growing adoption as the de facto reference for PFT interpretation in payer audit reviews. All E/M logic, ICD-10-CM mappings, and PFT extraction workflows below reflect current enforcement as of June 2026.
Best AI Scribe for Pulmonologists (PFT Focus): The Operations Playbook for COPD Documentation, MDM Integrity & Chronic Respiratory Failure Capture
TL;DR — Why Pulmonologists Need a PFT-First AI Scribe in 2026
Generic AI scribe templates treat pulmonary function tests as a single free-text field and record SpO2 without binding it to its oxygen source. The result: silent downcoding of complex COPD management visits, missed chronic respiratory failure diagnoses, and audit-vulnerable charts. Scribing.io's pulmonology pipeline enforces an atomic, time-stamped SpO2 + oxygen-source pair written to discrete EHR fields, auto-extracts ATS/ERS 2022 PFT parameters (pre/post FEV1/FVC with LLN z-scores, DLCO with correction flags, bronchodilator response thresholds), and reconciles them with the physical exam to auto-justify Medical Decision-Making. If you manage COPD patients on supplemental oxygen, this is the documentation architecture that protects your complexity level, your ICD accuracy, and your revenue.
The Information Gain Gap: What Every Other AI Scribe Misses About COPD Documentation
Scribing.io Clinical Logic: The 71-Year-Old GOLD 3 COPD Patient Scenario
PFT-First Pipeline: ATS/ERS 2022 Extraction Architecture
Technical Reference: ICD-10 Documentation Standards for J44.1 and J96.11
SpO2 + Oxygen Source Binding: Discrete-Field Architecture That Prevents Downcoding
Real-Time Clinical Guardrails: Prompts, Flags & MDM Auto-Justification
Head-to-Head: Scribing.io vs. Template-Based AI Scribes for Pulmonology
Implementation Roadmap for PFT Lab Medical Directors
The Information Gain Gap: What Every Other AI Scribe Misses About COPD Documentation
Board-certified pulmonologists do not have a documentation problem. They have a data-binding problem. The clinical reasoning that justifies a 99215 for a GOLD 3 COPD patient on chronic supplemental oxygen exists in the physician's head—and often in the spoken encounter—but dies somewhere between dictation and the EHR's discrete data layer. Scribing.io was engineered specifically to prevent that death, starting with the single highest-value data pair in outpatient pulmonology: SpO2 bound to its oxygen source at the exact moment of measurement.
Unlike platforms designed for broad primary care coverage—see our benchmarks in Family Medicine and Cardiology—our pulmonology pipeline was built around five specific documentation failures that generic ambient scribes introduce into COPD encounters. Each gap below represents measurable revenue loss and audit exposure.
Gap 1: SpO2 Recorded Without a Bound Oxygen Source
Analyze any widely deployed pulmonary clinic note template and you find oxygen saturation documented as a standalone vital sign: "Oxygen Saturation: 92%." The system does not enforce a discrete, structured pairing of SpO2 with the oxygen delivery device and flow rate at the exact moment of measurement. For the approximately 1.5 million Medicare beneficiaries receiving home oxygen therapy for COPD (CMS DME Center data), this omission is a direct pathway to downcoding. When the EHR defaults SpO2 to "room air" because the clinician did not verbalize the source and the AI did not prompt for it, the chart reads as a stable patient with mild hypoxemia—not a chronic respiratory failure patient requiring oxygen titration.
Gap 2: PFTs Treated as Free-Text Afterthoughts
Template-based systems provide a section header for "Pulmonary Function Tests" and wait. There is no extraction logic for pre- and post-bronchodilator FEV1/FVC values, no computation of Lower Limit of Normal (LLN) z-scores per ATS/ERS 2022 Technical Standards, no hemoglobin-corrected DLCO, and no automated bronchodilator response threshold evaluation (≥12% and ≥200 mL). Without structured extraction, PFT data cannot be automatically reconciled with the assessment to justify MDM complexity—so the physician must manually ensure the narrative thread holds under audit. Under time pressure, it does not.
Gap 3: No Real-Time Prompting for Missing Clinical Context
Passive template systems do not fire alerts when SpO2 is dictated without an oxygen source, when baseline home O2 prescription is absent from the encounter note, when a 6-minute walk test (6MWT) is verbalized without titration details, or when PFT bronchodilator response meets thresholds but the assessment fails to reference it. Passivity is the root cause of preventable downcoding in pulmonology.
Gap 4: No FHIR-Aware Discrete Field Mapping
Even when oxygen data is captured, it frequently lives in a non-exposed flowsheet row that payers, coders, and CMS TPE audit systems cannot query. Oxygen device type and L/min flow rate are among the most frequently "orphaned" data points in major EHR implementations—present in the chart, invisible to the billing and quality layers.
Gap 5: No ICD-10 Specificity Enforcement
Assessment sections that use plain-language diagnoses without binding them to ICD-10-CM codes or enforcing the documentation specificity required to distinguish between J44.1 (COPD with acute exacerbation) and J96.11 (Chronic respiratory failure with hypoxia) represent significant revenue and accuracy loss. Both codes have distinct clinical documentation requirements, and failure to capture the latter when clinically appropriate is one of the most common missed-revenue findings in pulmonology chart audits.
Scribing.io was built to close every one of these gaps.
Scribing.io Clinical Logic: The 71-Year-Old GOLD 3 COPD Patient Scenario
The Anchor Truth: In Pulmonology, AI must strictly distinguish between 'Room Air' and 'Supplemental Oxygen' flow rates (Liters/Minute) during physical exams to prevent downcoding of high-complexity COPD management visits.
The scenario: A 71-year-old with GOLD 3 COPD on home O2 (2 L/min) returns for PFT-guided management. The pulmonologist dictates "SpO2 90%" but does not state the oxygen source. The EHR assumes room air. The claim downgrades from 99215 to 99213. Here is exactly how Scribing.io prevents this—step by step.
Step 1: Encounter Opens — Baseline Context Loads
When the session initiates, Scribing.io's pulmonology engine pulls the patient's active problem list, medication list, and—critically—any prior oxygen prescriptions or DME orders from the EHR's FHIR-accessible resources. The system identifies:
Active Dx: J44.1 (COPD with acute exacerbation, prior encounter), J96.11 (Chronic respiratory failure with hypoxia)
Active O2 Rx: 2 L/min via nasal cannula, continuous use
Prior PFTs: FEV1 34% predicted (GOLD 3), performed 9 months ago
Prior 6MWT: Desaturation to 84% at 4 minutes, titrated to 3 L/min
This baseline context remains active in the session's inference memory. It is the reference frame against which every dictated statement is evaluated for completeness.
Step 2: "SpO2 90%" Without Source — The Prompt Fires
The pulmonologist says: "Vitals look stable. SpO2 90 percent."
Within 1.2 seconds, the real-time guardrail detects three conditions simultaneously:
SpO2 value stated ✓
Oxygen source stated ✗
Patient has active home O2 prescription ✓ (2 L/min NC)
The system fires an audible and visual prompt:
⚠️ Oxygen source not specified. Patient has active home O2 Rx: 2 L/min NC. Please confirm: Is SpO2 90% on room air, on 2 L/min NC, or on a different flow rate?
The clinician responds: "That's on 2 liters nasal cannula."
The system now writes the complete atomic pair—SpO2 90% on 2 L/min NC—to discrete EHR fields, not free text. This single correction preserves the clinical narrative that this patient is hypoxemic despite supplemental oxygen, which is the documentation anchor for chronic respiratory failure and high-complexity MDM.
Step 3: 6MWT Titration — Structured Data Extraction
The pulmonologist continues: "We did the walk test. She desaturated to 86% at three minutes. We bumped her up to 3 liters and she recovered to 91%."
Scribing.io parses this into structured data and maps each element to a discrete, FHIR-exposed EHR field:
Data Element | Captured Value | EHR Field Mapping |
|---|---|---|
6MWT baseline SpO2 | 90% on 2 L/min NC | Vital Signs → SpO2 (with O2 context) |
6MWT nadir SpO2 | 86% at 3 min | Flowsheet → 6MWT SpO2 Nadir |
6MWT titrated flow rate | 3 L/min NC | Flowsheet → O2 Flow Rate (titrated) |
6MWT recovery SpO2 | 91% on 3 L/min NC | Flowsheet → 6MWT SpO2 Recovery |
O2 prescription change | Increase from 2 to 3 L/min with exertion | Orders → DME O2 Modification |
Each value is written discretely. None of this data is buried in a narrative note or a non-queryable flowsheet row. Every element is auditable, billable, and accessible to downstream quality reporting.
Step 4: PFT Data Parsed — ATS/ERS 2022 Parameters Extracted
The pulmonologist reviews today's PFT results: "PFTs show pre-bronchodilator FEV1 of 0.98 liters, 33 percent predicted, post-bronchodilator 1.12 liters…"
Scribing.io's PFT-first extraction pipeline captures and structures:
PFT Parameter | Pre-BD | Post-BD | LLN z-Score | Clinical Flag |
|---|---|---|---|---|
FEV1 (L) | 0.98 | 1.12 | −3.2 | Below LLN |
FEV1 (% predicted) | 33% | 38% | — | GOLD 3 confirmed |
FVC (L) | 2.45 | 2.58 | −1.8 | Below LLN |
FEV1/FVC ratio | 0.40 | 0.43 | −3.6 | Obstructive pattern |
Bronchodilator response | +14.3% and +140 mL | — | Negative: meets % but not absolute (< 200 mL) | |
DLCO (% predicted) | 45% | — | −2.9 | Severely reduced; Hgb correction: OFF (Hgb 13.2) |
Critical nuance captured: The bronchodilator response is +14.3% (meets ≥12% threshold) but only +140 mL (does not meet the ≥200 mL absolute threshold). Per the ATS/ERS 2022 Technical Standards, a positive bronchodilator response requires both criteria to be met simultaneously. Scribing.io correctly classifies this as a negative bronchodilator response, preventing an erroneous "reversible airway obstruction" label that could shift the diagnosis toward asthma-COPD overlap and alter the treatment pathway entirely. No template-based system makes this distinction.
Step 5: MDM Auto-Justification — Assessment Crystallizes
With structured SpO2 + oxygen source data, 6MWT titration details, and parsed PFT parameters all reconciled, Scribing.io generates the MDM justification framework mapped to the AMA's 2023 E/M guidelines:
Number and complexity of problems addressed:
COPD, GOLD 3, stable but with chronic hypoxemia requiring ongoing supplemental O2 management → Chronic illness with severe exacerbation or side effects of treatment
Chronic respiratory failure with hypoxia (J96.11) → Requires ongoing oxygen titration and monitoring
Amount and complexity of data reviewed and analyzed:
PFT with pre/post bronchodilator values, LLN z-scores, DLCO → Independent interpretation of a test requiring physician skill
6MWT with oxygen titration → Independent interpretation with management modification
Comparison with PFTs from 9 months prior → Discussion of data obtained from external source / comparison over time
Risk of complications, morbidity, or mortality:
Prescription management of chronic supplemental oxygen with flow rate modification → Prescription drug management
Decision not to escalate (e.g., no hospitalization, no NIV initiation) → Decision about management of chronic illness with documented reasoning
Result: All three MDM elements support high complexity → 99215. The chart is audit-ready. The claim holds.
See a live demo of our RA vs O2 L/min verifier with Epic/Cerner flowsheet write-back and ATS/ERS 2022 PFT z-score capture that auto-guards E/M levels and prevents COPD downcoding.
PFT-First Pipeline: ATS/ERS 2022 Extraction Architecture
Most AI scribes treat PFTs the way a general internist treats a lipid panel—a single result to acknowledge. For pulmonologists, PFT data is the primary diagnostic instrument, and its documentation architecture must reflect that. Scribing.io's PFT pipeline operates in three modes depending on how data enters the encounter.
Mode 1: Voice Dictation Extraction
When the physician verbalizes PFT results, the system applies a pulmonology-specific NLU model trained on spirometry language patterns. It distinguishes pre- from post-bronchodilator values, captures absolute and percent-predicted values as paired data points, computes bronchodilator response against both the 12% and 200 mL thresholds simultaneously, and flags discrepancies between verbalized GOLD stage and computed GOLD stage based on FEV1 % predicted.
Mode 2: PDF/Image Extraction
When PFT lab reports are uploaded as PDFs or scanned images, Scribing.io's OCR pipeline extracts tabular spirometry data using layout-aware parsing. The system identifies the reference equation set used by the PFT lab (GLI-2012 vs. NHANES III vs. local), calculates or validates LLN z-scores, and flags any discrepancies between the lab's interpretation and the ATS/ERS 2022 thresholds. DLCO values are extracted with automatic detection of whether hemoglobin or altitude corrections were applied—and if the patient's current hemoglobin is available in the EHR, the system flags uncorrected DLCO values that may understate or overstate gas exchange impairment.
Mode 3: Direct EHR Integration
For health systems where PFT results flow into the EHR as structured data (HL7 or FHIR Observation resources), Scribing.io reads these values directly, validates them against the ATS/ERS 2022 acceptability and repeatability criteria, and incorporates them into the encounter note with full provenance tracking. This mode eliminates transcription risk entirely.
Regardless of mode, the extracted PFT data is reconciled against the physical exam findings (barrel chest, accessory muscle use, prolonged expiratory phase) and the vitals (SpO2 + oxygen source) to generate a coherent clinical narrative that directly supports the MDM complexity determination.
Technical Reference: ICD-10 Documentation Standards
Two ICD-10-CM codes dominate outpatient pulmonology documentation for COPD patients on supplemental oxygen, and both are frequent targets of payer audits and CMS TPE reviews: J44.1 - Chronic obstructive pulmonary disease with (acute) exacerbation; J96.11 - Chronic respiratory failure with hypoxia.
J44.1 — COPD with (Acute) Exacerbation
This code requires documentation of a worsening of the patient's baseline COPD symptoms—increased dyspnea, sputum volume, sputum purulence, or any combination—beyond normal day-to-day variation, sufficient to warrant a change in management. The word "acute" must appear in the clinical context, or the documentation must clearly describe a discrete worsening event. Scribing.io enforces this by requiring the assessment to reference at least one of the following when J44.1 is selected or suggested:
Increased dyspnea relative to documented baseline
Change in sputum characteristics (volume, color, consistency)
New or escalated medication (antibiotic, systemic corticosteroid, bronchodilator intensification)
SpO2 decline relative to the patient's documented baseline on the same oxygen source and flow rate
That last criterion is where the SpO2 + oxygen source binding becomes directly relevant to ICD accuracy. Without knowing whether the patient's SpO2 decline occurred on room air or on their home oxygen, the clinician cannot document whether the exacerbation represents a genuine worsening—and the coder cannot justify J44.1 over the less specific J44.9.
J96.11 — Chronic Respiratory Failure with Hypoxia
This code is frequently undercaptured. Many COPD patients on chronic supplemental oxygen meet the clinical criteria for J96.11 but are coded only with J44.x because the documentation does not explicitly state "chronic respiratory failure" or provide the supporting evidence. Per CMS ICD-10-CM Official Guidelines, J96.11 requires documentation of:
Chronic (not acute or acute-on-chronic) respiratory failure
Hypoxia as the type of failure (vs. hypercapnia, which maps to J96.12)
Clinical evidence supporting ongoing failure: typically ABG or SpO2 values demonstrating persistent hypoxemia despite supplemental oxygen, or a clinical narrative establishing dependence on supplemental O2
Scribing.io's ICD specificity engine detects when a COPD patient has an active home oxygen prescription, documented SpO2 ≤ 88% on room air (or ≤ 90% on supplemental O2 with desaturation on exertion), and verifies whether J96.11 appears on the active problem list. If it does not, the system prompts the clinician: "Patient meets clinical criteria for Chronic respiratory failure with hypoxia (J96.11). Add to problem list?" This ensures maximum ICD specificity, prevents denials due to unsubstantiated codes, and captures the full clinical severity of the patient's condition for risk-adjusted payment models including CMS-HCC risk adjustment.
SpO2 + Oxygen Source Binding: The Discrete-Field Architecture That Prevents Downcoding
The technical architecture behind SpO2 + oxygen source binding is where Scribing.io's pulmonology pipeline diverges most sharply from competitors. The problem is not recognition—most AI scribes can transcribe "SpO2 90%." The problem is binding, discretization, and FHIR exposure.
Binding
Scribing.io treats every SpO2 measurement as an incomplete data element until it is paired with exactly one of the following oxygen contexts:
Room Air (FiO2 0.21)
Supplemental O2 with device type (nasal cannula, Venturi mask, high-flow nasal cannula, etc.) and flow rate in L/min
Mechanical ventilation with FiO2 and mode
No SpO2 value is committed to the EHR until the binding is complete. If the clinician does not verbalize the source and does not respond to the prompt, the SpO2 is flagged as "unconfirmed—oxygen source pending" in both the note and the vital signs flowsheet.
Discretization
The bound pair is written to separate discrete fields in the EHR:
Field | EHR Location | FHIR Resource |
|---|---|---|
SpO2 value | Vital Signs band | Observation (LOINC 2708-6) |
O2 delivery device | Flowsheet row | Observation (LOINC 3151-8) |
O2 flow rate (L/min) | Flowsheet row | Observation (LOINC 3150-0) |
O2 source context at time of SpO2 | Vital Signs → SpO2 context qualifier | Observation component |
FHIR Exposure
The critical failure mode in many EHR implementations is that oxygen device and flow rate are written to a flowsheet row that is not exposed via the FHIR R4 API—meaning quality reporting systems, payer audit tools, and CDS hooks cannot access this data programmatically. Scribing.io's Epic and Cerner (Oracle Health) integration modules write oxygen context to FHIR-exposed Observation resources with appropriate LOINC coding, ensuring that the data is available to every downstream consumer. This eliminates the "orphaned flowsheet" problem identified in Gap 4 above.
Real-Time Clinical Guardrails: Prompts, Flags & MDM Auto-Justification
Scribing.io's guardrail system for pulmonology operates on a hierarchy of clinical rules that fire in real time during the encounter. These are not generic "completeness" checks. They are specialty-specific, MDM-aware, and calibrated to the documentation thresholds that determine E/M code selection under the AMA's 2023 E/M framework.
Tier 1: Hard Guardrails (Block Incomplete Data from EHR Commit)
SpO2 without oxygen source: Blocks commit until source is confirmed or flagged as pending
6MWT desaturation without titration response: Blocks commit if nadir SpO2 ≤ 88% is documented but no titration action or clinical decision is recorded
PFT bronchodilator response misclassification: Blocks if response is labeled "positive" but only one threshold (% or absolute) is met
Tier 2: Soft Guardrails (Fire Prompts, Allow Override)
Missing baseline home O2: Fires when SpO2 is captured for a patient with active O2 Rx but no baseline flow rate is documented in the encounter
DLCO without hemoglobin correction: Fires when DLCO is documented and patient's current Hgb is available but no correction flag is present
J96.11 undercapture: Fires when patient meets clinical criteria but the code is absent from the encounter's diagnosis list
GOLD stage discrepancy: Fires when verbalized GOLD stage differs from computed GOLD stage based on today's FEV1 % predicted
Tier 3: Advisory Flags (Post-Encounter Quality Review)
PFT trend analysis: FEV1 decline rate exceeding 60 mL/year over three or more measurements (flagging accelerated decline per GOLD 2026)
6MWT distance decline exceeding the 30-meter minimal clinically important difference
SpO2 trend suggesting progression from exertional to resting hypoxemia
Head-to-Head: Scribing.io vs. Template-Based AI Scribes for Pulmonology
Capability | Scribing.io (Pulmonology Pipeline) | Template-Based AI Scribes |
|---|---|---|
SpO2 + O2 source atomic binding | Enforced: blocks incomplete data | Not enforced; free-text only |
O2 device + L/min written to discrete EHR fields | Yes: FHIR-exposed Observation resources | Narrative text or non-exposed flowsheet |
Real-time prompt for missing O2 source | Yes: fires within 1.2 seconds | No real-time prompting |
PFT extraction (voice + PDF) | Structured: pre/post BD, LLN z-scores, DLCO with correction flags | Free-text transcription only |
Bronchodilator response validation | Dual-threshold: ≥12% AND ≥200 mL per ATS/ERS 2022 | No threshold logic |
DLCO hemoglobin correction flag | Automated: cross-references current Hgb | Not available |
MDM auto-justification (2023 E/M) | Structured: maps problems, data, risk to E/M levels | Manual physician responsibility |
ICD-10 specificity enforcement (J44.1, J96.11) | Active prompting for undercaptured codes | No code-level enforcement |
6MWT structured data capture | Full: baseline, nadir, titration, recovery, all with O2 context | Narrative summary only |
Epic/Cerner flowsheet write-back | Direct integration via certified API | Copy-paste or manual entry |
Implementation Roadmap for PFT Lab Medical Directors
Deploying Scribing.io's pulmonology pipeline is a four-phase process designed to minimize disruption while maximizing documentation quality from the first live encounter.
Phase 1: EHR Configuration & Flowsheet Mapping (Weeks 1–2)
Scribing.io's implementation team works with your EHR analysts to map oxygen-related flowsheet rows (device type, flow rate, SpO2 context) to FHIR-exposed Observation resources. For Epic environments, this involves SmartData Element (SDE) configuration. For Oracle Health (Cerner), this involves PowerChart flowsheet row exposure via Millennium API. PFT result pathways (HL7 ORU feeds, PDF imports, or manual entry) are identified and configured.
Phase 2: Specialty-Specific Guardrail Calibration (Week 3)
Guardrail thresholds are calibrated to your practice's clinical workflows. Which SpO2 values should trigger hard blocks vs. soft prompts? Should DLCO correction flags fire for all patients or only those with known anemia? Should the system auto-suggest J96.11 or only flag it for physician review? These decisions are configured in a calibration session with the practice's medical director and lead coder.
Phase 3: Parallel Documentation (Weeks 4–5)
Scribing.io runs alongside your current documentation workflow. Physicians dictate as usual; the system generates a parallel note with structured PFT extraction, SpO2 + oxygen source binding, and MDM justification. A pulmonology-specialized QA team reviews discrepancies between the parallel note and the production note, identifying documentation gaps that would have been caught by the guardrail system. These findings are compiled into a revenue impact analysis.
Phase 4: Go-Live & Continuous Monitoring (Week 6+)
Production go-live with full guardrail activation. Monthly quality reviews compare pre- and post-implementation metrics: E/M code distribution (99213 vs. 99214 vs. 99215 ratios), J96.11 capture rate, 6MWT discrete data completeness, and SpO2 oxygen source binding compliance. These metrics are reported directly to the PFT lab medical director and practice administrator.
The revenue impact is measurable within the first billing cycle. The audit protection is measurable at the first TPE review. The physician experience—fewer documentation corrections, fewer coder queries, fewer after-hours chart completions—is measurable from day one.
See a live demo of our RA vs O2 L/min verifier with Epic/Cerner flowsheet write-back and ATS/ERS 2022 PFT z-score capture that auto-guards E/M levels and prevents COPD downcoding. Contact Scribing.io to schedule a pulmonology-specific deployment review.

