t_orderdetail, t_orderheader, so_resultentry*, member_eligible tidak dienkripsi.
Perlindungan via enkripsi identitas pasien (m_patient) + access control.
Hanya t_orderdelivery (email/HP delivery) yang tetap dienkripsi.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Tambah: step truncate log_patient, format masking terbaru,
troubleshooting disk full + MySQL crash, controller sprint berikutnya.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
JSON tidak mengandung PII langsung (nama/NIK/DOB/alamat).
Enkripsi akan memberatkan global MCU report.
Data source (t_orderdetail) sudah dienkripsi.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dokumentasi lengkap urutan eksekusi, field yang dienkripsi,
format masking, disk space requirement, dan restore procedure.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Tambah .env loader di index.php untuk IBL_ENCRYPT_KEY dan IBL_ENCRYPT_SEARCH_KEY
- Library Ibl_encryptor: AES-256-GCM encrypt/decrypt + trigram blind index untuk partial search
- SQL migration: tambah kolom _enc dan _bidx di 16 tabel (m_patient, m_patientaddress, hasil lab, log)
- Script backup_pdp_tables.sh: backup tabel terdampak sebelum migrasi
- Script migrate_encrypt_patient.php: enkripsi batch 178K data PII pasien
- Script migrate_encrypt_results.php: enkripsi data medis hasil lab dan log
- Patient.php: search via trigram blind index, add_new/edit enkripsi sebelum save
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- generate_location dipindah ke luar trans_begin/commit agar order tidak rollback
- _do_generate_location_for_stations() diextract, iterasi semua station tanpa abort
- deteksi NO_MAPPING (loc_id null) sebelum INSERT
- location_warning ditambahkan ke response sukses (opsional untuk FE)
- endpoint retry_location untuk generate ulang lokasi yang belum terbentuk
- tiap kegagalan station dicatat ke error_log_order
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>