Merge pull request #138 from dikstub-rssa/feat/adjustment-encounter-cancel
update encounter cancel flow
This commit is contained in:
@@ -3,6 +3,7 @@ package encounter
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
us "simrs-vx/internal/use-case/main-use-case/soapi"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -489,6 +490,32 @@ func UpdateStatusCode(input e.UpdateStatusDto) (*d.Data, error) {
|
|||||||
return pl.SetLogError(&event, input)
|
return pl.SetLogError(&event, input)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if input.StatusCode == erc.DSCCancel {
|
||||||
|
// TODO: Prevent cancellation if the billing has been verified
|
||||||
|
|
||||||
|
// TODO: Only "supervisi pendaftaran" could cancel encounter
|
||||||
|
|
||||||
|
// Prevent cancellation if soapi exist
|
||||||
|
encounterId := uint(input.Id)
|
||||||
|
dataSoapi, _, err := us.ReadListData(es.ReadListDto{
|
||||||
|
FilterDto: es.FilterDto{
|
||||||
|
Encounter_Id: &encounterId,
|
||||||
|
}}, &event, tx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(dataSoapi) > 0 {
|
||||||
|
event.Status = "failed"
|
||||||
|
event.ErrInfo = pl.ErrorInfo{
|
||||||
|
Code: "cancel-not-allowed",
|
||||||
|
Detail: "encounter can't be cancelled because SOAPI already exists",
|
||||||
|
Raw: errors.New("encounter has SOAPI records"),
|
||||||
|
}
|
||||||
|
return pl.SetLogError(&event, input)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mwRunner := newMiddlewareRunner(&event, tx)
|
mwRunner := newMiddlewareRunner(&event, tx)
|
||||||
mwRunner.setMwType(pu.MWTPre)
|
mwRunner.setMwType(pu.MWTPre)
|
||||||
// Run pre-middleware
|
// Run pre-middleware
|
||||||
|
|||||||
Reference in New Issue
Block a user