feat(doctorstation): 添加取消接诊功能
- 在医生工作站界面添加取消接诊按钮 - 实现取消接诊的前端处理逻辑和确认对话框 - 添加计算属性控制取消接诊按钮的禁用状态 - 完善后端取消接诊服务的安全性检查和异常处理 - 优化取消接诊时的业务数据验证流程 - 添加详细的错误提示和用户反馈机制
This commit is contained in:
@@ -230,35 +230,67 @@ public class DoctorStationMainAppServiceImpl implements IDoctorStationMainAppSer
|
||||
*/
|
||||
@Override
|
||||
public R<?> cancelEncounter(Long encounterId) {
|
||||
//1.判断是否已经产生业务,如医生已经开有病历、处方、诊断、检验检查或相关项目已收费、执行等,
|
||||
//如果有则提示:需要医生删除、作废、退费才能【取消接诊】。
|
||||
//1.1病历
|
||||
Object emrDetailResult = iDoctorStationEmrAppService.getEmrDetail(encounterId).getData();
|
||||
try {
|
||||
//1.判断是否已经产生业务,如医生已经开有病历、处方、诊断、检验检查或相关项目已收费、执行等,
|
||||
//如果有则提示:需要医生删除、作废、退费才能【取消接诊】。
|
||||
|
||||
//1.1病历
|
||||
Object emrDetailResult = null;
|
||||
try {
|
||||
emrDetailResult = iDoctorStationEmrAppService.getEmrDetail(encounterId).getData();
|
||||
} catch (Exception e) {
|
||||
log.debug("获取病历信息失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
//1.2诊断
|
||||
Object diagnosisResult = iDoctorStationDiagnosisAppService.getEncounterDiagnosis(encounterId).getData();
|
||||
//1.2诊断
|
||||
Object diagnosisResult = null;
|
||||
try {
|
||||
diagnosisResult = iDoctorStationDiagnosisAppService.getEncounterDiagnosis(encounterId).getData();
|
||||
} catch (Exception e) {
|
||||
log.debug("获取诊断信息失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
//1.3处方
|
||||
Object adviceResult = iDoctorStationAdviceAppService.getRequestBaseInfo(encounterId).getData();
|
||||
//1.3处方
|
||||
Object adviceResult = null;
|
||||
try {
|
||||
adviceResult = iDoctorStationAdviceAppService.getRequestBaseInfo(encounterId).getData();
|
||||
} catch (Exception e) {
|
||||
log.debug("获取处方信息失败: {}", e.getMessage());
|
||||
}
|
||||
|
||||
//1.4中医诊断、处方
|
||||
Map<?,?> tcmDiagnosisResult = (Map<?,?>) iDoctorStationChineseMedicalAppService.getTcmEncounterDiagnosis(encounterId).getData();
|
||||
Object symptom = tcmDiagnosisResult.get("symptom");
|
||||
Object illness = tcmDiagnosisResult.get("illness");
|
||||
Object tcmPrescriptionResult = iDoctorStationChineseMedicalAppService.getTcmRequestBaseInfo(encounterId).getData();
|
||||
//1.4中医诊断、处方
|
||||
Object symptom = null;
|
||||
Object illness = null;
|
||||
Object tcmPrescriptionResult = null;
|
||||
|
||||
try {
|
||||
Map<?,?> tcmDiagnosisResult = (Map<?,?>) iDoctorStationChineseMedicalAppService.getTcmEncounterDiagnosis(encounterId).getData();
|
||||
if (tcmDiagnosisResult != null) {
|
||||
symptom = tcmDiagnosisResult.get("symptom");
|
||||
illness = tcmDiagnosisResult.get("illness");
|
||||
}
|
||||
tcmPrescriptionResult = iDoctorStationChineseMedicalAppService.getTcmRequestBaseInfo(encounterId).getData();
|
||||
} catch (Exception e) {
|
||||
// 中医模块可能未启用或返回异常,忽略
|
||||
log.debug("获取中医信息失败,可能未配置中医模块: {}", e.getMessage());
|
||||
}
|
||||
|
||||
boolean isEmpty = ObjectUtil.isAllEmpty(emrDetailResult, diagnosisResult, adviceResult, symptom,illness, tcmPrescriptionResult);
|
||||
boolean isEmpty = ObjectUtil.isAllEmpty(emrDetailResult, diagnosisResult, adviceResult, symptom, illness, tcmPrescriptionResult);
|
||||
|
||||
if (!isEmpty) {
|
||||
return R.fail();
|
||||
if (!isEmpty) {
|
||||
return R.fail("该患者已产生业务数据(病历、诊断、处方等),无法直接取消接诊。请先删除相关数据后再操作。");
|
||||
}
|
||||
|
||||
//2.取消接诊,患者重新回到患者队列待诊中
|
||||
int update = encounterMapper.update(null,
|
||||
new LambdaUpdateWrapper<Encounter>().eq(Encounter::getId, encounterId)
|
||||
.set(Encounter::getStatusEnum, EncounterStatus.PLANNED.getValue())
|
||||
.set(Encounter::getSubjectStatusEnum, EncounterSubjectStatus.TRIAGED.getValue()));
|
||||
return update > 0 ? R.ok("取消接诊成功") : R.fail("取消接诊失败,请刷新后重试");
|
||||
} catch (Exception e) {
|
||||
log.error("取消接诊时发生错误,encounterId={}", encounterId, e);
|
||||
return R.fail("取消接诊失败:" + e.getMessage());
|
||||
}
|
||||
|
||||
//2.取消接诊,患者重新回到患者队列待诊中
|
||||
int update = encounterMapper.update(null,
|
||||
new LambdaUpdateWrapper<Encounter>().eq(Encounter::getId, encounterId)
|
||||
.set(Encounter::getStatusEnum, EncounterStatus.PLANNED.getValue())
|
||||
.set(Encounter::getSubjectStatusEnum, EncounterSubjectStatus.TRIAGED.getValue()));
|
||||
return update > 0 ? R.ok() : R.fail();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user