Files
2026-02-06 14:22:35 +07:00

353 lines
10 KiB
Go

package models
import "time"
// Tarif Models - Data struktur buat tarif dari berbagai sumber
type TarifBPJSRawatInap struct {
KodeINA string `gorm:"column:ID_INACBG_RI"`
Deskripsi string `gorm:"column:Tindakan_RI"`
Kelas1 float64 `gorm:"column:Tarif_Kelas_1"`
Kelas2 float64 `gorm:"column:Tarif_Kelas_2"`
Kelas3 float64 `gorm:"column:Tarif_Kelas_3"`
}
type TarifBPJSRawatJalan struct {
KodeINA string `gorm:"column:ID_INACBG_RJ"`
Deskripsi string `gorm:"column:Tindakan_RJ"`
TarifINACBG float64 `gorm:"column:Tarif_RJ" json:"tarif_inacbg"`
}
type TarifRS struct {
KodeRS string `gorm:"column:ID_Tarif_RS"`
Deskripsi string `gorm:"column:Tindakan_RS"`
Harga int `gorm:"column:Tarif_RS"`
Kategori string `gorm:"column:Kategori_RS"`
}
func (TarifBPJSRawatJalan) TableName() string {
return "ina_cbg_rawatjalan"
}
func (TarifBPJSRawatInap) TableName() string {
return "ina_cbg_rawatinap"
}
func (TarifRS) TableName() string {
return "tarif_rs"
}
// billing_inacbg_RI
type Billing_INACBG_RI struct {
ID_Billing int `gorm:"column:ID_Billing"`
Kode_INACBG string `gorm:"column:ID_INACBG_RI"`
}
func (Billing_INACBG_RI) TableName() string {
return "billing_inacbg_ri"
}
// billing_inacbg_RJ
type Billing_INACBG_RJ struct {
ID_Billing int `gorm:"column:ID_Billing"`
Kode_INACBG string `gorm:"column:ID_INACBG_RJ"`
}
func (Billing_INACBG_RJ) TableName() string {
return "billing_inacbg_rj"
}
type Billing_DPJP struct {
ID_Billing int `gorm:"column:ID_Billing;primaryKey"`
ID_DPJP int `gorm:"column:ID_DPJP;primaryKey"`
}
func (Billing_DPJP) TableName() string {
return "billing_dpjp"
}
// ICD9
type ICD9 struct {
Kode_ICD9 string `gorm:"column:ID_ICD9"`
Prosedur string `gorm:"column:Prosedur"`
Versi string `gorm:"column:Versi_ICD9"`
}
func (ICD9) TableName() string {
return "icd9"
}
// ICD10
type ICD10 struct {
Kode_ICD10 string `gorm:"column:ID_ICD10"`
Diagnosa string `gorm:"column:Diagnosa"`
Versi string `gorm:"column:Versi_ICD10"`
}
func (ICD10) TableName() string {
return "icd10"
}
// ruangan
type Ruangan struct {
ID_Ruangan string `gorm:"column:ID_Ruangan"`
Jenis_Ruangan string `gorm:"column:Jenis_Ruangan"`
Nama_Ruangan string `gorm:"column:Nama_Ruangan"`
Keterangan string `gorm:"column:keterangan"`
Kategori_ruangan string `gorm:"column:kategori_ruangan"`
}
func (Ruangan) TableName() string {
return "ruangan"
}
// dokter
type Dokter struct {
ID_Dokter int `gorm:"column:ID_Dokter;primaryKey"`
Nama_Dokter string `gorm:"column:Nama_Dokter"`
Password string `gorm:"column:Password"`
Status string `gorm:"column:Status"`
KSM string `gorm:"column:KSM"`
Email_UB string `gorm:"column:Email_UB"`
Email_Pribadi string `gorm:"column:Email_Pribadi"`
}
func (Dokter) TableName() string {
return "dokter"
}
// PASIEN
type Pasien struct {
ID_Pasien int `gorm:"column:ID_Pasien;primaryKey;autoIncrement"`
Nama_Pasien string `gorm:"column:Nama_Pasien"`
Jenis_Kelamin string `gorm:"column:Jenis_Kelamin"`
Usia int `gorm:"column:Usia"`
Ruangan string `gorm:"column:Ruangan"`
Kelas string `gorm:"column:Kelas"`
}
type Kelas string
const (
Kelas_1 Kelas = "1"
Kelas_2 Kelas = "2"
Kelas_3 Kelas = "3"
)
type Jenis_kelamin string
const (
Jenis_Kelamin_Laki_laki Jenis_kelamin = "Laki-laki"
Jenis_Kelamin_Perempuan Jenis_kelamin = "Perempuan"
)
func (Pasien) TableName() string {
return "pasien"
}
// login dokter
type LoginRequest struct {
Email string `json:"email" binding:"required,email"`
Password string `json:"password" binding:"required"`
}
//edit inacbg admin
type Edit_INACBG_Request struct {
ID_Billing int `json:"id_billing"`
Tipe_inacbg string `json:"tipe_inacbg"`
Kode_inacbg []string `json:"kode_inacbg"`
Kode_Delete []string `json:"kode_delete"`
Total_Klaim float64 `json:"total_klaim"`
Billing_Sign string `json:"billing_sign"`
}
//close billing
type Close_billing struct {
ID_Billing int `json:"id_billing"`
Tanggal_Keluar string `json:"tanggal_keluar"`
}
//riwayat billing pasien
type Riwayat_Pasien_all struct {
ID_Billing int `json:"id_billing"`
ID_Pasien int `json:"id_pasien"`
Nama_Pasien string `json:"nama_pasien"`
Jenis_Kelamin string `json:"jenis_kelamin"`
Usia int `json:"usia"`
Ruangan string `json:"ruangan"`
Nama_Ruangan string `json:"nama_ruangan"` // ← Added: Ruangan name for display
Kelas string `json:"kelas"`
ID_DPJP int `json:"id_dpjp"` // ← Added: Doctor in charge
Nama_DPJP string `json:"nama_dpjp"`
Tanggal_Keluar string `json:"tanggal_keluar"`
Tanggal_Masuk string `json:"tanggal_masuk"` // Tanggal_Masuk *time.Time `json:"tanggal_masuk"`
Tanggal_Tindakan *time.Time `json:"tanggal_tindakan"`
Tindakan_RS []string `json:"tindakan_rs"`
ICD9 []string `json:"icd9"`
ICD10 []string `json:"icd10"`
Kode_INACBG string `json:"kode_inacbg"`
Total_Tarif_RS float64 `json:"total_tarif_rs"` // ← Added: Hospital tariff
Total_Klaim float64 `json:"total_klaim"` // ← Added: BPJS claim
}
//billing pasien
type BillingPasien struct {
ID_Billing int `gorm:"column:ID_Billing;primaryKey;autoIncrement" json:"id_billing"`
ID_Pasien int `gorm:"column:ID_Pasien" json:"id_pasien"`
Cara_Bayar string `gorm:"column:Cara_Bayar" json:"cara_bayar"`
Tanggal_masuk *time.Time `gorm:"column:Tanggal_Masuk" json:"tanggal_masuk"`
Tanggal_keluar *time.Time `gorm:"column:Tanggal_Keluar" json:"tanggal_keluar"`
Total_Tarif_RS float64 `gorm:"column:Total_Tarif_RS" json:"total_tarif_rs"`
Total_Klaim float64 `gorm:"column:Total_Klaim" json:"total_klaim"`
Billing_sign string `gorm:"column:Billing_Sign" json:"billing_sign"`
}
type Cara_bayar string
const (
Cara_Bayar_BPJS Cara_bayar = "BPJS"
Cara_Bayar_UMUM Cara_bayar = "UMUM"
)
func (BillingPasien) TableName() string {
return "billing_pasien"
}
// BillingRequest untuk menerima data dari frontend
type BillingRequest struct {
Nama_Dokter []string `json:"nama_dokter" binding:"required"` // Array untuk multiple doctors
Nama_Pasien string `json:"nama_pasien" binding:"required"`
Jenis_Kelamin string `json:"jenis_kelamin" binding:"required"`
Usia int `json:"usia" binding:"required"`
ID_DPJP int `json:"id_dpjp"`
Ruangan string `json:"ruangan" binding:"required"`
Kelas string `json:"kelas" binding:"required"`
Tindakan_RS []string `json:"tindakan_rs" binding:"required"`
Tanggal_Keluar string `json:"tanggal_keluar"`
Billing_sign string `json:"billing_sign"`
ICD9 []string `json:"icd9"`
ICD10 []string `json:"icd10" binding:"required"`
Cara_Bayar string `json:"cara_bayar" binding:"required"`
Total_Tarif_RS float64 `json:"total_tarif_rs"`
Total_Klaim_BPJS float64 `json:"total_klaim_bpjs"` // ← Added: Baseline BPJS claim from FE
}
// admin ruangan //Admin_Ruangan
type Admin_Ruangan struct {
ID_Admin int `gorm:"column:ID_Admin"`
Nama_Admin string `gorm:"column:Nama_Admin"`
Password string `gorm:"column:Password"`
ID_Ruangan string `gorm:"column:ID_Ruangan"`
}
func (Admin_Ruangan) TableName() string {
return "admin_ruangan"
}
// billing_Tidakan
type Billing_Tindakan struct {
ID_Billing int `gorm:"column:ID_Billing;primaryKey;not null"`
ID_Tarif_RS string `gorm:"column:ID_Tarif_RS;primaryKey;not null"`
Tanggal_Tindakan *time.Time `gorm:"column:tanggal_tindakan"`
}
func (Billing_Tindakan) TableName() string {
return "billing_tindakan"
}
// billing_ICD9 dan ICD10
type Billing_ICD9 struct {
ID_Billing int `gorm:"column:ID_Billing;primaryKey;not null"`
ID_ICD9 string `gorm:"column:ID_ICD9;primaryKey;not null"`
}
type Billing_ICD10 struct {
ID_Billing int `gorm:"column:ID_Billing;primaryKey;not null"`
ID_ICD10 string `gorm:"column:ID_ICD10;primaryKey;not null"`
}
func (Billing_ICD9) TableName() string {
return "billing_icd9"
}
func (Billing_ICD10) TableName() string {
return "billing_icd10"
}
// billing_Dokter - relasi many-to-many antara billing dan dokter dengan tracking tanggal
type Billing_Dokter struct {
ID_Billing int `gorm:"column:ID_Billing"`
ID_Dokter int `gorm:"column:ID_Dokter"`
Tanggal *time.Time `gorm:"column:tanggal"` // Tanggal kapan dokter menangani pasien
}
func (Billing_Dokter) TableName() string {
return "billing_dokter"
}
// riwayat pasien
type Riwayat_Pasien struct {
ID_Billing int `json:"id_billing"`
Nama_pasien string `json:"nama_pasien"`
ID_Pasien int `json:"id_pasien"`
Kelas string `json:"Kelas"`
Ruangan string `json:"ruangan"`
Total_Tarif_RS float64 `json:"total_tarif_rs"`
Total_Klaim float64 `json:"total_klaim"`
Tindakan_RS []string `json:"tindakan_rs"`
ICD9 []string `json:"icd9"`
ICD10 []string `json:"icd10"`
INACBG_RI []string `json:"inacbg_ri"`
INACBG_RJ []string `json:"inacbg_rj"`
Billing_sign string `json:"billing_sign"`
Nama_Dokter []string `json:"nama_dokter"`
}
// Request untuk tampilan data Admin ( pengisian inacbg)
type Request_Admin_Inacbg struct {
ID_Billing int `json:"id_billing"`
Nama_pasien string `json:"nama_pasien"`
ID_Pasien int `json:"id_pasien"`
Kelas string `json:"Kelas"`
Ruangan string `json:"ruangan"`
Total_Tarif_RS float64 `json:"total_tarif_rs"`
Total_Klaim float64 `json:"total_klaim"`
ID_DPJP int `json:"id_dpjp"`
Tindakan_RS []string `json:"tindakan_rs"`
ICD9 []string `json:"icd9"`
ICD10 []string `json:"icd10"`
INACBG_RI []string `json:"inacbg_ri"`
INACBG_RJ []string `json:"inacbg_rj"`
Billing_sign string `json:"billing_sign"`
Nama_Dokter []string `json:"nama_dokter"`
}
// post ke data base
type Post_INACBG_Admin struct {
ID_Billing int `json:"id_billing"`
Tipe_inacbg string `json:"tipe_inacbg"`
Kode_INACBG []string `json:"kode_inacbg"`
Total_klaim float64 `json:"total_klaim"`
Billing_sign string `json:"billing_sign"`
Tanggal_keluar string `json:"tanggal_keluar"` // Diisi oleh admin billing
}
// login dokter
type loginRequest struct {
Email string `json:"email" binding:"required,email"`
Password string `json:"password" binding:"required"`
}
func (loginRequest) TableName() string {
return "dokter"
}
// getpasienwithallicd9andicd10,andtindakanrs