update entity encounter and apply sync from old source
This commit is contained in:
@@ -94,7 +94,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
input.NewStatus, err = identifyPatientStatus(input)
|
||||
input.Adm_Employee_Id = input.AuthInfo.Employee_Id
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
// create encounter
|
||||
@@ -158,7 +158,6 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func ReadList(input e.ReadListDto) (*d.Data, error) {
|
||||
var data *e.Encounter
|
||||
var dataList []e.Encounter
|
||||
var metaList *e.MetaDto
|
||||
var err error
|
||||
@@ -172,23 +171,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "readList")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPreMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if dataList, metaList, err = ReadListData(input, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPostMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
@@ -223,23 +208,9 @@ func ReadDetail(input e.ReadDetailDto) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "readDetail")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPreMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if data, err = ReadDetailData(input, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPostMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
@@ -277,7 +248,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
|
||||
}
|
||||
input.Adm_Employee_Id = input.AuthInfo.Employee_Id
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -352,7 +323,7 @@ func Delete(input e.DeleteDto) (*d.Data, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -436,7 +407,7 @@ func CheckOut(input e.DischargeDto) (*d.Data, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -561,7 +532,7 @@ func UpdateStatusCode(input e.UpdateStatusDto) (*d.Data, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -664,7 +635,7 @@ func CheckIn(input e.CheckinDto) (*d.Data, error) {
|
||||
input.StartedAt = &now
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -767,7 +738,7 @@ func RequestSwitchUnit(input e.SwitchUnitDto) (*d.Data, error) {
|
||||
}
|
||||
input.Src_Nurse_Code = input.AuthInfo.Nurse_Code
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -861,7 +832,7 @@ func ApproveSwitchUnit(input e.ApproveCancelUnitDto) (*d.Data, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -976,7 +947,7 @@ func CancelSwitchUnit(input e.ApproveCancelUnitDto) (*d.Data, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
|
||||
@@ -65,44 +65,71 @@ import (
|
||||
us "simrs-vx/internal/use-case/main-use-case/soapi"
|
||||
)
|
||||
|
||||
func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
|
||||
var inputSrc *e.CreateDto
|
||||
if inputT, ok := any(input).(*e.CreateDto); ok {
|
||||
inputSrc = inputT
|
||||
data.Status_Code = erc.DSCNew
|
||||
} else {
|
||||
inputTemp := any(input).(*e.UpdateDto)
|
||||
inputSrc = &inputTemp.CreateDto
|
||||
}
|
||||
|
||||
data.Patient_Id = inputSrc.Patient_Id
|
||||
data.RegisteredAt = inputSrc.RegisteredAt
|
||||
data.Class_Code = inputSrc.Class_Code
|
||||
data.Unit_Code = inputSrc.Unit_Code
|
||||
data.Specialist_Code = inputSrc.Specialist_Code
|
||||
data.Subspecialist_Code = inputSrc.Subspecialist_Code
|
||||
data.VisitDate = inputSrc.VisitDate
|
||||
data.PaymentMethod_Code = inputSrc.PaymentMethod_Code
|
||||
data.InsuranceCompany_Code = inputSrc.InsuranceCompany_Code
|
||||
data.Member_Number = inputSrc.Member_Number
|
||||
data.Ref_Number = inputSrc.Ref_Number
|
||||
data.Trx_Number = inputSrc.Trx_Number
|
||||
data.Appointment_Doctor_Code = inputSrc.Appointment_Doctor_Code
|
||||
data.Adm_Employee_Id = inputSrc.Adm_Employee_Id
|
||||
data.Responsible_Doctor_Code = inputSrc.Responsible_Doctor_Code
|
||||
data.RefSource_Name = inputSrc.RefSource_Name
|
||||
data.Appointment_Id = inputSrc.Appointment_Id
|
||||
data.RefType_Code = &inputSrc.RefTypeCode
|
||||
data.NewStatus = inputSrc.NewStatus
|
||||
func setDataCreate(input *e.CreateDto, data *e.Encounter) {
|
||||
data.Patient_Id = input.Patient_Id
|
||||
data.RegisteredAt = input.RegisteredAt
|
||||
data.Class_Code = input.Class_Code
|
||||
data.Unit_Code = input.Unit_Code
|
||||
data.Specialist_Code = input.Specialist_Code
|
||||
data.Subspecialist_Code = input.Subspecialist_Code
|
||||
data.VisitDate = input.VisitDate
|
||||
data.PaymentMethod_Code = input.PaymentMethod_Code
|
||||
data.InsuranceCompany_Code = input.InsuranceCompany_Code
|
||||
data.Member_Number = input.Member_Number
|
||||
data.RefType_Code = &input.RefTypeCode
|
||||
data.Ref_Number = input.Ref_Number
|
||||
data.Trx_Number = input.Trx_Number
|
||||
data.Appointment_Doctor_Code = input.Appointment_Doctor_Code
|
||||
data.Adm_Employee_Id = input.Adm_Employee_Id
|
||||
data.RefSource_Name = input.RefSource_Name
|
||||
data.Appointment_Id = input.Appointment_Id
|
||||
data.Status_Code = erc.DSCNew
|
||||
data.NewStatus = input.NewStatus
|
||||
}
|
||||
|
||||
func setDataUpdate(src e.UpdateDto, dst *e.Encounter) {
|
||||
dst.Appointment_Doctor_Code = src.Appointment_Doctor_Code
|
||||
dst.Responsible_Doctor_Code = src.Responsible_Doctor_Code
|
||||
dst.Unit_Code = src.Unit_Code
|
||||
dst.Specialist_Code = src.Specialist_Code
|
||||
dst.Subspecialist_Code = src.Subspecialist_Code
|
||||
dst.VisitDate = src.VisitDate
|
||||
dst.Appointment_Doctor_Code = src.Appointment_Doctor_Code
|
||||
dst.Adm_Employee_Id = src.Adm_Employee_Id
|
||||
dst.Appointment_Id = src.Appointment_Id
|
||||
dst.RefSource_Name = src.RefSource_Name
|
||||
dst.Trx_Number = src.Trx_Number
|
||||
dst.Ref_Number = src.Ref_Number
|
||||
dst.Member_Number = src.Member_Number
|
||||
}
|
||||
|
||||
func setDataUpdateFromSource(input *e.UpdateDto, data *e.Encounter) {
|
||||
data.Patient_Id = input.Patient_Id
|
||||
data.RegisteredAt = input.RegisteredAt
|
||||
data.Unit_Code = input.Unit_Code
|
||||
data.Specialist_Code = input.Specialist_Code
|
||||
data.Subspecialist_Code = input.Subspecialist_Code
|
||||
data.VisitDate = input.VisitDate
|
||||
data.StartedAt = input.StartedAt
|
||||
data.FinishedAt = input.FinishedAt
|
||||
data.PaymentMethod_Code = input.PaymentMethod_Code
|
||||
data.InsuranceCompany_Code = input.InsuranceCompany_Code
|
||||
data.Member_Number = input.Member_Number
|
||||
data.RefType_Code = &input.RefTypeCode
|
||||
data.Ref_Number = input.Ref_Number
|
||||
data.Trx_Number = input.Trx_Number
|
||||
data.Appointment_Doctor_Code = input.Appointment_Doctor_Code
|
||||
data.Adm_Employee_Id = input.Adm_Employee_Id
|
||||
data.Responsible_Doctor_Code = input.Responsible_Doctor_Code
|
||||
data.Discharge_Method_Code = input.Discharge_Method_Code
|
||||
data.RefSource_Name = input.RefSource_Name
|
||||
data.Appointment_Id = input.Appointment_Id
|
||||
data.EarlyEducation = input.EarlyEducation
|
||||
data.MedicalDischargeEducation = input.MedicalDischargeEducation
|
||||
data.AdmDischargeEducation = input.AdmDischargeEducation
|
||||
data.DischargeReason = input.DischargeReason
|
||||
data.Status_Code = input.Status_Code
|
||||
data.Discharge_Date = input.Discharge_Date
|
||||
data.NewStatus = input.NewStatus
|
||||
data.Responsible_Nurse_Code = input.Responsible_Nurse_Code
|
||||
}
|
||||
|
||||
func setDataDischarge(src e.DischargeDto, dst *e.Encounter) {
|
||||
|
||||
@@ -25,7 +25,7 @@ func CreateData(input e.CreateDto, event *pl.Event, dbx ...*gorm.DB) (*e.Encount
|
||||
pl.SetLogInfo(event, nil, "started", "DBCreate")
|
||||
|
||||
data := e.Encounter{}
|
||||
setData(&input, &data)
|
||||
setDataCreate(&input, &data)
|
||||
|
||||
var tx *gorm.DB
|
||||
if len(dbx) > 0 {
|
||||
@@ -109,7 +109,12 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
|
||||
func UpdateData(input e.UpdateDto, data *e.Encounter, event *pl.Event, dbx ...*gorm.DB) error {
|
||||
pl.SetLogInfo(event, data, "started", "DBUpdate")
|
||||
setDataUpdate(input, data)
|
||||
|
||||
if input.Sync {
|
||||
setDataUpdateFromSource(&input, data)
|
||||
} else {
|
||||
setDataUpdate(input, data)
|
||||
}
|
||||
|
||||
var tx *gorm.DB
|
||||
if len(dbx) > 0 {
|
||||
|
||||
@@ -20,10 +20,15 @@ type middlewareRunner struct {
|
||||
}
|
||||
|
||||
// NewMiddlewareExecutor creates a new middleware executor
|
||||
func newMiddlewareRunner(event *pl.Event) *middlewareRunner {
|
||||
func newMiddlewareRunner(event *pl.Event, syncFromOldSource bool) *middlewareRunner {
|
||||
activateSync := sync.O.Enable
|
||||
if syncFromOldSource {
|
||||
activateSync = false
|
||||
}
|
||||
|
||||
return &middlewareRunner{
|
||||
Event: event,
|
||||
SyncOn: sync.O.Enable,
|
||||
SyncOn: activateSync,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "create")
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
// check if user has employee position
|
||||
if !input.AuthInfo.HasEmployeePosition() {
|
||||
@@ -143,7 +143,6 @@ func Create(input e.CreateDto) (*d.Data, error) {
|
||||
}
|
||||
|
||||
func ReadList(input e.ReadListDto) (*d.Data, error) {
|
||||
var data *e.Patient
|
||||
var dataList []e.Patient
|
||||
var metaList *e.MetaDto
|
||||
var err error
|
||||
@@ -157,23 +156,9 @@ func ReadList(input e.ReadListDto) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "readList")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPreMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if dataList, metaList, err = ReadListData(input, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadListMiddleware(readListPostMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
@@ -208,23 +193,9 @@ func ReadDetail(input e.ReadDetailDto) (*d.Data, error) {
|
||||
pl.SetLogInfo(&event, input, "started", "readDetail")
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner.setMwType(pu.MWTPre)
|
||||
// Run pre-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPreMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if data, err = ReadDetailData(input, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
mwRunner.setMwType(pu.MWTPost)
|
||||
// Run post-middleware
|
||||
if err := mwRunner.RunReadDetailMiddleware(readDetailPostMw, &input, data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
@@ -254,7 +225,7 @@ func Update(input e.UpdateDto) (*d.Data, error) {
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "update")
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
@@ -343,7 +314,7 @@ func Delete(input e.DeleteDto) (*d.Data, error) {
|
||||
|
||||
// Start log
|
||||
pl.SetLogInfo(&event, input, "started", "delete")
|
||||
mwRunner := newMiddlewareRunner(&event)
|
||||
mwRunner := newMiddlewareRunner(&event, input.Sync)
|
||||
|
||||
err = dg.I.Transaction(func(tx *gorm.DB) error {
|
||||
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
|
||||
|
||||
@@ -20,10 +20,15 @@ type middlewareRunner struct {
|
||||
}
|
||||
|
||||
// NewMiddlewareExecutor creates a new middleware executor
|
||||
func newMiddlewareRunner(event *pl.Event) *middlewareRunner {
|
||||
func newMiddlewareRunner(event *pl.Event, syncFromOldSource bool) *middlewareRunner {
|
||||
activateSync := sync.O.Enable
|
||||
if syncFromOldSource {
|
||||
activateSync = false
|
||||
}
|
||||
|
||||
return &middlewareRunner{
|
||||
Event: event,
|
||||
SyncOn: sync.O.Enable,
|
||||
SyncOn: activateSync,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user