Files
simrsx-be/internal/use-case/main-use-case/chemo-plan/helper.go
T
2025-12-12 13:48:34 +07:00

91 lines
1.9 KiB
Go

/*
DESCRIPTION:
Any functions that are used internally by the use-case
*/
package chemo_plan
import (
"encoding/json"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
"time"
dg "github.com/karincake/apem/db-gorm-pg"
ere "simrs-vx/internal/domain/references/encounter"
e "simrs-vx/internal/domain/main-entities/chemo-plan"
ep "simrs-vx/internal/domain/main-entities/chemo-protocol"
es "simrs-vx/internal/domain/main-entities/soapi"
)
var now = time.Now()
func setDataCreate(input *ep.CreateDto) (data []e.ChemoPlan) {
for _, c := range *input.ChemoPlans {
data = append(data, e.ChemoPlan{
Parent_Id: input.Chemo_Id,
Protocol_Id: input.Id,
SeriesNumber: c.SeriesNumber,
CycleNumber: c.CycleNumber,
PlanDate: c.PlanDate,
})
}
return
}
func setDataCreateSoapi(data *e.ChemoPlan) {
data.RealizationDate = &now
status := ere.SPCComplete
data.Status = &status
}
func setDataDeleteSoapi(data *e.ChemoPlan) {
status := ere.SPCPlanned
data.Status = &status
}
func setDatafail(input e.FailDto, data *e.ChemoPlan) {
data.RealizationDate = nil
status := ere.SPCSchedule
data.Status = &status
var reasons []e.FailReason
if data.Reasons != nil {
json.Unmarshal([]byte(*data.Reasons), &reasons)
}
reasons = append(reasons, e.FailReason{
FailReason: input.Reasons,
Date: &now,
Encounter_Id: data.Encounter_Id,
})
if b, err := json.Marshal(reasons); err == nil {
jsonStr := string(b)
data.Reasons = &jsonStr
}
}
func getSoapiByEncounterId(encounterId uint, event *pl.Event) (*[]es.Soapi, error) {
pl.SetLogInfo(event, encounterId, "started", "DBReadDetail")
var data []es.Soapi
var tx = dg.I
if err := tx.
Model(&es.Soapi{}).
Where(`"Encounter_Id" = ?`, encounterId).
Find(&data).Error; err != nil {
if processedErr := pu.HandleReadError(err, event, source, encounterId, data); processedErr != nil {
return nil, processedErr
}
}
pl.SetLogInfo(event, nil, "complete")
return &data, nil
}