lab_storage_code_task_set.py 879 B

12345678910111213141516171819202122
  1. """按实验室入库编码前缀匹配内置生产任务组合模版。"""
  2. from typing import List, Optional, Tuple
  3. # 最长前缀优先:BC 必须在 B 之前,避免 BC… 误匹配造血干
  4. _LAB_CODE_BUILTIN_SET_RULES: List[Tuple[str, str]] = [
  5. ("UBMC", "UBMC冻存(内置模版)"),
  6. ("PBMC", "PBMC冻存(内置模版)"),
  7. ("BC", "干细胞培养(内置模版)"),
  8. ("B", "造血干样本处理(内置模版)"),
  9. ]
  10. def match_builtin_task_set_name_by_lab_storage_code(lab_storage_code: str) -> Optional[str]:
  11. """返回应使用的内置模版集合名称;无匹配返回 None。大小写不敏感。"""
  12. text = (lab_storage_code or "").strip().upper()
  13. if not text:
  14. return None
  15. for prefix, set_name in _LAB_CODE_BUILTIN_SET_RULES:
  16. if text.startswith(prefix.upper()):
  17. return set_name
  18. return None