4.6 KiB
Integrasi Tabel billing_dpjp
Ringkasan Perubahan
Integrasi tabel billing_dpjp yang baru ke dalam sistem billing CareIT. Tabel ini digunakan untuk menyimpan Doctor In Charge (DPJP) untuk setiap billing.
Perubahan yang Dilakukan
1. services/billing_pasien.go
Function: DataFromFE()
- Tambahan: Kode untuk insert ID_DPJP ke tabel
billing_dpjp(lines ~439-451) - Logika: Jika
input.ID_DPJP > 0, maka insert record ke tabelbilling_dpjp - Log: Menambah logging untuk tracking DPJP insertion
if input.ID_DPJP > 0 {
billingDPJP := models.Billing_DPJP{
ID_Billing: billing.ID_Billing,
ID_DPJP: input.ID_DPJP,
}
// ... insert logic
}
Function: GetBillingDetailAktifByNama()
-
Perubahan: Menambah return value (dari 8 return menjadi 9)
- Sebelumnya:
(*models.BillingPasien, []string, []string, []string, []string, []string, []string, error) - Sesudahnya:
(*models.BillingPasien, []string, []string, []string, []string, []string, []string, int, error)
- Sebelumnya:
-
Tambahan Query:
- Query dari tabel
billing_dpjpuntuk fetch ID_DPJP - Jika tidak ada DPJP, return value 0 (normal)
- Query dari tabel
var dpjpRow struct {
ID_DPJP int `gorm:"column:ID_DPJP"`
}
// Query dari billing_dpjp
2. services/riwayat_billing_pasien.go
Function: GetRiwayatPasienAll()
- Tambahan Query: Menambah query untuk fetch DPJP dari tabel
billing_dpjp - Map Creation: Membuat
dpjpMapuntuk mapping ID_Billing ke ID_DPJP - Response Update: Field
ID_DPJPdi response sudah diisi (meskipun belum direferensikan di item construction, field sudah ada di model)
dpjpMap := make(map[int]int)
// Query dari billing_dpjp untuk mendapatkan ID_DPJP
3. handlers/routes.go
Function: GetBillingAktifByNamaHandler()
- Update Parameter: Menangkap return value baru (ID_DPJP)
- Response Update: Menambah field
id_dpjpdalam JSON response
billing, tindakan, icd9, icd10, dokter, inacbgRI, inacbgRJ, dpjp, err := services.GetBillingDetailAktifByNama(nama)
Response JSON sekarang include:
{
"data": {
"billing": {...},
"tindakan_rs": [...],
"icd9": [...],
"icd10": [...],
"dokter": [...],
"inacbg_ri": [...],
"inacbg_rj": [...],
"id_dpjp": 123
}
}
Model yang Sudah Ada
models/models.go
-
Billing_DPJP: Struct untuk tabel
billing_dpjp(line ~61-68)type Billing_DPJP struct { ID_Billing int `gorm:"column:ID_Billing;primaryKey"` ID_DPJP int `gorm:"column:ID_DPJP;primaryKey"` } -
BillingRequest: Sudah memiliki field
ID_DPJP(line ~225)ID_DPJP int `json:"id_dpjp"` -
Riwayat_Pasien_all: Sudah memiliki field
ID_DPJP(line ~183)ID_DPJP string `json:"id_dpjp"`
API Endpoint yang Terpengaruh
GET /billing/aktif
Parameter: nama_pasien
Response:
{
"status": "success",
"data": {
"billing": {...},
"id_dpjp": 123,
...
}
}
Database Schema
Tabel billing_dpjp sudah dibuat di PostgreSQL dengan struktur:
CREATE TABLE billing_dpjp (
ID_Billing integer NOT NULL,
ID_DPJP integer NOT NULL,
PRIMARY KEY (ID_Billing, ID_DPJP),
FOREIGN KEY (ID_Billing) REFERENCES billing_pasien(ID_Billing),
FOREIGN KEY (ID_DPJP) REFERENCES dokter(ID_Dokter)
);
Testing
Test Case 1: Membuat Billing Baru dengan DPJP
POST /billing
{
"id_dpjp": 5,
"nama_dokter": ["Dr. Budi"],
...
}
Expected: DPJP tercatat di tabel billing_dpjp
Test Case 2: Fetch Billing Aktif dengan DPJP
GET /billing/aktif?nama_pasien=John Doe
Expected: Response include field id_dpjp dengan value yang benar
Test Case 3: Riwayat Billing Tertutup
GET /admin/riwayat-pasien-all
Expected: Setiap billing dalam response include DPJP (jika ada)
File yang Dimodifikasi
- ✅
services/billing_pasien.go- DataFromFE() + GetBillingDetailAktifByNama() - ✅
services/riwayat_billing_pasien.go- GetRiwayatPasienAll() - ✅
handlers/routes.go- GetBillingAktifByNamaHandler()
Status Kompilasi
✅ BUILD SUCCESS - Tidak ada error atau warning saat compile go build .
Catatan
- Field
ID_DPJPdi modelRiwayat_Pasien_allbertipestring(line 183) sedangkan dibilling_dpjpbertipeint. Ini mungkin perlu di-harmonisasi untuk konsistensi tipe data di masa depan. - Fungsi update billing yang ada (
EditPasienComplete) belum include logika update DPJP. Jika ada requirement untuk update DPJP setelah billing dibuat, perlu ditambahkan. - DPJP bersifat opsional (jika tidak ada, return 0 - tidak error).