whereNotNull('penyakit_final') ->groupBy('penyakit_final') ->orderBy('total', 'desc') ->limit(5) ->get(); // Join dengan MasterPenyakit untuk ambil nama lengkap $chartPenyakit = [ 'labels' => $penyakitTerbanyak->map(function($item) { // Cari nama penyakit berdasarkan kode $penyakit = MasterPenyakit::where('id_penyakit', $item->penyakit_final)->first(); return $penyakit ? $penyakit->nama_penyakit : $item->penyakit_final; })->toArray(), 'data' => $penyakitTerbanyak->pluck('total')->toArray(), ]; // Chart: Trend Diagnosa Per Bulan (6 bulan terakhir) $sixMonthsAgo = Carbon::now()->subMonths(6); $diagnosaTrend = RiwayatDiagnosis::where('created_at', '>=', $sixMonthsAgo) ->select( DB::raw('DATE_FORMAT(created_at, "%Y-%m") as bulan'), DB::raw('count(*) as total') ) ->groupBy('bulan') ->orderBy('bulan') ->get(); // Generate all months for the last 6 months $months = collect(); for ($i = 5; $i >= 0; $i--) { $months->push(Carbon::now()->subMonths($i)); } $chartDiagnosa = [ 'labels' => $months->map(function($month) { return $month->translatedFormat('M Y'); })->toArray(), 'data' => $months->map(function($month) use ($diagnosaTrend) { $bulan = $month->format('Y-m'); $found = $diagnosaTrend->firstWhere('bulan', $bulan); return $found ? $found->total : 0; })->toArray(), ]; return view('admin.dashboard', compact( 'totalGejala', 'totalPenyakit', 'totalDiagnosa', 'totalArtikel', 'chartPenyakit', 'chartDiagnosa' )); } }