on going chemo plan

This commit is contained in:
vanilia
2025-12-09 15:07:01 +07:00
parent 69cfda6f63
commit be34c66ffd
4 changed files with 172 additions and 43 deletions

No files matched your search

@@ -1,17 +1,17 @@
package chemo_plan
import (
erc "simrs-vx/internal/domain/references/common"
ere "simrs-vx/internal/domain/references/encounter"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
"strconv"
dg "github.com/karincake/apem/db-gorm-pg"
d "github.com/karincake/dodol"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
"gorm.io/gorm"
erc "simrs-vx/internal/domain/references/common"
e "simrs-vx/internal/domain/main-entities/chemo-plan"
ep "simrs-vx/internal/domain/main-entities/chemo-protocol"
)
@@ -266,12 +266,33 @@ func Fail(input e.FailDto) (*d.Data, error) {
// Start log
pl.SetLogInfo(&event, input, "started", "update")
err = dg.I.Transaction(func(tx *gorm.DB) error {
pl.SetLogInfo(&event, rdDto, "started", "DBReadDetail")
if data, err = ReadDetailData(rdDto, &event, tx); err != nil {
return err
}
if data, err = ReadDetailData(rdDto, &event); err != nil {
return nil, err
}
dataSoapi, err := getSoapiByEncounterId(*data.Encounter_Id, &event)
if err != nil {
return nil, err
}
if dataSoapi != nil && len(*dataSoapi) > 0 {
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "soapi-exist",
Detail: "cancel soapi to proceed",
}
return nil, pl.SetLogError(&event, data)
}
if data.Status != ere.SPCPlanned {
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "invalid-chemo-status",
Detail: "only chemo plans with status 'planned' can be deleted.",
}
}
err = dg.I.Transaction(func(tx *gorm.DB) error {
if err := UpdateData(data, &event, tx); err != nil {
return err
}
@@ -6,12 +6,21 @@ 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"
ere "simrs-vx/internal/domain/references/encounter"
"time"
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{
@@ -22,14 +31,10 @@ func setDataCreate(input *ep.CreateDto) (data []e.ChemoPlan) {
PlanDate: c.PlanDate,
})
}
status := ere.SPCPlanned
data[0].Status = status
return
}
func setDataUpdate(data *e.ChemoPlan) {
now := time.Now()
data.RealizationDate = &now
status := ere.SPCComplete
@@ -42,5 +47,36 @@ func setDatafail(input e.FailDto, data *e.ChemoPlan) {
var reasons []e.FailReason
_ := json.Unmarshal(data.Re)
if data.Reasons != nil {
json.Unmarshal([]byte(*data.Reasons), &reasons)
}
reasons = append(reasons, e.FailReason{
FailReason: input.Reasons,
Date: &now,
})
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
}