Skip to main content

sct_ecl/
dialects.rs

1//! The dialect aliases of the ECL specification.
2//!
3//! Appendix C, "Dialect Aliases"
4//! (<https://docs.snomed.org/snomed-ct-specifications/snomed-ct-expression-constraint-language/appendices/appendix-c-dialect-aliases>):
5//! each alias names one language reference set.
6
7/// `(alias, language reference set SCTID)`, as the appendix lists them.
8pub const ALIASES: [(&str, u64); 29] = [
9    ("da-dk", 554_461_000_005_103),
10    ("de", 722_130_004),
11    ("en-au", 32_570_271_000_036_106),
12    ("en-ca", 19_491_000_087_109),
13    ("en-gb", 900_000_000_000_508_004),
14    ("en-gb-x-drug", 999_000_681_000_001_101),
15    ("en-gb-x-ext", 999_001_251_000_000_103),
16    ("en-ie", 21_000_220_103),
17    ("en-nz", 271_000_210_107),
18    ("en-nz-x-pat", 281_000_210_109),
19    ("en-us", 900_000_000_000_509_007),
20    ("en-x-gmdn", 608_771_002),
21    ("en-x-nhs-clinical", 999_001_261_000_000_100),
22    ("en-x-nhs-dmd", 999_000_671_000_001_103),
23    ("en-x-nhs-pharmacy", 999_000_691_000_001_104),
24    ("es", 450_828_004),
25    ("es-uy", 5_641_000_179_103),
26    ("et-ee", 71_000_181_105),
27    ("fr", 722_131_000),
28    ("fr-be", 21_000_172_104),
29    ("fr-ca", 20_581_000_087_109),
30    ("ja", 722_129_009),
31    ("mi", 291_000_210_106),
32    ("nb-no", 61_000_202_103),
33    ("nl-be", 31_000_172_101),
34    ("nl-nl", 31_000_146_106),
35    ("nn-no", 91_000_202_106),
36    ("sv-se", 46_011_000_052_107),
37    ("zh", 722_128_001),
38];
39
40/// The language reference set an alias names, compared case-insensitively.
41#[must_use]
42pub fn refset(alias: &str) -> Option<u64> {
43    ALIASES
44        .iter()
45        .find(|(a, _)| a.eq_ignore_ascii_case(alias))
46        .map(|(_, refset)| *refset)
47}
48
49#[cfg(test)]
50mod tests {
51    use super::refset;
52
53    #[test]
54    fn aliases_resolve_without_case() {
55        assert_eq!(refset("en-GB"), Some(900_000_000_000_508_004));
56        assert_eq!(refset("nl-nl"), Some(31_000_146_106));
57        assert_eq!(refset("xx"), None);
58    }
59}