First release.
score_instrument(), with sum, mean-scaled
(0-100), and product scoring types, plus the score_ipss() wrapper.
Items validate against per-item permitted value sets; the ICSI
bladder-pain item accepts 0, 2, 3, 4, 5 and rejects 1.classify_severity() assigns severity by band membership; scores
falling between non-contiguous bands (Sandvik index) give NA with a
warning.classify_severity() and responder()
check scores against achievable_totals(), the exact set of totals an
instrument can produce given its items and missing-item rule (Sandvik
products, prorated UDI-6/IIQ-7 fractions included). A 5 lies inside the
Sandvik moderate band, but no frequency and amount combination produces
it; it now gives NA with a warning instead of a label.register_instrument()
warns instead of messaging when it overwrites a definition, with a
sharper warning for built-ins. The print method shows per-item ranges
when items differ (oabss: 0-2, 0-3, 0-5, 0-5).responder() vector lengths are errors instead of silent
misbehavior; mean-scaled definitions must have items starting at 0; the
print method marks instruments whose permitted values are not
contiguous.mid_estimates() lists published anchor-based change statistics
(Barry et al., 1995) with the anchor, subgroup, and citation on every
row. responder() classifies change against a threshold the analyst
chooses explicitly; there is no default.