From 3753a916f51c8bced163f5e78bbaa47e1e486ab4 Mon Sep 17 00:00:00 2001 From: April <15215920+aprilry@user.noreply.gitee.com> Date: Fri, 9 Jan 2026 15:08:19 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E9=97=A8=E8=AF=8A?= =?UTF-8?q?=E5=8C=BB=E7=94=9F=E7=AB=99=E9=87=8D=E6=96=B0=E8=B0=83=E5=85=A5?= =?UTF-8?q?=E8=AF=A5=E6=82=A3=E8=80=85=E7=9A=84=E6=9C=AC=E6=AC=A1=E5=B0=B1?= =?UTF-8?q?=E8=AF=8A=E8=AE=B0=E5=BD=95=EF=BC=8C=E7=82=B9=E5=87=BB=E4=B8=AD?= =?UTF-8?q?=E5=8C=BB=E8=AF=8A=E6=96=AD=E5=8F=91=E7=8E=B0=E8=AF=8A=E6=96=AD?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=98=AF=E7=A9=BA=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../diagnosis/addDiagnosisDialog.vue | 262 ++++++++++-------- .../components/diagnosis/diagnosis.vue | 3 +- 2 files changed, 142 insertions(+), 123 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 12a3bf73..50982c23 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/addDiagnosisDialog.vue @@ -92,6 +92,7 @@ import { getTcmSyndrome, saveTcmDiagnosis, updateTcmDiagnosis, + getTcmDiagnosis, } from '@/views/doctorstation/components/api'; const props = defineProps({ @@ -120,141 +121,144 @@ const { proxy } = getCurrentInstance(); const emit = defineEmits(['close']); function handleOpen() { + // 获取诊断列表 getTcmCondition().then((res) => { conditionList.value = res.data.records; }); - tcmDiagonsisSaveList.value=[]; - tcmDiagonsisList.value=[]; - debugger; - if (props.updateZy.length>0) { + + // 清空数据 + tcmDiagonsisSaveList.value = []; + tcmDiagonsisList.value = []; + syndromeSelected.value = true; // 设置为true,允许添加新的诊断 + + // 如果是修改模式,加载传入的诊断数据 + if (props.updateZy.length > 0) { props.updateZy.forEach((item) => { - let updateIds=item.updateId.split("-"); - let name=item.name.split("-"); - tcmDiagonsisSaveList.value.push({ + let updateIds = item.updateId.split("-"); + let name = item.name.split("-"); + tcmDiagonsisSaveList.value.push( + { conditionId: updateIds[0], definitionId: item.illnessDefinitionId, ybNo: item.ybNo, syndromeGroupNo: item.syndromeGroupNo, verificationStatusEnum: 4, medTypeCode: '11', - diagSrtNo:item.diagSrtNo, - }); - tcmDiagonsisList.value.push({ - conditionName: name[0], - syndromeGroupNo: item.syndromeGroupNo, - }); - tcmDiagonsisSaveList.value.push({ + diagSrtNo: item.diagSrtNo, + isExisting: true // 标记为已存在 + }, + { conditionId: updateIds[1], definitionId: item.symptomDefinitionId, ybNo: item.symptomYbNo, syndromeGroupNo: item.syndromeGroupNo, - diagSrtNo:item.diagSrtNo, + diagSrtNo: item.diagSrtNo, + isExisting: true // 标记为已存在 + } + ); + tcmDiagonsisList.value.push({ + conditionName: name[0], + syndromeName: name[1], + syndromeGroupNo: item.syndromeGroupNo, + isExisting: true // 标记为已存在 }); - tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].syndromeName = name[1]; - console.log("这是修改时带入的数据"); - console.log(tcmDiagonsisList.value); - console.log(tcmDiagonsisSaveList.value); - syndromeSelected.value = true; + syndromeSelected.value = true; }); + } else { + // 不是修改模式,加载已保存的中医诊断 + if (props.patientInfo && props.patientInfo.encounterId) { + getTcmDiagnosis({ encounterId: props.patientInfo.encounterId }).then((res) => { + if (res.code === 200 && res.data.illness && res.data.illness.length > 0) { + res.data.illness.forEach((item, index) => { + const symptom = res.data.symptom[index]; + if (symptom) { + // 添加到显示列表 + tcmDiagonsisList.value.push({ + conditionName: item.name, + syndromeName: symptom.name, + syndromeGroupNo: item.syndromeGroupNo, + isExisting: true // 标记为已存在 + }); + + // 添加到保存列表 + tcmDiagonsisSaveList.value.push( + { + conditionId: item.conditionId, + definitionId: item.definitionId, + ybNo: item.ybNo, + syndromeGroupNo: item.syndromeGroupNo, + verificationStatusEnum: item.verificationStatusEnum || 4, + medTypeCode: item.medTypeCode || '11', + diagSrtNo: item.diagSrtNo, + isExisting: true // 标记为已存在 + }, + { + conditionId: symptom.conditionId, + definitionId: symptom.definitionId, + ybNo: symptom.ybNo, + syndromeGroupNo: item.syndromeGroupNo, + diagSrtNo: item.diagSrtNo, + isExisting: true // 标记为已存在 + } + ); + } + }); + } + }).catch(err => { + console.error('加载已保存的中医诊断失败:', err); + }); + } } } // 点击诊断列表处理,点击以后才显示证候列表 function handleClickRow(row) { if (syndromeSelected.value || tcmDiagonsisList.value.length == 0) { - syndromeSelected.value = false; + syndromeSelected.value = false; selectedDisease.value = true; timestamp.value = Date.now(); getTcmSyndrome().then((res) => { syndromeList.value = res.data.records; }); - if (props.updateZy.length>0) { - props.updateZy.forEach((item) => { - let updateIds=item.updateId.split("-"); - tcmDiagonsisSaveList.value.push({ - updateId:updateIds[0], - conditionId: updateIds[0], - definitionId: row.id, - ybNo: row.ybNo, - syndromeGroupNo: timestamp.value, - verificationStatusEnum: 4, - medTypeCode: '11', - diagSrtNo:item.diagSrtNo, - }); - debugger; - if(tcmDiagonsisList.value.length>0){ - tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].conditionName = row.name; - }else{ - tcmDiagonsisList.value.push({ - conditionName: row.name, - syndromeGroupNo: timestamp.value, - }); - } - }); - }else{ - tcmDiagonsisSaveList.value.push({ - definitionId: row.id, - ybNo: row.ybNo, - syndromeGroupNo: timestamp.value, - verificationStatusEnum: 4, - medTypeCode: '11', - }); - tcmDiagonsisList.value.push({ - conditionName: row.name, - syndromeGroupNo: timestamp.value, - }); - } - - - } - - // tcmDiagonsisList.value.push({ - // conditionName: row.name, - // syndromeGroupNo: timestamp.value, - // }); - + // 添加新的诊断 + tcmDiagonsisSaveList.value.push({ + definitionId: row.id, + ybNo: row.ybNo, + syndromeGroupNo: timestamp.value, + verificationStatusEnum: 4, + medTypeCode: '11', + isExisting: false // 标记为新增 + }); + tcmDiagonsisList.value.push({ + conditionName: row.name, + syndromeGroupNo: timestamp.value, + isExisting: false // 标记为新增 + }); } +} function clickSyndromeRow(row) { - debugger; - let flag=true; - tcmDiagonsisList.value.forEach( item => { - if(tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].conditionName==item.conditionName){ - if(item.syndromeName==row.name ){ - proxy.$modal.msgWarning('不能存在完全相同的诊断和证侯'); - flag=false; - } + // 检查是否已存在完全相同的诊断和证候 + let flag = true; + const currentConditionName = tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].conditionName; + + tcmDiagonsisList.value.forEach(item => { + if (item.conditionName === currentConditionName && item.syndromeName === row.name) { + proxy.$modal.msgWarning('不能存在完全相同的诊断和证候'); + flag = false; } }); - if(flag){ - if(props.updateZy.length>0){ - props.updateZy.forEach((item) => { - let updateIds=item.updateId.split("-"); - tcmDiagonsisSaveList.value.push({ - updateId:updateIds[1], - conditionId: updateIds[1], - definitionId: row.id, - ybNo: row.ybNo, - syndromeGroupNo: timestamp.value, - }); - tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].syndromeName = row.name; - syndromeSelected.value = true; - }); - - }else{ - tcmDiagonsisSaveList.value.push({ - definitionId: row.id, - ybNo: row.ybNo, - syndromeGroupNo: timestamp.value, - }); - tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].syndromeName = row.name; - syndromeSelected.value = true; - } - - - // tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].syndromeName = row.name; - // syndromeSelected.value = true; + + if (flag) { + tcmDiagonsisSaveList.value.push({ + definitionId: row.id, + ybNo: row.ybNo, + syndromeGroupNo: timestamp.value, + isExisting: false // 标记为新增 + }); + tcmDiagonsisList.value[tcmDiagonsisList.value.length - 1].syndromeName = row.name; + syndromeSelected.value = true; } } @@ -268,38 +272,52 @@ function removeDiagnosis(row, index) { } function save() { - if(props.updateZy.length>0){ + // 只保存新增的诊断,过滤掉已存在的 + const newDiagnosisList = tcmDiagonsisSaveList.value.filter(item => !item.isExisting); + + if (newDiagnosisList.length === 0) { + proxy.$modal.msgWarning('没有新增的诊断需要保存'); + return; + } + + if (props.updateZy.length > 0) { + // 修改模式 updateTcmDiagnosis({ patientId: props.patientInfo.patientId, encounterId: props.patientInfo.encounterId, - diagnosisChildList: tcmDiagonsisSaveList.value, - }).then((res) => { - if (res.code == 200) { - emit('close'); - proxy.$modal.msgSuccess('诊断已保存'); - } + diagnosisChildList: newDiagnosisList, + }).then((res) => { + if (res.code == 200) { + emit('close'); + proxy.$modal.msgSuccess('诊断已保存'); + } }); - }else{ + } else { + // 新增模式 saveTcmDiagnosis({ patientId: props.patientInfo.patientId, encounterId: props.patientInfo.encounterId, - diagnosisChildList: tcmDiagonsisSaveList.value, - }).then((res) => { - if (res.code == 200) { - emit('close'); - proxy.$modal.msgSuccess('诊断已保存'); - } + diagnosisChildList: newDiagnosisList, + }).then((res) => { + if (res.code == 200) { + emit('close'); + proxy.$modal.msgSuccess('诊断已保存'); + } }); } - } function submit() { - debugger; - if ( - tcmDiagonsisSaveList.value.length > 0 && - (syndromeSelected.value || tcmDiagonsisSaveList.value.length % 2 == 0) - ) { + // 检查是否有新增的诊断 + const hasNewDiagnosis = tcmDiagonsisSaveList.value.some(item => !item.isExisting); + + if (!hasNewDiagnosis) { + // 如果没有新增诊断,直接关闭 + emit('close'); + return; + } + + if (syndromeSelected.value || tcmDiagonsisSaveList.value.length % 2 == 0) { save(); } else { proxy.$modal.msgWarning('请选择证候'); 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 b357aca0..41f47bef 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue @@ -252,7 +252,8 @@ function getList() { getEncounterDiagnosis(props.patientInfo.encounterId) .then((res) => { if (res.code == 200) { - form.value.diagnosisList = res.data; + // 过滤掉中医诊断,只保留西医诊断 + form.value.diagnosisList = res.data.filter(item => item.typeName !== '中医诊断'); emits('diagnosisSave', false); } maxNo = form.value.diagnosisList.length;