feat (prescription-item, medicine-mix, medication-item): adjust field, calculate qty

This commit is contained in:
dpurbosakti
2025-09-30 10:43:31 +07:00
parent 2cbd534b0d
commit 0f86c0827c
9 changed files with 31 additions and 6 deletions
@@ -142,6 +142,7 @@ func createMedication(encounter_id uint, event *pl.Event, tx *gorm.DB) error {
medicationCreate := em.CreateDto{
Encounter_Id: &encounter_id,
IssuedAt: pu.GetTimeNow(),
Status_Code: erc.DSCNew,
}
medication, err := um.CreateData(medicationCreate, event, tx)
if err != nil {
@@ -168,7 +169,8 @@ func createMedicineMixAndItem(input emi.MedicineMix, event *pl.Event, tx *gorm.D
pl.SetLogInfo(event, nil, "started", "createMedicineMix")
medicineMixCreate := emi.CreateDto{
Name: input.Name,
Name: input.Name,
Uom_Code: input.Uom_Code,
}
medicineMix, err := umi.CreateData(medicineMixCreate, event, tx)
if err != nil {
@@ -21,8 +21,12 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MedicationItem) {
data.IsMix = inputSrc.IsMix
data.Medicine_Id = inputSrc.Medicine_Id
data.MedicineMix_Id = inputSrc.MedicineMix_Id
data.Frequency = inputSrc.Frequency
data.Dose = inputSrc.Dose
data.Usage = inputSrc.Usage
data.Interval = inputSrc.Interval
data.IntervalUnit_Code = inputSrc.IntervalUnit_Code
data.IsRedeemed = inputSrc.IsRedeemed
data.Quantity = inputSrc.Quantity
data.Note = inputSrc.Note
}
@@ -18,4 +18,5 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.MedicineMix) {
}
data.Name = inputSrc.Name
data.Uom_Code = inputSrc.Uom_Code
}
@@ -35,6 +35,8 @@ func Create(input e.CreateDto) (*d.Data, error) {
return err
}
input.Quantity = countQty(input)
if resData, err := CreateData(input, &event, tx); err != nil {
return err
} else {
@@ -21,8 +21,17 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.PrescriptionItem) {
data.IsMix = inputSrc.IsMix
data.Medicine_Id = inputSrc.Medicine_Id
data.MedicineMix_Id = inputSrc.MedicineMix_Id
data.Frequency = inputSrc.Frequency
data.Dose = inputSrc.Dose
data.Usage = inputSrc.Usage
data.Interval = inputSrc.Interval
data.IntervalUnit_Code = inputSrc.IntervalUnit_Code
data.Quantity = inputSrc.Quantity
}
func countQty(input e.CreateDto) float64 {
if input.Frequency != nil && input.Dose != 0 && input.IntervalMultiplier != nil {
return (float64(*input.Frequency) * float64(input.Dose)) * float64(*input.IntervalMultiplier)
}
return 0
}
@@ -85,7 +85,8 @@ func createMedicineMixAndItem(input emi.MedicineMix, event *pl.Event, tx *gorm.D
pl.SetLogInfo(event, nil, "started", "createMedicineMix")
medicineMixCreate := emi.CreateDto{
Name: input.Name,
Name: input.Name,
Uom_Code: input.Uom_Code,
}
medicineMix, err := umi.CreateData(medicineMixCreate, event, tx)
if err != nil {
@@ -116,6 +117,8 @@ func createMedicationItem(medication_id uint, input epi.PrescriptionItem, event
IsMix: input.IsMix,
Medicine_Id: input.Medicine_Id,
MedicineMix_Id: input.MedicineMix_Id,
Frequency: input.Frequency,
Dose: input.Dose,
Usage: input.Usage,
Interval: input.Interval,
IntervalUnit_Code: input.IntervalUnit_Code,