-- UU PDP: tambah kolom enkripsi PII pasien dan data medis hasil lab
-- Kolom lama TIDAK dihapus (backward compat selama masa transisi)
-- Enkripsi: AES-256-GCM, key dari .env

-- ============================================================
-- one_lab.m_patient: PII pasien (trigram bidx untuk search)
-- ============================================================
ALTER TABLE one_lab.m_patient
    ADD COLUMN M_PatientName_enc         TEXT NULL AFTER M_PatientName,
    ADD COLUMN M_PatientName_bidx        MEDIUMTEXT NULL AFTER M_PatientName_enc,
    ADD COLUMN M_PatientHP_enc           TEXT NULL AFTER M_PatientHP,
    ADD COLUMN M_PatientHP_bidx          MEDIUMTEXT NULL AFTER M_PatientHP_enc,
    ADD COLUMN M_PatientDOB_enc          TEXT NULL AFTER M_PatientDOB,
    ADD COLUMN M_PatientDOB_bidx         MEDIUMTEXT NULL AFTER M_PatientDOB_enc,
    ADD COLUMN M_PatientEmail_enc        TEXT NULL AFTER M_PatientEmail,
    ADD COLUMN M_PatientPhone_enc        TEXT NULL AFTER M_PatientPhone,
    ADD COLUMN M_PatientPOB_enc          TEXT NULL AFTER M_PatientPOB,
    ADD COLUMN M_PatientIDNumber_enc     TEXT NULL AFTER M_PatientIDNumber,
    ADD COLUMN M_PatientNIK_enc          TEXT NULL AFTER M_PatientNIK,
    ADD COLUMN M_PatientNIP_enc          TEXT NULL AFTER M_PatientNIP;

-- ============================================================
-- one_lab.m_patientaddress: alamat pasien
-- ============================================================
ALTER TABLE one_lab.m_patientaddress
    ADD COLUMN M_PatientAddressDescription_enc  TEXT NULL AFTER M_PatientAddressDescription,
    ADD COLUMN M_PatientAddressDescription_bidx MEDIUMTEXT NULL AFTER M_PatientAddressDescription_enc,
    ADD COLUMN M_PatientAddressEmail_enc        TEXT NULL AFTER M_PatientAddressEmail,
    ADD COLUMN M_PatientAddressPhone_enc        TEXT NULL AFTER M_PatientAddressPhone;

-- ============================================================
-- one_lab.t_orderdetail: nilai hasil lab utama
-- ============================================================
ALTER TABLE one_lab.t_orderdetail
    ADD COLUMN T_OrderDetailResult_enc TEXT NULL AFTER T_OrderDetailResult,
    ADD COLUMN T_OrderDetailNote_enc   TEXT NULL AFTER T_OrderDetailNote;

-- ============================================================
-- one_lab.t_orderheader: diagnosa dokter
-- ============================================================
ALTER TABLE one_lab.t_orderheader
    ADD COLUMN T_OrderHeaderDiagnose_enc TEXT NULL AFTER T_OrderHeaderDiagnose;

-- ============================================================
-- one_lab.so_resultentrydetail: hasil lab standar
-- ============================================================
ALTER TABLE one_lab.so_resultentrydetail
    ADD COLUMN So_ResultEntryDetailResult_enc TEXT NULL AFTER So_ResultEntryDetailResult;

-- ============================================================
-- one_lab.so_resultentrydetail_other: hasil lab nonstandar
-- ============================================================
ALTER TABLE one_lab.so_resultentrydetail_other
    ADD COLUMN So_ResultEntryDetailOtherResult_enc       TEXT NULL AFTER So_ResultEntryDetailOtherResult,
    ADD COLUMN So_ResultEntryDetailOtherResultBefore_enc TEXT NULL AFTER So_ResultEntryDetailOtherResultBefore;

-- ============================================================
-- one_lab.so_resultentry_fisik_umum: JSON pemeriksaan fisik
-- ============================================================
ALTER TABLE one_lab.so_resultentry_fisik_umum
    ADD COLUMN So_ResultEntryFisikUmumDetails_enc TEXT NULL AFTER So_ResultEntryFisikUmumDetails;

-- ============================================================
-- one_lab.so_resultentry_fisik_summary: ringkasan fisik
-- ============================================================
ALTER TABLE one_lab.so_resultentry_fisik_summary
    ADD COLUMN So_ResultEntryFisikSummaryValue_enc  TEXT NULL AFTER So_ResultEntryFisikSummaryValue,
    ADD COLUMN So_ResultEntryFisikSummaryValue2_enc TEXT NULL AFTER So_ResultEntryFisikSummaryValue2;

