From 8abead652f8914d60d5f8b791868c8bd4a0ebf7d Mon Sep 17 00:00:00 2001 From: vanilia Date: Mon, 13 Oct 2025 15:20:24 +0700 Subject: [PATCH 1/5] rename table to internal reference --- cmd/main-migration/migrations/20251013081808.sql | 16 ++++++++++++++++ cmd/main-migration/migrations/atlas.sum | 5 +++-- .../entity.go | 4 ++-- internal/interface/migration/main-entities.go | 4 ++-- 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 cmd/main-migration/migrations/20251013081808.sql rename internal/domain/main-entities/{checkout-polies => internal-reference}/entity.go (91%) diff --git a/cmd/main-migration/migrations/20251013081808.sql b/cmd/main-migration/migrations/20251013081808.sql new file mode 100644 index 00000000..03bf02ce --- /dev/null +++ b/cmd/main-migration/migrations/20251013081808.sql @@ -0,0 +1,16 @@ +-- Create "InternalReference" table +CREATE TABLE "public"."InternalReference" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Unit_Id" integer NULL, + "Doctor_Id" bigint NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_InternalReference_Doctor" FOREIGN KEY ("Doctor_Id") REFERENCES "public"."Doctor" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_InternalReference_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_InternalReference_Unit" FOREIGN KEY ("Unit_Id") REFERENCES "public"."Unit" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Drop "CheckoutPolies" table +DROP TABLE "public"."CheckoutPolies"; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index d8f19f7d..4d946518 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:0s0nd0srbuZbIdiQHvRt1PALWD+XDaCk7Qg/iAk4wY0= +h1:oj0SGm9EAjoGuXcWbue8k9Uqy/W1N7iFjPky7Cg7G6s= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -38,4 +38,5 @@ h1:0s0nd0srbuZbIdiQHvRt1PALWD+XDaCk7Qg/iAk4wY0= 20251010070721.sql h1:5NQUk/yOV6sABLCB7swx++YIOyJe6MnU+yt1nRzde5w= 20251010072711.sql h1:ZJNqR2piyu8xJhBvVABSlnGEoKSKae3wuEs+wshPe4k= 20251013044536.sql h1:0Xjw8fNILiT8nnfrJDZgQnPf3dntmIoilbapnih8AE4= -20251013051438.sql h1:aREcqpdUTiA2T9/f1HOtfa4BUiPRa50RATZ4ETu1syk= +20251013051438.sql h1:lfSuw5mgJnePBJamvhZ81osFIouXeiIEiSZ/evdwo48= +20251013081808.sql h1:AqNqfPWEI8fgozZ+EhIT1pKsbN+0R8njTTu++rF6dKA= diff --git a/internal/domain/main-entities/checkout-polies/entity.go b/internal/domain/main-entities/internal-reference/entity.go similarity index 91% rename from internal/domain/main-entities/checkout-polies/entity.go rename to internal/domain/main-entities/internal-reference/entity.go index d329fc52..56dcdc19 100644 --- a/internal/domain/main-entities/checkout-polies/entity.go +++ b/internal/domain/main-entities/internal-reference/entity.go @@ -1,4 +1,4 @@ -package checkout_polies +package internal_reference import ( ecore "simrs-vx/internal/domain/base-entities/core" @@ -7,7 +7,7 @@ import ( eu "simrs-vx/internal/domain/main-entities/unit" ) -type CheckoutPolies struct { +type InternalReference struct { ecore.Main Encounter_Id *uint `json:"encounter_id"` Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index b1875a8f..41bb18db 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -4,7 +4,6 @@ import ( adime "simrs-vx/internal/domain/main-entities/adime" ambulatory "simrs-vx/internal/domain/main-entities/ambulatory" appointment "simrs-vx/internal/domain/main-entities/appointment" - checkoutpolies "simrs-vx/internal/domain/main-entities/checkout-polies" chemo "simrs-vx/internal/domain/main-entities/chemo" consultation "simrs-vx/internal/domain/main-entities/consultation" counter "simrs-vx/internal/domain/main-entities/counter" @@ -25,6 +24,7 @@ import ( inpatient "simrs-vx/internal/domain/main-entities/inpatient" installation "simrs-vx/internal/domain/main-entities/installation" insurancecompany "simrs-vx/internal/domain/main-entities/insurance-company" + internalreference "simrs-vx/internal/domain/main-entities/internal-reference" item "simrs-vx/internal/domain/main-entities/item" itemprice "simrs-vx/internal/domain/main-entities/item-price" laborant "simrs-vx/internal/domain/main-entities/laborant" @@ -152,6 +152,6 @@ func getMainEntities() []any { &chemo.Chemo{}, &midwife.Midwife{}, &postalregion.PostalRegion{}, - &checkoutpolies.CheckoutPolies{}, + &internalreference.InternalReference{}, } } From ec08939fa81068c761430e39508992762eaa57fe Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Tue, 14 Oct 2025 13:03:26 +0700 Subject: [PATCH 2/5] add sever table for vclaim, update encounter --- cmd/bpjs-api/config.yml-example | 66 +++++++++++++++++++ cmd/bpjs-api/main.go | 14 ++++ .../migrations/20251014060047.sql | 36 ++++++++++ cmd/main-migration/migrations/atlas.sum | 5 +- .../bpjs-entities/vclaim-sep-hist/dto.go | 1 + .../bpjs-entities/vclaim-sep-hist/entitiy.go | 12 ++++ .../bpjs-entities/vclaim-sep-print/dto.go | 1 + .../bpjs-entities/vclaim-sep-print/entity.go | 13 ++++ .../domain/bpjs-entities/vclaim-sep/dto.go | 1 + .../bpjs-entities/vclaim-sep/entitiy.go | 11 ++++ .../domain/main-entities/encounter/entity.go | 13 ++++ .../interface/bpjs-handler/bpjs-handler.go | 52 +++++++++++++++ internal/interface/migration/main-entities.go | 8 +++ 13 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 cmd/bpjs-api/config.yml-example create mode 100644 cmd/bpjs-api/main.go create mode 100644 cmd/main-migration/migrations/20251014060047.sql create mode 100644 internal/domain/bpjs-entities/vclaim-sep-hist/dto.go create mode 100644 internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go create mode 100644 internal/domain/bpjs-entities/vclaim-sep-print/dto.go create mode 100644 internal/domain/bpjs-entities/vclaim-sep-print/entity.go create mode 100644 internal/domain/bpjs-entities/vclaim-sep/dto.go create mode 100644 internal/domain/bpjs-entities/vclaim-sep/entitiy.go create mode 100644 internal/interface/bpjs-handler/bpjs-handler.go diff --git a/cmd/bpjs-api/config.yml-example b/cmd/bpjs-api/config.yml-example new file mode 100644 index 00000000..f131a725 --- /dev/null +++ b/cmd/bpjs-api/config.yml-example @@ -0,0 +1,66 @@ +appCfg: + fullName: BPJS Bridge + codeName: simrs-vx + version: 0.1.0 + env: development + lang: en + +httpCfg: + host: + port: + +dbCfg: + dsn: + maxOpenConns: 5 + maxIdleConns: 5 + maxIdleTime: 100 + +multiDbCfg: + - dbs : + name: + dsn: + maxOpenConns: + maxIdleConns: + maxIdleTime: + - bpjs + name: bpjs + dsn: + maxOpenConns: + maxIdleConns: + maxIdleTime: + +loggerCfg: + hideTime: + hideLevel: + +msCfg: + dsn: + +langCfg: + active: + path: + fileName: + +minioCfg: + endpoint: + region: + accessKey: + secretKey: + useSsl: + bucketName: + - patient + +corsCfg: + allowedOrigin: + allowedMethod: + +satuSehatCfg: + host: localhost:8200 + +bpjsCfg: + host: localhost:8200 + +corsCfg: + allowedOrigins: + - http://example.com + allowedMethod: \ No newline at end of file diff --git a/cmd/bpjs-api/main.go b/cmd/bpjs-api/main.go new file mode 100644 index 00000000..74be3afd --- /dev/null +++ b/cmd/bpjs-api/main.go @@ -0,0 +1,14 @@ +package main + +import ( + a "github.com/karincake/apem" + d "github.com/karincake/apem/db-gorm-pg" + l "github.com/karincake/apem/logger-zerolog" + m "github.com/karincake/apem/ms-redis" + + h "simrs-vx/internal/interface/main-handler" +) + +func main() { + a.Run(h.SetRoutes(), &l.O, &m.O, &d.O) +} diff --git a/cmd/main-migration/migrations/20251014060047.sql b/cmd/main-migration/migrations/20251014060047.sql new file mode 100644 index 00000000..1d13853a --- /dev/null +++ b/cmd/main-migration/migrations/20251014060047.sql @@ -0,0 +1,36 @@ +-- Create "VClaimSepHist" table +CREATE TABLE "public"."VClaimSepHist" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "RequestPayload" text NULL, + "ResponseBody" text NULL, + "Message" text NULL, + PRIMARY KEY ("Id") +); +-- Modify "Encounter" table +ALTER TABLE "public"."Encounter" ADD COLUMN "PaymentMethod_Code" character varying(10) NULL, ADD COLUMN "InsuranceCompany_Id" bigint NULL, ADD COLUMN "Member_Number" character varying(20) NULL, ADD COLUMN "Ref_Number" character varying(20) NULL, ADD COLUMN "Trx_Number" character varying(20) NULL, ADD COLUMN "Adm_Employee_Id" bigint NULL, ADD CONSTRAINT "uni_Encounter_Member_Number" UNIQUE ("Member_Number"), ADD CONSTRAINT "uni_Encounter_Ref_Number" UNIQUE ("Ref_Number"), ADD CONSTRAINT "uni_Encounter_Trx_Number" UNIQUE ("Trx_Number"), ADD CONSTRAINT "fk_Encounter_Adm_Employee" FOREIGN KEY ("Adm_Employee_Id") REFERENCES "public"."Employee" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_Encounter_InsuranceCompany" FOREIGN KEY ("InsuranceCompany_Id") REFERENCES "public"."InsuranceCompany" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION; +-- Create "VClaimSep" table +CREATE TABLE "public"."VClaimSep" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Number" character varying(19) NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_VClaimSep_Number" UNIQUE ("Number"), + CONSTRAINT "fk_Encounter_VclaimSep" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "VClaimSepPrint" table +CREATE TABLE "public"."VClaimSepPrint" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "VclaimSep_Number" character varying(19) NULL, + "Counter" bigint NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_VClaimSepPrint_VclaimSep" FOREIGN KEY ("VclaimSep_Number") REFERENCES "public"."VClaimSep" ("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 4d946518..5b2a1d8a 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:oj0SGm9EAjoGuXcWbue8k9Uqy/W1N7iFjPky7Cg7G6s= +h1:awmI0os0fmaoSemyQuKI5+2Xb4eCH+Jgqm8dZIsXskw= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -39,4 +39,5 @@ h1:oj0SGm9EAjoGuXcWbue8k9Uqy/W1N7iFjPky7Cg7G6s= 20251010072711.sql h1:ZJNqR2piyu8xJhBvVABSlnGEoKSKae3wuEs+wshPe4k= 20251013044536.sql h1:0Xjw8fNILiT8nnfrJDZgQnPf3dntmIoilbapnih8AE4= 20251013051438.sql h1:lfSuw5mgJnePBJamvhZ81osFIouXeiIEiSZ/evdwo48= -20251013081808.sql h1:AqNqfPWEI8fgozZ+EhIT1pKsbN+0R8njTTu++rF6dKA= +20251013081808.sql h1:ijgjNX08G6GBjA/ks8EKtb7P7Y7Cg7zbhqEOruGnv6M= +20251014060047.sql h1:sX9aIpf35MbyclzP4+ULVabPTMV8E9G+6caCsg4WWbQ= diff --git a/internal/domain/bpjs-entities/vclaim-sep-hist/dto.go b/internal/domain/bpjs-entities/vclaim-sep-hist/dto.go new file mode 100644 index 00000000..778154cb --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep-hist/dto.go @@ -0,0 +1 @@ +package vclaimsephist diff --git a/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go b/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go new file mode 100644 index 00000000..a5a22da3 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go @@ -0,0 +1,12 @@ +package vclaimsephist + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type VClaimSepHist struct { + ecore.Main + RequestPayload *string `json:"requestPayload"` + ResponseBody *string `json:"responseBody"` + Message *string `json:"message"` +} diff --git a/internal/domain/bpjs-entities/vclaim-sep-print/dto.go b/internal/domain/bpjs-entities/vclaim-sep-print/dto.go new file mode 100644 index 00000000..b975dd96 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep-print/dto.go @@ -0,0 +1 @@ +package vclaimsepprint diff --git a/internal/domain/bpjs-entities/vclaim-sep-print/entity.go b/internal/domain/bpjs-entities/vclaim-sep-print/entity.go new file mode 100644 index 00000000..d1a0a156 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep-print/entity.go @@ -0,0 +1,13 @@ +package vclaimsepprint + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" + evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep" +) + +type VClaimSepPrint struct { + ecore.Main + VclaimSep_Number *string `json:"vclaimSep_number"` + VclaimSep *evs.VClaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"` + Counter *uint `json:"counter"` +} diff --git a/internal/domain/bpjs-entities/vclaim-sep/dto.go b/internal/domain/bpjs-entities/vclaim-sep/dto.go new file mode 100644 index 00000000..ce4c6f55 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep/dto.go @@ -0,0 +1 @@ +package vclaimsep diff --git a/internal/domain/bpjs-entities/vclaim-sep/entitiy.go b/internal/domain/bpjs-entities/vclaim-sep/entitiy.go new file mode 100644 index 00000000..8cbdfce6 --- /dev/null +++ b/internal/domain/bpjs-entities/vclaim-sep/entitiy.go @@ -0,0 +1,11 @@ +package vclaimsep + +import ( + ecore "simrs-vx/internal/domain/base-entities/core" +) + +type VClaimSep struct { + ecore.Main + Encounter_Id *uint `json:"encounter_id"` + Number *string `json:"number" gorm:"unique;size:19"` +} diff --git a/internal/domain/main-entities/encounter/entity.go b/internal/domain/main-entities/encounter/entity.go index 87833b37..321e838f 100644 --- a/internal/domain/main-entities/encounter/entity.go +++ b/internal/domain/main-entities/encounter/entity.go @@ -2,12 +2,16 @@ package encounter import ( ecore "simrs-vx/internal/domain/base-entities/core" + evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep" ea "simrs-vx/internal/domain/main-entities/appointment" ed "simrs-vx/internal/domain/main-entities/doctor" + ee "simrs-vx/internal/domain/main-entities/employee" + ei "simrs-vx/internal/domain/main-entities/insurance-company" ep "simrs-vx/internal/domain/main-entities/patient" es "simrs-vx/internal/domain/main-entities/specialist" ess "simrs-vx/internal/domain/main-entities/subspecialist" eu "simrs-vx/internal/domain/main-entities/unit" + erc "simrs-vx/internal/domain/references/common" ere "simrs-vx/internal/domain/references/encounter" "time" @@ -26,8 +30,16 @@ 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"` + PaymentMethod_Code erc.PaymentMethodCode `json:"paymentMethod_code" gorm:"size:10"` + InsuranceCompany_Id *uint `json:"insuranceCompany_id"` + Member_Number *string `json:"memberNumber" gorm:"unique;size:20"` + Ref_Number *string `json:"refNumber" gorm:"unique;size:20"` + Trx_Number *string `json:"trxNumber" gorm:"unique;size:20"` + InsuranceCompany *ei.InsuranceCompany `json:"insuranceCompany,omitempty" gorm:"foreignKey:InsuranceCompany_Id;references:Id"` Appointment_Doctor_Id *uint `json:"appointment_doctor_id"` Appointment_Doctor *ed.Doctor `json:"appointment_doctor,omitempty" gorm:"foreignKey:Appointment_Doctor_Id;references:Id"` + Adm_Employee_Id *uint `json:"admEmployee_id"` + Adm_Employee *ee.Employee `json:"admEmployee,omitempty" gorm:"foreignKey:Adm_Employee_Id;references:Id"` Responsible_Doctor_Id *uint `json:"responsible_doctor_id"` Responsible_Doctor *ed.Doctor `json:"responsible_doctor,omitempty" gorm:"foreignKey:Responsible_Doctor_Id;references:Id"` DischargeMethod_Code *ere.DischargeMethodCode `json:"dischargeMethod_code" gorm:"size:16"` @@ -39,6 +51,7 @@ type Encounter struct { AdmDischargeEducation *string `json:"admDischargeEducation"` DischargeReason *string `json:"dischargeReason"` Status_Code erc.DataStatusCode `json:"status_code" gorm:"size:10"` + VclaimSep *evs.VClaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` } func (d Encounter) IsDone() bool { diff --git a/internal/interface/bpjs-handler/bpjs-handler.go b/internal/interface/bpjs-handler/bpjs-handler.go new file mode 100644 index 00000000..a3d86116 --- /dev/null +++ b/internal/interface/bpjs-handler/bpjs-handler.go @@ -0,0 +1,52 @@ +package bpjshandler + +import ( + "net/http" + + /******************** main / transaction ********************/ + + /******************** actor ********************/ + + /******************** external ********************/ + a "github.com/karincake/apem" + + /******************** infra ********************/ + gs "simrs-vx/internal/infra/gorm-setting" + minio "simrs-vx/internal/infra/minio" + ssdb "simrs-vx/internal/infra/ss-db" + + /******************** pkg ********************/ + cmw "simrs-vx/pkg/cors-manager-mw" + lh "simrs-vx/pkg/lang-helper" + handlerlogger "simrs-vx/pkg/middleware/handler-logger" + mh "simrs-vx/pkg/minio-helper" + zlc "simrs-vx/pkg/zerolog-ctx" + + /******************** sources ********************/ + ///// Internal + validation "simrs-vx/internal/interface/main-handler/helper/validation" + "simrs-vx/internal/interface/main-handler/home" +) + +// One place route to relatively easier to manage, ESPECIALLY in tracking +func SetRoutes() http.Handler { + ///// + a.RegisterExtCall(gs.Adjust) + a.RegisterExtCall(zlc.Adjust) + a.RegisterExtCall(ssdb.SetInstance) + a.RegisterExtCall(lh.Populate) + a.RegisterExtCall(minio.Connect) + a.RegisterExtCall(mh.I.SetClient) + a.RegisterExtCall(validation.RegisterValidation) + + r := http.NewServeMux() + + /******************** Main ********************/ + r.HandleFunc("/", home.Home) + + /******************** actor ********************/ + + /******************** sources ********************/ + + return cmw.SetCors(handlerlogger.SetLog(r)) +} diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index 41bb18db..82b14f23 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -75,6 +75,11 @@ import ( uom "simrs-vx/internal/domain/main-entities/uom" user "simrs-vx/internal/domain/main-entities/user" village "simrs-vx/internal/domain/main-entities/village" + + ///BPJS + 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" ) func getMainEntities() []any { @@ -123,6 +128,7 @@ func getMainEntities() []any { &personrelative.PersonRelative{}, &patient.Patient{}, &appointment.Appointment{}, + &vclaimsep.VClaimSep{}, &encounter.Encounter{}, &laborant.Laborant{}, &specialist.Specialist{}, @@ -153,5 +159,7 @@ func getMainEntities() []any { &midwife.Midwife{}, &postalregion.PostalRegion{}, &internalreference.InternalReference{}, + &vclaimsephist.VClaimSepHist{}, + &vclaimsepprint.VClaimSepPrint{}, } } From 869837271df6ba4c5a71cdd431988fcb8c96867b Mon Sep 17 00:00:00 2001 From: dpurbosakti Date: Tue, 14 Oct 2025 13:40:24 +0700 Subject: [PATCH 3/5] rename vclaim table --- .../migrations/20251014063537.sql | 16 ++++++++++++ .../migrations/20251014063720.sql | 26 +++++++++++++++++++ cmd/main-migration/migrations/atlas.sum | 6 +++-- .../bpjs-entities/vclaim-sep-hist/entitiy.go | 2 +- .../bpjs-entities/vclaim-sep-print/entity.go | 4 +-- .../bpjs-entities/vclaim-sep/entitiy.go | 2 +- .../domain/main-entities/encounter/entity.go | 2 +- internal/interface/migration/main-entities.go | 6 ++--- 8 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 cmd/main-migration/migrations/20251014063537.sql create mode 100644 cmd/main-migration/migrations/20251014063720.sql diff --git a/cmd/main-migration/migrations/20251014063537.sql b/cmd/main-migration/migrations/20251014063537.sql new file mode 100644 index 00000000..7b77b3d9 --- /dev/null +++ b/cmd/main-migration/migrations/20251014063537.sql @@ -0,0 +1,16 @@ +-- Create "VclaimSep" table +CREATE TABLE "public"."VclaimSep" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Number" character varying(19) NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_VclaimSep_Number" UNIQUE ("Number"), + CONSTRAINT "fk_Encounter_VclaimSep" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Modify "VClaimSepPrint" table +ALTER TABLE "public"."VClaimSepPrint" DROP CONSTRAINT "fk_VClaimSepPrint_VclaimSep", ADD CONSTRAINT "fk_VClaimSepPrint_VclaimSep" FOREIGN KEY ("VclaimSep_Number") REFERENCES "public"."VclaimSep" ("Number") ON UPDATE NO ACTION ON DELETE NO ACTION; +-- Drop "VClaimSep" table +DROP TABLE "public"."VClaimSep"; diff --git a/cmd/main-migration/migrations/20251014063720.sql b/cmd/main-migration/migrations/20251014063720.sql new file mode 100644 index 00000000..0763c12b --- /dev/null +++ b/cmd/main-migration/migrations/20251014063720.sql @@ -0,0 +1,26 @@ +-- Create "VclaimSepHist" table +CREATE TABLE "public"."VclaimSepHist" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "RequestPayload" text NULL, + "ResponseBody" text NULL, + "Message" text NULL, + PRIMARY KEY ("Id") +); +-- Create "VclaimSepPrint" table +CREATE TABLE "public"."VclaimSepPrint" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "VclaimSep_Number" character varying(19) NULL, + "Counter" bigint NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_VclaimSepPrint_VclaimSep" FOREIGN KEY ("VclaimSep_Number") REFERENCES "public"."VclaimSep" ("Number") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Drop "VClaimSepHist" table +DROP TABLE "public"."VClaimSepHist"; +-- Drop "VClaimSepPrint" table +DROP TABLE "public"."VClaimSepPrint"; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 5b2a1d8a..77b5524c 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:awmI0os0fmaoSemyQuKI5+2Xb4eCH+Jgqm8dZIsXskw= +h1:u4hCgNdaO4s4HQqAyPwS2ejbRhJtLvpU/wUJGtGrxsI= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -40,4 +40,6 @@ h1:awmI0os0fmaoSemyQuKI5+2Xb4eCH+Jgqm8dZIsXskw= 20251013044536.sql h1:0Xjw8fNILiT8nnfrJDZgQnPf3dntmIoilbapnih8AE4= 20251013051438.sql h1:lfSuw5mgJnePBJamvhZ81osFIouXeiIEiSZ/evdwo48= 20251013081808.sql h1:ijgjNX08G6GBjA/ks8EKtb7P7Y7Cg7zbhqEOruGnv6M= -20251014060047.sql h1:sX9aIpf35MbyclzP4+ULVabPTMV8E9G+6caCsg4WWbQ= +20251014060047.sql h1:0jqj49WTtneEIMQDBoo4c095ZGi8sCrA8NnHBrPU6D8= +20251014063537.sql h1:H9ZLr86pgDcDpRJmTwy8TIOVot9QcN7+i3HwT4Vmi5s= +20251014063720.sql h1:eiHNzJIdBpuazPI5MAgtc3yI83u4SvYyr7dJd3Ptxdo= diff --git a/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go b/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go index a5a22da3..46880159 100644 --- a/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go +++ b/internal/domain/bpjs-entities/vclaim-sep-hist/entitiy.go @@ -4,7 +4,7 @@ import ( ecore "simrs-vx/internal/domain/base-entities/core" ) -type VClaimSepHist struct { +type VclaimSepHist struct { ecore.Main RequestPayload *string `json:"requestPayload"` ResponseBody *string `json:"responseBody"` diff --git a/internal/domain/bpjs-entities/vclaim-sep-print/entity.go b/internal/domain/bpjs-entities/vclaim-sep-print/entity.go index d1a0a156..1bd5e9fc 100644 --- a/internal/domain/bpjs-entities/vclaim-sep-print/entity.go +++ b/internal/domain/bpjs-entities/vclaim-sep-print/entity.go @@ -5,9 +5,9 @@ import ( evs "simrs-vx/internal/domain/bpjs-entities/vclaim-sep" ) -type VClaimSepPrint struct { +type VclaimSepPrint struct { ecore.Main VclaimSep_Number *string `json:"vclaimSep_number"` - VclaimSep *evs.VClaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"` + VclaimSep *evs.VclaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:VclaimSep_Number;references:Number"` Counter *uint `json:"counter"` } diff --git a/internal/domain/bpjs-entities/vclaim-sep/entitiy.go b/internal/domain/bpjs-entities/vclaim-sep/entitiy.go index 8cbdfce6..e23106d8 100644 --- a/internal/domain/bpjs-entities/vclaim-sep/entitiy.go +++ b/internal/domain/bpjs-entities/vclaim-sep/entitiy.go @@ -4,7 +4,7 @@ import ( ecore "simrs-vx/internal/domain/base-entities/core" ) -type VClaimSep struct { +type VclaimSep struct { ecore.Main Encounter_Id *uint `json:"encounter_id"` Number *string `json:"number" gorm:"unique;size:19"` diff --git a/internal/domain/main-entities/encounter/entity.go b/internal/domain/main-entities/encounter/entity.go index 321e838f..c9f81712 100644 --- a/internal/domain/main-entities/encounter/entity.go +++ b/internal/domain/main-entities/encounter/entity.go @@ -51,7 +51,7 @@ type Encounter struct { AdmDischargeEducation *string `json:"admDischargeEducation"` DischargeReason *string `json:"dischargeReason"` Status_Code erc.DataStatusCode `json:"status_code" gorm:"size:10"` - VclaimSep *evs.VClaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + VclaimSep *evs.VclaimSep `json:"vclaimSep,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` } func (d Encounter) IsDone() bool { diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index 82b14f23..034495c3 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -128,7 +128,7 @@ func getMainEntities() []any { &personrelative.PersonRelative{}, &patient.Patient{}, &appointment.Appointment{}, - &vclaimsep.VClaimSep{}, + &vclaimsep.VclaimSep{}, &encounter.Encounter{}, &laborant.Laborant{}, &specialist.Specialist{}, @@ -159,7 +159,7 @@ func getMainEntities() []any { &midwife.Midwife{}, &postalregion.PostalRegion{}, &internalreference.InternalReference{}, - &vclaimsephist.VClaimSepHist{}, - &vclaimsepprint.VClaimSepPrint{}, + &vclaimsephist.VclaimSepHist{}, + &vclaimsepprint.VclaimSepPrint{}, } } From b42dca81a5e90b8b8a589df23e1a8d2fba47bb9c Mon Sep 17 00:00:00 2001 From: vanilia Date: Wed, 15 Oct 2025 11:57:12 +0700 Subject: [PATCH 4/5] add column in chemo table --- cmd/main-migration/migrations/20251015045455.sql | 2 ++ cmd/main-migration/migrations/atlas.sum | 7 ++++--- internal/domain/main-entities/chemo/entity.go | 2 ++ internal/domain/references/encounter/encounter.go | 4 ++++ 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 cmd/main-migration/migrations/20251015045455.sql diff --git a/cmd/main-migration/migrations/20251015045455.sql b/cmd/main-migration/migrations/20251015045455.sql new file mode 100644 index 00000000..f2b6be7a --- /dev/null +++ b/cmd/main-migration/migrations/20251015045455.sql @@ -0,0 +1,2 @@ +-- Modify "Chemo" table +ALTER TABLE "public"."Chemo" ADD COLUMN "ClassCode" text NULL; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 77b5524c..e3172704 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:u4hCgNdaO4s4HQqAyPwS2ejbRhJtLvpU/wUJGtGrxsI= +h1:Y15nC3Bp3DWNym7hAvXkF9zFwkHh8nQDpxcNrxQgYhE= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -41,5 +41,6 @@ h1:u4hCgNdaO4s4HQqAyPwS2ejbRhJtLvpU/wUJGtGrxsI= 20251013051438.sql h1:lfSuw5mgJnePBJamvhZ81osFIouXeiIEiSZ/evdwo48= 20251013081808.sql h1:ijgjNX08G6GBjA/ks8EKtb7P7Y7Cg7zbhqEOruGnv6M= 20251014060047.sql h1:0jqj49WTtneEIMQDBoo4c095ZGi8sCrA8NnHBrPU6D8= -20251014063537.sql h1:H9ZLr86pgDcDpRJmTwy8TIOVot9QcN7+i3HwT4Vmi5s= -20251014063720.sql h1:eiHNzJIdBpuazPI5MAgtc3yI83u4SvYyr7dJd3Ptxdo= +20251014063537.sql h1:VZLXol0PTsTW21Epg6vBPsztWkDtcxup9F/z88EGgIg= +20251014063720.sql h1:2HVUyCV0ud3BJJDH2GEKZN/+IWLFPCsN1KqhP6csO14= +20251015045455.sql h1:v120CzYYiFWmW81VmKWsjmjRiBIv5aFnPZXwQaQxqes= diff --git a/internal/domain/main-entities/chemo/entity.go b/internal/domain/main-entities/chemo/entity.go index 2ba83990..f838c27d 100644 --- a/internal/domain/main-entities/chemo/entity.go +++ b/internal/domain/main-entities/chemo/entity.go @@ -9,6 +9,7 @@ import ( eus "simrs-vx/internal/domain/main-entities/user" erc "simrs-vx/internal/domain/references/common" + ere "simrs-vx/internal/domain/references/encounter" ) type Chemo struct { @@ -21,4 +22,5 @@ type Chemo struct { VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"` SrcUnit_Id *uint `json:"src_unit_id"` SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Id;references:Id"` + ClassCode ere.ChemoClassCode `json:"class_code"` } diff --git a/internal/domain/references/encounter/encounter.go b/internal/domain/references/encounter/encounter.go index 7e6bcf8c..93c49a33 100644 --- a/internal/domain/references/encounter/encounter.go +++ b/internal/domain/references/encounter/encounter.go @@ -12,6 +12,7 @@ type ( AmbulatoryClassCode string InpatientClassCode string UploadCode string + ChemoClassCode string ) const ( @@ -78,6 +79,9 @@ const ( UCPP UploadCode = "person-passport" // Person Passport UCPFC UploadCode = "person-family-card" // Person Family Card UCMIR UploadCode = "mcu-item-result" // Mcu Item Result + + CCCAdm ChemoClassCode = "adm" // Administrasi + CCCAct ChemoClassCode = "act" // Tindakan ) func (ec EncounterClassCode) Code() string { From 0b864d8cd71c2a22f586c93860ce2c7c8bc46eb7 Mon Sep 17 00:00:00 2001 From: vanilia Date: Wed, 15 Oct 2025 12:11:11 +0700 Subject: [PATCH 5/5] resolve typo name class code --- internal/domain/main-entities/chemo/entity.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/domain/main-entities/chemo/entity.go b/internal/domain/main-entities/chemo/entity.go index f838c27d..4052ea72 100644 --- a/internal/domain/main-entities/chemo/entity.go +++ b/internal/domain/main-entities/chemo/entity.go @@ -22,5 +22,5 @@ type Chemo struct { VerifiedBy *eus.User `json:"verifiedBy,omitempty" gorm:"foreignKey:VerifiedBy_User_Id;references:Id"` SrcUnit_Id *uint `json:"src_unit_id"` SrcUnit *eun.Unit `json:"src_unit,omitempty" gorm:"foreignKey:SrcUnit_Id;references:Id"` - ClassCode ere.ChemoClassCode `json:"class_code"` + Class_Code ere.ChemoClassCode `json:"class_code"` }