Merge pull request #138 from dikstub-rssa/feat/adjustment-encounter-cancel

update encounter cancel flow
This commit is contained in:
Dwi Atmoko Purbo Sakti
2025-11-11 15:36:22 +07:00
committed by GitHub
@@ -3,6 +3,7 @@ package encounter
import (
"errors"
"fmt"
us "simrs-vx/internal/use-case/main-use-case/soapi"
"strconv"
"time"
@@ -489,6 +490,32 @@ func UpdateStatusCode(input e.UpdateStatusDto) (*d.Data, error) {
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.setMwType(pu.MWTPre)
// Run pre-middleware