From 1036cab53ccd8ea8dcd844e6a4411156b80c36d3 Mon Sep 17 00:00:00 2001 From: Munawwirul Jamal Date: Mon, 8 Dec 2025 05:13:04 +0700 Subject: [PATCH] feat/order-things: entity separation finalization --- .../migrations/20251207212015.sql | 99 +++++++++++++++++++ .../migrations/20251207221222.sql | 8 ++ cmd/main-migration/migrations/atlas.sum | 6 +- .../main-entities/ap-mcu-order/base/entity.go | 30 +++--- .../domain/main-entities/ap-mcu-order/dto.go | 3 + .../main-entities/ap-mcu-order/entity.go | 13 +++ .../cp-mcu-order-item/base/entity.go | 3 +- .../main-entities/cp-mcu-order-item/entity.go | 6 +- .../main-entities/cp-mcu-order/base/entity.go | 2 + .../domain/main-entities/cp-mcu-order/dto.go | 6 +- .../main-entities/cp-mcu-order/entity.go | 19 +++- .../micro-mcu-order-item/entity.go | 5 +- .../micro-mcu-order/base/entity.go | 2 + .../main-entities/micro-mcu-order/dto.go | 6 +- .../main-entities/micro-mcu-order/entity.go | 19 +++- .../radiology-mcu-order-item/entity.go | 2 +- .../radiology-mcu-order/base/entity.go | 14 +-- .../main-entities/radiology-mcu-order/dto.go | 10 +- .../radiology-mcu-order/entity.go | 13 +++ internal/interface/migration/main-entities.go | 14 ++- 20 files changed, 239 insertions(+), 41 deletions(-) create mode 100644 cmd/main-migration/migrations/20251207212015.sql create mode 100644 cmd/main-migration/migrations/20251207221222.sql diff --git a/cmd/main-migration/migrations/20251207212015.sql b/cmd/main-migration/migrations/20251207212015.sql new file mode 100644 index 00000000..c551aa8c --- /dev/null +++ b/cmd/main-migration/migrations/20251207212015.sql @@ -0,0 +1,99 @@ +-- Modify "ApMcuOrder" table +ALTER TABLE "public"."ApMcuOrder" DROP COLUMN "McuOrder_Id", ADD COLUMN "Encounter_Id" bigint NULL, ADD COLUMN "Number" bigint NULL, ADD COLUMN "Doctor_Code" character varying(20) NULL, ADD CONSTRAINT "uni_ApMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"), ADD CONSTRAINT "fk_ApMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, ADD CONSTRAINT "fk_ApMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION; +-- Create "CpMcuOrder" table +CREATE TABLE "public"."CpMcuOrder" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Number" bigint NULL, + "Doctor_Code" character varying(20) NULL, + "UrgencyLevel_Code" character varying(15) NOT NULL, + "OtherNotes" text NULL, + "ExamScheduleDate" timestamptz NULL, + "Resume" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_CpMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"), + CONSTRAINT "fk_CpMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_CpMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "CpMcuOrderItem" table +CREATE TABLE "public"."CpMcuOrderItem" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "CpMcuOrder_Id" bigint NULL, + "McuSrc_Code" character varying(20) NULL, + "Note" character varying(1024) NULL, + "Result" text NULL, + "Status_Code" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_CpMcuOrderItem_CpMcuOrder" FOREIGN KEY ("CpMcuOrder_Id") REFERENCES "public"."CpMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_CpMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "MicroMcuOrder" table +CREATE TABLE "public"."MicroMcuOrder" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Number" bigint NULL, + "Doctor_Code" character varying(20) NULL, + "Stage_Code" character varying(10) NOT NULL, + "AxillaryTemp" numeric NULL, + "OtherNotes" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_MicroMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"), + CONSTRAINT "fk_MicroMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_MicroMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "MicroMcuOrderItem" table +CREATE TABLE "public"."MicroMcuOrderItem" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "MicroMcuOrder_Id" bigint NULL, + "McuSrc_Code" character varying(20) NULL, + "Note" character varying(1024) NULL, + "Result" text NULL, + "Status_Code" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_MicroMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_MicroMcuOrderItem_MicroMcuOrder" FOREIGN KEY ("MicroMcuOrder_Id") REFERENCES "public"."MicroMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "RadiologyMcuOrder" table +CREATE TABLE "public"."RadiologyMcuOrder" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "Encounter_Id" bigint NULL, + "Number" bigint NULL, + "Doctor_Code" character varying(20) NULL, + "ClinicalNotes" text NULL, + "OtherNotes" text NULL, + "Resume" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "uni_RadiologyMcuOrder_Doctor_Code" UNIQUE ("Doctor_Code"), + CONSTRAINT "fk_RadiologyMcuOrder_Doctor" FOREIGN KEY ("Doctor_Code") REFERENCES "public"."Doctor" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_RadiologyMcuOrder_Encounter" FOREIGN KEY ("Encounter_Id") REFERENCES "public"."Encounter" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); +-- Create "RadiologyMcuOrderItem" table +CREATE TABLE "public"."RadiologyMcuOrderItem" ( + "Id" bigserial NOT NULL, + "CreatedAt" timestamptz NULL, + "UpdatedAt" timestamptz NULL, + "DeletedAt" timestamptz NULL, + "RadiologyMcuOrder_Id" bigint NULL, + "McuSrc_Code" character varying(20) NULL, + "Note" character varying(1024) NULL, + "Result" text NULL, + "Status_Code" text NULL, + PRIMARY KEY ("Id"), + CONSTRAINT "fk_RadiologyMcuOrderItem_McuSrc" FOREIGN KEY ("McuSrc_Code") REFERENCES "public"."McuSrc" ("Code") ON UPDATE NO ACTION ON DELETE NO ACTION, + CONSTRAINT "fk_RadiologyMcuOrderItem_RadiologyMcuOrder" FOREIGN KEY ("RadiologyMcuOrder_Id") REFERENCES "public"."RadiologyMcuOrder" ("Id") ON UPDATE NO ACTION ON DELETE NO ACTION +); diff --git a/cmd/main-migration/migrations/20251207221222.sql b/cmd/main-migration/migrations/20251207221222.sql new file mode 100644 index 00000000..3c806128 --- /dev/null +++ b/cmd/main-migration/migrations/20251207221222.sql @@ -0,0 +1,8 @@ +-- Modify "ApMcuOrder" table +ALTER TABLE "public"."ApMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL; +-- Modify "CpMcuOrder" table +ALTER TABLE "public"."CpMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL; +-- Modify "MicroMcuOrder" table +ALTER TABLE "public"."MicroMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL; +-- Modify "RadiologyMcuOrder" table +ALTER TABLE "public"."RadiologyMcuOrder" ADD COLUMN "Status_Code" character varying(10) NOT NULL; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index 632e0ddb..c1ede307 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:1BOh7w/6hkhDj1PptjXT4tLOgmRtIIofGm3ERJ+EfyM= +h1:o4jOACV/QY64oiqrbnZvGei0J65px0JBwAXakl8h+Oc= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -145,4 +145,6 @@ h1:1BOh7w/6hkhDj1PptjXT4tLOgmRtIIofGm3ERJ+EfyM= 20251202180207.sql h1:IHmSMIO3ia+YV5GULixbdlV1joaUAWtnjQHPd8+HKiM= 20251202231005.sql h1:lua0KKoeBptSfs/6ehZE6Azo6YUlNkOJwGFyb1HQWkY= 20251203205052.sql h1:nk0VK2Uv4bHE3SBfHo/aevVZxtHzr7zAzvmMU8TCCtk= -20251207020537.sql h1:UmtHxX1vZi/BiKxHPOOP7fALRZ3RoRGSGmUma7ttp8w= +20251207020537.sql h1:uqqIQaBoZGoOXVQKkalNXwF2awcA+rhjNVevWEzIIok= +20251207212015.sql h1:muRdWqRKfJQFMfezj2B4n0E6bbjIz1GrzHEyhoxy2mk= +20251207221222.sql h1:+mU/25n3hQLRU6MK8B+Uwzl9YBRezX3xWDtIKnweN78= diff --git a/internal/domain/main-entities/ap-mcu-order/base/entity.go b/internal/domain/main-entities/ap-mcu-order/base/entity.go index 5aa99c20..d098fcfd 100644 --- a/internal/domain/main-entities/ap-mcu-order/base/entity.go +++ b/internal/domain/main-entities/ap-mcu-order/base/entity.go @@ -2,22 +2,24 @@ package apmcuorder import ( ecore "simrs-vx/internal/domain/base-entities/core" + erc "simrs-vx/internal/domain/references/common" ) type ApMcuOrder struct { ecore.BigMain - Encounter_Id uint `json:"encounter_id"` - Number uint64 `json:"number"` - Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"` - Substances string `json:"substances"` - Fictations string `json:"fictations"` - Localization string `json:"localization"` - ClinicalDiagnoses string `json:"clinicalDiagnoses"` - Stadium string `json:"stadium"` - ClinicalNotes *string `json:"clinicalNotes"` - CurrentHistory string `json:"currentHistory"` - PastHistory string `json:"pastHistory"` - PrevApMcu *string `json:"prevApMcu"` - PrevApMcuNotes *string `json:"prevApMcuNotes"` - SupportingExams *string `json:"supportingExams"` + Encounter_Id uint `json:"encounter_id"` + Number uint64 `json:"number"` + Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"` + Substances string `json:"substances"` + Fictations string `json:"fictations"` + Localization string `json:"localization"` + ClinicalDiagnoses string `json:"clinicalDiagnoses"` + Stadium string `json:"stadium"` + ClinicalNotes *string `json:"clinicalNotes"` + CurrentHistory string `json:"currentHistory"` + PastHistory string `json:"pastHistory"` + PrevApMcu *string `json:"prevApMcu"` + PrevApMcuNotes *string `json:"prevApMcuNotes"` + SupportingExams *string `json:"supportingExams"` + Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"` } diff --git a/internal/domain/main-entities/ap-mcu-order/dto.go b/internal/domain/main-entities/ap-mcu-order/dto.go index 954efad2..80b0b447 100644 --- a/internal/domain/main-entities/ap-mcu-order/dto.go +++ b/internal/domain/main-entities/ap-mcu-order/dto.go @@ -1,6 +1,8 @@ package apmcuorder import ( + la "simrs-vx/internal/lib/auth" + ecore "simrs-vx/internal/domain/base-entities/core" eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base" ed "simrs-vx/internal/domain/main-entities/doctor" @@ -9,6 +11,7 @@ import ( type CreateDto struct { eamob.CreateDto + la.AuthInfo } type ReadListDto struct { diff --git a/internal/domain/main-entities/ap-mcu-order/entity.go b/internal/domain/main-entities/ap-mcu-order/entity.go index 703e9ebb..361d0948 100644 --- a/internal/domain/main-entities/ap-mcu-order/entity.go +++ b/internal/domain/main-entities/ap-mcu-order/entity.go @@ -4,6 +4,7 @@ import ( eamob "simrs-vx/internal/domain/main-entities/ap-mcu-order/base" ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" + erc "simrs-vx/internal/domain/references/common" ) type ApMcuOrder struct { @@ -11,3 +12,15 @@ type ApMcuOrder struct { Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` } + +func (d ApMcuOrder) IsNotNew() bool { + return d.Status_Code != erc.DSCNew +} + +func (d ApMcuOrder) IsCompleted() bool { + return d.Status_Code == erc.DSCDone +} + +func (d ApMcuOrder) IsSameDoctor(doctor_code *string) bool { + return d.Doctor_Code == *doctor_code +} diff --git a/internal/domain/main-entities/cp-mcu-order-item/base/entity.go b/internal/domain/main-entities/cp-mcu-order-item/base/entity.go index 49cea380..5abb8494 100644 --- a/internal/domain/main-entities/cp-mcu-order-item/base/entity.go +++ b/internal/domain/main-entities/cp-mcu-order-item/base/entity.go @@ -2,7 +2,7 @@ package cpmcuorderitem import ( ecore "simrs-vx/internal/domain/base-entities/core" - + ems "simrs-vx/internal/domain/main-entities/mcu-src" erc "simrs-vx/internal/domain/references/common" ) @@ -10,6 +10,7 @@ type CpMcuOrderItem struct { ecore.BigMain // adjust this according to the needs CpMcuOrder_Id uint64 `json:"cpMcuOrder_id" gorm:"uniqueIndex:idx_order_src"` McuSrc_Code string `json:"mcuSrc_code" gorm:"uniqueIndex:idx_order_src"` + McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"` Note *string `json:"note" gorm:"size:1024"` Result *string `json:"result"` Status_Code erc.DataStatusCode `json:"status_code"` diff --git a/internal/domain/main-entities/cp-mcu-order-item/entity.go b/internal/domain/main-entities/cp-mcu-order-item/entity.go index 65ec70cd..5858ab58 100644 --- a/internal/domain/main-entities/cp-mcu-order-item/entity.go +++ b/internal/domain/main-entities/cp-mcu-order-item/entity.go @@ -4,16 +4,12 @@ import ( emo "simrs-vx/internal/domain/main-entities/cp-mcu-order" emoib "simrs-vx/internal/domain/main-entities/cp-mcu-order-item/base" - emosi "simrs-vx/internal/domain/main-entities/mcu-order-sub-item/base" - ems "simrs-vx/internal/domain/main-entities/mcu-src" erc "simrs-vx/internal/domain/references/common" ) type CpMcuOrderItem struct { emoib.CpMcuOrderItem - CpMcuOrder *emo.CpMcuOrder `json:"cpMcuOrder,omitempty" gorm:"foreignKey:McuOrder_Id;references:Id"` - McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"` - Items []*emosi.McuOrderSubItem `json:"items" gorm:"foreignKey:McuOrderItem_Id;references:Id"` + CpMcuOrder *emo.CpMcuOrder `json:"cpMcuOrder,omitempty" gorm:"foreignKey:CpMcuOrder_Id;references:Id"` } func (d CpMcuOrderItem) IsCompleted() bool { diff --git a/internal/domain/main-entities/cp-mcu-order/base/entity.go b/internal/domain/main-entities/cp-mcu-order/base/entity.go index 883ba0b6..e9531e22 100644 --- a/internal/domain/main-entities/cp-mcu-order/base/entity.go +++ b/internal/domain/main-entities/cp-mcu-order/base/entity.go @@ -5,6 +5,7 @@ import ( ecore "simrs-vx/internal/domain/base-entities/core" ercl "simrs-vx/internal/domain/references/clinical" + erc "simrs-vx/internal/domain/references/common" ) type CpMcuOrder struct { @@ -16,4 +17,5 @@ type CpMcuOrder struct { OtherNotes *string `json:"otherNotes"` ExamScheduleDate *time.Time `json:"examinationDate"` Resume *string `json:"resume"` + Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"` } diff --git a/internal/domain/main-entities/cp-mcu-order/dto.go b/internal/domain/main-entities/cp-mcu-order/dto.go index 5cc2e753..afccfb20 100644 --- a/internal/domain/main-entities/cp-mcu-order/dto.go +++ b/internal/domain/main-entities/cp-mcu-order/dto.go @@ -1,6 +1,8 @@ package cpmcuorder import ( + la "simrs-vx/internal/lib/auth" + ecore "simrs-vx/internal/domain/base-entities/core" ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" @@ -11,6 +13,7 @@ type CreateDto struct { Number uint64 `json:"number"` // SHOULD BE AUTOMATIC WITHOUT SYNC UrgencyLevel_Code string `json:"urgencyLevel_code" validate:"required"` OtherNotes string `json:"otherNotes"` + la.AuthInfo } type ReadListDto struct { @@ -26,7 +29,8 @@ type FilterDto struct { } type ReadDetailDto struct { - Id uint64 `json:"id"` + Id uint64 `json:"id"` + Includes string `json:"includes"` } type UpdateDto struct { diff --git a/internal/domain/main-entities/cp-mcu-order/entity.go b/internal/domain/main-entities/cp-mcu-order/entity.go index 92e20ef5..08a3d927 100644 --- a/internal/domain/main-entities/cp-mcu-order/entity.go +++ b/internal/domain/main-entities/cp-mcu-order/entity.go @@ -1,13 +1,28 @@ package cpmcuorder import ( + ecmoi "simrs-vx/internal/domain/main-entities/cp-mcu-order-item/base" eamob "simrs-vx/internal/domain/main-entities/cp-mcu-order/base" ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" + erc "simrs-vx/internal/domain/references/common" ) type CpMcuOrder struct { eamob.CpMcuOrder - Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` - Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` + Items []*ecmoi.CpMcuOrderItem `json:"items" gorm:"foreignKey:CpMcuOrder_Id;references:Id"` +} + +func (d CpMcuOrder) IsNotNew() bool { + return d.Status_Code != erc.DSCNew +} + +func (d CpMcuOrder) IsCompleted() bool { + return d.Status_Code == erc.DSCDone +} + +func (d CpMcuOrder) IsSameDoctor(doctor_code *string) bool { + return d.Doctor_Code == *doctor_code } diff --git a/internal/domain/main-entities/micro-mcu-order-item/entity.go b/internal/domain/main-entities/micro-mcu-order-item/entity.go index 8d818e27..64d701f7 100644 --- a/internal/domain/main-entities/micro-mcu-order-item/entity.go +++ b/internal/domain/main-entities/micro-mcu-order-item/entity.go @@ -1,15 +1,16 @@ package micromcuorderitem import ( + ems "simrs-vx/internal/domain/main-entities/mcu-src" emo "simrs-vx/internal/domain/main-entities/micro-mcu-order" emoib "simrs-vx/internal/domain/main-entities/micro-mcu-order-item/base" - erc "simrs-vx/internal/domain/references/common" ) type MicroMcuOrderItem struct { emoib.MicroMcuOrderItem - MicroMcuOrder *emo.MicroMcuOrder `json:"microMcuOrder,omitempty" gorm:"foreignKey:McuOrder_Id;references:Id"` + MicroMcuOrder *emo.MicroMcuOrder `json:"microMcuOrder,omitempty" gorm:"foreignKey:MicroMcuOrder_Id;references:Id"` + McuSrc *ems.McuSrc `json:"mcuSrc,omitempty" gorm:"foreignKey:McuSrc_Code;references:Code"` } func (d MicroMcuOrderItem) IsCompleted() bool { diff --git a/internal/domain/main-entities/micro-mcu-order/base/entity.go b/internal/domain/main-entities/micro-mcu-order/base/entity.go index 2250ca20..3e611d81 100644 --- a/internal/domain/main-entities/micro-mcu-order/base/entity.go +++ b/internal/domain/main-entities/micro-mcu-order/base/entity.go @@ -3,6 +3,7 @@ package micromcuorder import ( ecore "simrs-vx/internal/domain/base-entities/core" ercl "simrs-vx/internal/domain/references/clinical" + erc "simrs-vx/internal/domain/references/common" ) type MicroMcuOrder struct { @@ -13,4 +14,5 @@ type MicroMcuOrder struct { Stage_Code ercl.McuOrderStageCode `json:"stage_code" gorm:"not null;size:10"` AxillaryTemp float64 `json:"axillaryTemp"` OtherNotes *string `json:"otherNotes"` + Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"` } diff --git a/internal/domain/main-entities/micro-mcu-order/dto.go b/internal/domain/main-entities/micro-mcu-order/dto.go index 82f926db..008f219f 100644 --- a/internal/domain/main-entities/micro-mcu-order/dto.go +++ b/internal/domain/main-entities/micro-mcu-order/dto.go @@ -1,6 +1,8 @@ package micromcuorder import ( + la "simrs-vx/internal/lib/auth" + ecore "simrs-vx/internal/domain/base-entities/core" ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" @@ -13,6 +15,7 @@ type CreateDto struct { OrderStage_Code string `json:"orderStage_code" gorm:"not null;size:10"` AxillaryTemp float64 `json:"axillaryTemp"` OtherNotes string `json:"otherNotes"` + la.AuthInfo } type ReadListDto struct { @@ -28,7 +31,8 @@ type FilterDto struct { } type ReadDetailDto struct { - Id uint64 `json:"id"` + Id uint64 `json:"id"` + Includes string `json:"includes"` } type UpdateDto struct { diff --git a/internal/domain/main-entities/micro-mcu-order/entity.go b/internal/domain/main-entities/micro-mcu-order/entity.go index 1c645040..57550c84 100644 --- a/internal/domain/main-entities/micro-mcu-order/entity.go +++ b/internal/domain/main-entities/micro-mcu-order/entity.go @@ -3,11 +3,26 @@ package micromcuorder import ( ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" + emmoi "simrs-vx/internal/domain/main-entities/micro-mcu-order-item/base" eamob "simrs-vx/internal/domain/main-entities/micro-mcu-order/base" + erc "simrs-vx/internal/domain/references/common" ) type MicroMcuOrder struct { eamob.MicroMcuOrder - Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` - Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` + Items []*emmoi.MicroMcuOrderItem `json:"items" gorm:"foreignKey:MicroMcuOrder_Id;references:Id"` +} + +func (d MicroMcuOrder) IsNotNew() bool { + return d.Status_Code != erc.DSCNew +} + +func (d MicroMcuOrder) IsCompleted() bool { + return d.Status_Code == erc.DSCDone +} + +func (d MicroMcuOrder) IsSameDoctor(doctor_code *string) bool { + return d.Doctor_Code == *doctor_code } diff --git a/internal/domain/main-entities/radiology-mcu-order-item/entity.go b/internal/domain/main-entities/radiology-mcu-order-item/entity.go index 2e1734a3..da20a56a 100644 --- a/internal/domain/main-entities/radiology-mcu-order-item/entity.go +++ b/internal/domain/main-entities/radiology-mcu-order-item/entity.go @@ -9,7 +9,7 @@ import ( type RadiologyMcuOrderItem struct { emoib.RadiologyMcuOrderItem - RadiologyMcuOrder *emo.RadiologyMcuOrder `json:"radiologyMcuOrder,omitempty" gorm:"foreignKey:McuOrder_Id;references:Id"` + RadiologyMcuOrder *emo.RadiologyMcuOrder `json:"radiologyMcuOrder,omitempty" gorm:"foreignKey:RadiologyMcuOrder_Id;references:Id"` } func (d RadiologyMcuOrderItem) IsCompleted() bool { diff --git a/internal/domain/main-entities/radiology-mcu-order/base/entity.go b/internal/domain/main-entities/radiology-mcu-order/base/entity.go index a771e0a7..6871e689 100644 --- a/internal/domain/main-entities/radiology-mcu-order/base/entity.go +++ b/internal/domain/main-entities/radiology-mcu-order/base/entity.go @@ -2,14 +2,16 @@ package radiologymcuorder import ( ecore "simrs-vx/internal/domain/base-entities/core" + erc "simrs-vx/internal/domain/references/common" ) type RadiologyMcuOrder struct { ecore.BigMain - Encounter_Id uint `json:"encounter_id"` - Number uint64 `json:"number"` - Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"` - ClinicalNotes *string `json:"clinicalNotes"` - OtherNotes *string `json:"otherNotes"` - Resume *string `json:"resume"` + Encounter_Id uint `json:"encounter_id"` + Number uint64 `json:"number"` + Doctor_Code string `json:"doctor_code" gorm:"unique;size:20"` + ClinicalNotes *string `json:"clinicalNotes"` + OtherNotes *string `json:"otherNotes"` + Resume *string `json:"resume"` + Status_Code erc.DataStatusCode `json:"status_code" gorm:"not null;size:10"` } diff --git a/internal/domain/main-entities/radiology-mcu-order/dto.go b/internal/domain/main-entities/radiology-mcu-order/dto.go index f24b5668..4250b4b0 100644 --- a/internal/domain/main-entities/radiology-mcu-order/dto.go +++ b/internal/domain/main-entities/radiology-mcu-order/dto.go @@ -1,6 +1,8 @@ package radiologymcuorder import ( + la "simrs-vx/internal/lib/auth" + ecore "simrs-vx/internal/domain/base-entities/core" ed "simrs-vx/internal/domain/main-entities/doctor" ee "simrs-vx/internal/domain/main-entities/encounter" @@ -11,9 +13,10 @@ type CreateDto struct { Encounter_Id uint `json:"encounter_id"` Number *uint64 `json:"number"` // SHOULD BE AUTOMATIC WITHOUT SYNC Doctor_Code string `json:"-" validate:"required"` - ClinicalNotes string `json:"clinicalNotes"` - OtherNotes string `json:"otherNotes"` + ClinicalNotes *string `json:"clinicalNotes"` + OtherNotes *string `json:"otherNotes"` Items []ermoi.SubCreateDto `json:"items" validate:"required"` + la.AuthInfo } type ReadListDto struct { @@ -29,7 +32,8 @@ type FilterDto struct { } type ReadDetailDto struct { - Id uint64 `json:"id"` + Id uint64 `json:"id"` + Includes string `json:"includes"` } type UpdateDto struct { diff --git a/internal/domain/main-entities/radiology-mcu-order/entity.go b/internal/domain/main-entities/radiology-mcu-order/entity.go index 2ff3ec20..1ef8882d 100644 --- a/internal/domain/main-entities/radiology-mcu-order/entity.go +++ b/internal/domain/main-entities/radiology-mcu-order/entity.go @@ -5,6 +5,7 @@ import ( ee "simrs-vx/internal/domain/main-entities/encounter" ermoi "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item/base" eamob "simrs-vx/internal/domain/main-entities/radiology-mcu-order/base" + erc "simrs-vx/internal/domain/references/common" ) type RadiologyMcuOrder struct { @@ -13,3 +14,15 @@ type RadiologyMcuOrder struct { Doctor *ed.Doctor `json:"doctor,omitempty" gorm:"foreignKey:Doctor_Code;references:Code"` Items []*ermoi.RadiologyMcuOrderItem `json:"items" gorm:"foreignKey:RadiologyMcuOrder_Id;references:Id"` } + +func (d RadiologyMcuOrder) IsNotNew() bool { + return d.Status_Code != erc.DSCNew +} + +func (d RadiologyMcuOrder) IsCompleted() bool { + return d.Status_Code == erc.DSCDone +} + +func (d RadiologyMcuOrder) IsSameDoctor(doctor_code *string) bool { + return d.Doctor_Code == *doctor_code +} diff --git a/internal/interface/migration/main-entities.go b/internal/interface/migration/main-entities.go index 9767b21b..d4f596b1 100644 --- a/internal/interface/migration/main-entities.go +++ b/internal/interface/migration/main-entities.go @@ -16,6 +16,8 @@ import ( consultation "simrs-vx/internal/domain/main-entities/consultation" controlletter "simrs-vx/internal/domain/main-entities/control-letter" counter "simrs-vx/internal/domain/main-entities/counter" + cpmcuorder "simrs-vx/internal/domain/main-entities/cp-mcu-order" + cpmcuorderitem "simrs-vx/internal/domain/main-entities/cp-mcu-order-item" deathcause "simrs-vx/internal/domain/main-entities/death-cause" device "simrs-vx/internal/domain/main-entities/device" deviceorder "simrs-vx/internal/domain/main-entities/device-order" @@ -68,6 +70,8 @@ import ( medicinemethod "simrs-vx/internal/domain/main-entities/medicine-method" medicinemix "simrs-vx/internal/domain/main-entities/medicine-mix" medicinemixitem "simrs-vx/internal/domain/main-entities/medicine-mix-item" + micromcuorder "simrs-vx/internal/domain/main-entities/micro-mcu-order" + micromcuorderitem "simrs-vx/internal/domain/main-entities/micro-mcu-order-item" midwife "simrs-vx/internal/domain/main-entities/midwife" nurse "simrs-vx/internal/domain/main-entities/nurse" nutritionist "simrs-vx/internal/domain/main-entities/nutritionist" @@ -88,6 +92,8 @@ import ( procedureroomorderitem "simrs-vx/internal/domain/main-entities/procedure-room-order-item" proceduresrc "simrs-vx/internal/domain/main-entities/procedure-src" province "simrs-vx/internal/domain/main-entities/province" + radiologymcuorder "simrs-vx/internal/domain/main-entities/radiology-mcu-order" + radiologymcuorderitem "simrs-vx/internal/domain/main-entities/radiology-mcu-order-item" regency "simrs-vx/internal/domain/main-entities/regency" rehab "simrs-vx/internal/domain/main-entities/rehab" responsibledoctorhist "simrs-vx/internal/domain/main-entities/responsible-doctor-hist" @@ -122,7 +128,6 @@ import ( func getMainEntities() []any { return []any{ &authpartner.AuthPartner{}, - &apmcuorder.ApMcuOrder{}, &user.User{}, &userfes.UserFes{}, &division.Division{}, @@ -202,6 +207,13 @@ func getMainEntities() []any { &mcuorderitem.McuOrderItem{}, &mcusubsrc.McuSubSrc{}, &mcuordersubitem.McuOrderSubItem{}, + &apmcuorder.ApMcuOrder{}, + &radiologymcuorder.RadiologyMcuOrder{}, + &radiologymcuorderitem.RadiologyMcuOrderItem{}, + &cpmcuorder.CpMcuOrder{}, + &cpmcuorderitem.CpMcuOrderItem{}, + µmcuorder.MicroMcuOrder{}, + µmcuorderitem.MicroMcuOrderItem{}, &antibioticsrccategory.AntibioticSrcCategory{}, &antibioticinuse.AntibioticInUse{}, &consultation.Consultation{},