change unit_id, insurance_company_id into code

This commit is contained in:
dpurbosakti
2025-11-10 13:34:04 +07:00
parent 9a5516a1e9
commit be8acefeff
7 changed files with 48 additions and 40 deletions
@@ -0,0 +1,4 @@
-- Modify "Chemo" table
ALTER TABLE "public"."Chemo" ADD COLUMN "SrcUnit_Code" text NULL;
-- Modify "Encounter" table
ALTER TABLE "public"."Encounter" DROP CONSTRAINT "fk_Encounter_InsuranceCompany", DROP CONSTRAINT "fk_Encounter_Unit", DROP COLUMN "Unit_Id", DROP COLUMN "InsuranceCompany_Id", ALTER COLUMN "Unit_Code" TYPE character varying(10), ALTER COLUMN "InsuranceCompany_Code" TYPE character varying(20), ADD CONSTRAINT "fk_Encounter_InsuranceCompany" FOREIGN KEY ("InsuranceCompany_Code") REFERENCES "public"."InsuranceCompany" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_Encounter_Unit" FOREIGN KEY ("Unit_Code") REFERENCES "public"."Unit" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION;
+26 -25
View File
@@ -1,4 +1,4 @@
h1:CY3tmVMc8TOrAWeo+JbrRmrP/i5EAJ+c/ZA5/PEgxho= h1:o5Hy+7GMNij47fSD0WmODLv/+50U8aJ5oI2zZ657Bm4=
20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k=
20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0=
20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI=
@@ -75,27 +75,28 @@ h1:CY3tmVMc8TOrAWeo+JbrRmrP/i5EAJ+c/ZA5/PEgxho=
20251106040137.sql h1:ppcqkVoT0o9jZcjI/TN7LuaPxXhJQhnIXEJtloP/46o= 20251106040137.sql h1:ppcqkVoT0o9jZcjI/TN7LuaPxXhJQhnIXEJtloP/46o=
20251106041333.sql h1:2JkxyelQ/EeB+boL5bfpnzefw32ttEGKvKchtQjWmAU= 20251106041333.sql h1:2JkxyelQ/EeB+boL5bfpnzefw32ttEGKvKchtQjWmAU=
20251106042006.sql h1:ruppYa1kAJQUU3ufQBbKGMcXrGbGJJiRPclT+dNc/YQ= 20251106042006.sql h1:ruppYa1kAJQUU3ufQBbKGMcXrGbGJJiRPclT+dNc/YQ=
20251106050412.sql h1:MiEMJ1HCFYnalKuq3Z38xJeogfBAMqsTv2sG4EF8dDw= 20251106050412.sql h1:1002KYtHd8AwrQTMewbs/PPHDylHDghigE/3S7PVdMA=
20251106063418.sql h1:y3veDJPjKekOWLCZek/LgQwXPRhZtOppTfUXiqoL95s= 20251106063418.sql h1:jPW/gBnbFl4RO39lQ0ZMDtYA6xbhyD6CgQupT50HmaY=
20251106071906.sql h1:/TUZA3XpMY23qEJXdkTwlzrNMvSSl6JJniPcgAttBaw= 20251106071906.sql h1:leYGKxR3EQn794aOehf0sd/ZPmOnvBMZPy5/anGmRB4=
20251106073157.sql h1:78txeibJ602DMD7huD618ZSMt6phSRzDNPTlo0PGyrc= 20251106073157.sql h1:KASMzjjjk5UB7Zj8lCRtM1utc4ZnDjlnpZbtTe3vONE=
20251106074218.sql h1:8Xz7WywrtUnSxOHhlal53gG9rE7r86LFUt5zBFe/mIs= 20251106074218.sql h1:Z5q5deOvLaZDPhiVTN9st3/s56RepBa2YOyrMXBdj4A=
20251106081846.sql h1:jp91Bf5bxGXMiUB1VIuN6y768vb2iWwow44WfCE5J5k= 20251106081846.sql h1:P+VsWwhGt60adDIZuE/Aa38JVp/yX1rnsdpXpxASodw=
20251106082844.sql h1:RHYzRO4G1fSWwf+xc/3QezZ/Iil67cZPIgNpNz3TNhQ= 20251106082844.sql h1:Dmi5A8i9frQZvdXYPwc7f8CisZtBH8liSXq1rI6z1iM=
20251106090021.sql h1:dFDk6mq+zjbYWmfWIrHf9DiKvvoXHjrr0++zssMTWP8= 20251106090021.sql h1:4JwdKgO8T46YhyWVJUxpRIwudBDlG8QN1brSOYmgQ20=
20251106144745.sql h1:aHcr23iBFqCHer5D/SsPMXBCLjGqUYvWYfRU8jSJgIw= 20251106144745.sql h1:nqnQCzGrVJaq8ilOEOGXeRUL1dolj+OPWKuP8A92FRA=
20251107012049.sql h1:hu/7NHhnAkT4xK0RNtqmMDdH1Bo5EZbl7itDRjiCT+g= 20251107012049.sql h1:Pff4UqltGS3clSlGr0qq8CQM56L29wyxY0FC/N/YAhU=
20251107064812.sql h1:sfCXDQYnMf0ddrQ9oYljWJLLSt9NJjJV6o8VS3p7aZE= 20251107064812.sql h1:GB9a0ZfMYTIoGNmKUG+XcYUsTnRMFfT4/dAD71uCPc4=
20251107064937.sql h1:DlYGJ9LZFwZyR7jBP5zaGB128aIc4HAixBKPYCz9EkY= 20251107064937.sql h1:IC5pw1Ifj30hiE6dr5NMHXaSHoQI+vRd40N5ABgBHRI=
20251107071420.sql h1:ynCdZAd2utLl+FhtWZwtahNXgIVOvuk3s/rOq7lfXA4= 20251107071420.sql h1:9NO3iyLEXEtWa2kSRjM/8LyzuVIk6pdFL2SuheWjB08=
20251107074318.sql h1:WE9cPhibWtZ0dbu1VEGirTeY6ijFYGMNhHdBtM32kOc= 20251107074318.sql h1:7fHbSRrdjOmHh/xwnjCLwoiB5cW5zeH+uxLV0vZbkIA=
20251107075050.sql h1:8tvneruqdynDOaJK1+0z4CH7YXZStZpGdqwIeOMLik4= 20251107075050.sql h1:np+3uTOnU9QNtK7Knaw8eRMhkyB9AwrtSNHphOBxbHY=
20251107080604.sql h1:8c4jd4Tql7tcdhbI9NS0tgvN+ADu9FnCf8wMUbmW7A0= 20251107080604.sql h1:cXDBLPJDVWLTG6yEJqkJsOQ7p7VYxLM2SY+mwO8qSHo=
20251107081830.sql h1:SAAe3lmsm9vGXuSEsDdl7ad0EAxP5CMmFRDEgp9M7yY= 20251107081830.sql h1:/S7OQZo4ZnK80t28g/JyiOTZtmWG/dP5Wg2zXNMQ/iE=
20251107091033.sql h1:JLdX/u7GUdBfjrPrMSNAqc8HtSoj0YA9iW9Vc6FJZdw= 20251107091033.sql h1:/cbkF1nO/IjNSIfDJJx456KJtQ9rWFXOBFAkR/M2xiE=
20251107091209.sql h1:CzhYtwAwT+GHrbqcagnJE+v3mbl/rObf1IJaLCKlzrs= 20251107091209.sql h1:jrLQOUeV8ji2fg0pnEcs1bw4ANUxzTSMXC/rrHLIY+M=
20251107091541.sql h1:+3ZyWJTftDY2JeWThXuIxGWpUBnyMPyOyY4jBjdWYJI= 20251107091541.sql h1:6UqbhQQRmzA2+eKu5lIvkwOkk+lH70QLZC8Pjpjcq68=
20251110012217.sql h1:f4Z8TuGc+XMSJ+Ekn4/PeHRE2FlHWkc5gKPJB0hAX7c= 20251110012217.sql h1:C9HpX0iyHzKjyNv/5DSAn2MCHj6MX4p5UQ/NrY7QD0w=
20251110012306.sql h1:ENPyI6Kjdk6qKJQb0yJ6MCTDPAmO1WD/uhKuCSl+jYo= 20251110012306.sql h1:J54yb27d30LBbYp9n1P66gFVRlxPguKu0kxmWIBBG8g=
20251110052049.sql h1:OrQ0acnyoQLKnTitZfnBcVr5jDslF59OFLaqT7SpdVs= 20251110052049.sql h1:1LkEGCWPe04T3D8F3VMnBP8eJgskrvCggsybNxJ7GuU=
20251110062042.sql h1:9KwldQt0NpVPR86L0T4hlkfHAGau+7CiZYgu5rF+yhg= 20251110062042.sql h1:yUUNX3EekfedaGTt5Q89a0bgZoCu/kfdXLU4iljN5Xw=
20251110063202.sql h1:z/eZpUGtTKzG0D9erH5FEg0YqXU3d/Nou5IW0IjIA9E=
@@ -21,6 +21,7 @@ type CreateDto struct {
Encounter_Id *uint `json:"encounter_id"` Encounter_Id *uint `json:"encounter_id"`
Status_Code erc.DataVerifiedCode `json:"status_code"` Status_Code erc.DataVerifiedCode `json:"status_code"`
SrcUnit_Id *uint `json:"srcUnit_id"` SrcUnit_Id *uint `json:"srcUnit_id"`
SrcUnit_Code *string `json:"srcUnit_code"`
} }
type ReadListDto struct { type ReadListDto struct {
@@ -34,6 +35,7 @@ type FilterDto struct {
Status_Code *erc.DataVerifiedCode `json:"status-code"` Status_Code *erc.DataVerifiedCode `json:"status-code"`
VerifiedBy_User_Id *uint `json:"verifiedBy-user-id"` VerifiedBy_User_Id *uint `json:"verifiedBy-user-id"`
SrcUnit_Id *uint `json:"srcUnit-id"` SrcUnit_Id *uint `json:"srcUnit-id"`
SrcUnit_Code *string `json:"srcUnit-code"`
} }
type ReadDetailDto struct { type ReadDetailDto struct {
@@ -73,6 +75,7 @@ type ResponseDto struct {
VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"`
VerifiedBy *eus.User `json:"verifiedBy,omitempty"` VerifiedBy *eus.User `json:"verifiedBy,omitempty"`
SrcUnit_Id *uint `json:"srcUnit_id"` SrcUnit_Id *uint `json:"srcUnit_id"`
SrcUnit_Code *string `json:"srcUnit_code"`
SrcUnit *eun.Unit `json:"srcUnit,omitempty"` SrcUnit *eun.Unit `json:"srcUnit,omitempty"`
} }
@@ -85,6 +88,7 @@ func (d Chemo) ToResponse() ResponseDto {
VerifiedBy_User_Id: d.VerifiedBy_User_Id, VerifiedBy_User_Id: d.VerifiedBy_User_Id,
VerifiedBy: d.VerifiedBy, VerifiedBy: d.VerifiedBy,
SrcUnit_Id: d.SrcUnit_Id, SrcUnit_Id: d.SrcUnit_Id,
SrcUnit_Code: d.SrcUnit_Code,
SrcUnit: d.SrcUnit, SrcUnit: d.SrcUnit,
} }
resp.Main = d.Main resp.Main = d.Main
@@ -20,6 +20,7 @@ type Chemo struct {
VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"` VerifiedBy_User_Id *uint `json:"verifiedBy_user_id"`
VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"` VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"`
SrcUnit_Id *uint `json:"src_unit_id"` SrcUnit_Id *uint `json:"src_unit_id"`
SrcUnit_Code *string `json:"src_unit_code"`
SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Id;references:Id"` SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Id;references:Id"`
Bed *string `json:"bed" gorm:"size:1024"` Bed *string `json:"bed" gorm:"size:1024"`
Needs *string `json:"needs" gorm:"size:2048"` Needs *string `json:"needs" gorm:"size:2048"`
@@ -38,12 +38,12 @@ type CreateDto struct {
Class_Code ere.EncounterClassCode `json:"class_code" validate:"maxLength=10"` Class_Code ere.EncounterClassCode `json:"class_code" validate:"maxLength=10"`
SubClass_Code *string `json:"subClass_code" validate:"maxLength=10"` // for sub SubClass_Code *string `json:"subClass_code" validate:"maxLength=10"` // for sub
Infra_Id *uint16 `json:"infra_id"` // for inpatient Infra_Id *uint16 `json:"infra_id"` // for inpatient
Unit_Id *uint `json:"unit_id"` Unit_Code *string `json:"unit_code"`
Specialist_Code *string `json:"specialist_code"` Specialist_Code *string `json:"specialist_code"`
Subspecialist_Code *string `json:"subspecialist_code"` Subspecialist_Code *string `json:"subspecialist_code"`
VisitDate time.Time `json:"visitDate"` VisitDate time.Time `json:"visitDate"`
PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"` PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"`
InsuranceCompany_Id *uint `json:"insuranceCompany_id"` InsuranceCompany_Code *string `json:"insuranceCompany_code"`
Member_Number *string `json:"member_number" validate:"maxLength=20"` Member_Number *string `json:"member_number" validate:"maxLength=20"`
Ref_Number *string `json:"ref_number" validate:"maxLength=20"` Ref_Number *string `json:"ref_number" validate:"maxLength=20"`
Trx_Number *string `json:"trx_number" validate:"maxLength=20"` Trx_Number *string `json:"trx_number" validate:"maxLength=20"`
@@ -75,7 +75,7 @@ type FilterDto struct {
Patient *ep.Patient `json:"patient,omitempty"` Patient *ep.Patient `json:"patient,omitempty"`
RegisteredAt *time.Time `json:"registeredAt"` RegisteredAt *time.Time `json:"registeredAt"`
Class_Code ere.EncounterClassCode `json:"class-code" validate:"maxLength=10"` Class_Code ere.EncounterClassCode `json:"class-code" validate:"maxLength=10"`
Unit_Id *uint `json:"unit-id"` Unit_Code *string `json:"unit-code"`
Specialist_Code *string `json:"specialist-code"` Specialist_Code *string `json:"specialist-code"`
Subspecialist_Code *string `json:"subspecialist-code"` Subspecialist_Code *string `json:"subspecialist-code"`
VisitDate time.Time `json:"visitDate"` VisitDate time.Time `json:"visitDate"`
@@ -149,7 +149,7 @@ type ResponseDto struct {
Patient *ep.Patient `json:"patient,omitempty"` Patient *ep.Patient `json:"patient,omitempty"`
RegisteredAt *time.Time `json:"registeredAt"` RegisteredAt *time.Time `json:"registeredAt"`
Class_Code ere.EncounterClassCode `json:"class_code"` Class_Code ere.EncounterClassCode `json:"class_code"`
Unit_Id *uint `json:"unit_id"` Unit_Code *string `json:"unit_code"`
Specialist_Code *string `json:"specialist_code"` Specialist_Code *string `json:"specialist_code"`
Specialist *es.Specialist `json:"specialist,omitempty"` Specialist *es.Specialist `json:"specialist,omitempty"`
Subspecialist_Code *string `json:"subspecialist_code"` Subspecialist_Code *string `json:"subspecialist_code"`
@@ -157,7 +157,7 @@ type ResponseDto struct {
Unit *eu.Unit `json:"unit,omitempty"` Unit *eu.Unit `json:"unit,omitempty"`
VisitDate time.Time `json:"visitDate"` VisitDate time.Time `json:"visitDate"`
PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code"` PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code"`
InsuranceCompany_Id *uint `json:"insuranceCompany_id"` InsuranceCompany_Code *string `json:"insuranceCompany_code"`
Member_Number *string `json:"member_number"` Member_Number *string `json:"member_number"`
Ref_Number *string `json:"ref_number"` Ref_Number *string `json:"ref_number"`
Trx_Number *string `json:"trx_number"` Trx_Number *string `json:"trx_number"`
@@ -196,7 +196,7 @@ func (d Encounter) ToResponse() ResponseDto {
Patient: d.Patient, Patient: d.Patient,
RegisteredAt: d.RegisteredAt, RegisteredAt: d.RegisteredAt,
Class_Code: d.Class_Code, Class_Code: d.Class_Code,
Unit_Id: d.Unit_Id, Unit_Code: d.Unit_Code,
Unit: d.Unit, Unit: d.Unit,
Specialist_Code: d.Specialist_Code, Specialist_Code: d.Specialist_Code,
Specialist: d.Specialist, Specialist: d.Specialist,
@@ -204,7 +204,7 @@ func (d Encounter) ToResponse() ResponseDto {
Subspecialist: d.Subspecialist, Subspecialist: d.Subspecialist,
VisitDate: d.VisitDate, VisitDate: d.VisitDate,
PaymentMethod_Code: d.PaymentMethod_Code, PaymentMethod_Code: d.PaymentMethod_Code,
InsuranceCompany_Id: d.InsuranceCompany_Id, InsuranceCompany_Code: d.InsuranceCompany_Code,
Member_Number: d.Member_Number, Member_Number: d.Member_Number,
Ref_Number: d.Ref_Number, Ref_Number: d.Ref_Number,
Trx_Number: d.Trx_Number, Trx_Number: d.Trx_Number,
@@ -29,9 +29,8 @@ type Encounter struct {
Patient *ep.Patient `json:"patient,omitempty" gorm:"foreignKey:Patient_Id;references:Id"` Patient *ep.Patient `json:"patient,omitempty" gorm:"foreignKey:Patient_Id;references:Id"`
RegisteredAt *time.Time `json:"registeredAt"` RegisteredAt *time.Time `json:"registeredAt"`
Class_Code ere.EncounterClassCode `json:"class_code" gorm:"not null;size:10"` Class_Code ere.EncounterClassCode `json:"class_code" gorm:"not null;size:10"`
Unit_Id *uint `json:"unit_id"`
Unit_Code *string `json:"unit_code"` Unit_Code *string `json:"unit_code"`
Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Id;references:Id"` Unit *eu.Unit `json:"unit,omitempty" gorm:"foreignKey:Unit_Code;references:Code"`
Specialist_Code *string `json:"specialist_code"` Specialist_Code *string `json:"specialist_code"`
Specialist *es.Specialist `json:"specialist,omitempty" gorm:"foreignKey:Specialist_Code;references:Code"` Specialist *es.Specialist `json:"specialist,omitempty" gorm:"foreignKey:Specialist_Code;references:Code"`
Subspecialist_Code *string `json:"subspecialist_code"` Subspecialist_Code *string `json:"subspecialist_code"`
@@ -40,9 +39,8 @@ type Encounter struct {
StartedAt *time.Time `json:"startedAt"` StartedAt *time.Time `json:"startedAt"`
FinishedAt *time.Time `json:"finishedAt"` FinishedAt *time.Time `json:"finishedAt"`
PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"` PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"`
InsuranceCompany_Id *uint `json:"insuranceCompany_id"`
InsuranceCompany_Code *string `json:"insuranceCompany_code"` InsuranceCompany_Code *string `json:"insuranceCompany_code"`
InsuranceCompany *ei.InsuranceCompany `json:"insuranceCompany,omitempty" gorm:"foreignKey:InsuranceCompany_Id;references:Id"` InsuranceCompany *ei.InsuranceCompany `json:"insuranceCompany,omitempty" gorm:"foreignKey:InsuranceCompany_Code;references:Code"`
Member_Number *string `json:"memberNumber" gorm:"unique;size:20"` Member_Number *string `json:"memberNumber" gorm:"unique;size:20"`
RefType_Code *ere.RefTypeCode `json:"refType_code"` RefType_Code *ere.RefTypeCode `json:"refType_code"`
Ref_Number *string `json:"refNumber" gorm:"unique;size:20"` Ref_Number *string `json:"refNumber" gorm:"unique;size:20"`
@@ -76,12 +76,12 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
data.Patient_Id = inputSrc.Patient_Id data.Patient_Id = inputSrc.Patient_Id
data.RegisteredAt = inputSrc.RegisteredAt data.RegisteredAt = inputSrc.RegisteredAt
data.Class_Code = inputSrc.Class_Code data.Class_Code = inputSrc.Class_Code
data.Unit_Id = inputSrc.Unit_Id data.Unit_Code = inputSrc.Unit_Code
data.Specialist_Code = inputSrc.Specialist_Code data.Specialist_Code = inputSrc.Specialist_Code
data.Subspecialist_Code = inputSrc.Subspecialist_Code data.Subspecialist_Code = inputSrc.Subspecialist_Code
data.VisitDate = inputSrc.VisitDate data.VisitDate = inputSrc.VisitDate
data.PaymentMethod_Code = inputSrc.PaymentMethod_Code data.PaymentMethod_Code = inputSrc.PaymentMethod_Code
data.InsuranceCompany_Id = inputSrc.InsuranceCompany_Id data.InsuranceCompany_Code = inputSrc.InsuranceCompany_Code
data.Member_Number = inputSrc.Member_Number data.Member_Number = inputSrc.Member_Number
data.Ref_Number = inputSrc.Ref_Number data.Ref_Number = inputSrc.Ref_Number
data.Trx_Number = inputSrc.Trx_Number data.Trx_Number = inputSrc.Trx_Number
@@ -98,7 +98,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
func setDataUpdate(src e.UpdateDto, dst *e.Encounter) { func setDataUpdate(src e.UpdateDto, dst *e.Encounter) {
dst.Appointment_Doctor_Code = src.Appointment_Doctor_Code dst.Appointment_Doctor_Code = src.Appointment_Doctor_Code
dst.Responsible_Doctor_Code = src.Responsible_Doctor_Code dst.Responsible_Doctor_Code = src.Responsible_Doctor_Code
dst.Unit_Id = src.Unit_Id dst.Unit_Code = src.Unit_Code
dst.Specialist_Code = src.Specialist_Code dst.Specialist_Code = src.Specialist_Code
dst.Subspecialist_Code = src.Subspecialist_Code dst.Subspecialist_Code = src.Subspecialist_Code
dst.VisitDate = src.VisitDate dst.VisitDate = src.VisitDate
@@ -810,7 +810,7 @@ func insertDataSubClassAmbulatory(input e.CreateDto, soapiData []es.CreateDto, e
chemoCreate := ec.CreateDto{ chemoCreate := ec.CreateDto{
Encounter_Id: &input.Id, Encounter_Id: &input.Id,
Status_Code: erc.DVCNew, Status_Code: erc.DVCNew,
SrcUnit_Id: input.Unit_Id, SrcUnit_Code: input.Unit_Code,
} }
// create data chemo // create data chemo