fix (encouter): fix dto, change createdto from object to embedded in create-with-patient
This commit is contained in:
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
|
||||||
|
|||||||
Reference in New Issue
Block a user