From db963a8e12bcc941dbddf9be908b7e0dd5373ae3 Mon Sep 17 00:00:00 2001 From: CCS Admin Date: Tue, 24 Feb 2026 09:26:11 +0000 Subject: [PATCH] fix: align excel_export keys with report_service output report_service uses 'summary'/'weekly'/'keine_rm'/'gutachten' but excel_export expected 'totals'/'weeks'/'keine_rueckmeldung'/ 'gutachten_gesamt'. Also fix nested gesamt dict access in sheet3 and icd_codes path from sheet5. Co-Authored-By: Claude Opus 4.6 --- backend/app/services/excel_export.py | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/backend/app/services/excel_export.py b/backend/app/services/excel_export.py index c4658c8..c875c05 100644 --- a/backend/app/services/excel_export.py +++ b/backend/app/services/excel_export.py @@ -68,7 +68,10 @@ def generate_berichtswesen_xlsx( _write_sheet1_kw_gesamt(wb, report_data.get("sheet1", {}), jahr, vorjahr_data) _write_sheet2_fachgebiete(wb, report_data.get("sheet2", {}), jahr) _write_sheet3_gutachten(wb, report_data.get("sheet3", {}), jahr) - _write_sheet4_icd_onko(wb, report_data.get("icd_codes", []), jahr) + # ICD codes live inside sheet5 + sheet5 = report_data.get("sheet5", {}) + icd_codes = sheet5.get("icd_codes", []) if isinstance(sheet5, dict) else [] + _write_sheet4_icd_onko(wb, icd_codes, jahr) # Remove the default empty sheet created by Workbook() if "Sheet" in wb.sheetnames: @@ -157,23 +160,23 @@ def _write_sheet1_kw_gesamt( """ ws = wb.create_sheet(title="Auswertung KW gesamt") - totals = data.get("totals", {}) - weeks = _weeks_lookup(data.get("weeks", [])) + totals = data.get("summary", {}) + weeks = _weeks_lookup(data.get("weekly", [])) erst = _safe(totals.get("erstberatungen")) abl = _safe(totals.get("ablehnungen")) unt = _safe(totals.get("unterlagen")) keine_rm = _safe(totals.get("keine_rueckmeldung")) - gutachten = _safe(totals.get("gutachten_gesamt")) + gutachten = _safe(totals.get("gutachten")) # Vorjahr totals vj = vorjahr_data or {} - vj_totals = vj.get("totals", {}) if isinstance(vj, dict) else {} + vj_totals = vj.get("summary", {}) if isinstance(vj, dict) else {} vj_erst = _safe(vj_totals.get("erstberatungen")) vj_abl = _safe(vj_totals.get("ablehnungen")) vj_unt = _safe(vj_totals.get("unterlagen")) vj_keine = _safe(vj_totals.get("keine_rueckmeldung")) - vj_ga = _safe(vj_totals.get("gutachten_gesamt")) + vj_ga = _safe(vj_totals.get("gutachten")) # --- Title --- ws["A1"] = "Gesamt\u00fcbersicht" @@ -218,8 +221,8 @@ def _write_sheet1_kw_gesamt( ws.cell(row=row, column=2, value=_safe(w.get("erstberatungen"))) ws.cell(row=row, column=3, value=_safe(w.get("unterlagen"))) ws.cell(row=row, column=4, value=_safe(w.get("ablehnungen"))) - ws.cell(row=row, column=5, value=_safe(w.get("keine_rueckmeldung"))) - ws.cell(row=row, column=6, value=_safe(w.get("gutachten_gesamt"))) + ws.cell(row=row, column=5, value=_safe(w.get("keine_rm"))) + ws.cell(row=row, column=6, value=_safe(w.get("gutachten"))) # --- Summe row (row 63) --- summe_row = 10 + MAX_KW + 1 # 63 @@ -260,7 +263,7 @@ def _write_sheet2_fachgebiete( """ ws = wb.create_sheet(title="Auswertung nach Fachgebieten") - weeks = _weeks_lookup(data.get("weeks", [])) + weeks = _weeks_lookup(data.get("weekly", [])) # --- Title --- ws["A1"] = "\u00dcbersicht nach Fallgruppen" @@ -350,7 +353,7 @@ def _write_sheet3_gutachten( """ ws = wb.create_sheet(title="Auswertung Gutachten") - weeks = _weeks_lookup(data.get("weeks", [])) + weeks = _weeks_lookup(data.get("weekly", [])) # --- Title --- ws["A1"] = "\u00dcbersicht nach Fallgruppen" @@ -405,9 +408,10 @@ def _write_sheet3_gutachten( ws.cell(row=row, column=1, value=kw) # Gesamt - g_ges = _safe(w.get("gutachten_gesamt")) - g_alt = _safe(w.get("gutachten_alternative")) - g_best = _safe(w.get("gutachten_bestaetigung")) + gesamt = w.get("gesamt", {}) + g_ges = _safe(gesamt.get("gutachten")) + g_alt = _safe(gesamt.get("alternative")) + g_best = _safe(gesamt.get("bestaetigung")) ws.cell(row=row, column=2, value=g_ges) ws.cell(row=row, column=3, value=g_alt) ws.cell(row=row, column=4, value=g_best)