From b454f52039301decbdc8da3b4c4d11ade97f5a71 Mon Sep 17 00:00:00 2001 From: vanilia Date: Sat, 6 Dec 2025 04:40:13 +0700 Subject: [PATCH] on going --- internal/domain/main-entities/chemo/dto.go | 1 + .../main-use-case/chemo-protocol/helper.go | 2 +- internal/use-case/main-use-case/chemo/case.go | 29 ++++++++++++++++--- internal/use-case/main-use-case/chemo/lib.go | 3 ++ 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/internal/domain/main-entities/chemo/dto.go b/internal/domain/main-entities/chemo/dto.go index 602bb711..8fc65ef2 100644 --- a/internal/domain/main-entities/chemo/dto.go +++ b/internal/domain/main-entities/chemo/dto.go @@ -35,6 +35,7 @@ type FilterDto struct { Status_Code *erc.DataVerifiedCode `json:"status-code"` VerifiedBy_User_Id *uint `json:"verifiedBy-user-id"` SrcUnit_Code *string `json:"srcUnit-code"` + Patient_Id *uint `json:"patient-id"` } type ReadDetailDto struct { diff --git a/internal/use-case/main-use-case/chemo-protocol/helper.go b/internal/use-case/main-use-case/chemo-protocol/helper.go index 351bf872..fd70130b 100644 --- a/internal/use-case/main-use-case/chemo-protocol/helper.go +++ b/internal/use-case/main-use-case/chemo-protocol/helper.go @@ -46,7 +46,7 @@ func getChemoEncounterReg(event *pl.Event) (*ec.Chemo, error) { 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). + Where(`"Chemo"."Status_Code" = ? AND "a"."Class_Code" = ?`, erc.DVCVerified, ere.ACCReg). Order("\"CreatedAt\" DESC"). First(&data). Error; err != nil { diff --git a/internal/use-case/main-use-case/chemo/case.go b/internal/use-case/main-use-case/chemo/case.go index d466feef..8e456dc1 100644 --- a/internal/use-case/main-use-case/chemo/case.go +++ b/internal/use-case/main-use-case/chemo/case.go @@ -4,10 +4,6 @@ import ( "errors" "strconv" - e "simrs-vx/internal/domain/main-entities/chemo" - - erc "simrs-vx/internal/domain/references/common" - dg "github.com/karincake/apem/db-gorm-pg" d "github.com/karincake/dodol" @@ -15,6 +11,13 @@ import ( 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" + ee "simrs-vx/internal/domain/main-entities/encounter" + + ue "simrs-vx/internal/use-case/main-use-case/encounter" ) const source = "chemo" @@ -83,6 +86,15 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { // Start log pl.SetLogInfo(&event, input, "started", "readList") + if input.Encounter_Id == nil { + event.Status = "failed" + event.ErrInfo = pl.ErrorInfo{ + Code: "data-validation-fail", + Detail: "Encounter-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) @@ -91,6 +103,15 @@ func ReadList(input e.ReadListDto) (*d.Data, error) { return err } + // Get Encounter + dataEncounter, err := ue.ReadDetailData(ee.ReadDetailDto{Id: *input.Encounter_Id}, &event) + if err != nil { + return err + } + + input.Patient_Id = dataEncounter.Patient_Id + input.Encounter_Id = nil + if dataList, metaList, err = ReadListData(input, &event, tx); err != nil { return err } diff --git a/internal/use-case/main-use-case/chemo/lib.go b/internal/use-case/main-use-case/chemo/lib.go index 4a7accbb..4ebdb321 100644 --- a/internal/use-case/main-use-case/chemo/lib.go +++ b/internal/use-case/main-use-case/chemo/lib.go @@ -49,6 +49,9 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Ch tx = tx. Model(&e.Chemo{}). + Joins(`LEFT JOIN "Encounter" "e" ON "e"."Id" = "Chemo"."Encounter_Id"`). + Joins(`LEFT JOIN "Patient" "p" ON "e"."Patient_Id" = "p"."Id"`). + Where(`"p"."Id" = ?`, input.Patient_Id). Scopes(gh.Preload(input.Includes)). Scopes(gh.Filter(input.FilterDto)). Count(&count).