fix (encouter): fix dto, change createdto from object to embedded in create-with-patient

This commit is contained in:
dpurbosakti
2025-12-15 13:15:46 +07:00
parent a87eed7eaa
commit eea6bc7700
3 changed files with 23 additions and 23 deletions
@@ -294,6 +294,6 @@ func ToResponseList(data []Encounter) []ResponseDto {
}
type CreateWithPatientDto struct {
Encounter CreateDto `json:"encounter"`
Patient ep.CreateDto `json:"patient"`
CreateDto
Patient ep.CreateDto `json:"patient"`
}
@@ -325,7 +325,7 @@ func (obj myBase) CreateWithPatient(w http.ResponseWriter, r *http.Request) {
}
// validate SubClass
if err := verifyClassCode(dto.Encounter); err != nil {
if err := verifyClassCode(dto.CreateDto); err != nil {
rw.DataResponse(w, nil, d.FieldError{
Code: dataValidationFail,
Message: err.Error(),
@@ -333,7 +333,7 @@ func (obj myBase) CreateWithPatient(w http.ResponseWriter, r *http.Request) {
return
}
dto.Encounter.AuthInfo = *authInfo
dto.AuthInfo = *authInfo
dto.Patient.AuthInfo = *authInfo
res, err := u.CreateWithPatient(dto)
rw.DataResponse(w, res, err)
@@ -1094,17 +1094,17 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
pl.SetLogInfo(&event, input, "started", "create")
roleAllowed := []string{string(erg.EPCReg)}
err = validateAuth(input.Encounter.AuthInfo, roleAllowed, "create-encounter", &event)
err = validateAuth(input.AuthInfo, roleAllowed, "create-encounter", &event)
if err != nil {
return nil, err
}
// validate rehab by bpjs
if input.Encounter.RefTypeCode == ere.RTCBpjs &&
input.Encounter.Class_Code == ere.ECAmbulatory &&
ere.AmbulatoryClassCode(*input.Encounter.SubClass_Code) == ere.ACCRehab {
if input.RefTypeCode == ere.RTCBpjs &&
input.Class_Code == ere.ECAmbulatory &&
ere.AmbulatoryClassCode(*input.SubClass_Code) == ere.ACCRehab {
// get latest rehab data
recentRehabData, err := getLatestRehabData(input.Encounter, &event)
recentRehabData, err := getLatestRehabData(input.CreateDto, &event)
if err != nil {
return nil, err
}
@@ -1115,18 +1115,18 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
// If the mode is "series", verify whether the visit count still remains
// and whether the series has not expired.
// If visitMode is "series", then get encounterAdm
input.Encounter.VisitMode_Code, input.Encounter.RecentEncounterAdm, err = determineVisitMode(recentRehabData, input.Encounter, &event)
input.VisitMode_Code, input.RecentEncounterAdm, err = determineVisitMode(recentRehabData, input.CreateDto, &event)
if err != nil {
return nil, err
}
} else {
input.Encounter.VisitMode_Code = ere.VMCAdm
input.VisitMode_Code = ere.VMCAdm
}
// When visitMode_Code is "series", load the associated SOAPI record to copy its values.
if input.Encounter.VisitMode_Code == ere.VMCSeries {
if input.VisitMode_Code == ere.VMCSeries {
// get data soapi
recentSoapiDataforCopy, err = getSoapiEncounterAdm(*input.Encounter.RecentEncounterAdm, &event)
recentSoapiDataforCopy, err = getSoapiEncounterAdm(*input.RecentEncounterAdm, &event)
if err != nil {
return nil, err
}
@@ -1134,13 +1134,13 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
}
// check if patient is new in the hospital
input.Encounter.NewStatus, err = identifyPatientStatus(input.Encounter)
input.NewStatus, err = identifyPatientStatus(input.CreateDto)
if err != nil {
return nil, err
}
input.Encounter.Adm_Employee_Id = input.Encounter.AuthInfo.Employee_Id
input.Adm_Employee_Id = input.AuthInfo.Employee_Id
mwRunner := newMiddlewareRunner(&event, input.Encounter.Sync)
mwRunner := newMiddlewareRunner(&event, input.Sync)
err = dg.I.Transaction(func(tx *gorm.DB) error {
// create patient
@@ -1155,28 +1155,28 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
}
// create encounter
input.Encounter.Patient_Id = &patientId
if resData, err := CreateData(input.Encounter, &event, tx); err != nil {
input.Patient_Id = &patientId
if resData, err := CreateData(input.CreateDto, &event, tx); err != nil {
return err
} else {
data = *resData
input.Encounter.Id = data.Id
input.Id = data.Id
}
// insert ambulatory/emergency/inpatient
err = insertdataClassCode(input.Encounter, recentSoapiDataforCopy, &event, tx)
err = insertdataClassCode(input.CreateDto, recentSoapiDataforCopy, &event, tx)
if err != nil {
return err
}
// insert vclaimReference
if vr := input.Encounter.VclaimReference; vr != nil {
if vr := input.VclaimReference; vr != nil {
t, _ := time.Parse("2006-01-02", vr.TglRujukan)
_, err = uv.CreateData(ev.CreateDto{
Encounter_Id: &data.Id,
Date: &t,
SrcCode: input.Encounter.Ref_Number,
SrcName: input.Encounter.RefSource_Name,
SrcCode: input.Ref_Number,
SrcName: input.RefSource_Name,
Number: &vr.NoSep}, &event, tx)
if err != nil {
return err