CPONE Middleware • Database Access Reference
Daftar Akses Tabel
Kebutuhan privilege database untuk service CPONE Middleware
Ringkasan: service membutuhkan akses SELECT pada tabel master dan tabel transaksi yang dibaca. Akses write diperlukan hanya pada tabel yang dipakai endpoint POST untuk membuat paket, pasien, registrasi, layanan laboratorium, nominal, dan diagnosis.
1. Tabel dengan READ dan WRITE
Tabel berikut membutuhkan akses SELECT dan operasi write seperti tercantum.
| Nama tabel | READ | WRITE | Kegunaan utama |
| medrec | SELECT | INSERT | Pencarian dan pembuatan data pasien/medical record. |
| regpas | SELECT | INSERT | Pembuatan dan pengecekan registrasi pasien. |
| regpas_nominal | SELECT | INSERT, UPDATE | Nominal administrasi pada level registrasi pasien. |
| trxdepartemen | SELECT | INSERT | Pembuatan transaksi departemen. |
| trxdepartemen_nominal | SELECT | INSERT, UPDATE | Rekap nominal layanan/item/tempat tidur dan total transaksi. |
| trxidlaboratorium | SELECT | INSERT | Pembuatan nomor/transaksi laboratorium. |
| trxlayanan | SELECT | INSERT | Penambahan layanan pada transaksi. |
| trxlayanan_detail | SELECT | INSERT | Relasi detail layanan dengan paket dispenser. |
| trxlayanan_penunjang | SELECT | INSERT | Relasi layanan penunjang/header laboratorium. |
| lab_trxspesimen | SELECT | INSERT | Pencatatan spesimen laboratorium. |
| paket_header | SELECT | INSERT, UPDATE, DELETE | Pembuatan paket; DELETE hanya untuk cleanup saat transaksi gagal. |
| paket_layanan | SELECT | INSERT, DELETE | Detail layanan paket; DELETE hanya untuk cleanup. |
| paket_departemen | SELECT | INSERT, DELETE | Departemen yang terkait dengan paket; DELETE hanya untuk cleanup. |
| paket_dispenser_header | SELECT | INSERT | Header paket dispenser pada kunjungan pasien. |
| paket_dispenser_episode_rj | SELECT | INSERT | Episode kunjungan rawat jalan paket dispenser. |
| paket_dispenser_layanan | SELECT | INSERT | Layanan yang dihasilkan dari paket dispenser. |
| paket_dispenser_item | SELECT | INSERT | Item paket dispenser. |
| paket_dispenser_adm | SELECT | INSERT | Administrasi paket dispenser. |
2. Tabel dengan WRITE saja
| Nama tabel | Operasi |
| diagnosa_log | INSERT — menyimpan log diagnosis kerja pada registrasi laboratorium. |
| regpas_diagnosa | INSERT — menyimpan diagnosis kerja yang terkait dengan pasien/registrasi. |
Kedua tabel di atas tidak dibaca kembali oleh service dalam query saat ini, tetapi harus dapat menerima INSERT ketika endpoint registrasi laboratorium menyimpan diagnosis.
3. Tabel dengan READ saja
Tabel master dan referensi berikut hanya dibaca oleh service, sehingga cukup diberikan privilege SELECT.
| Kelompok | Nama tabel |
| Tarif dan layanan | adm_periode, harga_layanan_diskon, layanandepartemen, masterlayanan, jenislayanan, periode_tarif, perusahaan_grouptarif, perusahaan_tarif, perusahaan |
| Master rumah sakit | departemen, dokter, rs, kelas, satuan, satuanlab, shiftharian |
| Master paket | paket_adm, paket_item, paket_operasi_header, paket_tt, paket_dispenser_operasi_header |
| Master operasi dan referensi | golonganoperasi, jenisanestesi, kasusoperasi, mastertindakan, konversisatuan, margin_alkes, margin_obat, sys_setting |
| Master laboratorium | grouplayanan, lab_jenisspesimen, lab_masterlayanan, lab_multiple, lab_reference, lab_spesimentest, lab_trxlayanan_setup, trxlayananlaboratorium, trxlayanan_proses |
| Master pasien/registrasi | jenispaket, jenispasien, jenisreg |
| Metadata MySQL | information_schema.tables, information_schema.columns |
4. Tabel dinamis
| Pola nama tabel | Kebutuhan akses |
| harga_layanan_{PeriodeTarifID} | SELECT. Contoh: harga_layanan_10. Dipakai untuk membaca tarif layanan berdasarkan periode tarif. |
| perusahaan_tarif_layanan_{GroupTarifID} | SELECT. Dipakai untuk membaca detail tarif kerja sama berdasarkan group tarif. |
5. Rekomendasi grant
Untuk koneksi service, berikan privilege secara eksplisit pada database HIS. Gunakan nama database dan host user sesuai lingkungan server.
-- Ganti nama_database_his, cpone, dan host_user sesuai environment.
GRANT SELECT ON `nama_database_his`.`adm_periode` TO 'cpone'@'host_user';
-- Contoh tabel yang membutuhkan write:
GRANT SELECT, INSERT ON `nama_database_his`.`medrec` TO 'cpone'@'host_user';
GRANT SELECT, INSERT ON `nama_database_his`.`regpas` TO 'cpone'@'host_user';
GRANT SELECT, INSERT, UPDATE ON `nama_database_his`.`regpas_nominal` TO 'cpone'@'host_user';
GRANT SELECT, INSERT, UPDATE ON `nama_database_his`.`trxdepartemen_nominal` TO 'cpone'@'host_user';
GRANT SELECT, INSERT, UPDATE, DELETE ON `nama_database_his`.`paket_header` TO 'cpone'@'host_user';
-- Ulangi pola di atas untuk seluruh tabel pada daftar dokumen ini.
-- Tabel dinamis memerlukan SELECT pada setiap tabel yang benar-benar digunakan.
6. Catatan penting
- Service hanya membuka koneksi ke database HIS melalui konfigurasi CPONE_DB_*.
- Privilege DELETE pada paket_header, paket_layanan, dan paket_departemen diperlukan untuk cleanup jika proses pembuatan paket gagal sebagian.
- regpas_nominal dibuat saat registrasi laboratorium untuk inisialisasi nominal administrasi dengan nilai awal nol dan metode Otomatis.
- Tabel hospitals dan hospital_databases pada migration cpone_middleware belum digunakan oleh runtime Go service saat ini.
- Daftar ini dipetakan dari kode aplikasi; validasi final tetap perlu disesuaikan dengan struktur tabel dan policy keamanan database HIS.