Files
simrsx-be/internal/use-case/main-use-case/medication/helper.go
T

67 lines
1.9 KiB
Go

/*
DESCRIPTION:
Any functions that are used internally by the use-case
*/
package medication
import (
e "simrs-vx/internal/domain/main-entities/medication"
emi "simrs-vx/internal/domain/main-entities/medication-item"
emid "simrs-vx/internal/domain/main-entities/medication-item-dist"
umi "simrs-vx/internal/use-case/main-use-case/medication-item"
umid "simrs-vx/internal/use-case/main-use-case/medication-item-dist"
pl "simrs-vx/pkg/logger"
pu "simrs-vx/pkg/use-case-helper"
dg "github.com/karincake/apem/db-gorm-pg"
"gorm.io/gorm"
)
func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Medication) {
var inputSrc *e.CreateDto
if inputT, ok := any(input).(*e.CreateDto); ok {
inputSrc = inputT
} else {
inputTemp := any(input).(*e.UpdateDto)
inputSrc = &inputTemp.CreateDto
}
data.Encounter_Id = inputSrc.Encounter_Id
data.IssuedAt = inputSrc.IssuedAt
data.Pharmacist_Code = inputSrc.Pharmacist_Code
data.Status_Code = inputSrc.Status_Code
}
func createMedicationItemDist(medication_id *uint, event *pl.Event, dbx ...*gorm.DB) error {
pl.SetLogInfo(event, nil, "started", "createMedicationItemDist")
var tx *gorm.DB
if len(dbx) > 0 {
tx = dbx[0]
} else {
tx = dg.I
}
filterMI := emi.ReadListDto{FilterDto: emi.FilterDto{Medication_Id: medication_id, IsRedeemed: true}, Preloads: []string{"MedicineMix"}}
medicationItemList, _, err := umi.ReadListData(filterMI, event, tx)
if err != nil {
return err
}
// Nurse id isn't set here because it will be set when medItemDist is consumed by the nurse who is logged in and performing the consume action, so it isn't needed here.
for _, medicationItem := range medicationItemList {
midCreate := emid.CreateDto{
MedicationItem_Id: &medicationItem.Id,
DateTime: pu.GetTimeNow(),
Remain: medicationItem.Quantity,
}
if _, err := umid.CreateData(midCreate, event, tx); err != nil {
return err
}
}
pl.SetLogInfo(event, nil, "complete")
return nil
}