Scoring functions for questionnaires used in urology and pelvic health research: the IPSS, OABSS, the O'Leary-Sant indices (ICSI/ICPI), UDI-6, IIQ-7, the Sandvik incontinence severity index (1993 and 2000 versions), and the BPH Impact Index. Published minimal important difference data for responder analyses are included.
Most research groups score these by hand in a spreadsheet. Two things go wrong there: out-of-range values slip through silently, and missing items get handled ad hoc. This package was built around preventing both.
How it works:
score_instrument(), reads it; score_ipss() is a thin wrapper. Adding
an instrument means writing a definition, not another scoring function.mid_estimates() lists the published
anchor-based statistics with the anchor, subgroup, and citation on every
row, and responder() requires you to pick a threshold yourself.# install.packages("pak")
# pak::pak("faizamirullah/uroscores")
install.packages("uroscores", repos = c('https://faizamirullah.r-universe.dev', 'https://cloud.r-project.org'))
library(uroscores)
list_instruments()
d <- data.frame(
ipss_q1 = c(1, 3), ipss_q2 = c(2, 4), ipss_q3 = c(3, 5),
ipss_q4 = c(0, 2), ipss_q5 = c(4, 5), ipss_q6 = c(5, 3),
ipss_q7 = c(2, 4), qol = c(3, 5)
)
score_ipss(d, qol = "qol", classify = TRUE)
# Responder analysis with a threshold you choose:
mid_estimates("ipss")
responder(baseline = c(20, 12), followup = c(14, 11), "ipss", threshold = 3)
First release. The nine built-in definitions (ipss, oabss, icsi, icpi, udi6, iiq7, isi, isi3, bii) have been checked against their primary source publications. This package computes research scores; it is not a clinical decision tool.
Clinical scoring packages exist for other domains (PROscorer, RiskScorescvd, HealthMarkers, amscorer); none covers urology or pelvic health instruments.