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

No files matched your search

@@ -294,6 +294,6 @@ func ToResponseList(data []Encounter) []ResponseDto {
} }
type CreateWithPatientDto struct { type CreateWithPatientDto struct {
Encounter CreateDto `json:"encounter"` CreateDto
Patient ep.CreateDto `json:"patient"` Patient ep.CreateDto `json:"patient"`
} }
@@ -325,7 +325,7 @@ func (obj myBase) CreateWithPatient(w http.ResponseWriter, r *http.Request) {
} }
// validate SubClass // validate SubClass
if err := verifyClassCode(dto.Encounter); err != nil { if err := verifyClassCode(dto.CreateDto); err != nil {
rw.DataResponse(w, nil, d.FieldError{ rw.DataResponse(w, nil, d.FieldError{
Code: dataValidationFail, Code: dataValidationFail,
Message: err.Error(), Message: err.Error(),
@@ -333,7 +333,7 @@ func (obj myBase) CreateWithPatient(w http.ResponseWriter, r *http.Request) {
return return
} }
dto.Encounter.AuthInfo = *authInfo dto.AuthInfo = *authInfo
dto.Patient.AuthInfo = *authInfo dto.Patient.AuthInfo = *authInfo
res, err := u.CreateWithPatient(dto) res, err := u.CreateWithPatient(dto)
rw.DataResponse(w, res, err) rw.DataResponse(w, res, err)
@@ -1094,17 +1094,17 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
pl.SetLogInfo(&event, input, "started", "create") pl.SetLogInfo(&event, input, "started", "create")
roleAllowed := []string{string(erg.EPCReg)} 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 { if err != nil {
return nil, err return nil, err
} }
// validate rehab by bpjs // validate rehab by bpjs
if input.Encounter.RefTypeCode == ere.RTCBpjs && if input.RefTypeCode == ere.RTCBpjs &&
input.Encounter.Class_Code == ere.ECAmbulatory && input.Class_Code == ere.ECAmbulatory &&
ere.AmbulatoryClassCode(*input.Encounter.SubClass_Code) == ere.ACCRehab { ere.AmbulatoryClassCode(*input.SubClass_Code) == ere.ACCRehab {
// get latest rehab data // get latest rehab data
recentRehabData, err := getLatestRehabData(input.Encounter, &event) recentRehabData, err := getLatestRehabData(input.CreateDto, &event)
if err != nil { if err != nil {
return nil, err 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 // If the mode is "series", verify whether the visit count still remains
// and whether the series has not expired. // and whether the series has not expired.
// If visitMode is "series", then get encounterAdm // 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 { if err != nil {
return nil, err return nil, err
} }
} else { } 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. // 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 // get data soapi
recentSoapiDataforCopy, err = getSoapiEncounterAdm(*input.Encounter.RecentEncounterAdm, &event) recentSoapiDataforCopy, err = getSoapiEncounterAdm(*input.RecentEncounterAdm, &event)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -1134,13 +1134,13 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
} }
// check if patient is new in the hospital // check if patient is new in the hospital
input.Encounter.NewStatus, err = identifyPatientStatus(input.Encounter) input.NewStatus, err = identifyPatientStatus(input.CreateDto)
if err != nil { if err != nil {
return nil, err 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 { err = dg.I.Transaction(func(tx *gorm.DB) error {
// create patient // create patient
@@ -1155,28 +1155,28 @@ func CreateWithPatient(input e.CreateWithPatientDto) (*d.Data, error) {
} }
// create encounter // create encounter
input.Encounter.Patient_Id = &patientId input.Patient_Id = &patientId
if resData, err := CreateData(input.Encounter, &event, tx); err != nil { if resData, err := CreateData(input.CreateDto, &event, tx); err != nil {
return err return err
} else { } else {
data = *resData data = *resData
input.Encounter.Id = data.Id input.Id = data.Id
} }
// insert ambulatory/emergency/inpatient // insert ambulatory/emergency/inpatient
err = insertdataClassCode(input.Encounter, recentSoapiDataforCopy, &event, tx) err = insertdataClassCode(input.CreateDto, recentSoapiDataforCopy, &event, tx)
if err != nil { if err != nil {
return err return err
} }
// insert vclaimReference // insert vclaimReference
if vr := input.Encounter.VclaimReference; vr != nil { if vr := input.VclaimReference; vr != nil {
t, _ := time.Parse("2006-01-02", vr.TglRujukan) t, _ := time.Parse("2006-01-02", vr.TglRujukan)
_, err = uv.CreateData(ev.CreateDto{ _, err = uv.CreateData(ev.CreateDto{
Encounter_Id: &data.Id, Encounter_Id: &data.Id,
Date: &t, Date: &t,
SrcCode: input.Encounter.Ref_Number, SrcCode: input.Ref_Number,
SrcName: input.Encounter.RefSource_Name, SrcName: input.RefSource_Name,
Number: &vr.NoSep}, &event, tx) Number: &vr.NoSep}, &event, tx)
if err != nil { if err != nil {
return err return err