diff --git a/internal/domain/main-entities/patient/dto.go b/internal/domain/main-entities/patient/dto.go new file mode 100644 index 00000000..21a42390 --- /dev/null +++ b/internal/domain/main-entities/patient/dto.go @@ -0,0 +1,92 @@ +package patient + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" + ep "simrs-vx/internal/domain/main-entities/person" + epa "simrs-vx/internal/domain/main-entities/person-address" + epc "simrs-vx/internal/domain/main-entities/person-contact" + epr "simrs-vx/internal/domain/main-entities/person-relative" + erc "simrs-vx/internal/domain/references/common" + ero "simrs-vx/internal/domain/references/organization" + "time" +) + +type CreateDto struct { + Person_Id *uint `json:"-"` + Person *ep.UpdateDto `json:"person"` + PersonAddresses []epa.UpdateDto `json:"personAddresses"` + PersonContacts []epc.UpdateDto `json:"personContacts"` + PersonRelatives []epr.UpdateDto `json:"personRelatives"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code"` + Number *string `json:"number"` +} + +type ReadListDto struct { + FilterDto + Includes string `json:"includes"` + Preloads []string `json:"-"` +} + +type FilterDto struct { + Person_Id *uint `json:"person_id"` + Position_Code ero.EmployeePosisitionCode `json:"position_code"` + Division_Code *string `json:"division_code"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code"` + Number *string `json:"number"` + + Page int `json:"page"` + PageSize int `json:"page_size"` + NoPagination int `json:"no_pagination"` +} + +type ReadDetailDto struct { + Id uint16 `json:"id"` + Person_Id *uint `json:"person_id"` + Number *string `json:"number"` +} + +type UpdateDto struct { + Id uint `json:"id"` + CreateDto +} + +type DeleteDto struct { + Id uint `json:"id"` +} + +type MetaDto struct { + PageNumber int `json:"page_number"` + PageSize int `json:"page_size"` + Count int `json:"count"` +} + +type ResponseDto struct { + ecore.Main + Person_Id *uint `json:"person_id"` + Person *ep.Person `json:"person,omitempty"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code"` + Number *string `json:"number"` +} + +func (d Patient) ToResponse() ResponseDto { + resp := ResponseDto{ + Person_Id: d.Person_Id, + Person: d.Person, + RegisteredAt: d.RegisteredAt, + Status_Code: d.Status_Code, + Number: d.Number, + } + resp.Main = d.Main + return resp +} + +func ToResponseList(data []Patient) []ResponseDto { + resp := make([]ResponseDto, len(data)) + for i, u := range data { + resp[i] = u.ToResponse() + } + return resp +} diff --git a/internal/domain/main-entities/patient/entity.go b/internal/domain/main-entities/patient/entity.go new file mode 100644 index 00000000..fbe4647a --- /dev/null +++ b/internal/domain/main-entities/patient/entity.go @@ -0,0 +1,17 @@ +package patient + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" + ep "simrs-vx/internal/domain/main-entities/person" + erc "simrs-vx/internal/domain/references/common" + "time" +) + +type Patient struct { + ecore.Main // adjust this according to the needs + Person_Id *uint `json:"person_id"` + Person *ep.Person `json:"person,omitempty" gorm:"foreignKey:Person_Id;references:Id"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` + Number *string `json:"number" gorm:"size:15"` +}