4.5 KiB
Repo Working Notes
- Verify the actual file, class name, and call site before changing a library/controller reference.
- If a class load error appears, check the existing library file and the current repo usage pattern first.
- Do not swap to a different library name on assumption alone.
- Keep fixes minimal and local unless the user asks for a broader refactor.
- If a task changes live DB objects such as table schema, trigger, stored procedure, or function, always add a SQL record file under
sql/manual_changes/. - Name the SQL record file with the pattern
YYYY-MM-DD-<commit-message-stem>.sql. - The SQL record file must include the actual SQL change that was applied, not just a note.
- Before every
commitandpush, always check first whether local branch needs to pull/rebase from remote. - To upload to IBL, run
bash scripts/upload_ibl_committed_files.sh. Only run this when the user explicitly asks to upload to IBL. Do not run automatically after commit/push.
PDP Encryption & BIRT Report
UU PDP No. 27/2022 mengharuskan enkripsi PII pasien. M_PatientDOB, M_PatientName, dll
di-mask NULL di kolom plain, nilai asli ada di kolom _enc (AES-256-GCM).
Pola wajib: PHP Proxy Stream
BIRT membaca dari tabel patient_print_cache. Cache harus di-populate PHP sebelum BIRT
dipanggil, dan dihapus segera setelah PDF di-stream.
FE → PHP proxy → populate cache → fetch BIRT → delete cache → stream PDF
Jangan pernah buat FE langsung build URL /birt/frameset?... lalu set ke iframe/window.open
tanpa lewat PHP proxy — cache tidak akan pernah terisi, data pasien kosong di report.
Endpoint proxy yang tersedia
GET /one-api-lab/tools/birt_proxy/stream_by_code
Params: token, report_code (print_transaction code), PT_OrderHeaderID
Return: binary PDF
Untuk BE yang perlu return URL ke FE, gunakan Reporturl library:
$this->load->library('reporturl');
[$ok, $url] = $this->reporturl->get_report_url_by_code($report_code, [
'PT_OrderHeaderID' => $order_id,
'PUsername' => $username,
]);
// $url sudah mengarah ke stream_by_code — tidak perlu populate/delete cache manual
Daftar print_transaction code
| Group | Print siap | Print belum siap | |
|---|---|---|---|
| LAB | LAB-RESULT-P-01 |
LAB-RESULT-NP-01 |
LAB-RESULT-P-02 |
| LAB (Inggris) | LABEN-RESULT-P-01 |
LABEN-RESULT-NP-01 |
LABEN-RESULT-P-02 |
| Mikro (terlampir) | MIKRO-RESULT-P-01 |
MIKRO-RESULT-NP-01 |
MIKRO-RESULT-P-02 |
| Mikro (tidak terlampir) | LAB-RESULT-P-01 |
LAB-RESULT-NP-01 |
LAB-RESULT-P-02 |
| Mikro (Inggris) | MIKROEN-RESULT-P-01 |
MIKROEN-RESULT-NP-01 |
MIKROEN-RESULT-P-02 |
| FNA | FNA-RESULT-P-01 |
FNA-RESULT-NP-01 |
FNA-RESULT-P-02 |
| Patologi Anatomi | PA-RESULT-P-01 |
PA-RESULT-NP-01 |
PA-RESULT-P-02 |
| Papsmear | PAP-RESULT-P-01 |
PAP-RESULT-NP-01 |
PAP-RESULT-P-02 |
| Pap Smear LCP | PAPLCP-RESULT-P-01 |
PAPLCP-RESULT-NP-01 |
PAPLCP-RESULT-P-02 |
| Pap Smear LCP (Inggris) | PAPLEN-RESULT-P-01 |
PAPLEN-RESULT-NP-01 |
PAPLEN-RESULT-P-02 |
| Preparasi Sperma | PS-RESULT-P-01 |
PS-RESULT-NP-01 |
PS-RESULT-P-02 |
| DFI | DFI-RESULT-P-01 |
DFI-RESULT-NP-01 |
DFI-RESULT-P-02 |
| Cytologi | CT-RESULT-P-01 |
CT-RESULT-NP-01 |
CT-RESULT-P-02 |
Deteksi modul yang belum difix
Cari pola ini di FE:
/birt/frameset?__report=
Kalau ditemukan di JS/Vue yang langsung set ke iframe/object/window.open tanpa lewat PHP
proxy, itu harus diganti ke stream_by_code.
Library terkait
application/libraries/Ibl_patient_decrypt.php— populate/deletepatient_print_cacheapplication/libraries/Ibl_sampling_normal.php— penggantifn_sampling_get_normalMySQL function (semuaRe_px.phpsudah diupdate)application/controllers/tools/Birt_proxy.php— proxy stream handler
graphify
This project has a graphify knowledge graph at graphify-out/.
Rules:
- Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
- If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
- For cross-module "how does X relate to Y" questions, prefer
graphify query "<question>",graphify path "<A>" "<B>", orgraphify explain "<concept>"over grep — these traverse the graph's EXTRACTED + INFERRED edges instead of scanning files - After modifying code files in this session, run
graphify update .to keep the graph current (AST-only, no API cost)