/* DESCRIPTION: Any functions that are used internally by the use-case */ package chemo_protocol import ( ec "simrs-vx/internal/domain/main-entities/chemo" e "simrs-vx/internal/domain/main-entities/chemo-protocol" 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" dg "github.com/karincake/apem/db-gorm-pg" gh "github.com/karincake/getuk" ) 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 } 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 getChemoFromLatestEncounter(event *pl.Event) (*ec.Chemo, error) { pl.SetLogInfo(event, nil, "started", "DBReadChemoFromLatestEncounter") 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(`"a"."Class_Code" IN (?)"`, []string{string(ere.ACCReg), string(ere.ACCChemo)}). Where(`"Chemo"."Status_Code" = ?`, erc.DVCVerified). Scopes(gh.Preload("Encounter.Ambulatory")). Order("\"Chemo\".\"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 }