diff --git a/cmd/main-migration/migrations/20251007022859.sql b/cmd/main-migration/migrations/20251007022859.sql new file mode 100644 index 00000000..03b0890b --- /dev/null +++ b/cmd/main-migration/migrations/20251007022859.sql @@ -0,0 +1,2 @@ +-- Modify "Patient" table +ALTER TABLE "public"."Patient" ADD COLUMN "NewBornStatus" boolean NULL; diff --git a/cmd/main-migration/migrations/atlas.sum b/cmd/main-migration/migrations/atlas.sum index e900c72e..d0920867 100644 --- a/cmd/main-migration/migrations/atlas.sum +++ b/cmd/main-migration/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:mTtZwYftlpTk+eVzzPqjg+OMUYcQGa39qB5fLUehDC8= +h1:ZyLhZFZoiN0F1XdEaKvIbcFdvrYL1nLWtjK94oqn9IA= 20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k= 20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0= 20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI= @@ -26,4 +26,5 @@ h1:mTtZwYftlpTk+eVzzPqjg+OMUYcQGa39qB5fLUehDC8= 20251005060450.sql h1:LbtCE2b+8osM3CvnmQJH1uCPtn+d7WchsslBOz8bL3Q= 20251006041122.sql h1:MlS7f21z06sutnf9dIekt5fuHJr4lgcQ4uCuCXAGsfc= 20251006045658.sql h1:3FmGCPCzjgMPdWDRodZTsx3KVaodd9zB9ilib69aewk= -20251006045928.sql h1:bIdFndhaIdxtwEJr9aNirQTZ2bFGg9KK5PYhN8dDyUs= +20251006045928.sql h1:Z5g31PmnzNwk/OKdODcxZGm8fjJQdMFK32Xfnt3bRHg= +20251007022859.sql h1:fFz0Kjuopv0QqLDiMvq+9sfq6K6PdiOs55EECWk4U+I= diff --git a/internal/domain/main-entities/patient/dto.go b/internal/domain/main-entities/patient/dto.go index 394d1ee7..26cac97e 100644 --- a/internal/domain/main-entities/patient/dto.go +++ b/internal/domain/main-entities/patient/dto.go @@ -17,6 +17,7 @@ import ( type CreateDto struct { Person_Id *uint `json:"-"` Person *ep.UpdateDto `json:"person"` + NewBornStatus bool `json:"newBornStatus"` PersonAddresses []epa.UpdateDto `json:"personAddresses"` PersonContacts []epc.UpdateDto `json:"personContacts"` PersonRelatives []epr.UpdateDto `json:"personRelatives"` @@ -32,10 +33,11 @@ type ReadListDto struct { } type FilterDto struct { - Person_Id *uint `json:"person-id"` - RegisteredAt *time.Time `json:"registeredAt"` - Status_Code erc.ActiveStatusCode `json:"status-code"` - Number *string `json:"number"` + Person_Id *uint `json:"person-id"` + NewBornStatus *bool `json:"newBornStatus"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status-code"` + Number *string `json:"number"` } type ReadDetailDto struct { @@ -76,20 +78,22 @@ type MetaDto struct { type ResponseDto struct { ecore.Main - Person_Id *uint `json:"person_id"` - Person *ep.Person `json:"person,omitempty"` - RegisteredAt *time.Time `json:"registeredAt"` - Status_Code erc.ActiveStatusCode `json:"status_code"` - Number *string `json:"number"` + Person_Id *uint `json:"person_id"` + Person *ep.Person `json:"person,omitempty"` + NewBornStatus bool `json:"newBornStatus"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code"` + Number *string `json:"number"` } func (d Patient) ToResponse() ResponseDto { resp := ResponseDto{ - Person_Id: d.Person_Id, - Person: d.Person, - RegisteredAt: d.RegisteredAt, - Status_Code: d.Status_Code, - Number: d.Number, + Person_Id: d.Person_Id, + Person: d.Person, + NewBornStatus: d.NewBornStatus, + RegisteredAt: d.RegisteredAt, + Status_Code: d.Status_Code, + Number: d.Number, } resp.Main = d.Main return resp diff --git a/internal/domain/main-entities/patient/entity.go b/internal/domain/main-entities/patient/entity.go index ada67f3b..491140cd 100644 --- a/internal/domain/main-entities/patient/entity.go +++ b/internal/domain/main-entities/patient/entity.go @@ -8,10 +8,11 @@ import ( ) type Patient struct { - ecore.Main // adjust this according to the needs - Person_Id *uint `json:"person_id"` - Person *ep.Person `json:"person,omitempty" gorm:"foreignKey:Person_Id;references:Id"` - RegisteredAt *time.Time `json:"registeredAt"` - Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` - Number *string `json:"number" gorm:"unique;size:15"` + ecore.Main // adjust this according to the needs + Person_Id *uint `json:"person_id"` + Person *ep.Person `json:"person,omitempty" gorm:"foreignKey:Person_Id;references:Id"` + NewBornStatus bool `json:"newBornStatus"` + RegisteredAt *time.Time `json:"registeredAt"` + Status_Code erc.ActiveStatusCode `json:"status_code" gorm:"not null;size:10"` + Number *string `json:"number" gorm:"unique;size:15"` } diff --git a/internal/use-case/main-use-case/device-order/helper.go b/internal/use-case/main-use-case/device-order/helper.go index f64e8886..3be32a7a 100644 --- a/internal/use-case/main-use-case/device-order/helper.go +++ b/internal/use-case/main-use-case/device-order/helper.go @@ -6,18 +6,20 @@ package deviceorder import ( e "simrs-vx/internal/domain/main-entities/device-order" + + erc "simrs-vx/internal/domain/references/common" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.DeviceOrder) { var inputSrc *e.CreateDto if inputT, ok := any(input).(*e.CreateDto); ok { inputSrc = inputT + data.Status_Code = erc.DSCNew } else { inputTemp := any(input).(*e.UpdateDto) inputSrc = &inputTemp.CreateDto } data.Encounter_Id = inputSrc.Encounter_Id - data.Status_Code = inputSrc.Status_Code data.Doctor_Id = inputSrc.Doctor_Id } diff --git a/internal/use-case/main-use-case/material-order/helper.go b/internal/use-case/main-use-case/material-order/helper.go index c3a0fdde..fe0862e9 100644 --- a/internal/use-case/main-use-case/material-order/helper.go +++ b/internal/use-case/main-use-case/material-order/helper.go @@ -6,18 +6,20 @@ package materialorder import ( e "simrs-vx/internal/domain/main-entities/material-order" + + erc "simrs-vx/internal/domain/references/common" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MaterialOrder) { var inputSrc *e.CreateDto if inputT, ok := any(input).(*e.CreateDto); ok { inputSrc = inputT + data.Status_Code = erc.DSCNew } else { inputTemp := any(input).(*e.UpdateDto) inputSrc = &inputTemp.CreateDto } data.Encounter_Id = inputSrc.Encounter_Id - data.Status_Code = inputSrc.Status_Code data.Doctor_Id = inputSrc.Doctor_Id } diff --git a/internal/use-case/main-use-case/mcu-order/helper.go b/internal/use-case/main-use-case/mcu-order/helper.go index b5c9bdf1..8c7115b6 100644 --- a/internal/use-case/main-use-case/mcu-order/helper.go +++ b/internal/use-case/main-use-case/mcu-order/helper.go @@ -6,19 +6,21 @@ package mcuorder import ( e "simrs-vx/internal/domain/main-entities/mcu-order" + + erc "simrs-vx/internal/domain/references/common" ) func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.McuOrder) { var inputSrc *e.CreateDto if inputT, ok := any(input).(*e.CreateDto); ok { inputSrc = inputT + data.Status_Code = erc.DSCNew } else { inputTemp := any(input).(*e.UpdateDto) inputSrc = &inputTemp.CreateDto } data.Encounter_Id = inputSrc.Encounter_Id - data.Status_Code = inputSrc.Status_Code data.Doctor_Id = inputSrc.Doctor_Id data.SpecimenPickTime = inputSrc.SpecimenPickTime data.ExaminationDate = inputSrc.ExaminationDate diff --git a/internal/use-case/main-use-case/patient/helper.go b/internal/use-case/main-use-case/patient/helper.go index 82154b47..8abfeaf3 100644 --- a/internal/use-case/main-use-case/patient/helper.go +++ b/internal/use-case/main-use-case/patient/helper.go @@ -40,6 +40,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Patient) error { data.Person_Id = inputSrc.Person_Id data.RegisteredAt = inputSrc.RegisteredAt data.Status_Code = inputSrc.Status_Code + data.NewBornStatus = inputSrc.NewBornStatus return nil } diff --git a/internal/use-case/main-use-case/prescription/helper.go b/internal/use-case/main-use-case/prescription/helper.go index ee0b23b3..8b85884a 100644 --- a/internal/use-case/main-use-case/prescription/helper.go +++ b/internal/use-case/main-use-case/prescription/helper.go @@ -12,6 +12,8 @@ import ( e "simrs-vx/internal/domain/main-entities/prescription" epi "simrs-vx/internal/domain/main-entities/prescription-item" + erc "simrs-vx/internal/domain/references/common" + um "simrs-vx/internal/use-case/main-use-case/medication" umei "simrs-vx/internal/use-case/main-use-case/medication-item" umi "simrs-vx/internal/use-case/main-use-case/medicine-mix" @@ -28,6 +30,7 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Prescription) { var inputSrc *e.CreateDto if inputT, ok := any(input).(*e.CreateDto); ok { inputSrc = inputT + data.Status_Code = erc.DSCNew } else { inputTemp := any(input).(*e.UpdateDto) inputSrc = &inputTemp.CreateDto @@ -36,7 +39,6 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Prescription) { data.Encounter_Id = inputSrc.Encounter_Id data.Doctor_Id = inputSrc.Doctor_Id data.IssuedAt = inputSrc.IssuedAt - data.Status_Code = inputSrc.Status_Code } func createMedication(prescription_id uint, event *pl.Event, tx *gorm.DB) error {