● fix(#593): 取消停嘱护士站校验改用RequestStatus替代DispenseStatus
将 cancelStopRegAdvice 的护士站校验从判断 Dispense 发放状态 改为直接检查 MedicationRequest/ServiceRequest 是否仍为 STOPPED, 避免正常执行记录(EXECUTED)被误判为护士已核对停嘱。
This commit is contained in:
@@ -1165,18 +1165,35 @@ public class AdviceManageAppServiceImpl implements IAdviceManageAppService {
|
|||||||
= activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
|
= activityList.stream().map(AdviceBatchOpParam::getRequestId).collect(Collectors.toList());
|
||||||
|
|
||||||
// ============ 前置校验 ============
|
// ============ 前置校验 ============
|
||||||
// 1. 护士站校验:查询药品发放记录,确认护士站是否已执行停止核对(发药)
|
// 1. 护士站校验:确认医嘱请求仍处于"停止"状态,未被护士核对处理
|
||||||
|
// 修正:不再基于 MedicationDispense 历史状态校验(历史发放记录如 EXECUTED/COMPLETED
|
||||||
|
// 会被误判为护士已核对),改为直接检查 MedicationRequest/ServiceRequest 的当前状态
|
||||||
|
if (!medicineRequestIds.isEmpty()) {
|
||||||
|
List<MedicationRequest> medicineRequestList = iMedicationRequestService.list(
|
||||||
|
new LambdaQueryWrapper<MedicationRequest>()
|
||||||
|
.select(MedicationRequest::getId, MedicationRequest::getStatusEnum)
|
||||||
|
.in(MedicationRequest::getId, medicineRequestIds));
|
||||||
|
for (MedicationRequest mr : medicineRequestList) {
|
||||||
|
if (!RequestStatus.STOPPED.getValue().equals(mr.getStatusEnum())) {
|
||||||
|
throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!activityRequestIds.isEmpty()) {
|
||||||
|
List<ServiceRequest> activityRequestList = iServiceRequestService.list(
|
||||||
|
new LambdaQueryWrapper<ServiceRequest>()
|
||||||
|
.select(ServiceRequest::getId, ServiceRequest::getStatusEnum)
|
||||||
|
.in(ServiceRequest::getId, activityRequestIds));
|
||||||
|
for (ServiceRequest sr : activityRequestList) {
|
||||||
|
if (!RequestStatus.STOPPED.getValue().equals(sr.getStatusEnum())) {
|
||||||
|
throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 2. 药房端校验:如果已有退药/退费记录,说明药房已处理
|
||||||
if (!medicineRequestIds.isEmpty()) {
|
if (!medicineRequestIds.isEmpty()) {
|
||||||
List<MedicationDispense> dispenseList = iMedicationDispenseService.selectByRequestIdList(medicineRequestIds);
|
List<MedicationDispense> dispenseList = iMedicationDispenseService.selectByRequestIdList(medicineRequestIds);
|
||||||
for (MedicationDispense dispense : dispenseList) {
|
for (MedicationDispense dispense : dispenseList) {
|
||||||
// 如果发放状态 >= COMPLETED(4),说明护士站已发药/已确认停止
|
|
||||||
if (dispense.getStatusEnum() != null && dispense.getStatusEnum() >= DispenseStatus.COMPLETED.getValue()
|
|
||||||
&& !DispenseStatus.ON_HOLD.getValue().equals(dispense.getStatusEnum())
|
|
||||||
&& !DispenseStatus.STOPPED.getValue().equals(dispense.getStatusEnum())
|
|
||||||
&& !DispenseStatus.CANCELLED.getValue().equals(dispense.getStatusEnum())) {
|
|
||||||
throw new ServiceException("护士站已确认停止该医嘱,无法取消停嘱!");
|
|
||||||
}
|
|
||||||
// 2. 药房端校验:如果已有退药/退费记录,说明药房已处理
|
|
||||||
if (DispenseStatus.RETURNED.getValue().equals(dispense.getStatusEnum())
|
if (DispenseStatus.RETURNED.getValue().equals(dispense.getStatusEnum())
|
||||||
|| DispenseStatus.REFUNDED.getValue().equals(dispense.getStatusEnum())
|
|| DispenseStatus.REFUNDED.getValue().equals(dispense.getStatusEnum())
|
||||||
|| DispenseStatus.PART_REFUND.getValue().equals(dispense.getStatusEnum())) {
|
|| DispenseStatus.PART_REFUND.getValue().equals(dispense.getStatusEnum())) {
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
/* eslint-env node */
|
/* eslint-env node */
|
||||||
|
import path from "node:path";
|
||||||
|
import { fileURLToPath } from "node:url";
|
||||||
import globals from "globals";
|
import globals from "globals";
|
||||||
import pluginVue from "eslint-plugin-vue";
|
import pluginVue from "eslint-plugin-vue";
|
||||||
import parserVue from "vue-eslint-parser";
|
import parserVue from "vue-eslint-parser";
|
||||||
import importPlugin from "eslint-plugin-import";
|
import importPlugin, { createNodeResolver } from "eslint-plugin-import-x";
|
||||||
|
|
||||||
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
@@ -29,31 +33,31 @@ export default [
|
|||||||
},
|
},
|
||||||
|
|
||||||
plugins: {
|
plugins: {
|
||||||
import: importPlugin,
|
"import-x": importPlugin,
|
||||||
},
|
},
|
||||||
|
|
||||||
rules: {
|
rules: {
|
||||||
// 确保导入的模块实际存在(核心规则,防止构建失败)
|
// 确保导入的模块实际存在(核心规则,防止构建失败)
|
||||||
"import/no-unresolved": "error",
|
"import-x/no-unresolved": "error",
|
||||||
// 确保导入的命名导出实际存在
|
// 确保导入的命名导出实际存在
|
||||||
"import/named": "error",
|
"import-x/named": "error",
|
||||||
// 确保默认导出存在
|
// 确保默认导出存在
|
||||||
"import/default": "error",
|
"import-x/default": "error",
|
||||||
// 确保命名空间导出存在
|
// 确保命名空间导出存在
|
||||||
"import/namespace": "error",
|
"import-x/namespace": "error",
|
||||||
// Vue 相关规则
|
// Vue 相关规则
|
||||||
"vue/multi-word-component-names": "off",
|
"vue/multi-word-component-names": "off",
|
||||||
},
|
},
|
||||||
|
|
||||||
settings: {
|
settings: {
|
||||||
"import/resolver": {
|
"import-x/resolver-next": [
|
||||||
alias: {
|
createNodeResolver({
|
||||||
map: [
|
alias: {
|
||||||
["@", "./src"],
|
"@": [path.join(__dirname, "src")],
|
||||||
],
|
},
|
||||||
extensions: [".js", ".jsx", ".vue"],
|
extensions: [".mjs", ".cjs", ".js", ".jsx", ".vue", ".json", ".node"],
|
||||||
},
|
}),
|
||||||
},
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -74,8 +74,7 @@
|
|||||||
"@vitejs/plugin-vue": "^5.2.4",
|
"@vitejs/plugin-vue": "^5.2.4",
|
||||||
"@vue/test-utils": "^2.4.6",
|
"@vue/test-utils": "^2.4.6",
|
||||||
"eslint": "^10.4.1",
|
"eslint": "^10.4.1",
|
||||||
"eslint-import-resolver-alias": "^1.1.2",
|
"eslint-plugin-import-x": "^4.16.1",
|
||||||
"eslint-plugin-import": "^2.32.0",
|
|
||||||
"eslint-plugin-vue": "^10.9.1",
|
"eslint-plugin-vue": "^10.9.1",
|
||||||
"globals": "^17.5.0",
|
"globals": "^17.5.0",
|
||||||
"happy-dom": "^20.8.3",
|
"happy-dom": "^20.8.3",
|
||||||
|
|||||||
8
node_modules/.vite/deps/_metadata.json
generated
vendored
8
node_modules/.vite/deps/_metadata.json
generated
vendored
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"hash": "5905b5e1",
|
|
||||||
"configHash": "4d078017",
|
|
||||||
"lockfileHash": "9e11ee45",
|
|
||||||
"browserHash": "09dcaa6f",
|
|
||||||
"optimized": {},
|
|
||||||
"chunks": {}
|
|
||||||
}
|
|
||||||
3
node_modules/.vite/deps/package.json
generated
vendored
3
node_modules/.vite/deps/package.json
generated
vendored
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"type": "module"
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user