Files
careit-fixed/MarkdownSourceFile/CHECK_RESULTS.md
2026-02-06 14:22:35 +07:00

5.1 KiB

🔍 HASIL CECK LENGKAP - Filter Tanggal Issue

📋 RINGKASAN MASALAH

Frontend filter untuk tanggal tidak bekerja karena:

  • Frontend mengharapkan field: tanggal_masuk atau tanggal_keluar
  • Backend API /admin/riwayat-billing mengembalikan response dari struct Request_Admin_Inacbg
  • Struct Request_Admin_Inacbg TIDAK 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 → calls GetAllRiwayatpasien()
  • Line 58: GET /admin/riwayat-pasien-all → calls GetRiwayatPasienAll()

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:

  1. Memanggil GetAllRiwayatpasien()
  2. Mengembalikan struct Request_Admin_Inacbg yang tidak punya field tanggal
  3. 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:

  1. Update Request_Admin_Inacbg struct - tambahkan field tanggal

    • Perubahan minimal: models.go (add 2 fields)
    • Update: GetAllRiwayatpasien() service untuk assign tanggal values
  2. Switch frontend ke /admin/riwayat-pasien-all

    • Update: api-helper.ts getRiwayatBilling()
    • Fix bug di GetRiwayatPasienAll() service (line 210)
  3. Tunggu user decision (current state)