diff --git a/CLAUDE.md b/CLAUDE.md index ef5c4c7e..08f64746 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -26,13 +26,16 @@ di-mask di kolom plain, nilai asli ada di kolom `_enc` (AES-256-GCM). ### Pola kolom PDP di m_patient -| Kolom plain | Isi plain | `_enc` | `_bidx` | Sumber bidx | -|---|---|---|---|---| -| `M_PatientName` | masked (`A*** B***`) | ✓ | ✓ | `M_PatientName` | -| `M_PatientHP` | masked | ✓ | ✓ | `M_PatientHP` | -| `M_PatientDOB` | masked | ✓ | ✓ | `M_PatientDOB` | -| `M_PatientIDNumber` | masked (`1234**...**09`) | ✓ | — | — | -| `M_PatientNIK` | plain (kosong/lama) | ✓ | ✓ | **`M_PatientIDNumber`** ← penting | +| Kolom plain | Tipe | Isi plain | `_enc` | `_bidx` | Sumber bidx | +|---|---|---|---|---|---| +| `M_PatientName` | VARCHAR | masked (`A*** B***`) | ✓ | ✓ | `M_PatientName` | +| `M_PatientHP` | VARCHAR | masked | ✓ | ✓ | `M_PatientHP` | +| `M_PatientDOB` | **VARCHAR(20)** | masked (`**-**-YYYY`) | ✓ | ✓ | `M_PatientDOB` (format d-m-Y) | +| `M_PatientIDNumber` | VARCHAR | masked (`1234**...**09`) | ✓ | — | — | +| `M_PatientNIK` | VARCHAR | plain (kosong/lama) | ✓ | ✓ | **`M_PatientIDNumber`** ← penting | + +`M_PatientDOB` diubah ke `VARCHAR(20)` (dari DATE) agar nilai masked `**-**-YYYY` bisa tersimpan. +`_mask_dob($v)` menerima format `d-m-Y` dan mengembalikan `**-**-YYYY`. **`M_PatientNIK_bidx` diisi dari `M_PatientIDNumber`**, bukan dari kolom `M_PatientNIK`. Ini pola yang dipakai `ibl_registration/Patient.php` dan `Registrationv3.php`. @@ -41,6 +44,16 @@ Search e[3] (format `Nama+HP+DOB+NIK`) menggunakan `JSON_CONTAINS(M_PatientNIK_b Data lama yang disimpan sebelum pola ini diterapkan tidak akan punya `M_PatientNIK_bidx` — perlu di-save ulang atau backfill script untuk bisa dicari by IDNumber. +### Daftar migration PDP yang sudah diterapkan + +| File | Keterangan | +|---|---| +| `sql/manual_changes/2026-05-31-pdp-encrypt-columns.sql` | Tambah kolom `_enc` dan `_bidx` di m_patient, m_patientaddress, log tables | +| `sql/manual_changes/2026-05-31-pdp-update-triggers-enc.sql` | Update trigger untuk populate `_enc` | +| `sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql` | SP cache untuk BIRT | +| `sql/manual_changes/2026-06-11-alter-m-patient-dob-to-varchar.sql` | Ubah `M_PatientDOB` DATE → VARCHAR(20) | +| `sql/manual_changes/2026-06-11-alter-mcu-preregister-dob-to-varchar.sql` | Ubah `Mcu_PreregisterPatientsDOB` DATE → VARCHAR(20) | + ### Pola wajib: PHP Proxy Stream BIRT membaca dari tabel `patient_print_cache`. Cache harus di-populate PHP sebelum BIRT