revisi back date dan dpjp login
This commit is contained in:
@@ -228,6 +228,7 @@ type BillingRequest struct {
|
||||
Ruangan string `json:"ruangan" binding:"required"`
|
||||
Kelas string `json:"kelas" binding:"required"`
|
||||
Tindakan_RS []string `json:"tindakan_rs" binding:"required"`
|
||||
Tanggal_Masuk string `json:"tanggal_masuk"` // ← Added: Tanggal masuk dari frontend (format: YYYY-MM-DD)
|
||||
Tanggal_Keluar string `json:"tanggal_keluar"`
|
||||
Billing_sign string `json:"billing_sign"`
|
||||
ICD9 []string `json:"icd9"`
|
||||
|
||||
@@ -314,6 +314,30 @@ func DataFromFE(input models.BillingRequest) (
|
||||
|
||||
now := time.Now()
|
||||
|
||||
// Parse Tanggal_Masuk - accept multiple formats
|
||||
var masukPtr *time.Time
|
||||
if input.Tanggal_Masuk != "" && input.Tanggal_Masuk != "null" {
|
||||
s := input.Tanggal_Masuk
|
||||
var parsed time.Time
|
||||
var err error
|
||||
layouts := []string{time.RFC3339, "2006-01-02 15:04:05", "2006-01-02"}
|
||||
for _, layout := range layouts {
|
||||
parsed, err = time.Parse(layout, s)
|
||||
if err == nil {
|
||||
t := parsed
|
||||
masukPtr = &t
|
||||
break
|
||||
}
|
||||
}
|
||||
if masukPtr == nil {
|
||||
tx.Rollback()
|
||||
return nil, nil, nil, nil, nil, fmt.Errorf("invalid tanggal_masuk format: %s", input.Tanggal_Masuk)
|
||||
}
|
||||
} else {
|
||||
// Jika tidak ada input, default ke hari ini
|
||||
masukPtr = &now
|
||||
}
|
||||
|
||||
// Parse Tanggal_Keluar (frontend sends string). Accept multiple formats.
|
||||
var keluarPtr *time.Time
|
||||
if input.Tanggal_Keluar != "" && input.Tanggal_Keluar != "null" {
|
||||
@@ -355,7 +379,7 @@ func DataFromFE(input models.BillingRequest) (
|
||||
billing = models.BillingPasien{
|
||||
ID_Pasien: pasien.ID_Pasien,
|
||||
Cara_Bayar: input.Cara_Bayar,
|
||||
Tanggal_masuk: &now,
|
||||
Tanggal_masuk: masukPtr,
|
||||
Tanggal_keluar: keluarPtr,
|
||||
Total_Tarif_RS: input.Total_Tarif_RS,
|
||||
Total_Klaim: input.Total_Klaim_BPJS, // ← Changed: Use input value instead of hardcoded 0
|
||||
|
||||
@@ -46,6 +46,7 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
|
||||
if err := db.Table("\"billing_tindakan\"").
|
||||
Where("\"ID_Billing\" IN ?", billingIDs).
|
||||
Select("\"ID_Billing\", \"ID_Tarif_RS\" as \"Kode\"").
|
||||
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
|
||||
Scan(&tindakanRows).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -54,7 +55,7 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
|
||||
tindakanMap[t.ID_Billing] = append(tindakanMap[t.ID_Billing], t.Kode)
|
||||
}
|
||||
|
||||
// Ambil tanggal tindakan dari tabel billing_tindakan
|
||||
// Ambil tanggal tindakan dari tabel billing_tindakan (ambil yang pertama aja per billing supaya konsisten)
|
||||
tindakanDateMap := make(map[int]*time.Time)
|
||||
var tindakanDateRows []struct {
|
||||
ID_Billing int
|
||||
@@ -64,12 +65,13 @@ func GetRiwayatPasienAll(db *gorm.DB) ([]models.Riwayat_Pasien_all, error) {
|
||||
if err := db.Table("\"billing_tindakan\"").
|
||||
Where("\"ID_Billing\" IN ?", billingIDs).
|
||||
Select("\"ID_Billing\", \"tanggal_tindakan\"").
|
||||
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
|
||||
Scan(&tindakanDateRows).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, t := range tindakanDateRows {
|
||||
if t.Tanggal_Tindakan != nil {
|
||||
if t.Tanggal_Tindakan != nil && tindakanDateMap[t.ID_Billing] == nil {
|
||||
tindakanDateMap[t.ID_Billing] = t.Tanggal_Tindakan
|
||||
}
|
||||
}
|
||||
@@ -262,6 +264,7 @@ func GetAllRiwayatpasien(db *gorm.DB) ([]models.Request_Admin_Inacbg, error) {
|
||||
if err := db.Table("\"billing_tindakan\"").
|
||||
Where("\"ID_Billing\" IN ?", billingIDs).
|
||||
Select("\"ID_Billing\", \"ID_Tarif_RS\" as \"Kode\"").
|
||||
Order("\"ID_Billing\" ASC, \"tanggal_tindakan\" ASC").
|
||||
Scan(&tindakanRows).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user