diff --git a/cmd/main-migration/migrations/20251027091406.sql b/cmd/main-migration/migrations/20251027091406.sql new file mode 100644 index 00000000..25df3058 --- /dev/null +++ b/cmd/main-migration/migrations/20251027091406.sql @@ -0,0 +1,2 @@ +-- Modify "Patient" table +ALTER TABLE "public"."Patient" ADD COLUMN "Parent_Number" character varying(15) NULL, ADD CONSTRAINT "fk_Patient_Parent" FOREIGN KEY ("Parent_Number") REFERENCES "public"."Patient" ("Number") ON UPDATE NO ACTION ON DELETE NO ACTION; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index a045414f..88047e74 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:ziMZz2LperFyae6+OgAW10C4nB3cdUxwlYGRyT+L+yU= +h1:+3BKB3OrRFxkAx+v0jB8Y1tcherlTS2Sfsp+nMCTSDE= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -60,4 +60,5 @@ h1:ziMZz2LperFyae6+OgAW10C4nB3cdUxwlYGRyT+L+yU= 20251024074315.sql h1:EjAjelgi5qAfcRq/8vPTlGGYHvAKxNTllm8f0SzZDns= 20251025013451.sql h1:6hnuIiwYiG+6nLhOY/+Yyn+I6ZCFNRZxrJNqBV6HLqE= 20251025013609.sql h1:evPJaTD8WxYRMOJZHkSr7ONLx9PYxT+ankzQt9c/sJ0= -20251027075128.sql h1:bV1FEssEnGHBfBB4huqEHtIllIOJx+/l/WEJIlvKuK0= +20251027075128.sql h1:/iFQBM1sytjqpyQSOx61q33gnorMgxTiFVSuL6bQqsM= +20251027091406.sql h1:4nzeZ5/kDtgMpWOH39XjnZsdfowaDN+jI7NWdP4Sqbw= diff --git a/internal/domain/main-entities/patient/entity.go b/internal/domain/main-entities/patient/entity.go index 27d3c8ba..83afa6ce 100644 --- a/internal/domain/main-entities/patient/entity.go +++ b/internal/domain/main-entities/patient/entity.go @@ -16,4 +16,6 @@ type Patient struct { RegisteredBy_User_Name *string `json:"registeredBy_user_name" gorm:"size:100"` Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` Number *string `json:"number" gorm:"unique;size:15"` + Parent_Number *string `json:"parent_number"` + Parent *Patient `json:"parent,omitempty" gorm:"foreignKey:Parent_Number;references:Number"` } diff --git a/internal/domain/main-entities/specialist/dto.go b/internal/domain/main-entities/specialist/dto.go index 3fa6bf5e..2cd4acee 100644 --- a/internal/domain/main-entities/specialist/dto.go +++ b/internal/domain/main-entities/specialist/dto.go @@ -3,6 +3,7 @@ package specialist import ( ecore "simrs-vx/internal/domain/base-entities/core" espb "simrs-vx/internal/domain/main-entities/specialist-position/base" + essb "simrs-vx/internal/domain/main-entities/subspecialist/base" ) type CreateDto struct { @@ -52,6 +53,7 @@ type ResponseDto struct { Name string `json:"name"` Unit_Id *uint16 `json:"unit_id"` SpecialistPositions []espb.Basic `json:"specialistPositions,omitempty"` + Subspecialists []essb.Basic `json:"subspecialists,omitempty"` } func (d Specialist) ToResponse() ResponseDto { @@ -60,6 +62,7 @@ func (d Specialist) ToResponse() ResponseDto { Name: d.Name, Unit_Id: d.Unit_Id, SpecialistPositions: d.SpecialistPositions, + Subspecialists: d.Subspecialists, } resp.SmallMain = d.SmallMain return resp diff --git a/internal/domain/main-entities/specialist/entity.go b/internal/domain/main-entities/specialist/entity.go index 5c2d5b89..9efb83b0 100644 --- a/internal/domain/main-entities/specialist/entity.go +++ b/internal/domain/main-entities/specialist/entity.go @@ -3,14 +3,16 @@ package specialist import ( ecore "simrs-vx/internal/domain/base-entities/core" eub "simrs-vx/internal/domain/main-entities/specialist-position/base" + essb "simrs-vx/internal/domain/main-entities/subspecialist/base" eu "simrs-vx/internal/domain/main-entities/unit" ) type Specialist struct { - ecore.SmallMain // adjust this according to the needs - Code string `json:"code" gorm:"unique;size:10"` - Name string `json:"name" gorm:"size:50"` - Unit_Id *uint16 `json:"unit_id"` - Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id"` - SpecialistPositions []eub.Basic `json:"specialistPositions,omitempty" gorm:"foreignKey:Specialist_Id;references:Id"` + ecore.SmallMain // adjust this according to the needs + Code string `json:"code" gorm:"unique;size:10"` + Name string `json:"name" gorm:"size:50"` + Unit_Id *uint16 `json:"unit_id"` + Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id"` + SpecialistPositions []eub.Basic `json:"specialistPositions,omitempty" gorm:"foreignKey:Specialist_Id;references:Id"` + Subspecialists []essb.Basic `json:"subspecialists,omitempty" gorm:"foreignKey:Specialist_Id;references:Id"` } diff --git a/internal/domain/main-entities/subspecialist/base/entity.go b/internal/domain/main-entities/subspecialist/base/entity.go new file mode 100644 index 00000000..bc516360 --- /dev/null +++ b/internal/domain/main-entities/subspecialist/base/entity.go @@ -0,0 +1,16 @@ +package base + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type Basic struct { + ecore.SmallMain // adjust this according to the needs + Code string `json:"code" gorm:"unique;size:10"` + Name string `json:"name" gorm:"size:50"` + Specialist_Id *uint16 `json:"specialist_id"` +} + +func (Basic) TableName() string { + return "Subspecialist" +} diff --git a/internal/domain/main-entities/subspecialist/entity.go b/internal/domain/main-entities/subspecialist/entity.go index a81d6ded..f2ff5d8e 100644 --- a/internal/domain/main-entities/subspecialist/entity.go +++ b/internal/domain/main-entities/subspecialist/entity.go @@ -1,16 +1,13 @@ package subspecialist import ( - ecore "simrs-vx/internal/domain/base-entities/core" es "simrs-vx/internal/domain/main-entities/specialist" espb "simrs-vx/internal/domain/main-entities/subspecialist-position/base" + esb "simrs-vx/internal/domain/main-entities/subspecialist/base" ) type Subspecialist struct { - ecore.SmallMain // adjust this according to the needs - Code string `json:"code" gorm:"unique;size:10"` - Name string `json:"name" gorm:"size:50"` - Specialist_Id *uint16 `json:"specialist_id"` + esb.Basic Specialist *es.Specialist `json:"specialist,omitempty" gorm:"foreignKey:Specialist_Id"` SubspecialistPositions []espb.Basic `json:"subspecialistPositions,omitempty" gorm:"foreignKey:Subspecialist_Id;references:Id"` }