67 lines
1.9 KiB
Go
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
|
|
}
|