dak.c2s/backend/app/utils/fallgruppe_map.py
2026-02-24 07:41:09 +00:00

42 lines
1.3 KiB
Python

"""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}'")