# Summarydashboard Generate -> cpone_dashboard ## Tujuan - Hasil generate dari controller `summarydashboard/Generatedata` ikut masuk ke `cpone_dashboard`. - Re-generate per `Mgm_McuID` harus idempotent: data lama untuk `Mgm_McuID` terkait dibersihkan lalu diisi ulang. - Simpan jejak generate ke tabel `mcu_generate` setiap kali proses sinkronisasi dijalankan. ## Aturan Data 1. Tidak ada truncate global pada tabel hasil dashboard. 2. Scope selalu per `Mgm_McuID`. 3. Untuk kasus koreksi hasil (kelainan awal ada lalu hilang), data dashboard harus ikut terkoreksi (tanpa residue lama). ## Struktur Tabel di `cpone_dashboard` - `mcu_generate` - menyimpan riwayat generate: `Mgm_McuID`, `GenerateDate`, metadata project. - `kelainan_details` - tabel baru (versi dashboard) sebagai snapshot detail kelainan. - `kelainan_summary` - tabel baru (versi dashboard) sebagai ringkasan kelainan. - `mcu_result_all` - tabel baru (versi dashboard) sebagai gabungan hasil pemeriksaan. Semua tabel dashboard menyimpan: - `Mgm_McuID` (untuk scope regenerate) - `Mcu_GenerateID` (relasi ke run generate) - `Mcu_ProjectID` (opsional, diisi jika mapping dari `mcu_project` ditemukan) ## Flow Eksekusi Sinkronisasi 1. Validasi `Mgm_McuID` dan setup `mcu_number` aktif. 2. Resolve `Mcu_ProjectID` dari tabel `mcu_project` (dinamis berdasarkan kolom yang tersedia). 3. Insert row ke `mcu_generate` -> dapat `Mcu_GenerateID`. 4. Delete data lama pada 3 tabel dashboard untuk `Mgm_McuID` tersebut. 5. Insert ulang dari `cpone_corporate`: - `kelainan_details` berdasarkan `Numbering` aktif. - `kelainan_summary` berdasarkan `Mcu_KelainanMgm_McuID`. - `mcu_result_all` berdasarkan `Mcu_ResultAllMgm_McuID`. 6. Commit transaksi. ## Catatan Implementasi - Sinkronisasi dashboard dipanggil setelah generate utama selesai: - `generate_kelainan_lab` - `generate_kelainan_nonlab` - `generate_kelainan_fisik` - `generate_all_results` - `summary_kelainan_sepuluh` - Diproteksi dengan helper agar tidak duplikatif.