Files
simrsx-be/internal/use-case/main-use-case/chemo-protocol/helper.go
T
vanilia cef816ecb6 Merge branch 'migration' of https://github.com/dikstub-rssa/simrs-be into feat/chemo-plan
# Conflicts:
#	cmd/main-migration/migrations/atlas.sum
#	internal/domain/main-entities/chemo-plan/entity.go
#	internal/use-case/main-use-case/chemo-protocol/helper.go
2025-12-09 11:15:36 +07:00

84 lines
2.4 KiB
Go

/*
DESCRIPTION:
Any functions that are used internally by the use-case
*/
package chemo_protocol
import (
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
dg "github.com/karincake/apem/db-gorm-pg"
gh "github.com/karincake/getuk"
erc "simrs-vx/internal/domain/references/common"
ere "simrs-vx/internal/domain/references/encounter"
ec "simrs-vx/internal/domain/main-entities/chemo"
e "simrs-vx/internal/domain/main-entities/chemo-protocol"
)
func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.ChemoProtocol) {
var inputSrc *e.CreateDto
if inputT, ok := any(input).(*e.CreateDto); ok {
inputSrc = inputT
} else {
inputTemp := any(input).(*e.UpdateDto)
inputSrc = &inputTemp.CreateDto
}
data.Chemo_Id = inputSrc.Chemo_Id
data.Patient_Weight = inputSrc.Patient_Weight
data.Patient_Height = inputSrc.Patient_Height
data.Diagnoses = inputSrc.Diagnoses
data.Interval = inputSrc.Interval
data.Cycle = inputSrc.Cycle
data.Series = inputSrc.Series
data.StartDate = inputSrc.StartDate
data.EndDate = inputSrc.EndDate
data.Status_Code = inputSrc.Status_Code
data.Patient_Id = inputSrc.Patient_Id
}
func getChemoEncounterReg(event *pl.Event) (*ec.Chemo, error) {
pl.SetLogInfo(event, nil, "started", "DBReadChemoEncounterReg")
data := ec.Chemo{}
var tx = dg.I
if err := tx.Model(&ec.Chemo{}).
Joins(`LEFT JOIN "Encounter" "e" ON "e"."Id" = "Chemo"."Encounter_Id"`).
Joins(`LEFT JOIN "Ambulatory" "a" ON "a"."Encounter_Id" = "e"."Id"`).
Where(`"Chemo"."Status_Code" = ? AND "a"."Class_Code" = ?`, erc.DVCVerified, ere.ACCReg).
Order("\"CreatedAt\" DESC").
First(&data).
Error; err != nil {
if processedErr := pu.HandleReadError(err, event, source, nil, data); processedErr != nil {
return nil, processedErr
}
}
pl.SetLogInfo(event, nil, "complete")
return &data, nil
}
func getChemoEncounter(encounterId *uint, event *pl.Event) (*ec.Chemo, error) {
pl.SetLogInfo(event, encounterId, "started", "DBReadChemoEncounter")
data := ec.Chemo{}
var tx = dg.I
if err := tx.Model(&ec.Chemo{}).
Where(`"Encounter_Id" = ? AND "Status_Code"`, encounterId, erc.DVCVerified).
Scopes(gh.Preload("Encounter.Ambulatory")).
First(&data).
Error; err != nil {
if processedErr := pu.HandleReadError(err, event, source, nil, data); processedErr != nil {
return nil, processedErr
}
}
pl.SetLogInfo(event, nil, "complete")
return &data, nil
}