waiting for migration
This commit is contained in:
@@ -72,9 +72,14 @@ func (obj myBase) Delete(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
func (obj myBase) CheckOut(w http.ResponseWriter, r *http.Request) {
|
||||
dto := e.DischargeDto{}
|
||||
id := rw.ValidateInt(w, "id", r.PathValue("id"))
|
||||
if id <= 0 {
|
||||
return
|
||||
}
|
||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||
return
|
||||
}
|
||||
dto.Id = uint(id)
|
||||
res, err := u.CheckOut(dto)
|
||||
rw.DataResponse(w, res, err)
|
||||
}
|
||||
|
||||
@@ -84,9 +84,6 @@ func (obj myBase) Complete(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
dto := e.ReadDetailDto{}
|
||||
if res := rw.ValidateStructByIOR(w, r.Body, &dto); !res {
|
||||
return
|
||||
}
|
||||
dto.AuthInfo = *authInfo
|
||||
dto.Id = uint(id)
|
||||
res, err := u.Complete(dto)
|
||||
|
||||
@@ -379,6 +379,10 @@ func CheckOut(input e.DischargeDto) (*d.Data, error) {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := createMedication(data.Id, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pl.SetLogInfo(&event, nil, "complete")
|
||||
|
||||
return nil
|
||||
|
||||
@@ -9,16 +9,22 @@ import (
|
||||
e "simrs-vx/internal/domain/main-entities/encounter"
|
||||
es "simrs-vx/internal/domain/main-entities/soapi"
|
||||
|
||||
// ep "simrs-vx/internal/domain/main-entities/prescription"
|
||||
// epi "simrs-vx/internal/domain/main-entities/prescription-item"
|
||||
// em "simrs-vx/internal/domain/main-entities/medication"
|
||||
em "simrs-vx/internal/domain/main-entities/medication"
|
||||
emei "simrs-vx/internal/domain/main-entities/medication-item"
|
||||
emi "simrs-vx/internal/domain/main-entities/medicine-mix"
|
||||
emmi "simrs-vx/internal/domain/main-entities/medicine-mix-item"
|
||||
ep "simrs-vx/internal/domain/main-entities/prescription"
|
||||
epi "simrs-vx/internal/domain/main-entities/prescription-item"
|
||||
|
||||
// up "simrs-vx/internal/use-case/main-use-case/prescription"
|
||||
// upi "simrs-vx/internal/use-case/main-use-case/prescription-item"
|
||||
// um "simrs-vx/internal/use-case/main-use-case/medication"
|
||||
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"
|
||||
ummi "simrs-vx/internal/use-case/main-use-case/medicine-mix-item"
|
||||
up "simrs-vx/internal/use-case/main-use-case/prescription"
|
||||
upi "simrs-vx/internal/use-case/main-use-case/prescription-item"
|
||||
|
||||
pl "simrs-vx/pkg/logger"
|
||||
// pu "simrs-vx/pkg/use-case-helper"
|
||||
pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
erc "simrs-vx/internal/domain/references/common"
|
||||
ero "simrs-vx/internal/domain/references/organization"
|
||||
@@ -109,43 +115,93 @@ func checkSoapiByDocExists(encounter_id uint, event *pl.Event, tx *gorm.DB) erro
|
||||
return pl.SetLogError(event, nil)
|
||||
}
|
||||
|
||||
// func createMedication(encounter_id uint, event *pl.Event, tx *gorm.DB) error {
|
||||
// pl.SetLogInfo(event, nil, "started", "createMedication")
|
||||
func createMedication(encounter_id uint, event *pl.Event, tx *gorm.DB) error {
|
||||
pl.SetLogInfo(event, nil, "started", "createMedication")
|
||||
|
||||
// prescription, err := up.ReadDetailData(ep.ReadDetailDto{Id: encounter_id}, event, tx)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
prescription, err := up.ReadDetailData(ep.ReadDetailDto{Encounter_Id: &encounter_id}, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// prescriptionItem, _, err := upi.ReadListData(epi.ReadListDto{FilterDto: epi.FilterDto{Prescription_Id: &prescription.Id}}, event, tx)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
prescriptionItem, _, err := upi.ReadListData(epi.ReadListDto{FilterDto: epi.FilterDto{Prescription_Id: &prescription.Id}}, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// if len(prescriptionItem) == 0 {
|
||||
// return nil
|
||||
// }
|
||||
if len(prescriptionItem) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
// medicationCreate := em.CreateDto{
|
||||
// Encounter_Id: &encounter_id,
|
||||
// IssuedAt: pu.GetTimeNow(),
|
||||
// }
|
||||
// medication, err := um.CreateData(medicationCreate, event, tx)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
medicationCreate := em.CreateDto{
|
||||
Encounter_Id: &encounter_id,
|
||||
IssuedAt: pu.GetTimeNow(),
|
||||
}
|
||||
medication, err := um.CreateData(medicationCreate, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// for _, prescriptionItem := range prescriptionItem {
|
||||
// if prescriptionItem.IsMix {
|
||||
// continue
|
||||
// }
|
||||
// // medication, err := um.ReadDetailData(e.ReadDetailDto{Id: prescriptionItem.Medication_Id}, event, tx)
|
||||
// // if err != nil {
|
||||
// // return err
|
||||
// // }
|
||||
// // if medication.IsCompleted() {
|
||||
// // continue
|
||||
// // }
|
||||
// // createMedicationItemDist(medication.Id, event, tx)
|
||||
// }
|
||||
// }
|
||||
for _, prescriptionItem := range prescriptionItem {
|
||||
if prescriptionItem.IsMix {
|
||||
medMix_id, err := createMedicineMixAndItem(*prescriptionItem.MedicineMix, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
prescriptionItem.MedicineMix_Id = medMix_id
|
||||
}
|
||||
err := createMedicationItem(medication.Id, prescriptionItem, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func createMedicineMixAndItem(input emi.MedicineMix, event *pl.Event, tx *gorm.DB) (*uint, error) {
|
||||
pl.SetLogInfo(event, nil, "started", "createMedicineMix")
|
||||
|
||||
medicineMixCreate := emi.CreateDto{
|
||||
Name: input.Name,
|
||||
}
|
||||
medicineMix, err := umi.CreateData(medicineMixCreate, event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// recreate medicineMixItem with new medicineMix_id to keep medMixItem remain the same for prescriptionItem that is created
|
||||
for _, medicineMixItem := range input.MixItems {
|
||||
medicineMixItemCreate := emmi.CreateDto{
|
||||
MedicineMix_Id: &medicineMix.Id,
|
||||
Medicine_Id: medicineMixItem.Medicine_Id,
|
||||
Dose: medicineMixItem.Dose,
|
||||
}
|
||||
_, err := ummi.CreateData(medicineMixItemCreate, event, tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
}
|
||||
return &medicineMix.Id, nil
|
||||
}
|
||||
|
||||
func createMedicationItem(medication_id uint, input epi.PrescriptionItem, event *pl.Event, tx *gorm.DB) error {
|
||||
pl.SetLogInfo(event, nil, "started", "createMedicationItem")
|
||||
|
||||
medicationItemCreate := emei.CreateDto{
|
||||
Medication_Id: &medication_id,
|
||||
IsMix: input.IsMix,
|
||||
Medicine_Id: input.Medicine_Id,
|
||||
MedicineMix_Id: input.MedicineMix_Id,
|
||||
Usage: input.Usage,
|
||||
Interval: input.Interval,
|
||||
IntervalUnit_Code: input.IntervalUnit_Code,
|
||||
Quantity: input.Quantity,
|
||||
}
|
||||
|
||||
_, err := umei.CreateData(medicationItemCreate, event, tx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ func createMedicationItemDist(medication_id *uint, event *pl.Event, dbx ...*gorm
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
filterMI := emi.ReadListDto{FilterDto: emi.FilterDto{Medication_Id: medication_id, IsRedeemed: true}}
|
||||
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
|
||||
@@ -58,6 +58,7 @@ func createMedicationItemDist(medication_id *uint, event *pl.Event, dbx ...*gorm
|
||||
if _, err := umid.CreateData(midCreate, event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
pl.SetLogInfo(event, nil, "complete")
|
||||
|
||||
@@ -51,6 +51,8 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Me
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
tx = tx.Preload("MixItems")
|
||||
|
||||
tx = tx.
|
||||
Model(&e.MedicineMix{}).
|
||||
Scopes(gh.Filter(input)).
|
||||
@@ -90,6 +92,8 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
tx = tx.Preload("MixItems")
|
||||
|
||||
if err := tx.First(&data, input.Id).Error; err != nil {
|
||||
if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil {
|
||||
return nil, processedErr
|
||||
|
||||
@@ -172,9 +172,9 @@ func GetIdByUserId(user_id *uint, event *pl.Event, dbx ...*gorm.DB) (*uint, erro
|
||||
var nurse_id uint
|
||||
|
||||
err := tx.Model(&e.Nurse{}).
|
||||
Select("Nurse.Id as nurse_id").
|
||||
Joins("JOIN Employee e ON e.Id = Nurse.Employee_Id").
|
||||
Where("e.User_Id = ?", user_id).
|
||||
Select("\"Nurse\".\"Id\" as nurse_id").
|
||||
Joins("JOIN \"Employee\" AS e ON e.\"Id\" = \"Nurse\".\"Employee_Id\"").
|
||||
Where("e.\"User_Id\" = ?", user_id).
|
||||
Scan(&nurse_id).Error
|
||||
|
||||
if err != nil {
|
||||
|
||||
@@ -172,9 +172,9 @@ func GetIdByUserId(user_id *uint, event *pl.Event, dbx ...*gorm.DB) (*uint, erro
|
||||
var pharmacist_id uint
|
||||
|
||||
err := tx.Model(&e.Pharmacist{}).
|
||||
Select("Pharmacist.Id as pharmacist_id").
|
||||
Joins("JOIN Employee e ON e.Id = Pharmacist.Employee_Id").
|
||||
Where("e.User_Id = ?", user_id).
|
||||
Select("\"Pharmacist\".\"Id\" as pharmacist_id").
|
||||
Joins("JOIN \"Employee\" as e ON e.\"Id\" = \"Pharmacist\".\"Employee_Id\"").
|
||||
Where("e.\"User_Id\" = ?", user_id).
|
||||
Scan(&pharmacist_id).Error
|
||||
|
||||
if err != nil {
|
||||
|
||||
@@ -51,6 +51,8 @@ func ReadListData(input e.ReadListDto, event *pl.Event, dbx ...*gorm.DB) ([]e.Pr
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
tx = tx.Preload("MedicineMix").Preload("MedicineMix.MixItems")
|
||||
|
||||
if len(input.Preloads) > 0 {
|
||||
for _, preload := range input.Preloads {
|
||||
tx = tx.Preload(preload)
|
||||
@@ -96,6 +98,8 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
tx = tx.Preload("MedicineMix").Preload("MedicineMix.MixItems")
|
||||
|
||||
if err := tx.First(&data, input.Id).Error; err != nil {
|
||||
if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil {
|
||||
return nil, processedErr
|
||||
|
||||
Reference in New Issue
Block a user