"""Mapping of CRM 'Modul' strings to internal fallgruppe codes.""" MODUL_TO_FALLGRUPPE: dict[str, str] = { "Zweitmeinung Onkologie": "onko", "Zweitmeinung Kardiologie": "kardio", "Zweitmeinung Intensiv": "intensiv", "Zweitmeinung Gallenblase": "galle", "Zweitmeinung Schilddrüse": "sd", } VALID_FALLGRUPPEN = {"onko", "kardio", "intensiv", "galle", "sd"} def map_modul_to_fallgruppe(modul: str) -> str: """Map CRM Modul string to fallgruppe code. Handles exact matches and 'Begutachtung *' patterns. Raises ValueError for unmappable modules. """ modul = modul.strip() if modul in MODUL_TO_FALLGRUPPE: return MODUL_TO_FALLGRUPPE[modul] modul_lower = modul.lower() # Handle "Begutachtung" variants — derive from keywords if "begutachtung" in modul_lower: keyword_map = [ ("onko", "onko"), ("krebs", "onko"), ("tumor", "onko"), ("kardio", "kardio"), ("herz", "kardio"), ("intensiv", "intensiv"), ("galle", "galle"), ("schilddrüse", "sd"), ("schilddruese", "sd"), ] for keyword, gruppe in keyword_map: if keyword in modul_lower: return gruppe raise ValueError(f"Cannot map module to fallgruppe: '{modul}'")