-- ============================================================
-- one_lab.so_resultentry_other: catatan hasil
-- ============================================================
ALTER TABLE one_lab.so_resultentry_other
    ADD COLUMN So_ResultEntryOtherNote_enc TEXT NULL AFTER So_ResultEntryOtherNote;

-- ============================================================
-- one_lab.so_resultentry_fisioterapi
-- ============================================================
ALTER TABLE one_lab.so_resultentry_fisioterapi
    ADD COLUMN So_ResultEntdyFisioterapiDetails_enc TEXT NULL AFTER So_ResultEntdyFisioterapiDetails;

-- ============================================================
-- one_lab.so_resultentry_smwt: hasil 6MWT
-- ============================================================
ALTER TABLE one_lab.so_resultentry_smwt
    ADD COLUMN So_ResultentrySmwtWeight_enc            TEXT NULL AFTER So_ResultentrySmwtWeight,
    ADD COLUMN So_ResultentrySmwtHeight_enc            TEXT NULL AFTER So_ResultentrySmwtHeight,
    ADD COLUMN So_ResultentrySmwtBMI_enc               TEXT NULL AFTER So_ResultentrySmwtBMI,
    ADD COLUMN So_ResultentrySmwtPreTensi_enc          TEXT NULL AFTER So_ResultentrySmwtPreTensi,
    ADD COLUMN So_ResultentrySmwtPreSPO2_enc           TEXT NULL AFTER So_ResultentrySmwtPreSPO2,
    ADD COLUMN So_ResultentrySmwtPreNadi_enc           TEXT NULL AFTER So_ResultentrySmwtPreNadi,
    ADD COLUMN So_ResultentrySmwtPostTensi_enc         TEXT NULL AFTER So_ResultentrySmwtPostTensi,
    ADD COLUMN So_ResultentrySmwtPostSPO2_enc          TEXT NULL AFTER So_ResultentrySmwtPostSPO2,
    ADD COLUMN So_ResultentrySmwtPostNadi_enc          TEXT NULL AFTER So_ResultentrySmwtPostNadi,
    ADD COLUMN So_ResultentrySmwtVOMax_enc             TEXT NULL AFTER So_ResultentrySmwtVOMax,
    ADD COLUMN So_ResultentrySmwtKategoriKebugaran_enc TEXT NULL AFTER So_ResultentrySmwtKategoriKebugaran;

-- ============================================================
-- one_lab.so_resultentry_srq29_conclusion: hasil SRQ-29
-- ============================================================
ALTER TABLE one_lab.so_resultentry_srq29_conclusion
    ADD COLUMN So_ResultentrySrq29ConclusionResult_enc TEXT NULL AFTER So_ResultentrySrq29ConclusionResult;

-- ============================================================
-- one_lab.so_resultentrysdsinterpretation: interpretasi SDS
-- ============================================================
ALTER TABLE one_lab.so_resultentrysdsinterpretation
    ADD COLUMN So_ResultEntrySDSInterpretationDisplay_enc TEXT NULL AFTER So_ResultEntrySDSInterpretationDisplay;

-- ============================================================
-- one_lab.member_eligible: data BPJS / asuransi
-- ============================================================
ALTER TABLE one_lab.member_eligible
    ADD COLUMN Member_EligibleDescription_enc TEXT NULL AFTER Member_EligibleDescription;

-- ============================================================
-- one_lab_log.log_patient: audit log perubahan data pasien
-- Fix charset ke utf8mb4 (default latin1 tidak support JSON UTF-8 dari trigger)
-- ============================================================
ALTER TABLE one_lab_log.log_patient
    ADD COLUMN Log_PatientJsonBefore_enc MEDIUMTEXT NULL AFTER Log_PatientJsonBefore,
    ADD COLUMN Log_PatientJsonAfter_enc  MEDIUMTEXT NULL AFTER Log_PatientJsonAfter;

ALTER TABLE one_lab_log.log_patient
    MODIFY Log_PatientJsonBefore     MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
    MODIFY Log_PatientJsonAfter      MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
    MODIFY Log_PatientJsonBefore_enc MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
    MODIFY Log_PatientJsonAfter_enc  MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- ============================================================
-- one_lab_log.log_fo: audit log order FO
-- ============================================================
ALTER TABLE one_lab_log.log_fo
    ADD COLUMN Log_FoJson_enc MEDIUMTEXT NULL AFTER Log_FoJson;

-- ============================================================
-- one_lab_log.log_resultentry: audit log hasil lab
-- ============================================================
ALTER TABLE one_lab_log.log_resultentry
    ADD COLUMN Log_ResultEntryJSONBefore_enc MEDIUMTEXT NULL AFTER Log_ResultEntryJSONBefore,
    ADD COLUMN Log_ResultEntryJSONAfter_enc  MEDIUMTEXT NULL AFTER Log_ResultEntryJSONAfter;
