NA (CMI: 3.24)
NB (CMI: 2.53)
NC (CMI: 1.84)
ND (CMI: 1.33)
NE (CMI: 0.96)
NF (CMI: 0.72)
Estimated Rate Breakdown (Per Day)
PT Component:$0.00
OT Component:$0.00
SLP Component:$0.00
Nursing Component:$0.00
NTA Component:$0.00
Non-Case-Mix Component:$0.00
Total Daily Rate:$0.00
*Rates based on estimated FY Federal Base Rates. Actual reimbursement may vary.
function calculatePDPM() {
// 1. Retrieve Inputs
var wageIndex = parseFloat(document.getElementById('wageIndex').value);
var dayOfStay = parseInt(document.getElementById('dayOfStay').value);
var geoArea = document.getElementById('geoArea').value;
var ptCMI = parseFloat(document.getElementById('ptGroup').value);
var otCMI = parseFloat(document.getElementById('otGroup').value);
var slpCMI = parseFloat(document.getElementById('slpGroup').value);
var nursingCMI = parseFloat(document.getElementById('nursingGroup').value);
var ntaCMI = parseFloat(document.getElementById('ntaGroup').value);
// Validation
if (isNaN(wageIndex) || isNaN(dayOfStay) || dayOfStay 20) {
var reductionCycles = Math.floor((dayOfStay – 21) / 7) + 1;
pt_ot_vpd = 1.0 – (reductionCycles * 0.02);
if (pt_ot_vpd < 0) pt_ot_vpd = 0; // Safety floor
}
// NTA VPD Logic: Days 1-3 = 3.0, Days 4+ = 1.0
if (dayOfStay <= 3) {
nta_vpd = 3.0;
} else {
nta_vpd = 1.0;
}
// 4. Calculation Helper Function
function calculateComponentRate(baseRate, cmi, vpdFactor) {
// Formula: ((Base * LaborShare * WageIndex) + (Base * NonLaborShare)) * CMI * VPD
var laborPortion = baseRate * laborShare * wageIndex;
var nonLaborPortion = baseRate * nonLaborShare;
var adjustedBase = laborPortion + nonLaborPortion;
return adjustedBase * cmi * vpdFactor;
}
// 5. Calculate Components
var ptRate = calculateComponentRate(currentBase.pt, ptCMI, pt_ot_vpd);
var otRate = calculateComponentRate(currentBase.ot, otCMI, pt_ot_vpd);
var slpRate = calculateComponentRate(currentBase.slp, slpCMI, 1.0); // SLP has no VPD
var nursingRate = calculateComponentRate(currentBase.nursing, nursingCMI, 1.0); // Nursing has no VPD
var ntaRate = calculateComponentRate(currentBase.nta, ntaCMI, nta_vpd);
// Non-Case-Mix Calculation
var nonCMLabor = currentBase.nonCM * laborShare * wageIndex;
var nonCMNonLabor = currentBase.nonCM * nonLaborShare;
var nonCMRate = nonCMLabor + nonCMNonLabor;
// 6. Total Calculation
var totalRate = ptRate + otRate + slpRate + nursingRate + ntaRate + nonCMRate;
// 7. Display Results
document.getElementById('res-pt').innerText = formatMoney(ptRate);
document.getElementById('res-ot').innerText = formatMoney(otRate);
document.getElementById('res-slp').innerText = formatMoney(slpRate);
document.getElementById('res-nursing').innerText = formatMoney(nursingRate);
document.getElementById('res-nta').innerText = formatMoney(ntaRate);
document.getElementById('res-noncm').innerText = formatMoney(nonCMRate);
document.getElementById('res-total').innerText = formatMoney(totalRate);
document.getElementById('results').style.display = 'block';
}
function formatMoney(amount) {
return '$' + amount.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2});
}
Understanding the Medicare SNF PPS (PDPM) System
The Patient Driven Payment Model (PDPM) is the case-mix classification system used by the Centers for Medicare & Medicaid Services (CMS) for reimbursing Skilled Nursing Facilities (SNFs) under Medicare Part A. Unlike previous models that relied heavily on therapy minutes, PDPM focuses on the patient's clinical characteristics.
How the SNF Rate is Calculated
The daily per diem rate is composed of six distinct payment components. Five of these are "case-mix adjusted," meaning the payment varies based on the patient's specific medical needs, while the sixth is a fixed non-case-mix component.
PT (Physical Therapy): Based on the clinical category and functional score.
OT (Occupational Therapy): Similar to PT, based on clinical category and function.
SLP (Speech-Language Pathology): Based on presence of acute neurologic conditions, comorbidities, and cognitive impairment.
Nursing: Based on the specific nursing RUG classification derived from the MDS assessment.
NTA (Non-Therapy Ancillary): Accounts for comorbidities and complex medical services (drugs, supplies).
Non-Case-Mix: Covers room and board and administrative costs.
The Role of the Wage Index
Medicare rates are adjusted for geographic differences in labor costs. The calculator multiplies the labor-related portion of the base rate (typically around 70.4%) by the specific Wage Index of the facility's Core Based Statistical Area (CBSA). A higher wage index results in a higher daily rate.
Variable Per Diem (VPD) Adjustment
PDPM recognizes that costs are often higher at the beginning of a stay. The calculator automatically applies the VPD adjustment based on the "Day of Stay" input:
PT & OT: The rate is constant (factor of 1.0) for days 1 through 20. Starting on day 21, the rate decreases by 2% every 7 days.
NTA: The costs are significantly higher during intake. Therefore, the NTA component is paid at 300% (factor of 3.0) for days 1-3, and drops to 100% (factor of 1.0) for day 4 onwards.
Case Mix Index (CMI)
Every clinical group (e.g., PT Group TA, Nursing Group ES3) is assigned a Case Mix Index (CMI). This number represents the resource intensity associated with that group compared to the average. The Base Rate is multiplied by the CMI to determine the payment for that specific component.