diff --git a/internal/domain/main-entities/internal-reference/dto.go b/internal/domain/main-entities/internal-reference/dto.go index 08eaaac2..6ce50a77 100644 --- a/internal/domain/main-entities/internal-reference/dto.go +++ b/internal/domain/main-entities/internal-reference/dto.go @@ -51,7 +51,7 @@ type MetaDto struct { type ResponseDto struct { ecore.Main Encounter_Id *uint `json:"encounter_id"` - Unit_Code *string `json:"unit_id"` + Unit_Code *string `json:"unit_code"` Unit *eu.Unit `json:"unit,omitempty"` Doctor_Code *string `json:"doctor_id"` Doctor *ed.Doctor `json:"doctor,omitempty"` diff --git a/internal/domain/main-entities/subspecialist-position/dto.go b/internal/domain/main-entities/subspecialist-position/dto.go index 13532ab8..1c37a859 100644 --- a/internal/domain/main-entities/subspecialist-position/dto.go +++ b/internal/domain/main-entities/subspecialist-position/dto.go @@ -53,7 +53,7 @@ type MetaDto struct { type ResponseDto struct { ecore.SmallMain - Subspecialist_Code *string `json:"subspecialist_id"` + Subspecialist_Code *string `json:"subspecialist_code"` Subspecialist *es.Subspecialist `json:"subspecialist,omitempty"` Code string `json:"code"` Name string `json:"name"` diff --git a/internal/use-case/main-use-case/encounter/case.go b/internal/use-case/main-use-case/encounter/case.go index 3a8c3b82..d387fcc2 100644 --- a/internal/use-case/main-use-case/encounter/case.go +++ b/internal/use-case/main-use-case/encounter/case.go @@ -573,7 +573,7 @@ func CheckIn(input e.CheckinDto) (*d.Data, error) { } } - // Upsert responsible_doctor_hist if responsible_doctor_id has changed + // Upsert responsible_doctor_hist if responsible_doctor_code has changed if data.Responsible_Doctor_Code == nil || *input.Responsible_Doctor_Code != *data.Responsible_Doctor_Code { // upsert responsibleDoctorHist if err = upsertResponsibleDoctorHist(erdh.CreateDto{ @@ -801,7 +801,7 @@ func ApproveSwitchUnit(input e.ApproveUnitDto) (*d.Data, error) { // update data response data.Responsible_Doctor_Code = irData.Doctor_Code - data.Unit = irData.Unit // TODO: check if this is correct + data.Unit_Code = irData.Unit_Code // data.Specialist_Code = irData.Doctor.Specialist_Code data.Subspecialist_Code = irData.Doctor.Subspecialist_Code diff --git a/internal/use-case/main-use-case/encounter/helper.go b/internal/use-case/main-use-case/encounter/helper.go index 1e86121f..27c468a3 100644 --- a/internal/use-case/main-use-case/encounter/helper.go +++ b/internal/use-case/main-use-case/encounter/helper.go @@ -559,7 +559,6 @@ func getSoapiByResponsibleDoctor(enc e.Encounter, event *pl.Event) (data []es.So } err = dg.I. - Debug(). Model(&es.Soapi{}). Joins("JOIN \"Employee\" ON \"Employee\".\"Id\" = \"Soapi\".\"Employee_Id\""). Where("\"Encounter_Id\" = ?", enc.Id). @@ -723,16 +722,26 @@ func determineVisitMode(recentRehabData *er.Rehab, input e.CreateDto, event *pl. return "", nil, err } - if !isQuotaValid || recentRehabData.ExpiredAt.Before(*pu.GetTimeNow()) { + if !isQuotaValid { event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ Code: "visit-limit-exceeded", - Detail: "Encounter has exceeded the allowed number of visits or expired", + Detail: "Encounter has exceeded the allowed number of visits", Raw: errors.New("visit count exceeds allowed limit"), } return "", nil, pl.SetLogError(event, input) } + if recentRehabData.ExpiredAt != nil && recentRehabData.ExpiredAt.Before(*pu.GetTimeNow()) { + event.Status = "failed" + event.ErrInfo = pl.ErrorInfo{ + Code: "visit-limit-exceeded", + Detail: "Encounter period has expired", + Raw: errors.New("encounter expired"), + } + return "", nil, pl.SetLogError(event, input) + } + case erc.DSCDone: visitModeCode = ere.VMCAdm @@ -903,7 +912,7 @@ func validateForeignKey(input e.CheckinDto) error { } } - // validate doctor_id + // validate doctor_Code if input.Responsible_Doctor_Code != nil { if _, err := ud.ReadDetail(ed.ReadDetailDto{Code: input.Responsible_Doctor_Code}); err != nil { return err @@ -951,7 +960,7 @@ func getUnits(unitIds []string, event *pl.Event) ([]eu.Unit, error) { func getDoctors(doctorIds []string, event *pl.Event) ([]ed.Doctor, error) { pl.SetLogInfo(event, nil, "started", "getDoctors") var doctors []ed.Doctor - err := dg.I.Where("\"Id\" Code ?", doctorIds).Find(&doctors).Error + err := dg.I.Where("\"Code\" IN ?", doctorIds).Find(&doctors).Error if err != nil { event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ @@ -979,7 +988,7 @@ func validateUnitCodes(unitCodes map[string]struct{}, event *pl.Event) error { event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ Code: "data-validation-fail", - Detail: "unit_id not found", + Detail: "unit_code not found", } return pl.SetLogError(event, nil) } @@ -1003,7 +1012,7 @@ func validateDoctorCodes(doctorCodes map[string]struct{}, event *pl.Event) error event.Status = "failed" event.ErrInfo = pl.ErrorInfo{ Code: "data-validation-fail", - Detail: "doctor_id not found", + Detail: "doctor_code not found", } return pl.SetLogError(event, nil) } diff --git a/internal/use-case/main-use-case/encounter/lib.go b/internal/use-case/main-use-case/encounter/lib.go index 840fefac..d3cc544e 100644 --- a/internal/use-case/main-use-case/encounter/lib.go +++ b/internal/use-case/main-use-case/encounter/lib.go @@ -64,7 +64,7 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.En tx = tx.Model(&e.Encounter{}) if input.AuthInfo.Doctor_Code != nil { - tx.Where("\"Responsible_Doctor_Id\" = ?", *input.AuthInfo.Doctor_Code) // TODO: fix this + tx.Where("\"Responsible_Doctor_Code\" = ?", *input.AuthInfo.Doctor_Code) // } tx.Scopes(gh.Preload(input.Includes)). @@ -312,7 +312,7 @@ func verifyAllocatedVisitCount(i e.CreateDto, event *pl.Event) (e.Encounter, boo } // validate count rehab children - if recentEncounterAdm.RehabChildren != nil { + if recentEncounterAdm.RehabChildren != nil && len(*recentEncounterAdm.RehabChildren) > 0 { valid = len(*recentEncounterAdm.RehabChildren) < *recentEncounterAdm.Rehab.AllocatedVisitCount }