24 lines
690 B
Rust
24 lines
690 B
Rust
/// (pattern, replacement) — applied as whole-token, case-insensitive.
|
|
const ABBREV: &[(&str, &str)] = &[
|
|
("v.a.", "verdacht auf"),
|
|
("z.n.", "zustand nach"),
|
|
("art.", "arterielle"),
|
|
("op", "operation"),
|
|
("dd", "differentialdiagnose"),
|
|
("re.", "rechts"),
|
|
("li.", "links"),
|
|
];
|
|
|
|
pub fn normalize(input: &str) -> String {
|
|
let lower = input.to_lowercase();
|
|
let mut out: Vec<String> = Vec::new();
|
|
for tok in lower.split_whitespace() {
|
|
let replaced = ABBREV.iter()
|
|
.find(|(p, _)| *p == tok)
|
|
.map(|(_, r)| r.to_string())
|
|
.unwrap_or_else(|| tok.to_string());
|
|
out.push(replaced);
|
|
}
|
|
out.join(" ")
|
|
}
|