From ded271dc6d980b576f0a7612e86bd540e9344395 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Fri, 17 Oct 2025 15:19:43 +0700 Subject: [PATCH] feat (medical-action-src): add create item --- .../main-entities/medical-action-src/dto.go | 2 +- .../references/organization/organization.go | 1 + .../main-use-case/medical-action-src/case.go | 3 +++ .../medical-action-src/helper.go | 25 +++++++++++++++++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/internal/domain/main-entities/medical-action-src/dto.go b/internal/domain/main-entities/medical-action-src/dto.go index a4796a75..32e248d8 100644 --- a/internal/domain/main-entities/medical-action-src/dto.go +++ b/internal/domain/main-entities/medical-action-src/dto.go @@ -8,7 +8,7 @@ import ( type CreateDto struct { Code string `json:"code" validate:"maxLength=20"` Name string `json:"name" validate:"maxLength=50"` - Type_Code string `json:"type_code" validate:"maxLength:20"` + Type_Code string `json:"type_code" validate:"maxLength=20"` Item_Id *uint `json:"item_id"` } diff --git a/internal/domain/references/organization/organization.go b/internal/domain/references/organization/organization.go index bf11fbd6..04c4fa2a 100644 --- a/internal/domain/references/organization/organization.go +++ b/internal/domain/references/organization/organization.go @@ -30,6 +30,7 @@ const ( ITGCMCUSub ItemGroupCode = "mcuSub" ITGCEmpFee ItemGroupCode = "employee-fee" ITGCDocFee ItemGroupCode = "doctor-fee" + ITGCMedAct ItemGroupCode = "medical-action" IFGCBuilding InfraGroupCode = "building" // Bangunan IFGCFloor InfraGroupCode = "floor" // Lantai diff --git a/internal/use-case/main-use-case/medical-action-src/case.go b/internal/use-case/main-use-case/medical-action-src/case.go index d3fb840b..cd42766c 100644 --- a/internal/use-case/main-use-case/medical-action-src/case.go +++ b/internal/use-case/main-use-case/medical-action-src/case.go @@ -34,6 +34,9 @@ func Create(input e.CreateDto) (*d.Data, error) { return err } + if err := createItem(&input, &event, tx); err != nil { + return err + } if resData, err := CreateData(input, &event, tx); err != nil { return err } else { diff --git a/internal/use-case/main-use-case/medical-action-src/helper.go b/internal/use-case/main-use-case/medical-action-src/helper.go index 3e54a3eb..c955274d 100644 --- a/internal/use-case/main-use-case/medical-action-src/helper.go +++ b/internal/use-case/main-use-case/medical-action-src/helper.go @@ -5,7 +5,17 @@ Any functions that are used internally by the use-case package medicalactionsrc import ( + ei "simrs-vx/internal/domain/main-entities/item" e "simrs-vx/internal/domain/main-entities/medical-action-src" + + ero "simrs-vx/internal/domain/references/organization" + + ui "simrs-vx/internal/use-case/main-use-case/item" + + pl "simrs-vx/pkg/logger" + pu "simrs-vx/pkg/use-case-helper" + + "gorm.io/gorm" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MedicalActionSrc) { @@ -22,3 +32,18 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MedicalActionSrc) { data.Type_Code = inputSrc.Type_Code data.Item_Id = inputSrc.Item_Id } + +func createItem(input *e.CreateDto, event *pl.Event, tx *gorm.DB) error { + itemCreate := ei.CreateDto{ + Code: pu.AddPrefix("medAct-", input.Code), + Name: input.Name, + ItemGroup_Code: ero.ITGCMedAct, + } + item, err := ui.CreateData(itemCreate, event, tx) + if err != nil { + return err + } + + input.Item_Id = &item.Id + return nil +}