wip encounter + medication
This commit is contained in:
No files matched your search
@@ -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