| Title: | Surgical Risk Prediction with the POSSUM Score Family |
|---|---|
| Description: | Computes the Physiological and Operative Severity Score for the enUmeration of Mortality and morbidity (POSSUM), its Portsmouth modification (P-POSSUM), and the colorectal (CR-POSSUM), vascular (V-POSSUM) and ruptured aortic aneurysm (RAAA-POSSUM) variants, risk-adjustment systems used in surgical audit. Functions map physiological and operative variables to their component scores and return the predicted probabilities of morbidity and mortality from the published logistic equations. The coefficients follow Copeland and others (1991) <doi:10.1002/bjs.1800780327> for POSSUM, Prytherch and others (1998) <doi:10.1046/j.1365-2168.1998.00840.x> for P-POSSUM, Tekkis and others (2004) <doi:10.1002/bjs.4430> for the colorectal variant (CR-POSSUM), and Neary and others (2003) <doi:10.1002/bjs.4041> for the vascular variant (V-POSSUM). The package is intended for audit and research; it is not a validated medical device and must not be used as the sole basis for clinical decisions. |
| Authors: | Christos Longros [aut, cre] (ORCID: <https://orcid.org/0009-0001-2717-0857>), Daniel Enrique Chourio Barboza [aut] |
| Maintainer: | Christos Longros <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.0 |
| Built: | 2026-09-22 08:34:23 UTC |
| Source: | https://github.com/chrislongros/possum |
Applies the colorectal POSSUM mortality equation (Tekkis and others, 2004):
cr_possum(physiological_score, operative_score)cr_possum(physiological_score, operative_score)
physiological_score |
CR-POSSUM physiological score (6-23), e.g. from
|
operative_score |
CR-POSSUM operative score (4-22), e.g. from
|
Predicted probability of mortality (0-1).
cr_possum(physiological_score = 12, operative_score = 8)cr_possum(physiological_score = 12, operative_score = 8)
Sums the four operative components of CR-POSSUM, all entered as their points.
severity 1 (minor) / 3 (moderate) / 4 (major) / 8 (complex major);
soiling 1 (none or serous) / 2 (local pus) / 3 (free pus, faeces or
blood); cancer_staging 1 (none or Dukes A-B) / 2 (Dukes C) / 3
(Dukes D); urgency 1 (elective) / 3 (urgent) / 8 (emergency).
cr_possum_operative(severity, soiling, cancer_staging, urgency)cr_possum_operative(severity, soiling, cancer_staging, urgency)
severity |
CR-POSSUM operative severity points (1, 3, 4 or 8). |
soiling, cancer_staging
|
Points (1, 2 or 3). |
urgency |
Mode-of-surgery points (1, 3 or 8). |
Integer CR-POSSUM operative score (range 4-22).
cr_possum_operative(severity = 4, soiling = 1, cancer_staging = 2, urgency = 1)cr_possum_operative(severity = 4, soiling = 1, cancer_staging = 2, urgency = 1)
Sums the six physiological components of the colorectal POSSUM (CR-POSSUM)
score. Age, systolic blood pressure, pulse, haemoglobin and urea are scored
from raw clinical values; cardiac is entered as its points.
cr_possum_physiology(age, cardiac, systolic_bp, pulse, hb, urea)cr_possum_physiology(age, cardiac, systolic_bp, pulse, hb, urea)
age, systolic_bp, pulse, hb, urea
|
Numeric raw clinical values, all non-negative. |
cardiac |
CR-POSSUM cardiac-failure points (1, 2 or 3). |
Cut-points and weights (Tekkis and others, 2004):
| age (years) | 60=1 / 61-80=3 or 4 / 81=8 |
| systolic BP (mmHg) | 100-170=1 / >170 or 90-99=2 / 89=3 |
| pulse (/min) | 40-100=1 / 101-120=2 / >120 or <40=3 |
| haemoglobin (g/dL) | 13-16=1 / 10-12.9 or 16.1-18=2 / <10 or >18=3 |
| urea (mmol/L) | 10=1 / 10.1-15=2 / >15=3 |
| cardiac failure | none/mild=1 / moderate=2 / severe=3 (entered as points) |
Integer CR-POSSUM physiological score (range 6-23).
cr_possum_physiology(age = 72, cardiac = 1, systolic_bp = 140, pulse = 88, hb = 12, urea = 8)cr_possum_physiology(age = 72, cardiac = 1, systolic_bp = 140, pulse = 88, hb = 12, urea = 8)
Applies the Portsmouth (P-POSSUM) mortality equation (Prytherch and others, 1998), which recalibrates the POSSUM mortality prediction:
p_possum(physiological_score, operative_score)p_possum(physiological_score, operative_score)
physiological_score |
POSSUM physiological score (12-88). |
operative_score |
POSSUM operative severity score (6-48). |
Predicted probability of mortality (0-1).
p_possum(physiological_score = 20, operative_score = 10)p_possum(physiological_score = 20, operative_score = 10)
Applies the original POSSUM logistic equations (Copeland and others, 1991) to a physiological and operative severity score:
possum(physiological_score, operative_score)possum(physiological_score, operative_score)
physiological_score |
POSSUM physiological score (12-88), e.g. from
|
operative_score |
POSSUM operative severity score (6-48), e.g. from
|
A list with elements morbidity and mortality, the
predicted probabilities (0-1).
possum(physiological_score = 20, operative_score = 10)possum(physiological_score = 20, operative_score = 10)
Sums the six operative components. n_procedures and blood_loss
are scored from their raw values; severity, soiling,
malignancy and urgency are entered as their POSSUM points.
possum_operative( severity, n_procedures, blood_loss, soiling, malignancy, urgency )possum_operative( severity, n_procedures, blood_loss, soiling, malignancy, urgency )
severity, soiling, malignancy
|
POSSUM points (1, 2, 4 or 8). |
n_procedures |
Number of procedures at this operation (at least 1). |
blood_loss |
Total blood loss in mL (non-negative). |
urgency |
POSSUM points for the mode of surgery (1, 4 or 8). |
Raw cut-points (points 1 / 2 / 4 / 8): number of procedures 1 / - / 2 / >2;
blood loss (mL) 100 / 101-500 / 501-999 / 1000. Graded, as
points: severity 1 (minor) / 2 (moderate) / 4 (major) / 8 (major+);
soiling 1 (none) / 2 (serous) / 4 (local pus) / 8 (free bowel content,
pus or blood); malignancy 1 (none) / 2 (primary only) / 4 (nodal
metastases) / 8 (distant metastases); urgency 1 (elective) / 4
(emergency, within 24 h) / 8 (emergency, within 2 h).
Integer operative severity score (minimum 6).
possum_operative(severity = 4, n_procedures = 1, blood_loss = 200, soiling = 1, malignancy = 2, urgency = 1)possum_operative(severity = 4, n_procedures = 1, blood_loss = 200, soiling = 1, malignancy = 2, urgency = 1)
Sums the twelve physiological components of the POSSUM score. The nine
objective variables are scored from their raw clinical values; the three
graded variables (cardiac, respiratory, ecg) are entered
directly as their POSSUM points.
possum_physiology( age, systolic_bp, pulse, gcs, hb, wbc, urea, sodium, potassium, cardiac, respiratory, ecg )possum_physiology( age, systolic_bp, pulse, gcs, hb, wbc, urea, sodium, potassium, cardiac, respiratory, ecg )
age, systolic_bp, pulse, gcs, hb, wbc, urea, sodium, potassium
|
Numeric raw
clinical values in the units above. All must be non-negative, and
|
cardiac, respiratory
|
POSSUM points (1, 2, 4 or 8) for the cardiac and respiratory signs. |
ecg |
POSSUM points for the ECG (1, 4 or 8). |
Cut-points (points 1 / 2 / 4 / 8):
| age (years) | 60 / 61-70 / 71 / - |
| systolic BP (mmHg) | 110-130 / 100-109 or 131-170 / 90-99 or 171 / 89 |
| pulse (/min) | 50-80 / 40-49 or 81-100 / 101-120 / 39 or 121 |
| GCS | 15 / 12-14 / 9-11 / 8 |
| haemoglobin (g/dL) | 13-16 / 11.5-12.9 or 16.1-17 / 10-11.4 or 17.1-18 / <10 or >18 |
| WCC (10^9/L) | 4-10 / 3.1-3.9 or 10.1-20 / 3 or 20.1 / - |
| urea (mmol/L) | 7.5 / 7.6-10 / 10.1-15 / 15.1 |
| sodium (mmol/L) | 136 / 131-135 / 126-130 / 125 |
| potassium (mmol/L) | 3.5-5 / 3.2-3.4 or 5.1-5.3 / 2.9-3.1 or 5.4-5.9 / 2.8 or 6
|
Graded variables, entered as points: cardiac and respiratory
take 1, 2, 4 or 8; ecg takes 1 (normal), 4 (atrial fibrillation
60-90/min) or 8 (any other abnormality). Confirm the grading against the
original tables before use.
Integer physiological score (minimum 12).
possum_physiology(age = 65, systolic_bp = 120, pulse = 75, gcs = 15, hb = 13.5, wbc = 8, urea = 6, sodium = 140, potassium = 4.2, cardiac = 1, respiratory = 1, ecg = 1)possum_physiology(age = 65, systolic_bp = 120, pulse = 75, gcs = 15, hb = 13.5, wbc = 8, urea = 6, sodium = 140, potassium = 4.2, cardiac = 1, respiratory = 1, ecg = 1)
Convenience wrapper that scores a whole cohort in one call, rather than
invoking possum_physiology, possum_operative and
the risk functions separately. Each row of data is one patient.
possum_risk(data)possum_risk(data)
data |
A data frame (one row per patient) containing the columns
required by |
Rows are scored independently. A row with a missing or out-of-range value
cannot be scored, so its five output columns are returned as NA and
the rest of the cohort is scored as normal; a single missing laboratory value
no longer aborts the whole call. A warning reports how many rows were left
unscored.
data with five columns added: physiological_score,
operative_score, possum_morbidity, possum_mortality
and p_possum_mortality. Rows that could not be scored carry NA
in all five.
df <- data.frame( age = c(45, 82), systolic_bp = c(120, 95), pulse = c(70, 115), gcs = c(15, 13), hb = c(14, 9.5), wbc = c(7, 22), urea = c(5, 18), sodium = c(140, 128), potassium = c(4.2, 6.1), cardiac = c(1, 4), respiratory = c(1, 4), ecg = c(1, 8), severity = c(1, 8), n_procedures = c(1, 1), blood_loss = c(50, 1200), soiling = c(1, 8), malignancy = c(1, 4), urgency = c(1, 8)) possum_risk(df)df <- data.frame( age = c(45, 82), systolic_bp = c(120, 95), pulse = c(70, 115), gcs = c(15, 13), hb = c(14, 9.5), wbc = c(7, 22), urea = c(5, 18), sodium = c(140, 128), potassium = c(4.2, 6.1), cardiac = c(1, 4), respiratory = c(1, 4), ecg = c(1, 8), severity = c(1, 8), n_procedures = c(1, 1), blood_loss = c(50, 1200), soiling = c(1, 8), malignancy = c(1, 4), urgency = c(1, 8)) possum_risk(df)
Applies a POSSUM mortality equation specific to ruptured abdominal aortic aneurysm surgery, computed from the standard POSSUM physiological and operative severity scores. Two forms are provided:
raaa_possum( physiological_score, operative_score = NULL, model = c("physiology", "full") )raaa_possum( physiological_score, operative_score = NULL, model = c("physiology", "full") )
physiological_score |
Standard POSSUM physiological score (12-88), e.g.
from |
operative_score |
Standard POSSUM operative severity score (6-48), e.g.
from |
model |
Which equation to use: |
RAAA-POSSUM (Prytherch and others, 2001) reuses the standard POSSUM scores. Both equations are as tabulated by Neary, Heather and Earnshaw (2003).
Predicted probability of mortality (0-1).
raaa_possum(physiological_score = 30) raaa_possum(physiological_score = 30, operative_score = 18, model = "full")raaa_possum(physiological_score = 30) raaa_possum(physiological_score = 30, operative_score = 18, model = "full")
Applies a vascular POSSUM (V-POSSUM) mortality equation, computed from the
standard POSSUM physiological and operative severity scores (from
possum_physiology and possum_operative). Two
forms are provided:
v_possum( physiological_score, operative_score = NULL, model = c("physiology", "full") )v_possum( physiological_score, operative_score = NULL, model = c("physiology", "full") )
physiological_score |
Standard POSSUM physiological score (12-88), e.g.
from |
operative_score |
Standard POSSUM operative severity score (6-48), e.g.
from |
model |
Which equation to use: |
V-POSSUM (Prytherch and others, 2001, for major arterial surgery) reuses the standard POSSUM scores. Both equations are as tabulated by Neary, Heather and Earnshaw (2003). No V-POSSUM morbidity equation has been published.
Predicted probability of mortality (0-1).
v_possum(physiological_score = 25) v_possum(physiological_score = 25, operative_score = 15, model = "full")v_possum(physiological_score = 25) v_possum(physiological_score = 25, operative_score = 15, model = "full")