From e4093587e761ae048f8c1a37ecac6b1753433cb7 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Fri, 24 Oct 2025 15:50:12 +0700 Subject: [PATCH 1/5] wip --- internal/domain/references/person/person.go | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/internal/domain/references/person/person.go b/internal/domain/references/person/person.go index 02d0f97e..a9ee5efb 100644 --- a/internal/domain/references/person/person.go +++ b/internal/domain/references/person/person.go @@ -42,18 +42,20 @@ const ( RCBudha ReligionCode = "budha" RCKonghucu ReligionCode = "konghucu" - ECTS EducationCode = "TS" - ECTK EducationCode = "TK" - ECSD EducationCode = "SD" - ECSLTP EducationCode = "SMP" - ECSLTA EducationCode = "SMA" - ECD1 EducationCode = "D1" - ECD2 EducationCode = "D2" - ECD3 EducationCode = "D3" - ECD4 EducationCode = "D4" - ECS1 EducationCode = "S1" - ECS2 EducationCode = "S2" - ECS3 EducationCode = "S3" + ECTS EducationCode = "TS" + ECTK EducationCode = "TK" + ECSD EducationCode = "SD" + ECSLTP EducationCode = "SMP" + ECSLTA EducationCode = "SMA" + ECD1 EducationCode = "D1" + ECD2 EducationCode = "D2" + ECD3 EducationCode = "D3" + ECD4 EducationCode = "D4" + ECS1 EducationCode = "S1" + ECS2 EducationCode = "S2" + ECS3 EducationCode = "S3" + ECOther EducationCode = "other" + ECUnkown EducationCode = "unknown" OCTidakBekerja OcupationCode = "tidak-bekerja" OCPns OcupationCode = "pns" From 98b26a219ffa7a1376fa8b3e028e6cae135ef1b7 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Sat, 25 Oct 2025 08:37:00 +0700 Subject: [PATCH 2/5] add vclaim member, also marital and confidence in person --- cmd/main-migration/migrations/20251025013451.sql | 4 ++++ cmd/main-migration/migrations/20251025013609.sql | 12 ++++++++++++ cmd/main-migration/migrations/atlas.sum | 4 +++- .../domain/bpjs-entities/vclaim-member/dto.go | 1 + .../domain/bpjs-entities/vclaim-member/entity.go | 9 +++++++++ internal/domain/main-entities/patient/entity.go | 15 ++++++++------- internal/domain/main-entities/person/entity.go | 4 ++++ internal/domain/references/person/person.go | 8 ++++---- internal/interface/migration/main-entities.go | 2 ++ 9 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 cmd/main-migration/migrations/20251025013451.sql create mode 100644 cmd/main-migration/migrations/20251025013609.sql create mode 100644 internal/domain/bpjs-entities/vclaim-member/dto.go create mode 100644 internal/domain/bpjs-entities/vclaim-member/entity.go diff --git a/cmd/main-migration/migrations/20251025013451.sql b/cmd/main-migration/migrations/20251025013451.sql new file mode 100644 index 00000000..0296b0f5 --- /dev/null +++ b/cmd/main-migration/migrations/20251025013451.sql @@ -0,0 +1,4 @@ +-- Modify "Patient" table +ALTER TABLE "public"."Patient" ADD COLUMN "RegisteredBy_User_Name" character varying(100) NULL; +-- Modify "Person" table +ALTER TABLE "public"."Person" ADD COLUMN "Confidence" character varying(512) NULL, ADD COLUMN "MaritalStatus_Code" character varying(10) NULL; diff --git a/cmd/main-migration/migrations/20251025013609.sql b/cmd/main-migration/migrations/20251025013609.sql new file mode 100644 index 00000000..9793d86a --- /dev/null +++ b/cmd/main-migration/migrations/20251025013609.sql @@ -0,0 +1,12 @@ +-- Create "VclaimMember" table +CREATE TABLE "public"."VclaimMember" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "CardNumber" character varying(20) NULL, + "Person_Id" bigint NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_VclaimMember_CardNumber" UNIQUE ("CardNumber"), + CONSTRAINT "fk_Person_VclaimMember" FOREIGN KEY ("Person_Id") REFERENCES "public"."Person" ("Id") 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 9a03ed9b..33455810 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:ieMeKh35/dro1YBBO11ZP0nZan9aJ5aFSqnEAi+T+WQ= +h1:BeGFyPoCNw+Am00+prXp3+lNStrspn2VED1Mz+3IWpI= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -58,3 +58,5 @@ h1:ieMeKh35/dro1YBBO11ZP0nZan9aJ5aFSqnEAi+T+WQ= 20251023044432.sql h1:MkvajJs3bfk9+wHvQ43/ccAluJEBARm1gWr1u92ccLA= 20251024034832.sql h1:x3s3VEVYLOSKLAFxJGb2+c1FyTMMvPE+9k4Ew7rKQaI= 20251024074315.sql h1:EjAjelgi5qAfcRq/8vPTlGGYHvAKxNTllm8f0SzZDns= +20251025013451.sql h1:XTkUVKTZsZi9qphqhwXdVtHnhNNyJegbGYg+RKUXXag= +20251025013609.sql h1:Wlqjzsxm5Mb+sJPAyWsIrhwEx8oSSjfjYyHnAdkikzs= diff --git a/internal/domain/bpjs-entities/vclaim-member/dto.go b/internal/domain/bpjs-entities/vclaim-member/dto.go new file mode 100644 index 00000000..5914deb6 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-member/dto.go @@ -0,0 +1 @@ +package vclaimmember diff --git a/internal/domain/bpjs-entities/vclaim-member/entity.go b/internal/domain/bpjs-entities/vclaim-member/entity.go new file mode 100644 index 00000000..420b569d --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-member/entity.go @@ -0,0 +1,9 @@ +package vclaimmember + +import ecore "simrs-vx/internal/domain/base-entities/core" + +type VclaimMember struct { + ecore.Main + CardNumber *string `json:"cardNumber" gorm:"unique;size:20"` + Person_Id *uint `json:"person_id"` +} diff --git a/internal/domain/main-entities/patient/entity.go b/internal/domain/main-entities/patient/entity.go index 491140cd..27d3c8ba 100644 --- a/internal/domain/main-entities/patient/entity.go +++ b/internal/domain/main-entities/patient/entity.go @@ -8,11 +8,12 @@ import ( ) 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"` - NewBornStatus bool `json:"newBornStatus"` - RegisteredAt *time.Time `json:"registeredAt"` - Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` - Number *string `json:"number" gorm:"unique;size:15"` + 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"` + NewBornStatus bool `json:"newBornStatus"` + RegisteredAt *time.Time `json:"registeredAt"` + 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"` } diff --git a/internal/domain/main-entities/person/entity.go b/internal/domain/main-entities/person/entity.go index 8932ca1b..d6e6744a 100644 --- a/internal/domain/main-entities/person/entity.go +++ b/internal/domain/main-entities/person/entity.go @@ -2,6 +2,7 @@ package person import ( ecore "simrs-vx/internal/domain/base-entities/core" + evm "simrs-vx/internal/domain/bpjs-entities/vclaim-member" ee "simrs-vx/internal/domain/main-entities/ethnic" el "simrs-vx/internal/domain/main-entities/language" epa "simrs-vx/internal/domain/main-entities/person-address" @@ -28,9 +29,11 @@ type Person struct { PassportNumber *string `json:"passportNumber" gorm:"unique;size:20"` DrivingLicenseNumber *string `json:"drivingLicenseNumber" gorm:"unique;size:20"` Religion_Code *erp.ReligionCode `json:"religion_code" gorm:"size:10"` + Confidence *string `json:"confidence" gorm:"size:512"` Education_Code *erp.EducationCode `json:"education_code" gorm:"size:10"` Ocupation_Code *erp.OcupationCode `json:"occupation_code" gorm:"size:15"` Ocupation_Name *string `json:"occupation_name" gorm:"size:50"` + MaritalStatus_Code *erp.MaritalStatusCode `json:"maritalStatus_code" gorm:"size:10"` Nationality *string `json:"nationality": gorm:"size:50"` Ethnic_Code *string `json:"ethnic_code" gorm:"size:20"` Ethnic *ee.Ethnic `json:"ethnic,omitempty" gorm:"foreignKey:Ethnic_Code;references:Code"` @@ -46,6 +49,7 @@ type Person struct { Contacts *[]epc.PersonContact `json:"contacts" gorm:"foreignKey:Person_Id"` Relatives *[]epr.PersonRelative `json:"relatives" gorm:"foreignKey:Person_Id"` Insurances *[]epi.PersonInsurance `json:"insurances" gorm:"foreignKey:Person_Id"` + VclaimMember *evm.VclaimMember `json:"vclaimMember,omitempty" gorm:"foreignKey:Person_Id;references:Id"` } func (d Person) IsSameResidentIdentityNumber(input *string) bool { diff --git a/internal/domain/references/person/person.go b/internal/domain/references/person/person.go index a9ee5efb..1648b578 100644 --- a/internal/domain/references/person/person.go +++ b/internal/domain/references/person/person.go @@ -30,10 +30,10 @@ const ( BTCOPositive BloodTypeCode = "O+" BTCONegative BloodTypeCode = "O-" - MSCBelumKawin MaritalStatusCode = "S" - MSCKawin MaritalStatusCode = "M" - MSCCeraiHidup MaritalStatusCode = "D" - MSCCeraiMati MaritalStatusCode = "W" + MaritalStatusSingle MaritalStatusCode = "S" // Single (Belum Kawin) + MaritalStatusMarried MaritalStatusCode = "M" // Married (Kawin) + MaritalStatusDivorced MaritalStatusCode = "D" // Divorced (Cerai Hidup) + MaritalStatusWidowed MaritalStatusCode = "W" // Widowed (Cerai Mati) RCIslam ReligionCode = "islam" RCProtestan ReligionCode = "protestan" diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index eadae620..6507202e 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -92,6 +92,7 @@ import ( village "simrs-vx/internal/domain/main-entities/village" ///BPJS + vclaimmember "simrs-vx/internal/domain/bpjs-entities/vclaim-member" vclaimsep "simrs-vx/internal/domain/bpjs-entities/vclaim-sep" vclaimsephist "simrs-vx/internal/domain/bpjs-entities/vclaim-sep-hist" vclaimsepprint "simrs-vx/internal/domain/bpjs-entities/vclaim-sep-print" @@ -191,5 +192,6 @@ func getMainEntities() []any { &subspecialistposition.SubspecialistPosition{}, &responsibledoctorhist.ResponsibleDoctorHist{}, &admemployeehist.AdmEmployeeHist{}, + &vclaimmember.VclaimMember{}, } } From 17172742ec3adf4fc7ca07c885b21a9e8d5927c8 Mon Sep 17 00:00:00 2001 From: vanilia Date: Mon, 27 Oct 2025 14:52:55 +0700 Subject: [PATCH 3/5] add column in encounter --- cmd/main-migration/migrations/20251027075128.sql | 2 ++ cmd/main-migration/migrations/atlas.sum | 7 ++++--- .../domain/main-entities/encounter/entity.go | 4 ++++ .../domain/references/encounter/encounter.go | 16 ++++++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 cmd/main-migration/migrations/20251027075128.sql diff --git a/cmd/main-migration/migrations/20251027075128.sql b/cmd/main-migration/migrations/20251027075128.sql new file mode 100644 index 00000000..6d583866 --- /dev/null +++ b/cmd/main-migration/migrations/20251027075128.sql @@ -0,0 +1,2 @@ +-- Modify "Encounter" table +ALTER TABLE "public"."Encounter" ADD COLUMN "StartedAt" timestamptz NULL, ADD COLUMN "FinishedAt" timestamptz NULL, ADD COLUMN "RefType_Code" text NULL, ADD COLUMN "NewStatus" boolean NULL; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 33455810..a045414f 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:BeGFyPoCNw+Am00+prXp3+lNStrspn2VED1Mz+3IWpI= +h1:ziMZz2LperFyae6+OgAW10C4nB3cdUxwlYGRyT+L+yU= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -58,5 +58,6 @@ h1:BeGFyPoCNw+Am00+prXp3+lNStrspn2VED1Mz+3IWpI= 20251023044432.sql h1:MkvajJs3bfk9+wHvQ43/ccAluJEBARm1gWr1u92ccLA= 20251024034832.sql h1:x3s3VEVYLOSKLAFxJGb2+c1FyTMMvPE+9k4Ew7rKQaI= 20251024074315.sql h1:EjAjelgi5qAfcRq/8vPTlGGYHvAKxNTllm8f0SzZDns= -20251025013451.sql h1:XTkUVKTZsZi9qphqhwXdVtHnhNNyJegbGYg+RKUXXag= -20251025013609.sql h1:Wlqjzsxm5Mb+sJPAyWsIrhwEx8oSSjfjYyHnAdkikzs= +20251025013451.sql h1:6hnuIiwYiG+6nLhOY/+Yyn+I6ZCFNRZxrJNqBV6HLqE= +20251025013609.sql h1:evPJaTD8WxYRMOJZHkSr7ONLx9PYxT+ankzQt9c/sJ0= +20251027075128.sql h1:bV1FEssEnGHBfBB4huqEHtIllIOJx+/l/WEJIlvKuK0= diff --git a/internal/domain/main-entities/encounter/entity.go b/internal/domain/main-entities/encounter/entity.go index fccbab41..37779409 100644 --- a/internal/domain/main-entities/encounter/entity.go +++ b/internal/domain/main-entities/encounter/entity.go @@ -32,10 +32,13 @@ type Encounter struct { Subspecialist_Id *uint16 `json:"subspecialist_id"` Subspecialist *ess.Subspecialist `json:"subspecialist,omitempty" gorm:"foreignKey:Subspecialist_Id;references:Id"` VisitDate time.Time `json:"visitDate"` + StartedAt *time.Time `json:"startedAt"` + FinishedAt *time.Time `json:"finishedAt"` PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"` InsuranceCompany_Id *uint `json:"insuranceCompany_id"` InsuranceCompany *ei.InsuranceCompany `json:"insuranceCompany,omitempty" gorm:"foreignKey:InsuranceCompany_Id;references:Id"` Member_Number *string `json:"memberNumber" gorm:"unique;size:20"` + RefType_Code *ere.RefTypeCode `json:"refType_code"` Ref_Number *string `json:"refNumber" gorm:"unique;size:20"` Trx_Number *string `json:"trxNumber" gorm:"unique;size:20"` Appointment_Doctor_Id *uint `json:"appointment_doctor_id"` @@ -57,6 +60,7 @@ type Encounter struct { Discharge_Date *time.Time `json:"discharge_date"` InternalReferences *[]eir.InternalReference `json:"internalReferences,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` DeathCause *edc.DeathCause `json:"deathCause,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + NewStatus bool `json:"newStatus"` } func (d Encounter) IsDone() bool { diff --git a/internal/domain/references/encounter/encounter.go b/internal/domain/references/encounter/encounter.go index 5b9515ec..eeccb8fe 100644 --- a/internal/domain/references/encounter/encounter.go +++ b/internal/domain/references/encounter/encounter.go @@ -15,6 +15,9 @@ type ( ChemoClassCode string AmbulanceFacilityCode string AmbulanceNeedsCode string + RefTypeCode string + AllPaymentMethodCode string + SEPRefTypeCode string ) const ( @@ -90,6 +93,19 @@ const ( ANCAssist AmbulanceNeedsCode = "assist" // Dengan Pendampingan ANCNonassist AmbulanceNeedsCode = "non-assist" // Tanpa Pendampingan + + RTCNone RefTypeCode = "none" // Tidak Ada + RTCGov RefTypeCode = "gov" // Pemerintah + RTCPrivate RefTypeCode = "private" // Swasta + RTCBpjs RefTypeCode = "bpjs" // BPJS + + APMCJkn AllPaymentMethodCode = "jkn" // JKN + APMCJkmm AllPaymentMethodCode = "jkmm" // JKMM + APMCSpm AllPaymentMethodCode = "spm" // SPM + APMCPks AllPaymentMethodCode = "pks" // PKS + + SRTCInternal SEPRefTypeCode = "internal" // Rujukan Internal + SRTCExternal SEPRefTypeCode = "external" // Faskes Lain ) func (ec EncounterClassCode) Code() string { From c96ce50824b4e12ac2aec1e889b42f4a6b43e124 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Mon, 27 Oct 2025 14:54:04 +0700 Subject: [PATCH 4/5] wip patient + parent number --- internal/domain/main-entities/patient/entity.go | 2 ++ 1 file changed, 2 insertions(+) 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"` } From 2a66ce8361a479a1412368745be484cd39a0ec04 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Mon, 27 Oct 2025 16:20:26 +0700 Subject: [PATCH 5/5] specialist include subspecialist --- cmd/main-migration/migrations/20251027091406.sql | 2 ++ cmd/main-migration/migrations/atlas.sum | 5 +++-- internal/domain/main-entities/specialist/dto.go | 3 +++ .../domain/main-entities/specialist/entity.go | 14 ++++++++------ .../main-entities/subspecialist/base/entity.go | 16 ++++++++++++++++ .../domain/main-entities/subspecialist/entity.go | 7 ++----- 6 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 cmd/main-migration/migrations/20251027091406.sql create mode 100644 internal/domain/main-entities/subspecialist/base/entity.go 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/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"` }