chemo plan finish

This commit is contained in:
vanilia
2025-12-08 14:29:44 +07:00
12 changed files with 125 additions and 329 deletions

No files matched your search

@@ -2,7 +2,6 @@ package chemo_protocol
import (
"errors"
erc "simrs-vx/internal/domain/references/common"
"strconv"
dg "github.com/karincake/apem/db-gorm-pg"
@@ -13,9 +12,12 @@ import (
"gorm.io/gorm"
erc "simrs-vx/internal/domain/references/common"
e "simrs-vx/internal/domain/main-entities/chemo-protocol"
ee "simrs-vx/internal/domain/main-entities/encounter"
ucp "simrs-vx/internal/use-case/main-use-case/chemo-plan"
ue "simrs-vx/internal/use-case/main-use-case/encounter"
)
@@ -23,6 +25,7 @@ const source = "chemo-protocol"
func Create(input e.CreateDto) (*d.Data, error) {
data := e.ChemoProtocol{}
var err error
event := pl.Event{
Feature: "Create",
@@ -32,51 +35,27 @@ func Create(input e.CreateDto) (*d.Data, error) {
// Start log
pl.SetLogInfo(&event, input, "started", "create")
err := dg.I.Transaction(func(tx *gorm.DB) error {
mwRunner := newMiddlewareRunner(&event, tx)
mwRunner.setMwType(pu.MWTPre)
// Run pre-middleware
if err := mwRunner.RunCreateMiddleware(createPreMw, &input, &data); err != nil {
return err
if input.Patient_Id == nil {
// get encounter
dataEncounter, err := ue.ReadDetailData(ee.ReadDetailDto{Id: *input.Encounter_Id}, &event)
if err != nil {
return nil, err
}
if input.Patient_Id == nil {
// get encounter
dataEncounter, err := ue.ReadDetailData(ee.ReadDetailDto{Id: *input.Encounter_Id}, &event)
if err != nil {
return err
}
input.Patient_Id = dataEncounter.Patient_Id
}
// get chemo data from encounter
//dataChemo, err := getChemoEncounter(input.Encounter_Id, &event)
//if err != nil {
// return err
//}
//input.Chemo_Id = &dataChemo.Id
// determine status code chemo-protocol
//switch dataChemo.Encounter.Ambulatory.Class_Code {
//case ere.ACCChemo:
// input.Status_Code = erc.DVCVerified
//default:
// input.Status_Code = erc.DVCNew
//}
input.Patient_Id = dataEncounter.Patient_Id
input.Status_Code = erc.DVCNew
}
err = dg.I.Transaction(func(tx *gorm.DB) error {
// Insert Chemo-Protocol
if resData, err := CreateData(input, &event, tx); err != nil {
return err
} else {
data = *resData
}
mwRunner.setMwType(pu.MWTPost)
// Run post-middleware
if err := mwRunner.RunCreateMiddleware(createPostMw, &input, &data); err != nil {
// Insert Chemo-Plans
if data.ChemoPlans, err = ucp.CreateData(&input, &event, tx); err != nil {
return err
}
@@ -113,6 +92,15 @@ func ReadList(input e.ReadListDto) (*d.Data, error) {
// Start log
pl.SetLogInfo(&event, input, "started", "readList")
if input.Patient_Id == nil {
event.Status = "failed"
event.ErrInfo = pl.ErrorInfo{
Code: "data-validation-fail",
Detail: "patient-id is required",
}
return nil, pl.SetLogError(&event, input)
}
err = dg.I.Transaction(func(tx *gorm.DB) error {
mwRunner := newMiddlewareRunner(&event, tx)
mwRunner.setMwType(pu.MWTPre)