5.1 KiB
5.1 KiB
🔍 HASIL CECK LENGKAP - Filter Tanggal Issue
📋 RINGKASAN MASALAH
Frontend filter untuk tanggal tidak bekerja karena:
- Frontend mengharapkan field:
tanggal_masukatautanggal_keluar - Backend API
/admin/riwayat-billingmengembalikan response dari structRequest_Admin_Inacbg - Struct
Request_Admin_InacbgTIDAK memiliki field tanggal sama sekali!
🔗 FLOW API YANG SEBENARNYA
Frontend getRiwayatBilling()
↓
API: GET /admin/riwayat-billing
↓
Handler: GetRiwayatBillingHandler
↓
Service: GetAllRiwayatpasien(db)
↓
Return: []models.Request_Admin_Inacbg
↓
Response JSON berisi: id_billing, nama_pasien, id_pasien, kelas, ruangan, total_tarif_rs,
total_klaim, id_dpjp, tindakan_rs, icd9, icd10, inacbg_ri, inacbg_rj,
billing_sign, nama_dokter
↓
❌ TIDAK ADA: tanggal_masuk, tanggal_keluar
📦 PERBANDINGAN 2 API ENDPOINT
Endpoint 1: /admin/riwayat-billing (YANG DIPAKAI FRONTEND)
- Handler:
GetRiwayatBillingHandler - Service:
GetAllRiwayatpasien() - Return Type:
[]models.Request_Admin_Inacbg - Fields: ❌ Tanggal fields TIDAK ADA
Endpoint 2: /admin/riwayat-pasien-all (TIDAK DIPAKAI)
- Handler:
GetRiwayatPasienAllHandler - Service:
GetRiwayatPasienAll() - Return Type:
[]models.Riwayat_Pasien_all - Fields: ✅ Memiliki Tanggal_Masuk (*time.Time) dan Tanggal_Keluar (string)
- ISSUE: Di service GetRiwayatPasienAll(), baris 210 ada bug:
Tanggal_Masuk: b.Tanggal_masuk, // ❌ Assign pointer langsung, harusnya .Format("2006-01-02")
🗂️ FILE STRUCTURE
Backend Services
File: riwayat_billing_pasien.go
- Line 10:
func GetRiwayatPasienAll()→ returns[]Riwayat_Pasien_all✅ Ada tanggal - Line 226:
func GetAllRiwayatpasien()→ returns[]Request_Admin_Inacbg❌ Tanpa tanggal
Models
File: models.go
-
Line 175:
type Riwayat_Pasien_all struct- Memiliki: Tanggal_Masuk (*time.Time), Tanggal_Keluar (string)
- STATUS: Fields exists tapi tidak di-populate di service
-
Line 314:
type Request_Admin_Inacbg struct- TIDAK memiliki field tanggal apapun
- STATUS: Ini yang dipakai GetAllRiwayatpasien()
Handlers
File: handlers/routes.go
- Line 56:
GET /admin/riwayat-billing→ callsGetAllRiwayatpasien() - Line 58:
GET /admin/riwayat-pasien-all→ callsGetRiwayatPasienAll()
Frontend
File: riwayat-billing-pasien.tsx
- Line 5: imports
getRiwayatBilling() - Line 87: calls
getRiwayatBilling()
File: lib/api-helper.ts
- Line 252:
getRiwayatBilling()→ calls/admin/riwayat-billing
🎯 ROOT CAUSE
Frontend dipaksa menggunakan API /admin/riwayat-billing yang:
- Memanggil
GetAllRiwayatpasien() - Mengembalikan struct
Request_Admin_Inacbgyang tidak punya field tanggal - Menyebabkan frontend tidak bisa filter berdasarkan tanggal
Ada 2 API endpoint dengan data berbeda:
/admin/riwayat-billing→ untuk INACBG Admin (tidak ada tanggal)/admin/riwayat-pasien-all→ untuk riwayat lengkap (ada tanggal tapi ada bug di service)
✅ DATABASE - FIELDS TERSEDIA
Table: billing_pasien
Tanggal_Masuk (TIMESTAMP) ✅ Ada di database
Tanggal_Keluar (TIMESTAMP) ✅ Ada di database
Struct: BillingPasien
Tanggal_masuk *time.Time ✅ Mapped dari Tanggal_Masuk
Tanggal_keluar *time.Time ✅ Mapped dari Tanggal_Keluar
📊 CHECKLIST STATUS
| Item | Status | Lokasi | Catatan |
|---|---|---|---|
| Database fields (tanggal) | ✅ Ada | billing_pasien table | Tersedia di DB |
| BillingPasien struct fields | ✅ Ada | models.go | Mapped dengan benar |
| Riwayat_Pasien_all struct | ✅ Ada | models.go L175 | Punya field tanggal |
| Request_Admin_Inacbg struct | ❌ Tidak | models.go L314 | Tidak punya field tanggal |
| GetRiwayatPasienAll service | ✅ Ada tapi BUG | services L10 | Line 210: bug assign pointer |
| GetAllRiwayatpasien service | ✅ Ada | services L226 | Tapi return struct tanpa tanggal |
/admin/riwayat-billing endpoint |
✅ Ada | handlers L56 | Pakai GetAllRiwayatpasien |
/admin/riwayat-pasien-all endpoint |
✅ Ada | handlers L58 | Tidak dipakai frontend |
| Frontend getRiwayatBilling() | ✅ Ada | api-helper.ts L252 | Call /admin/riwayat-billing |
| Frontend filter logic | ✅ Ada | riwayat-billing-pasien.tsx | Ready to work jika data ada |
| Frontend filter UI | ✅ Ada | riwayat-billing-pasien.tsx | Consolidated dropdown ✅ |
🤔 KESIMPULAN
Masalah Core:
Frontend menggunakan endpoint /admin/riwayat-billing yang return struct tanpa field tanggal.
Padahal ada endpoint alternatif /admin/riwayat-pasien-all yang punya field tanggal.
Opsi Solusi:
-
Update
Request_Admin_Inacbgstruct - tambahkan field tanggal- Perubahan minimal: models.go (add 2 fields)
- Update: GetAllRiwayatpasien() service untuk assign tanggal values
-
Switch frontend ke
/admin/riwayat-pasien-all- Update: api-helper.ts getRiwayatBilling()
- Fix bug di GetRiwayatPasienAll() service (line 210)
-
Tunggu user decision ⏳ (current state)