pub const TAGS: &[(&str, &[&str])] = &[
(
"feverpain",
&["primary-care", "infectious-diseases", "respiratory"],
),
("phq9", &["primary-care", "mental-health", "screening"]),
("gad7", &["primary-care", "mental-health", "screening"]),
("audit", &["primary-care", "mental-health", "screening"]),
("auditc", &["primary-care", "mental-health", "screening"]),
(
"epds",
&["primary-care", "mental-health", "perinatal", "screening"],
),
("asrs", &["primary-care", "mental-health", "screening"]),
(
"amts",
&["primary-care", "geriatrics", "neurology", "screening"],
),
("mrc_dyspnoea", &["primary-care", "respiratory"]),
("cha2ds2vasc", &["cardiology", "risk"]),
("hasbled", &["cardiology", "risk"]),
("heart", &["cardiology", "emergency", "risk"]),
("grace", &["cardiology", "acute-medicine", "prognostic"]),
("timi", &["cardiology", "acute-medicine", "risk"]),
("qrisk3", &["primary-care", "cardiology", "risk"]),
("euroscore2", &["cardiology", "surgery", "prognostic"]),
("wells_dvt", &["emergency", "vascular"]),
("wells_pe", &["emergency", "respiratory", "vascular"]),
("padua", &["acute-medicine", "vascular", "risk"]),
("abpi", &["primary-care", "vascular"]),
("abcd2", &["neurology", "emergency", "risk"]),
(
"fourat",
&["acute-medicine", "geriatrics", "neurology", "screening"],
),
("news2", &["acute-medicine", "nhs-mandated", "severity"]),
("qsofa", &["acute-medicine", "intensive-care", "screening"]),
("sofa", &["intensive-care", "severity"]),
(
"curb65",
&[
"acute-medicine",
"respiratory",
"infectious-diseases",
"severity",
],
),
("egfr", &["primary-care", "nephrology"]),
("uacr", &["primary-care", "nephrology"]),
("ckd_risk", &["primary-care", "nephrology", "risk"]),
("fib4", &["primary-care", "hepatology", "screening"]),
("child_pugh", &["hepatology", "severity"]),
("meld", &["hepatology", "prognostic"]),
("ukeld", &["hepatology", "prognostic"]),
("qfracture", &["primary-care", "endocrinology", "risk"]),
("das28", &["rheumatology", "severity"]),
("ipss", &["urology", "severity"]),
("gleason", &["oncology", "urology"]),
("npi", &["oncology", "prognostic"]),
(
"nhfs",
&["surgery", "geriatrics", "musculoskeletal", "prognostic"],
),
("waterlow", &["acute-medicine", "geriatrics", "screening"]),
("bode", &["respiratory", "prognostic"]),
("chalice", &["paediatrics", "emergency"]),
(
"frax",
&[
"endocrinology",
"musculoskeletal",
"risk",
"proprietary",
"unavailable",
],
),
(
"mmse",
&[
"geriatrics",
"neurology",
"mental-health",
"screening",
"proprietary",
"unavailable",
],
),
(
"must",
&["primary-care", "screening", "proprietary", "unavailable"],
),
(
"cat",
&["respiratory", "severity", "proprietary", "unavailable"],
),
(
"acq",
&["respiratory", "severity", "proprietary", "unavailable"],
),
(
"elf",
&["hepatology", "screening", "proprietary", "unavailable"],
),
(
"cfs",
&["geriatrics", "severity", "proprietary", "unavailable"],
),
(
"lanss",
&["neurology", "screening", "proprietary", "unavailable"],
),
(
"ohs",
&["surgery", "musculoskeletal", "proprietary", "unavailable"],
),
(
"oks",
&["surgery", "musculoskeletal", "proprietary", "unavailable"],
),
];
pub fn for_name(name: &str) -> &'static [&'static str] {
for (n, ts) in TAGS {
if *n == name {
return ts;
}
}
&[]
}
pub fn all_tags() -> Vec<&'static str> {
let mut out: Vec<&'static str> = TAGS.iter().flat_map(|(_, ts)| ts.iter().copied()).collect();
out.sort_unstable();
out.dedup();
out
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn for_name_returns_empty_for_unknown() {
assert!(for_name("not-a-real-calculator").is_empty());
}
#[test]
fn for_name_returns_tags_for_known() {
assert!(for_name("news2").contains(&"nhs-mandated"));
assert!(for_name("frax").contains(&"proprietary"));
}
#[test]
fn all_tags_is_sorted_and_deduped() {
let tags = all_tags();
let mut sorted = tags.clone();
sorted.sort_unstable();
sorted.dedup();
assert_eq!(tags, sorted);
assert!(tags.contains(&"cardiology"));
assert!(tags.contains(&"proprietary"));
}
}