diff --git a/internal/domain/main-entities/chemo/dto.go b/internal/domain/main-entities/chemo/dto.go new file mode 100644 index 00000000..cf01b8ad --- /dev/null +++ b/internal/domain/main-entities/chemo/dto.go @@ -0,0 +1,86 @@ +package chemo + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" + ee "simrs-vx/internal/domain/main-entities/encounter" + eun "simrs-vx/internal/domain/main-entities/unit" + eus "simrs-vx/internal/domain/main-entities/user" + "time" + + erc "simrs-vx/internal/domain/references/common" +) + +type CreateDto struct { + Encounter_Id *uint `json:"encounter_id"` + Status_Code erc.DataStatusCode `json:"status_code"` + VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` + SrcUnit_Id *uint `json:"src_unit_id"` +} + +type ReadListDto struct { + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` + Pagination ecore.Pagination +} + +type FilterDto struct { + Encounter_Id *uint `json:"encounter_id"` + Status_Code *erc.DataVerifiedCode `json:"status_code"` + VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` + SrcUnit_Id *uint `json:"src_unit_id"` +} + +type ReadDetailDto struct { + Id uint16 `json:"id"` +} + +type UpdateDto struct { + Id uint16 `json:"id"` + CreateDto +} + +type DeleteDto struct { + Id uint16 `json:"id"` +} + +type MetaDto struct { + PageNumber int `json:"page_number"` + PageSize int `json:"page_size"` + Count int `json:"count"` +} + +type ResponseDto struct { + ecore.Main + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty"` + Status_Code erc.DataVerifiedCode `json:"status_code"` + VerifiedAt *time.Time `json:"verifiedAt"` + VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` + VerifiedBy *eus.User `json:"verifiedBy,omitempty"` + SrcUnit_Id *uint `json:"src_unit_id"` + SrcUnit *eun.Unit `json:"src_unit,omitempty"` +} + +func (d Chemo) ToResponse() ResponseDto { + resp := ResponseDto{ + Encounter_Id: d.Encounter_Id, + Encounter: d.Encounter, + Status_Code: d.Status_Code, + VerifiedAt: d.VerifiedAt, + VerifiedBy_User_Id: d.VerifiedBy_User_Id, + VerifiedBy: d.VerifiedBy, + SrcUnit_Id: d.SrcUnit_Id, + SrcUnit: d.SrcUnit, + } + resp.Main = d.Main + return resp +} + +func ToResponseList(data []Chemo) []ResponseDto { + resp := make([]ResponseDto, len(data)) + for i, u := range data { + resp[i] = u.ToResponse() + } + return resp +} diff --git a/internal/domain/main-entities/chemo/entity.go b/internal/domain/main-entities/chemo/entity.go new file mode 100644 index 00000000..2ba83990 --- /dev/null +++ b/internal/domain/main-entities/chemo/entity.go @@ -0,0 +1,24 @@ +package chemo + +import ( + "time" + + ecore "simrs-vx/internal/domain/base-entities/core" + ee "simrs-vx/internal/domain/main-entities/encounter" + eun "simrs-vx/internal/domain/main-entities/unit" + eus "simrs-vx/internal/domain/main-entities/user" + + erc "simrs-vx/internal/domain/references/common" +) + +type Chemo struct { + ecore.Main // adjust this according to the needs + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Status_Code erc.DataVerifiedCode `json:"status_code"` + VerifiedAt *time.Time `json:"verifiedAt"` + VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` + VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"` + SrcUnit_Id *uint `json:"src_unit_id"` + SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Id;references:Id"` +}