4.4 KiB
Panduan Integrasi Frontend dengan Backend
Dokumen ini menjelaskan bagaimana frontend Next.js terintegrasi dengan backend Go.
Konfigurasi
Backend URL
Backend berjalan di http://localhost:8081 secara default. Untuk mengubah URL backend:
- Buat file
.env.localdi folderFrontend_CareIt/(jika belum ada) - Tambahkan:
Atau ganti dengan IP address backend Anda jika berbeda.
NEXT_PUBLIC_API_URL=http://localhost:8081
CORS
Backend sudah dikonfigurasi dengan CORS default yang mengizinkan semua origin. Untuk production, sebaiknya dikonfigurasi lebih spesifik.
API Functions
Semua fungsi API tersedia di src/lib/api.ts. Fungsi-fungsi utama:
Authentication
loginDokter(credentials)- Login dokter dengan email dan password
Data Master
getDokter()- Ambil daftar doktergetRuangan()- Ambil daftar ruangangetICD9()- Ambil daftar ICD9getICD10()- Ambil daftar ICD10getTarifRumahSakit(params)- Ambil tarif rumah sakitgetTarifBPJSRawatInap()- Ambil tarif BPJS rawat inapgetTarifBPJSRawatJalan()- Ambil tarif BPJS rawat jalan
Pasien
getPasienById(id)- Ambil data pasien by IDsearchPasien(nama)- Cari pasien by nama
Billing
createBilling(data)- Buat billing barugetBillingAktifByNama(namaPasien)- Ambil billing aktif by nama pasiengetAllBilling()- Ambil semua billing (untuk admin)
Admin
postINACBGAdmin(data)- Post INACBG dari admin
Komponen yang Sudah Terintegrasi
1. Login (login.tsx)
- Menggunakan API
loginDokteruntuk autentikasi - Menyimpan token dan data dokter di localStorage
- Menampilkan error jika login gagal
2. Billing Pasien (billing-pasien.tsx)
- Fetch data dropdown (dokter, ruangan, ICD9, ICD10, tarif RS) dari backend
- Search pasien menggunakan API
- Create billing dengan API
createBilling - Auto-calculate total tarif RS berdasarkan tindakan yang dipilih
3. Riwayat Billing Pasien (riwayat-billing-pasien.tsx)
- Fetch semua billing dari API
getAllBilling - Search/filter billing berdasarkan nama atau ID
- Menampilkan status billing dengan color coding
Cara Menggunakan
1. Menjalankan Backend
cd Backend_CareIt
go run main.go
Backend akan berjalan di http://localhost:8081
2. Menjalankan Frontend
cd Frontend_CareIt
npm run dev
Frontend akan berjalan di http://localhost:3000
3. Testing
- Buka browser ke
http://localhost:3000 - Login menggunakan email dan password dokter yang ada di database
- Test fitur billing pasien
- Test dashboard admin untuk melihat riwayat billing
Troubleshooting
Error: "Tidak dapat terhubung ke server"
- Pastikan backend server berjalan di port 8081
- Cek apakah URL di
.env.localsudah benar - Cek firewall atau network settings
Error: "CORS error"
- Backend sudah dikonfigurasi dengan CORS default
- Jika masih error, pastikan backend menggunakan
cors.Default()atau konfigurasi CORS yang sesuai
Error: "Data tidak ditemukan"
- Pastikan database sudah terisi dengan data
- Cek endpoint API di backend apakah sudah benar
Catatan Penting
-
Token Management: Token login disimpan di localStorage. Untuk production, pertimbangkan menggunakan httpOnly cookies atau session management yang lebih aman.
-
Error Handling: Semua API calls sudah memiliki error handling. Error akan ditampilkan di UI.
-
Loading States: Komponen yang fetch data akan menampilkan loading state saat mengambil data.
-
Data Validation: Form validation dilakukan di frontend sebelum submit ke backend.
Endpoint Backend yang Tersedia
GET /- Health checkGET /dokter- List dokterGET /ruangan- List ruanganGET /icd9- List ICD9GET /icd10- List ICD10GET /tarifRS- List tarif rumah sakitGET /tarifBPJSRawatInap- List tarif BPJS rawat inapGET /tarifBPJSRawatJalan- List tarif BPJS rawat jalanGET /pasien/:id- Get pasien by IDGET /pasien/search?nama=...- Search pasienPOST /login- Login dokterPOST /billing- Create billingGET /billing/aktif?nama_pasien=...- Get billing aktifGET /admin/billing- Get all billing (admin)POST /admin/inacbg- Post INACBG (admin)
Next Steps
- Update komponen tarif-bpjs untuk menggunakan API real
- Implementasi authentication middleware untuk protected routes
- Add refresh token mechanism
- Improve error handling dan user feedback
- Add loading skeletons untuk better UX