diff --git a/cmd/main-migration/Makefile b/cmd/main-migration/Makefile index 92a4be84..e83356e5 100644 --- a/cmd/main-migration/Makefile +++ b/cmd/main-migration/Makefile @@ -15,4 +15,4 @@ apply: ## Calculate the schema hash hash: - atlas schema hash --env $(ENV) + atlas migrate hash diff --git a/cmd/main-migration/migrations/20250916043819.sql b/cmd/main-migration/migrations/20250916043819.sql new file mode 100644 index 00000000..1abe147b --- /dev/null +++ b/cmd/main-migration/migrations/20250916043819.sql @@ -0,0 +1,14 @@ +-- Modify "DeviceOrder" table +ALTER TABLE "public"."DeviceOrder" ADD COLUMN "Status_Code" text NULL; +-- Modify "DeviceOrderItem" table +ALTER TABLE "public"."DeviceOrderItem" ADD COLUMN "Count" smallint NULL; +-- Modify "MaterialOrder" table +ALTER TABLE "public"."MaterialOrder" ADD COLUMN "Status_Code" text NULL; +-- Modify "Medication" table +ALTER TABLE "public"."Medication" ADD COLUMN "Status_Code" text NULL; +-- Modify "MedicationItem" table +ALTER TABLE "public"."MedicationItem" ALTER COLUMN "Usage" TYPE numeric, ADD COLUMN "IsRedeemed" boolean NULL; +-- Modify "PrescriptionItem" table +ALTER TABLE "public"."PrescriptionItem" ALTER COLUMN "Usage" TYPE numeric; +-- Modify "MedicationItemDist" table +ALTER TABLE "public"."MedicationItemDist" ALTER COLUMN "Remain" TYPE numeric, ADD COLUMN "Nurse_Id" bigint NULL, ADD CONSTRAINT "fk_MedicationItemDist_Nurse" FOREIGN KEY ("Nurse_Id") REFERENCES "public"."Nurse" ("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 7bc09afb..fcc26fdd 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:vKW524Os6+DLuWTIk2ogb2LnlRoaYqgz1GLvvmc2KYA= +h1:lwrJz1Vor7muHsLHihYT704fcsjyX/JmBfRLfg+4PjI= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -6,4 +6,5 @@ h1:vKW524Os6+DLuWTIk2ogb2LnlRoaYqgz1GLvvmc2KYA= 20250908073811.sql h1:m2aNXfnGxnLq1+rVWrh4f60q7fhyhV3gEwNu/OIqQlE= 20250908073839.sql h1:cPk54xjLdMs26uY8ZHjNWLuyfAMzV7Zb0/9oJQrsw04= 20250910055902.sql h1:5xwjAV6QbtZT9empTJKfhyAjdknbHzb15B0Ku5dzqtQ= -20250915123412.sql h1:CndzsEFauRnieT/Qv/kqZ5Gr49g6f127Tq/fskHAPwg= +20250915123412.sql h1:D83xaU2YlDEd21HLup/YQpQ2easMToYCyy/oK6AFgQs= +20250916043819.sql h1:qcON0PZq3bYL0dWZdDMHEvK9C7oH4JIMh5Il+RWA3UY= diff --git a/cmd/satusehat-migration/Makefile b/cmd/satusehat-migration/Makefile index 92a4be84..e83356e5 100644 --- a/cmd/satusehat-migration/Makefile +++ b/cmd/satusehat-migration/Makefile @@ -15,4 +15,4 @@ apply: ## Calculate the schema hash hash: - atlas schema hash --env $(ENV) + atlas migrate hash diff --git a/internal/domain/main-entities/device-order-item/dto.go b/internal/domain/main-entities/device-order-item/dto.go index 8b29a332..3added12 100644 --- a/internal/domain/main-entities/device-order-item/dto.go +++ b/internal/domain/main-entities/device-order-item/dto.go @@ -9,6 +9,7 @@ import ( type CreateDto struct { DeviceOrder_Id *uint `json:"deviceOrder_id"` Device_Id *uint `json:"device_id"` + Count uint8 `json:"count"` } type ReadListDto struct { @@ -20,6 +21,7 @@ type ReadListDto struct { type FilterDto struct { DeviceOrder_Id *uint `json:"deviceOrder_id"` Device_Id *uint `json:"device_id"` + Count uint8 `json:"count"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -50,6 +52,7 @@ type ResponseDto struct { DeviceOrder *edo.DeviceOrder `json:"deviceOrder,omitempty"` Device_Id *uint `json:"device_id"` Device *ed.Device `json:"device,omitempty"` + Count uint8 `json:"count"` } func (d DeviceOrderItem) ToResponse() ResponseDto { @@ -58,6 +61,7 @@ func (d DeviceOrderItem) ToResponse() ResponseDto { DeviceOrder: d.DeviceOrder, Device_Id: d.Device_Id, Device: d.Device, + Count: d.Count, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/device-order-item/entity.go b/internal/domain/main-entities/device-order-item/entity.go index 536f0e13..196415af 100644 --- a/internal/domain/main-entities/device-order-item/entity.go +++ b/internal/domain/main-entities/device-order-item/entity.go @@ -12,4 +12,5 @@ type DeviceOrderItem struct { DeviceOrder *edo.DeviceOrder `json:"deviceOrder,omitempty" gorm:"foreignKey:DeviceOrder_Id;references:Id"` Device_Id *uint `json:"device_id"` Device *ed.Device `json:"device,omitempty" gorm:"foreignKey:Device_Id;references:Id"` + Count uint8 `json:"count"` } diff --git a/internal/domain/main-entities/device-order/dto.go b/internal/domain/main-entities/device-order/dto.go index cf2fc5ff..f26d1155 100644 --- a/internal/domain/main-entities/device-order/dto.go +++ b/internal/domain/main-entities/device-order/dto.go @@ -3,10 +3,12 @@ package deviceorder import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" + erc "simrs-vx/internal/domain/references/common" ) type CreateDto struct { - Encounter_Id *uint `json:"encounter_id"` + Encounter_Id *uint `json:"encounter_id"` + Status_Code erc.DataStatusCode `json:"status_code"` } type ReadListDto struct { @@ -16,7 +18,8 @@ type ReadListDto struct { } type FilterDto struct { - Encounter_Id *uint `json:"encounter_id"` + Encounter_Id *uint `json:"encounter_id"` + Status_Code erc.DataStatusCode `json:"status_code"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -43,14 +46,16 @@ type MetaDto struct { type ResponseDto struct { ecore.Main - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty"` + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty"` + Status_Code erc.DataStatusCode `json:"status_code"` } func (d DeviceOrder) ToResponse() ResponseDto { resp := ResponseDto{ Encounter_Id: d.Encounter_Id, Encounter: d.Encounter, + Status_Code: d.Status_Code, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/device-order/entity.go b/internal/domain/main-entities/device-order/entity.go index b07067fc..79af88c2 100644 --- a/internal/domain/main-entities/device-order/entity.go +++ b/internal/domain/main-entities/device-order/entity.go @@ -3,10 +3,13 @@ package deviceorder import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" + + erc "simrs-vx/internal/domain/references/common" ) type DeviceOrder struct { - ecore.Main // adjust this according to the needs - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + ecore.Main // adjust this according to the needs + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Status_Code erc.DataStatusCode `json:"status_code"` } diff --git a/internal/domain/main-entities/material-order/dto.go b/internal/domain/main-entities/material-order/dto.go index 475ef7f8..849f887f 100644 --- a/internal/domain/main-entities/material-order/dto.go +++ b/internal/domain/main-entities/material-order/dto.go @@ -3,10 +3,12 @@ package materialorder import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" + erc "simrs-vx/internal/domain/references/common" ) type CreateDto struct { - Encounter_Id *uint `json:"encounter_id"` + Encounter_Id *uint `json:"encounter_id"` + Status_Code erc.DataStatusCode `json:"status_code"` } type ReadListDto struct { @@ -16,7 +18,8 @@ type ReadListDto struct { } type FilterDto struct { - Encounter_Id *uint `json:"encounter_id"` + Encounter_Id *uint `json:"encounter_id"` + Status_Code erc.DataStatusCode `json:"status_code"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -43,14 +46,16 @@ type MetaDto struct { type ResponseDto struct { ecore.Main - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty"` + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty"` + Status_Code erc.DataStatusCode `json:"status_code"` } func (d MaterialOrder) ToResponse() ResponseDto { resp := ResponseDto{ Encounter_Id: d.Encounter_Id, Encounter: d.Encounter, + Status_Code: d.Status_Code, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/material-order/entity.go b/internal/domain/main-entities/material-order/entity.go index 566659d3..e306d372 100644 --- a/internal/domain/main-entities/material-order/entity.go +++ b/internal/domain/main-entities/material-order/entity.go @@ -3,10 +3,13 @@ package materialorder import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" + + erc "simrs-vx/internal/domain/references/common" ) type MaterialOrder struct { - ecore.Main // adjust this according to the needs - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + ecore.Main // adjust this according to the needs + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + Status_Code erc.DataStatusCode `json:"status_code"` } diff --git a/internal/domain/main-entities/medication-item-dist/dto.go b/internal/domain/main-entities/medication-item-dist/dto.go index 05278d81..cf44fb50 100644 --- a/internal/domain/main-entities/medication-item-dist/dto.go +++ b/internal/domain/main-entities/medication-item-dist/dto.go @@ -9,7 +9,8 @@ import ( type CreateDto struct { MedicationItem_Id *uint `json:"medicationItem_id"` DateTime *time.Time `json:"dateTime"` - Remain *uint `json:"remain"` + Remain float64 `json:"remain"` + Nurse_Id *uint `json:"nurse_id"` } type ReadListDto struct { @@ -21,7 +22,8 @@ type ReadListDto struct { type FilterDto struct { MedicationItem_Id *uint `json:"medicationItem_id"` DateTime *time.Time `json:"dateTime"` - Remain *uint `json:"remain"` + Remain float64 `json:"remain"` + Nurse_Id *uint `json:"nurse_id"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -51,7 +53,8 @@ type ResponseDto struct { MedicationItem_Id *uint `json:"medicationItem_id"` MedicationItem *emi.MedicationItem `json:"medicationItem,omitempty"` DateTime *time.Time `json:"dateTime"` - Remain *uint `json:"remain"` + Remain float64 `json:"remain"` + Nurse_Id *uint `json:"nurse_id"` } func (d MedicationItemDist) ToResponse() ResponseDto { @@ -60,6 +63,7 @@ func (d MedicationItemDist) ToResponse() ResponseDto { MedicationItem: d.MedicationItem, DateTime: d.DateTime, Remain: d.Remain, + Nurse_Id: d.Nurse_Id, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/medication-item-dist/entity.go b/internal/domain/main-entities/medication-item-dist/entity.go index 5bd56912..99e16d48 100644 --- a/internal/domain/main-entities/medication-item-dist/entity.go +++ b/internal/domain/main-entities/medication-item-dist/entity.go @@ -1,9 +1,11 @@ package medicationitem import ( + "time" + ecore "simrs-vx/internal/domain/base-entities/core" emi "simrs-vx/internal/domain/main-entities/medication-item" - "time" + en "simrs-vx/internal/domain/main-entities/nurse" ) type MedicationItemDist struct { @@ -11,5 +13,7 @@ type MedicationItemDist struct { MedicationItem_Id *uint `json:"medicationItem_id"` MedicationItem *emi.MedicationItem `json:"medicationItem,omitempty" gorm:"foreignKey:MedicationItem_Id;references:Id"` DateTime *time.Time `json:"dateTime"` - Remain *uint `json:"remain"` + Remain float64 `json:"remain"` + Nurse_Id *uint `json:"nurse_id"` + Nurse *en.Nurse `json:"nurse,omitempty" gorm:"foreignKey:Nurse_Id;references:Id"` } diff --git a/internal/domain/main-entities/medication-item/dto.go b/internal/domain/main-entities/medication-item/dto.go index 59ae7688..00edb045 100644 --- a/internal/domain/main-entities/medication-item/dto.go +++ b/internal/domain/main-entities/medication-item/dto.go @@ -13,9 +13,10 @@ type CreateDto struct { IsMix bool `json:"isMix"` Medicine_Id *uint `json:"medicine_id"` MedicineMix_Id *uint `json:"medicineMix_id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` + IsRedeemed bool `json:"isRedeemed"` } type ReadListDto struct { @@ -29,9 +30,10 @@ type FilterDto struct { IsMix bool `json:"isMix"` Medicine_Id *uint `json:"medicine_id"` MedicineMix_Id *uint `json:"medicineMix_id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` + IsRedeemed bool `json:"isRedeemed"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -65,9 +67,10 @@ type ResponseDto struct { Medicine *em.Medicine `json:"medicine,omitempty"` MedicineMix_Id *uint `json:"medicineMix_id"` MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` + IsRedeemed bool `json:"isRedeemed"` } func (d MedicationItem) ToResponse() ResponseDto { @@ -82,6 +85,7 @@ func (d MedicationItem) ToResponse() ResponseDto { Usage: d.Usage, Interval: d.Interval, IntervalUnit_Code: d.IntervalUnit_Code, + IsRedeemed: d.IsRedeemed, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/medication-item/entity.go b/internal/domain/main-entities/medication-item/entity.go index ef7f20ea..671e96b3 100644 --- a/internal/domain/main-entities/medication-item/entity.go +++ b/internal/domain/main-entities/medication-item/entity.go @@ -18,7 +18,8 @@ type MedicationItem struct { Medicine *em.Medicine `json:"medicine,omitempty" gorm:"foreignKey:Medicine_Id;references:Id"` MedicineMix_Id *uint `json:"medicineMix_id"` MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty" gorm:"foreignKey:MedicineMix_Id;references:Id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` + IsRedeemed bool `json:"isRedeemed"` } diff --git a/internal/domain/main-entities/medication/dto.go b/internal/domain/main-entities/medication/dto.go index 1bc1c774..ec158df8 100644 --- a/internal/domain/main-entities/medication/dto.go +++ b/internal/domain/main-entities/medication/dto.go @@ -4,13 +4,15 @@ import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" ep "simrs-vx/internal/domain/main-entities/pharmacist" + erc "simrs-vx/internal/domain/references/common" "time" ) type CreateDto struct { - Encounter_Id *uint `json:"encounter_id"` - IssuedAt *time.Time `json:"issuedAt"` - Pharmacist_Id *uint `json:"pharmacist_id"` + Encounter_Id *uint `json:"encounter_id"` + IssuedAt *time.Time `json:"issuedAt"` + Pharmacist_Id *uint `json:"pharmacist_id"` + Status_Code erc.DataStatusCode `json:"status_code"` } type ReadListDto struct { @@ -20,9 +22,10 @@ type ReadListDto struct { } type FilterDto struct { - Encounter_Id *uint `json:"encounter_id"` - IssuedAt *time.Time `json:"issuedAt"` - Pharmacist_Id *uint `json:"pharmacist_id"` + Encounter_Id *uint `json:"encounter_id"` + IssuedAt *time.Time `json:"issuedAt"` + Pharmacist_Id *uint `json:"pharmacist_id"` + Status_Code erc.DataStatusCode `json:"status_code"` Page int `json:"page"` PageSize int `json:"page_size"` @@ -49,11 +52,12 @@ type MetaDto struct { type ResponseDto struct { ecore.Main - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty"` - IssuedAt *time.Time `json:"issuedAt"` - Pharmacist_Id *uint `json:"pharmacist_id"` - Pharmacist *ep.Pharmacist `json:"pharmacist,omitempty"` + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty"` + IssuedAt *time.Time `json:"issuedAt"` + Pharmacist_Id *uint `json:"pharmacist_id"` + Pharmacist *ep.Pharmacist `json:"pharmacist,omitempty"` + Status_Code erc.DataStatusCode `json:"status_code"` } func (d Medication) ToResponse() ResponseDto { @@ -63,6 +67,7 @@ func (d Medication) ToResponse() ResponseDto { IssuedAt: d.IssuedAt, Pharmacist_Id: d.Pharmacist_Id, Pharmacist: d.Pharmacist, + Status_Code: d.Status_Code, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/medication/entity.go b/internal/domain/main-entities/medication/entity.go index f18af23c..cc126de7 100644 --- a/internal/domain/main-entities/medication/entity.go +++ b/internal/domain/main-entities/medication/entity.go @@ -6,13 +6,16 @@ import ( ecore "simrs-vx/internal/domain/base-entities/core" ee "simrs-vx/internal/domain/main-entities/encounter" ep "simrs-vx/internal/domain/main-entities/pharmacist" + + erc "simrs-vx/internal/domain/references/common" ) type Medication struct { - ecore.Main // adjust this according to the needs - Encounter_Id *uint `json:"encounter_id"` - Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` - IssuedAt *time.Time `json:"issuedAt"` - Pharmacist_Id *uint `json:"pharmacist_id"` - Pharmacist *ep.Pharmacist `json:"pharmacist,omitempty" gorm:"foreignKey:Pharmacist_Id;references:Id"` + ecore.Main // adjust this according to the needs + Encounter_Id *uint `json:"encounter_id"` + Encounter *ee.Encounter `json:"encounter,omitempty" gorm:"foreignKey:Encounter_Id;references:Id"` + IssuedAt *time.Time `json:"issuedAt"` + Pharmacist_Id *uint `json:"pharmacist_id"` + Pharmacist *ep.Pharmacist `json:"pharmacist,omitempty" gorm:"foreignKey:Pharmacist_Id;references:Id"` + Status_Code erc.DataStatusCode `json:"status_code"` } diff --git a/internal/domain/main-entities/prescription-item/dto.go b/internal/domain/main-entities/prescription-item/dto.go index a87daaae..f23a6610 100644 --- a/internal/domain/main-entities/prescription-item/dto.go +++ b/internal/domain/main-entities/prescription-item/dto.go @@ -13,7 +13,7 @@ type CreateDto struct { IsMix bool `json:"isMix"` Medicine_Id *uint `json:"medicine_id"` MedicineMix_Id *uint `json:"medicineMix_id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` } @@ -29,7 +29,7 @@ type FilterDto struct { IsMix bool `json:"isMix"` Medicine_Id *uint `json:"medicine_id"` MedicineMix_Id *uint `json:"medicineMix_id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` @@ -65,7 +65,7 @@ type ResponseDto struct { Medicine *em.Medicine `json:"medicine,omitempty"` MedicineMix_Id *uint `json:"medicineMix_id"` MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` } diff --git a/internal/domain/main-entities/prescription-item/entity.go b/internal/domain/main-entities/prescription-item/entity.go index 3c662c5c..89537496 100644 --- a/internal/domain/main-entities/prescription-item/entity.go +++ b/internal/domain/main-entities/prescription-item/entity.go @@ -18,7 +18,7 @@ type PrescriptionItem struct { Medicine *em.Medicine `json:"medicine,omitempty" gorm:"foreignKey:Medicine_Id;references:Id"` MedicineMix_Id *uint `json:"medicineMix_id"` MedicineMix *emm.MedicineMix `json:"medicineMix,omitempty" gorm:"foreignKey:MedicineMix_Id;references:Id"` - Usage uint8 `json:"usage"` + Usage float64 `json:"usage"` Interval uint8 `json:"interval"` IntervalUnit_Code erc.TimeUnitCode `json:"intervalUnit_code"` }