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.