adj sync request switch poly

This commit is contained in:
vanilia
2025-11-26 18:51:14 +07:00
17 changed files with 278 additions and 139 deletions

No files matched your search

@@ -278,6 +278,8 @@ func CheckOut(input e.Encounter) (*d.Data, error) {
return err
}
// TODO: Update TPemeriksaanHistory end_konsul if internal reference exist
return nil
})
@@ -367,6 +369,8 @@ func RequestSwitchUnit(input e.Encounter) (*d.Data, error) {
return err
}
// Step 4: BulkInsert To Link
return nil
})
@@ -381,7 +385,7 @@ func RequestSwitchUnit(input e.Encounter) (*d.Data, error) {
}, nil
}
func ApproveSwitchUnit(input e.Encounter) (*d.Data, error) {
func ApproveSwitchUnit(input e.ApproveUnitDto) (*d.Data, error) {
event := pl.Event{
Feature: "RequestSwitchUnit",
Source: source,
@@ -404,12 +408,7 @@ func ApproveSwitchUnit(input e.Encounter) (*d.Data, error) {
tx := db.NewTx()
err = tx.Simgos.Transaction(func(tx *gorm.DB) error {
// Step 2: Update TPendaftaran
if err = UpdateTPendaftaranData(input, tpendaftaran, "update-status", &event, tx); err != nil {
return err
}
// Step 3: Insert TPemeriksaanHist
// Step 3: Update TPemeriksaanHist
if _, err := CreateBulkTPemeriksaanHistData(input, tpendaftaran, &event, tx); err != nil {
return err
}
@@ -122,7 +122,32 @@ func setDataUpdateStatus(input e.Encounter, data *etp.TPendaftaran) {
if input.Status_Code == erc.DSCCancel {
data.Status = 11
return
}
setStatus(input.Discharge_Method_Code, data)
//if *input.Discharge_Method_Code == ere.DMCConsulPoly ||
// *input.Discharge_Method_Code == ere.DMCConsulExecutive {
//
// if u := input.Unit; u != nil {
// data.PoliNameHfis = &u.Name
// }
//
// if d := input.Responsible_Doctor; d != nil {
// if d.Specialist_Code != nil {
// data.SpesialisIdHfis = d.Specialist_Code
// }
//
// if emp := d.Employee; emp != nil {
// if p := emp.Person; p != nil {
// data.DokterNameHfis = &p.Name
// }
// }
// }
//
// data.DokterIdHfis = nil
//}
}
func setDataCheckIn(input e.Encounter, data *etp.TPendaftaran) {
@@ -153,7 +178,6 @@ func setDataCheckOut(input e.Encounter, data *etp.TPendaftaran) {
setStatus(input.Discharge_Method_Code, data)
if data.Status == 8 || data.Status == 3 {
if dc := input.DeathCause; dc != nil {
var dcSrc []DeathCauseSrc
_ = json.Unmarshal([]byte(*dc.Value), &dcSrc)
@@ -190,15 +214,17 @@ func setDataRequestSwitchUnit(input e.Encounter, data *etp.TPendaftaran) (hist [
hist = append(hist, etph.TPemeriksaanHist{
Idxdaftar: &data.Idxdaftar,
Kdpoly: stringtouint(*ref.Unit_Code),
DokterPengonsul: stringtouint(*input.Responsible_Doctor_Code),
DokterPengonsul: stringtouint(*ref.SrcDoctor_Code),
DokterPenerima: stringtouint(*ref.Doctor_Code),
StartKonsul: &now,
})
// set user konsul
if emp := input.Adm_Employee; emp != nil {
if u := emp.User; u != nil {
hist[i].UserKonsul = &u.Name
if n := input.Responsible_Nurse; n != nil {
if emp := n.Employee; emp != nil {
if u := emp.User; u != nil {
hist[i].UserKonsul = &u.Name
}
}
}
@@ -256,24 +282,12 @@ func setStatus(code *ere.DischargeMethodCode, data *etp.TPendaftaran) {
data.Status = 7
case ere.DMCConsulPoly:
data.Status = 5
data.PoliNameHfis = nil
data.SpesialisIdHfis = nil
data.DokterNameHfis = nil
data.DokterIdHfis = nil
case ere.DMCExtRef:
data.Status = 6
case ere.DMCConsulChDay:
data.Status = 12
data.PoliNameHfis = nil
data.SpesialisIdHfis = nil
data.DokterNameHfis = nil
data.DokterIdHfis = nil
case ere.DMCEmergency:
data.Status = 10
data.PoliNameHfis = nil
data.SpesialisIdHfis = nil
data.DokterNameHfis = nil
data.DokterIdHfis = nil
case ere.DMCEmergencyCovid:
data.Status = 13
case ere.DMCConsulExecutive:
@@ -218,3 +218,46 @@ func CreateBulkTPemeriksaanHistData(input e.Encounter, data *etp.TPendaftaran, e
pl.SetLogInfo(event, nil, "complete")
return hist, nil
}
func CreateLinkData(simxId, simgosId uint, event *pl.Event, dbx ...*gorm.DB) (*esync.EncounterLink, error) {
pl.SetLogInfo(event, nil, "started", "DBCreate")
data := setDataSimxLink(simxId, simgosId)
var tx *gorm.DB
if len(dbx) > 0 {
tx = dbx[0]
} else {
tx = dg.I
}
if err := tx.Create(&data).Error; err != nil {
return nil, plh.HandleCreateError(data, event, err)
}
pl.SetLogInfo(event, nil, "complete")
return &data, nil
}
func UpdateTPemeriksaanHistData(input e.ApproveUnitDto, data *etph.TPemeriksaanHist, event *pl.Event, dbx ...*gorm.DB) error {
pl.SetLogInfo(event, input, "started", "DBUpdateTPemeriksaanHist")
var tx *gorm.DB
if len(dbx) > 0 {
tx = dbx[0]
} else {
tx = dg.IS["simrs"]
}
if err := tx.Save(&data).Error; err != nil {
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-update-fail",
Detail: "Database update failed",
Raw: err,
}
return pl.SetLogError(event, input)
}
pl.SetLogInfo(event, nil, "complete")
return nil
}