sp_generate_dashboard_data menebak Mcu_CheckinoutOutTime dari MAX() timestamp
event lab (sample receive/sampling done), bukan dari checkout fisik pasien,
sehingga pasien yang belum checkout bisa tampil "Checked Out" walau stationnya
belum selesai. Ganti sumbernya ke cpone.preregister_checkin_checkout (log
checkin/checkout asli) dan hentikan pemaksaan Mcu_CheckinoutID = order_id yang
bentrok untuk project multi-hari.
KPI "Checked Out" di GetKPI juga diselaraskan dengan detail pasien: sekarang
hitung dari GetAllPatients dan mensyaratkan semua station wajib sudah selesai,
bukan cuma checkout fisik saja, supaya angka KPI dan modal detail selalu sinkron.
Sebelumnya ikut m.Mgm_McuTotalParticipant (field target manual di source
yang bisa 0/belum diisi admin MGM), sekarang dihitung dari COUNT baris
aktif di cpone.mcu_preregister_patients per project supaya selalu sesuai
jumlah peserta yang benar-benar terdaftar. Sudah diverifikasi di devcpone:
mcu_id 1589 sekarang menampilkan 5 (sebelumnya 0/17).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Ditemukan saat verifikasi di devcpone: p.Mcu_PreregisterPatientsPemeriksaan
tidak ada di skema cpone (diganti p.Mcu_PreregisterPatientsOrders), dan
PK mcu_checkinout salah nama (Mcu_CheckinoutCheckinoutID -> Mcu_CheckinoutID).
Setelah ini SP jalan penuh tanpa error dan hasil sync sudah tervalidasi
di server dev (mcu_patient 5 aktif/12 nonaktif sesuai kondisi source).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Restore blok sinkron mcu_project yang hilang sejak migration 014, dan
hapus filter IsActive='Y' pada sync mcu_patient supaya baris yang jadi
inactive di sumber (mcu_preregister_patients) ikut ter-update statusnya,
bukan nyangkut permanen sebagai 'Y'.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>