wip encounter + medication
This commit is contained in:
@@ -8,7 +8,17 @@ import (
|
||||
"errors"
|
||||
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"
|
||||
|
||||
// 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"
|
||||
|
||||
pl "simrs-vx/pkg/logger"
|
||||
// pu "simrs-vx/pkg/use-case-helper"
|
||||
|
||||
erc "simrs-vx/internal/domain/references/common"
|
||||
ero "simrs-vx/internal/domain/references/organization"
|
||||
@@ -98,3 +108,44 @@ 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")
|
||||
|
||||
// prescription, err := up.ReadDetailData(ep.ReadDetailDto{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
|
||||
// }
|
||||
|
||||
// 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
|
||||
// }
|
||||
|
||||
// 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)
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -332,6 +332,10 @@ func Complete(input e.ReadDetailDto) (*d.Data, error) {
|
||||
return pl.SetLogError(&event, input)
|
||||
}
|
||||
|
||||
if err := createMedicationItemDist(&data.Id, &event, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pl.SetLogInfo(&event, nil, "complete")
|
||||
return nil
|
||||
})
|
||||
|
||||
@@ -6,10 +6,17 @@ 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"
|
||||
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) {
|
||||
@@ -27,32 +34,32 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Medication) {
|
||||
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
|
||||
// }
|
||||
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}}
|
||||
// medicationItemList, _, err := umi.ReadListData(filterMI, event, tx)
|
||||
// if err != nil {
|
||||
// return err
|
||||
// }
|
||||
// for _, medicationItem := range medicationItemList {
|
||||
// midCreate := emid.CreateDto{
|
||||
// MedicationItem_Id: &medicationItem.Id,
|
||||
// DateTime: medicationItem.MedicationItem.DateTime,
|
||||
// Remain: medicationItem.MedicationItem.Remain,
|
||||
// Nurse_Id: medicationItem.MedicationItem.Nurse_Id,
|
||||
// }
|
||||
// if err := umid.Create(midCreate); err != nil {
|
||||
// return err
|
||||
// }
|
||||
// }
|
||||
filterMI := emi.ReadListDto{FilterDto: emi.FilterDto{Medication_Id: medication_id, IsRedeemed: true}}
|
||||
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
|
||||
// }
|
||||
pl.SetLogInfo(event, nil, "complete")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -96,7 +96,15 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
if err := tx.First(&data, input.Id).Error; err != nil {
|
||||
if input.Encounter_Id != nil {
|
||||
tx = tx.Where("\"Encounter_Id\" = ?", *input.Encounter_Id)
|
||||
}
|
||||
|
||||
if input.Id != 0 {
|
||||
tx = tx.Where("\"Id\" = ?", input.Id)
|
||||
}
|
||||
|
||||
if err := tx.First(&data).Error; err != nil {
|
||||
if processedErr := pu.HandleReadError(err, event, source, input.Id, data); processedErr != nil {
|
||||
return nil, processedErr
|
||||
}
|
||||
|
||||
@@ -24,4 +24,5 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.PrescriptionItem) {
|
||||
data.Usage = inputSrc.Usage
|
||||
data.Interval = inputSrc.Interval
|
||||
data.IntervalUnit_Code = inputSrc.IntervalUnit_Code
|
||||
data.Quantity = inputSrc.Quantity
|
||||
}
|
||||
|
||||
@@ -20,4 +20,5 @@ 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
|
||||
}
|
||||
|
||||
@@ -96,7 +96,15 @@ func ReadDetailData(input e.ReadDetailDto, event *pl.Event, dbx ...*gorm.DB) (*e
|
||||
tx = dg.I
|
||||
}
|
||||
|
||||
if err := tx.First(&data, input.Id).Error; err != nil {
|
||||
if input.Encounter_Id != nil {
|
||||
tx = tx.Where("\"Encounter_Id\" = ?", *input.Encounter_Id)
|
||||
}
|
||||
|
||||
if input.Id != 0 {
|
||||
tx = tx.Where("\"Id\" = ?", input.Id)
|
||||
}
|
||||
|
||||
if err := tx.First(&data).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