From dc039fcced0ba547762561abaf1408fd2d64bc8d Mon Sep 17 00:00:00 2001 From: chenqi Date: Wed, 4 Mar 2026 15:33:25 +0800 Subject: [PATCH] =?UTF-8?q?fix(diagnosis):=20=E4=BF=AE=E5=A4=8D=E8=AF=8A?= =?UTF-8?q?=E6=96=AD=E7=B1=BB=E5=9E=8B=E5=AD=97=E6=AE=B5=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除medTypeCode的默认值'11',改为undefined以避免强制设置默认类型 - 在新增诊断时不再预设诊断类型,要求用户主动选择 - 从已保存的数据中获取medTypeCode值而不是使用固定默认值 - 添加诊断类型选择验证,在保存时检查是否所有诊断都选择了类型 - 在完诊前验证诊断信息完整性,包括诊断存在性、类型选择和主诊断设置 - 优化UI显示逻辑,当诊断类型选项未加载完成时显示加载状态提示 - 调整删除按钮显示逻辑,改进弹窗确认交互体验 --- .../diagnosis/addDiagnosisDialog.vue | 6 +-- .../components/diagnosis/diagnosis.vue | 51 ++++++++++--------- .../src/views/doctorstation/index.vue | 33 +++++++++++- .../diagnosis/addDiagnosisDialog.vue | 2 +- .../home/components/diagnosis/diagnosis.vue | 4 +- 5 files changed, 66 insertions(+), 30 deletions(-) diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue index 50982c23..299ccfae 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue @@ -143,7 +143,7 @@ function handleOpen() { ybNo: item.ybNo, syndromeGroupNo: item.syndromeGroupNo, verificationStatusEnum: 4, - medTypeCode: '11', + medTypeCode: item.medTypeCode || undefined, // 使用已保存的值 diagSrtNo: item.diagSrtNo, isExisting: true // 标记为已存在 }, @@ -188,7 +188,7 @@ function handleOpen() { ybNo: item.ybNo, syndromeGroupNo: item.syndromeGroupNo, verificationStatusEnum: item.verificationStatusEnum || 4, - medTypeCode: item.medTypeCode || '11', + medTypeCode: item.medTypeCode || undefined, // 使用已保存的值 diagSrtNo: item.diagSrtNo, isExisting: true // 标记为已存在 }, @@ -227,7 +227,7 @@ function handleClickRow(row) { ybNo: row.ybNo, syndromeGroupNo: timestamp.value, verificationStatusEnum: 4, - medTypeCode: '11', + medTypeCode: undefined, // 不设默认值 isExisting: false // 标记为新增 }); tcmDiagonsisList.value.push({ diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue index f6dbd040..bb1e4c03 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue @@ -36,26 +36,23 @@ - - - + @@ -98,7 +95,7 @@ @@ -507,7 +505,7 @@ function handleAddDiagnosis() { showPopover: false, name: undefined, verificationStatusEnum: 4, - medTypeCode: 11, // Bug #151 修复:使用数字类型的字典值 + medTypeCode: undefined, // 新增时不设默认值,让用户选择 diagSrtNo: maxSortNo + 1, iptDiseTypeCode: 2, diagnosisDesc: '', @@ -578,6 +576,13 @@ function handleMaindise(value, index) { function handleSaveDiagnosis() { proxy.$refs.formRef.validate((valid) => { if (valid) { + // 验证诊断类型是否已选择 + const emptyMedType = form.value.diagnosisList.find(d => !d.medTypeCode); + if (emptyMedType) { + proxy.$modal.msgWarning('请选择诊断类型'); + return false; + } + if (form.value.diagnosisList.length == 0) { proxy.$modal.msgWarning('诊断不能为空'); return false; @@ -718,7 +723,7 @@ form.value.diagnosisList.push({ ybNo: data.ybNo, name: data.name, verificationStatusEnum: 4, - medTypeCode: 11, // Bug #151 修复:使用数字类型的字典值,而非字符串'初诊诊断' + medTypeCode: undefined, // 新增时不设默认值,让用户选择 diagSrtNo: maxSortNo + 1, definitionId: data.definitionId, classification: '西医', // 默认为西医 diff --git a/openhis-ui-vue3/src/views/doctorstation/index.vue b/openhis-ui-vue3/src/views/doctorstation/index.vue index a5519d6f..af9f3b3c 100644 --- a/openhis-ui-vue3/src/views/doctorstation/index.vue +++ b/openhis-ui-vue3/src/views/doctorstation/index.vue @@ -640,7 +640,38 @@ function handleLeave(encounterId) { }); } -function handleFinish(encounterId) { +async function handleFinish(encounterId) { + // 完诊前验证诊断信息 + try { + const diagnosisRes = await getEncounterDiagnosis(encounterId); + if (diagnosisRes.code === 200) { + const diagnosisList = diagnosisRes.data || []; + + // 检查是否有诊断 + if (diagnosisList.length === 0) { + proxy.$modal.msgWarning('请先添加诊断信息'); + return; + } + + // 检查诊断类型是否为空 + const emptyMedType = diagnosisList.find(d => !d.medTypeCode); + if (emptyMedType) { + proxy.$modal.msgWarning('请选择诊断类型'); + return; + } + + // 检查是否有主诊断 + if (!diagnosisList.some(d => d.maindiseFlag === 1)) { + proxy.$modal.msgWarning('请至少设置一条主诊断'); + return; + } + } + } catch (error) { + console.error('获取诊断信息失败:', error); + proxy.$modal.msgWarning('获取诊断信息失败,请重试'); + return; + } + completeEncounter({ encounterId, firstEnum: firstEnum.value }).then((res) => { if (res.code == 200) { proxy.$modal.msgSuccess('操作成功'); diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/addDiagnosisDialog.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/addDiagnosisDialog.vue index 8b9c0b5c..90026fe0 100644 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/addDiagnosisDialog.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/addDiagnosisDialog.vue @@ -153,7 +153,7 @@ function handleClickRow(row) { ybNo: row.ybNo, syndromeGroupNo: timestamp.value, verificationStatusEnum: 4, - medTypeCode: '11', + medTypeCode: undefined, // 不设默认值 }); tcmDiagonsisList.value.push({ conditionName: row.name, diff --git a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue index 48fd7566..5b6e1c7d 100644 --- a/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/inpatientDoctor/home/components/diagnosis/diagnosis.vue @@ -415,7 +415,7 @@ function handleAddDiagnosis() { showPopover: false, name: undefined, verificationStatusEnum: 4, - medTypeCode: '11', + medTypeCode: undefined, // 不设默认值 diagSrtNo: form.value.diagnosisList.length + 1, iptDiseTypeCode: 2, diagnosisDesc: '', @@ -632,7 +632,7 @@ function handleNodeClick(data) { ybNo: data.ybNo, name: data.name, verificationStatusEnum: 4, - medTypeCode: '11', + medTypeCode: undefined, // 不设默认值 diagSrtNo: form.value.diagnosisList.length + 1, definitionId: data.definitionId, diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name,