-- =====================================================================
-- 2026_sprint12_paperless.sql — اسپرینت ۱۲ (Paperless + اتصالِ حسابِ بیمار)
-- ۱) پروسیجرِ بدونِ بی‌حسی (requires_anesthesia) + مدتِ پیش‌فرضِ بی‌حسی
-- ۲) پرچمِ «بی‌حسی ردشده» روی فرایند (برای تایم‌لاین و گزارش)
-- ۳) افزودنِ «کورتون» + غیرفعال‌سازیِ «کربوکسی» (بدونِ حذفِ سوابق)
-- ۴) ایندکسِ موبایل برای جستجوی سوابقِ بیمار از سایت
-- افزایشی و اجرای مجدد امن. دیتابیس: shadicli_nurse
-- =====================================================================
SET NAMES utf8mb4;

-- ۱) بی‌حسی اختیاری در تعریفِ پروسیجر
SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='procedures' AND COLUMN_NAME='requires_anesthesia');
SET @s := IF(@c=0, "ALTER TABLE `procedures` ADD COLUMN `requires_anesthesia` TINYINT(1) NOT NULL DEFAULT 1 AFTER `is_device`", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='procedures' AND COLUMN_NAME='default_numbing_minutes');
SET @s := IF(@c=0, "ALTER TABLE `procedures` ADD COLUMN `default_numbing_minutes` INT NULL DEFAULT NULL AFTER `requires_anesthesia`", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

-- ۲) پرچمِ ردشدنِ مرحله‌ی بی‌حسی روی فرایند (skipped ثبت می‌شود، گم نمی‌شود)
SET @c := (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='nursing_records' AND COLUMN_NAME='numbing_skipped');
SET @s := IF(@c=0, "ALTER TABLE `nursing_records` ADD COLUMN `numbing_skipped` TINYINT(1) NOT NULL DEFAULT 0 AFTER `numbing_planned_minutes`", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

-- ۳) «کورتون» اضافه شود (اگر نیست) — «کربوکسی» غیرفعال شود (سوابق دست‌نخورده)
INSERT INTO `procedures` (`title`,`category`,`icon`,`requires_anesthesia`,`is_active`,`created_at`)
SELECT 'کورتون','تزریق','ti-vaccine',0,1,NOW()
WHERE NOT EXISTS (SELECT 1 FROM `procedures` WHERE `title`='کورتون');

UPDATE `procedures` SET `is_active`=0, `updated_at`=NOW() WHERE `title` LIKE '%کربوکسی%' AND `is_active`=1;

-- ۴) ایندکسِ موبایل (برای پنلِ بیمارِ سایت: خواندنِ فقط‌خواندنیِ سوابق با موبایل)
SET @c := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='cw_appointments' AND INDEX_NAME='idx_appt_mobile');
SET @s := IF(@c=0, "ALTER TABLE `cw_appointments` ADD INDEX `idx_appt_mobile` (`mobile`)", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

SET @c := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='nursing_records' AND INDEX_NAME='idx_rec_mobile');
SET @s := IF(@c=0, "ALTER TABLE `nursing_records` ADD INDEX `idx_rec_mobile` (`patient_mobile`)", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

SET @c := (SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='cw_patients' AND INDEX_NAME='idx_pat_mobile');
SET @s := IF(@c=0, "ALTER TABLE `cw_patients` ADD INDEX `idx_pat_mobile` (`mobile`)", 'SELECT 1');
PREPARE st FROM @s; EXECUTE st; DEALLOCATE PREPARE st;

-- =====================================================================
-- ROLLBACK:
-- ALTER TABLE `procedures` DROP COLUMN `default_numbing_minutes`, DROP COLUMN `requires_anesthesia`;
-- ALTER TABLE `nursing_records` DROP COLUMN `numbing_skipped`;
-- UPDATE `procedures` SET is_active=1 WHERE title LIKE '%کربوکسی%';
-- DELETE FROM `procedures` WHERE title='کورتون' AND NOT EXISTS (SELECT 1 FROM record_procedures rp JOIN procedures p2 ON p2.id=rp.procedure_id AND p2.title='کورتون');
-- ALTER TABLE cw_appointments DROP INDEX idx_appt_mobile; ALTER TABLE nursing_records DROP INDEX idx_rec_mobile; ALTER TABLE cw_patients DROP INDEX idx_pat_mobile;
-- =====================================================================
