Health & Fitness
Pneumonia Severity Index (PSI / PORT): Score and Risk Classes I–V
Practice PSI scoring from verified clinical point subtotals, apply the separate Class I screen before score bands, and validate missing inputs. This worksheet does not prescribe admission or ICU care.
Use this as a spreadsheet example
PSI is a prognostic rule for adults with community-acquired pneumonia. The clinical guideline treats it as an adjunct to clinical judgment, not a standalone admission decision. A PSI Class V result does not itself mandate ICU care; assessment for severe pneumonia uses separate criteria.
This example accepts already verified point subtotals. It does not diagnose pneumonia or assess whether the rule applies to a particular patient. Use fictional data to learn the formulas; real clinical decisions require a qualified clinician.
Enter model inputs and verified subtotals
B2 is whole-year adult age. B3 is the original model’s M/F scoring input; F subtracts 10 points. B4 is a numeric nursing-home flag, 0 or 1. B5 is the comorbidity subtotal, B6 the physical-examination subtotal and B7 the laboratory/radiographic subtotal.
Calculate each subtotal from the original scoring table, counting each criterion once. Do not type a raw measurement such as blood pressure into a point-subtotal cell, and do not replace an unknown finding with zero. The original reference supplies the criteria and units.
Validate the worksheet inputs
B9 checks that numeric fields are complete, age is an integer of at least 18, residency is binary and the model sex input is M or F (case and surrounding spaces are normalized). It also checks whether each subtotal is numerically attainable from its point weights.
Comorbidity totals use 30, 20, 10, 10 and 10-point items; examination totals use 20, 20, 20, 15 and 10; laboratory/radiographic totals use 30, 20, 20, 10, 10, 10 and 10. These arithmetic checks cannot verify that clinical findings were measured or interpreted correctly.
=IF(COUNT(B2,B4:B7)<>5,"Complete numeric inputs",IF(AND(UPPER(TRIM(B3))<>"M",UPPER(TRIM(B3))<>"F"),"Use M or F for model input",IF(OR(B2<18,B2<>INT(B2),AND(B4<>0,B4<>1)),"Check age or residency",IF(OR(B5<0,B5>80,MOD(B5,10)<>0,B7<0,B7>110,MOD(B7,10)<>0,NOT(OR(B6=0,B6=10,B6=15,B6=20,B6=25,B6=30,B6=35,B6=40,B6=45,B6=50,B6=55,B6=60,B6=65,B6=70,B6=75,B6=85))),"Check point subtotals","OK"))))Calculate the point total
B10 returns 108 for the fictional starting inputs: age 68, M, no residency points, and subtotals 10, 20 and 10. The numerical total is displayed even when the separate first-step screen assigns Class I.
=IF(B9<>"OK",B9,B2-IF(UPPER(TRIM(B3))="F",10,0)+10*B4+SUM(B5:B7))Apply the first-step screen before the score bands
In the original rule, age no greater than 50 with none of the specified comorbidities or abnormal examination findings identifies Class I. With accurately computed nonnegative subtotals, this is represented by B2<=50, B5=0 and B6=0. Age 50 is included. A low point total alone does not identify Class I.
Otherwise B11 maps totals through 70 to Class II, 71–90 to III, 91–130 to IV, and above 130 to V. These outputs deliberately contain no treatment or care-location command.
=IF(B9<>"OK",B9,IF(AND(B2<=50,B5=0,B6=0),"Class I",IF(B10<=70,"Class II",IF(B10<=90,"Class III",IF(B10<=130,"Class IV","Class V")))))Try the examples
Initially B11 returns Class IV. Change B3 to F and B6/B7 to zero, leaving age 68 and comorbidity points 10: the total is 68 and the class II. With the same F input, residency 1, examination 40 and lab points 30, the total is 148 and the class V.
Set age to 50 and all subtotals to zero: Class I. Change age to 51: Class II. Alternatively keep age 50 but add 10 comorbidity points: Class II. This demonstrates why the first-step screen cannot be replaced by a total-score cutoff.
For clarity this teaching sheet requires all numeric fields, including laboratory subtotals, before showing any result. The original first-step Class I assessment does not require the second-step laboratory workup; this input-completeness policy is not a recommendation to order tests.
Try the example
Use the original values or change them to test your understanding.