discharge wip

This commit is contained in:
dpurbosakti
2025-09-08 14:33:19 +07:00
parent daa8b76f9a
commit 1bb7647b6d
3 changed files with 82 additions and 23 deletions
@@ -1,9 +1,20 @@
package encounter
import (
e "simrs-vx/internal/domain/main-entities/encounter"
"errors"
"strconv"
ea "simrs-vx/internal/domain/main-entities/ambulatory"
ee "simrs-vx/internal/domain/main-entities/emergency"
e "simrs-vx/internal/domain/main-entities/encounter"
ei "simrs-vx/internal/domain/main-entities/inpatient"
ua "simrs-vx/internal/use-case/main-use-case/ambulatory"
ue "simrs-vx/internal/use-case/main-use-case/emergency"
ui "simrs-vx/internal/use-case/main-use-case/inpatient"
ere "simrs-vx/internal/domain/references/encounter"
dg "github.com/karincake/apem/db-gorm-pg"
d "github.com/karincake/dodol"
@@ -40,6 +51,54 @@ func Create(input e.CreateDto) (*d.Data, error) {
data = *resData
}
switch input.Class_Code {
case ere.ECAmbulatory:
ambCreate := ea.CreateDto{
Encounter_Id: &data.Id,
Class_Code: func() ere.AmbulatoryClassCode {
if input.SubClass_Code != nil {
return ere.AmbulatoryClassCode(*input.SubClass_Code)
}
return ""
}(),
}
_, err := ua.CreateData(ambCreate, &event, tx)
if err != nil {
return err
}
case ere.ECEmergency:
emerCreate := ee.CreateDto{
Encounter_Id: &data.Id,
Class_Code: func() ere.EmergencyClassCode {
if input.SubClass_Code != nil {
return ere.EmergencyClassCode(*input.SubClass_Code)
}
return ""
}(),
}
_, err := ue.CreateData(emerCreate, &event, tx)
if err != nil {
return err
}
case ere.ECInpatient:
inpCreate := ei.CreateDto{
Encounter_Id: &data.Id,
Class_Code: func() ere.InpatientClassCode {
if input.SubClass_Code != nil {
return ere.InpatientClassCode(*input.SubClass_Code)
}
return ""
}(),
Infra_Id: input.Infra_Id,
}
_, err := ui.CreateData(inpCreate, &event, tx)
if err != nil {
return err
}
default:
return errors.New("invalid encounter class code")
}
mwRunner.setMwType(pu.MWTPost)
// Run post-middleware
if err := mwRunner.RunCreateMiddleware(createPostMw, &input, &data); err != nil {
@@ -25,11 +25,6 @@ func setData[T *e.CreateDto | *e.UpdateDto](input T, data *e.Encounter) {
data.VisitDate = inputSrc.VisitDate
data.Appointment_Doctor_Id = inputSrc.Appointment_Doctor_Id
data.Responsible_Doctor_Id = inputSrc.Responsible_Doctor_Id
data.DischardeMethod_Code = inputSrc.DischardeMethod_Code
data.RefSource_Name = inputSrc.RefSource_Name
data.Appointment_Id = inputSrc.Appointment_Id
data.EarlyEducation = inputSrc.EarlyEducation
data.MedicalDischargeEducation = inputSrc.MedicalDischargeEducation
data.AdmDischargeEducation = inputSrc.AdmDischargeEducation
data.DischargeReason = inputSrc.DischargeReason
}