From 3c7b35ef04578eb3a119e47c77dfae5b7b8a5422 Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Mon, 10 Nov 2025 12:29:58 +0700 Subject: [PATCH] several tables ids into codes --- .../migrations/20251110052049.sql | 14 ++++++++++ cmd/main-migration/migrations/atlas.sum | 3 +- .../main-entities/consultation/entity.go | 16 ++++++----- .../main-entities/control-letter/entity.go | 28 +++++++++++-------- .../domain/main-entities/encounter/entity.go | 4 +++ .../internal-reference/entity.go | 2 ++ .../main-entities/practice-schedule/entity.go | 17 +++++------ .../responsible-doctor-hist/entity.go | 1 + .../main-entities/therapy-protocol/entity.go | 5 ++-- .../use-case/main-use-case/encounter/case.go | 4 +-- .../use-case/main-use-case/encounter/lib.go | 5 ++-- 11 files changed, 65 insertions(+), 34 deletions(-) create mode 100644 cmd/main-migration/migrations/20251110052049.sql diff --git a/cmd/main-migration/migrations/20251110052049.sql b/cmd/main-migration/migrations/20251110052049.sql new file mode 100644 index 00000000..4a1d74d7 --- /dev/null +++ b/cmd/main-migration/migrations/20251110052049.sql @@ -0,0 +1,14 @@ +-- Modify "Consultation" table +ALTER TABLE "public"."Consultation" ADD COLUMN "DstUnit_Code" text NULL, ADD COLUMN "DstDoctor_Code" text NULL; +-- Modify "ControlLetter" table +ALTER TABLE "public"."ControlLetter" ADD COLUMN "Unit_Code" text NULL, ADD COLUMN "Specialist_Code" text NULL, ADD COLUMN "Subspecialist_Code" text NULL, ADD COLUMN "Doctor_Code" text NULL; +-- Modify "Encounter" table +ALTER TABLE "public"."Encounter" ADD COLUMN "Specialist_Code" text NULL, ADD COLUMN "Subspecialist_Code" text NULL, ADD COLUMN "Appointment_Doctor_Code" text NULL, ADD COLUMN "Responsible_Doctor_Code" text NULL; +-- Modify "InternalReference" table +ALTER TABLE "public"."InternalReference" ADD COLUMN "Unit_Code" text NULL, ADD COLUMN "Doctor_Code" text NULL; +-- Modify "PracticeSchedule" table +ALTER TABLE "public"."PracticeSchedule" ADD COLUMN "Doctor_Code" text NULL; +-- Modify "ResponsibleDoctorHist" table +ALTER TABLE "public"."ResponsibleDoctorHist" ADD COLUMN "Doctor_Code" text NULL; +-- Modify "TherapyProtocol" table +ALTER TABLE "public"."TherapyProtocol" ADD COLUMN "Doctor_Code" text NULL; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 1a259164..176a43a0 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:nxld1x0gKb2nqU+0YPNq5FaAhodpZwnaSuBWyZrPO+0= +h1:O5HiMUpKZtVkRc3VxZfFYuLYjUJhPepU5bMnO87FdPI= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -97,3 +97,4 @@ h1:nxld1x0gKb2nqU+0YPNq5FaAhodpZwnaSuBWyZrPO+0= 20251107091541.sql h1:6UqbhQQRmzA2+eKu5lIvkwOkk+lH70QLZC8Pjpjcq68= 20251110012217.sql h1:C9HpX0iyHzKjyNv/5DSAn2MCHj6MX4p5UQ/NrY7QD0w= 20251110012306.sql h1:J54yb27d30LBbYp9n1P66gFVRlxPguKu0kxmWIBBG8g= +20251110052049.sql h1:1LkEGCWPe04T3D8F3VMnBP8eJgskrvCggsybNxJ7GuU= diff --git a/internal/domain/main-entities/consultation/entity.go b/internal/domain/main-entities/consultation/entity.go index 2fda8bd0..06a44d57 100644 --- a/internal/domain/main-entities/consultation/entity.go +++ b/internal/domain/main-entities/consultation/entity.go @@ -15,11 +15,13 @@ type Consultation struct { Encounter *ee.Encounter `json:"encounter" gorm:"foreignKey:Encounter_Id;references:Id"` Date *time.Time `json:"date"` - Problem *string `json:"case" gorm:"size:10240"` - Solution *string `json:"solution" gorm:"size:10240"` - DstUnit_Id *uint `json:"dstUnit_id"` - DstUnit *eu.Unit `json:"dstUnit" gorm:"foreignKey:DstUnit_Id;references:Id"` - DstDoctor_Id *uint `json:"dstDoctor_id"` - DstDoctor *ed.Doctor `json:"dstDoctor" gorm:"foreignKey:DstDoctor_Id;references:Id"` - RepliedAt *time.Time `json:"repliedAt"` + Problem *string `json:"case" gorm:"size:10240"` + Solution *string `json:"solution" gorm:"size:10240"` + DstUnit_Id *uint `json:"dstUnit_id"` + DstUnit_Code *string `json:"dstUnit_code"` + DstUnit *eu.Unit `json:"dstUnit" gorm:"foreignKey:DstUnit_Id;references:Id"` + DstDoctor_Id *uint `json:"dstDoctor_id"` + DstDoctor_Code *string `json:"dstDoctor_code"` + DstDoctor *ed.Doctor `json:"dstDoctor" gorm:"foreignKey:DstDoctor_Id;references:Id"` + RepliedAt *time.Time `json:"repliedAt"` } diff --git a/internal/domain/main-entities/control-letter/entity.go b/internal/domain/main-entities/control-letter/entity.go index abaf4a72..d0bc0a45 100644 --- a/internal/domain/main-entities/control-letter/entity.go +++ b/internal/domain/main-entities/control-letter/entity.go @@ -12,16 +12,20 @@ import ( ) type ControlLetter struct { - ecore.Main // adjust this according to the needs - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter" gorm:"foreignKey:Encounter_Id;references:Id"` - Unit_Id *uint `json:"unit_id"` - Unit *eu.Unit `json:"unit" gorm:"foreignKey:Unit_Id;references:Id"` - Specialist_Id *uint `json:"specialist_id"` - Specialist *es.Specialist `json:"specialist" gorm:"foreignKey:Specialist_Id;references:Id"` - Subspecialist_Id *uint `json:"subspecialist_id"` - Subspecialist *ess.Subspecialist `json:"subspecialist" gorm:"foreignKey:Subspecialist_Id;references:Id"` - Doctor_Id *uint `json:"doctor_id"` - Doctor *ed.Doctor `json:"doctor" gorm:"foreignKey:Doctor_Id;references:Id"` - Date *time.Time `json:"date"` + ecore.Main // adjust this according to the needs + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter" gorm:"foreignKey:Encounter_Id;references:Id"` + Unit_Id *uint `json:"unit_id"` + Unit_Code *string `json:"unit_code"` + Unit *eu.Unit `json:"unit" gorm:"foreignKey:Unit_Id;references:Id"` + Specialist_Id *uint `json:"specialist_id"` + Specialist_Code *string `json:"specialist_code"` + Specialist *es.Specialist `json:"specialist" gorm:"foreignKey:Specialist_Id;references:Id"` + Subspecialist_Id *uint `json:"subspecialist_id"` + Subspecialist_Code *string `json:"subspecialist_code"` + Subspecialist *ess.Subspecialist `json:"subspecialist" gorm:"foreignKey:Subspecialist_Id;references:Id"` + Doctor_Id *uint `json:"doctor_id"` + Doctor_Code *string `json:"doctor_code"` + Doctor *ed.Doctor `json:"doctor" gorm:"foreignKey:Doctor_Id;references:Id"` + Date *time.Time `json:"date"` } diff --git a/internal/domain/main-entities/encounter/entity.go b/internal/domain/main-entities/encounter/entity.go index bfd70333..d3436c7a 100644 --- a/internal/domain/main-entities/encounter/entity.go +++ b/internal/domain/main-entities/encounter/entity.go @@ -32,9 +32,11 @@ type Encounter struct { Unit_Id *uint `json:"unit_id"` Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id;references:Id"` Specialist_Id *uint16 `json:"specialist_id"` + Specialist_Code *string `json:"specialist_code"` Specialist *es.Specialist `json:"specialist,omitempty" gorm:"foreignKey:Specialist_Id;references:Id"` Subspecialist_Id *uint16 `json:"subspecialist_id"` Subspecialist *ess.Subspecialist `json:"subspecialist,omitempty" gorm:"foreignKey:Subspecialist_Id;references:Id"` + Subspecialist_Code *string `json:"subspecialist_code"` VisitDate time.Time `json:"visitDate"` StartedAt *time.Time `json:"startedAt"` FinishedAt *time.Time `json:"finishedAt"` @@ -46,10 +48,12 @@ type Encounter struct { 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"` + Appointment_Doctor_Code *string `json:"appointment_doctor_code"` Appointment_Doctor *ed.Doctor `json:"appointment_doctor,omitempty" gorm:"foreignKey:Appointment_Doctor_Id;references:Id"` Adm_Employee_Id *uint `json:"adm_employee_id"` Adm_Employee *ee.Employee `json:"adm_employee,omitempty" gorm:"foreignKey:Adm_Employee_Id;references:Id"` Responsible_Doctor_Id *uint `json:"responsible_doctor_id"` + Responsible_Doctor_Code *string `json:"responsible_doctor_code"` Responsible_Doctor *ed.Doctor `json:"responsible_doctor,omitempty" gorm:"foreignKey:Responsible_Doctor_Id;references:Id"` Discharge_Method_Code *ere.DischargeMethodCode `json:"discharge_method_code" gorm:"size:16"` RefSource_Name *string `json:"refSource_name" gorm:"size:100"` diff --git a/internal/domain/main-entities/internal-reference/entity.go b/internal/domain/main-entities/internal-reference/entity.go index 060b21aa..71045b09 100644 --- a/internal/domain/main-entities/internal-reference/entity.go +++ b/internal/domain/main-entities/internal-reference/entity.go @@ -12,8 +12,10 @@ type InternalReference struct { ecore.Main Encounter_Id *uint `json:"encounter_id"` Unit_Id *uint16 `json:"unit_id"` + Unit_Code *string `json:"unit_code"` Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id;references:Id"` Doctor_Id *uint `json:"doctor_id"` + Doctor_Code *string `json:"doctor_code"` Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` Status_Code *erc.DataApprovalCode `json:"status_code"` } diff --git a/internal/domain/main-entities/practice-schedule/entity.go b/internal/domain/main-entities/practice-schedule/entity.go index 524867c8..213d4495 100644 --- a/internal/domain/main-entities/practice-schedule/entity.go +++ b/internal/domain/main-entities/practice-schedule/entity.go @@ -8,12 +8,13 @@ import ( ) type PracticeSchedule struct { - ecore.Main // adjust this according to the needs - Doctor_Id *uint `json:"doctor_id"` - Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` - Unit_Code *string `json:"unit_code"` - Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Code;references:Code"` - Day_Code *erc.DayCode `json:"day_code"` - StartTime *string `json:"startTime" gorm:"size:5"` - EndTime *string `json:"endTime" gorm:"size:5"` + ecore.Main // adjust this according to the needs + Doctor_Id *uint `json:"doctor_id"` + Doctor_Code *string `json:"doctor_code"` + Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` + Unit_Code *string `json:"unit_code"` + Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Code;references:Code"` + Day_Code *erc.DayCode `json:"day_code"` + StartTime *string `json:"startTime" gorm:"size:5"` + EndTime *string `json:"endTime" gorm:"size:5"` } diff --git a/internal/domain/main-entities/responsible-doctor-hist/entity.go b/internal/domain/main-entities/responsible-doctor-hist/entity.go index c9df2c13..75aa90f6 100644 --- a/internal/domain/main-entities/responsible-doctor-hist/entity.go +++ b/internal/domain/main-entities/responsible-doctor-hist/entity.go @@ -10,6 +10,7 @@ type ResponsibleDoctorHist struct { ecore.Main // adjust this according to the needs Encounter_Id *uint `json:"encounter_id"` Doctor_Id *uint `json:"doctor_id"` + Doctor_Code *string `json:"doctor_code"` Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` StartedAt *time.Time `json:"startedAt"` FinishedAt *time.Time `json:"finishedAt"` diff --git a/internal/domain/main-entities/therapy-protocol/entity.go b/internal/domain/main-entities/therapy-protocol/entity.go index f5ec318a..a91e18eb 100644 --- a/internal/domain/main-entities/therapy-protocol/entity.go +++ b/internal/domain/main-entities/therapy-protocol/entity.go @@ -13,8 +13,9 @@ type TherapyProtocol struct { Encounter_Id *uint `json:"encounter_id" gorm:"not null"` Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` - Doctor_Id *uint `json:"doctor_id"` - Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` + Doctor_Id *uint `json:"doctor_id"` + Doctor_Code *string `json:"doctor_code"` + Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Id;references:Id"` Anamnesis *string `json:"anamnesis" gorm:"size:2048"` MedicalDiagnoses *string `json:"medicalDiagnoses"` diff --git a/internal/use-case/main-use-case/encounter/case.go b/internal/use-case/main-use-case/encounter/case.go index 533b2264..e1643d83 100644 --- a/internal/use-case/main-use-case/encounter/case.go +++ b/internal/use-case/main-use-case/encounter/case.go @@ -802,8 +802,8 @@ func ApproveSwitchUnit(input e.ApproveUnitDto) (*d.Data, error) { // update data response data.Responsible_Doctor_Id = irData.Doctor_Id data.Unit = irData.Unit - data.Specialist_Id = irData.Doctor.Specialist_Id - data.Subspecialist_Id = irData.Doctor.Subspecialist_Id + data.Specialist_Code = irData.Doctor.Specialist_Code + data.Subspecialist_Code = irData.Doctor.Subspecialist_Code pl.SetLogInfo(&event, nil, "complete") return nil diff --git a/internal/use-case/main-use-case/encounter/lib.go b/internal/use-case/main-use-case/encounter/lib.go index 134f5594..8772a2f4 100644 --- a/internal/use-case/main-use-case/encounter/lib.go +++ b/internal/use-case/main-use-case/encounter/lib.go @@ -4,6 +4,7 @@ import ( // std "errors" eir "simrs-vx/internal/domain/main-entities/internal-reference" + // external dg "github.com/karincake/apem/db-gorm-pg" gh "github.com/karincake/getuk" @@ -333,8 +334,8 @@ func updateEncounterApproveSwitchUnit(input eir.InternalReference, event *pl.Eve Updates(map[string]interface{}{ "Responsible_Doctor_Id": input.Doctor_Id, "Unit_Id": input.Unit_Id, - "Specialist_Id": input.Doctor.Specialist_Id, - "Subspecialist_Id": input.Doctor.Subspecialist_Id, + "Specialist_Code": input.Doctor.Specialist_Code, + "Subspecialist_Code": input.Doctor.Subspecialist_Code, }).Error; err != nil { event.Status = "failed" event.ErrInfo = pl.ErrorInfo{