///|
pub(all) enum Profile {
ChineseClinical
EnglishClinical
HighPrecision
AllBuiltins
} derive(Debug, Eq)
///|
fn rule_has_prefix(rule : Rule, prefix : String) -> Bool {
rule.id.has_prefix(prefix)
}
///|
pub fn profile_rules(profile : Profile) -> Array[Rule] {
let rules = comprehensive_rules()
match profile {
AllBuiltins => rules
ChineseClinical =>
rules.filter(fn(rule) {
rule_has_prefix(rule, "cn_") ||
rule.id == "iso_date" ||
rule.id == "email" ||
rule.id == "mrn_context" ||
rule.id == "insurance_context" ||
rule.id == "hospital_context" ||
rule.id == "address_context"
})
EnglishClinical =>
rules.filter(fn(rule) {
rule_has_prefix(rule, "en_") ||
rule.id == "us_phone" ||
rule.id == "iso_date" ||
rule.id == "email" ||
rule.id == "mrn_context" ||
rule.id == "insurance_context" ||
rule.id == "hospital_context" ||
rule.id == "address_context"
})
HighPrecision => rules.filter(fn(rule) { rule.confidence >= 90 })
}
}