diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DiagnosisQueryDto.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DiagnosisQueryDto.java index 9d0c94596..97dd2a175 100755 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DiagnosisQueryDto.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/DiagnosisQueryDto.java @@ -96,4 +96,9 @@ public class DiagnosisQueryDto { */ private String diagnosisDoctor; + /** + * 是否已有传染病报卡(0-无,1-有) + */ + private Integer hasInfectiousReport; + } diff --git a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml index bad78f219..9289a857d 100755 --- a/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml +++ b/openhis-server-new/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml @@ -134,7 +134,11 @@ T2.yb_no, T1.onset_date AS onsetDate, T1.diagnosis_time AS diagnosisTime, - T1.doctor AS diagnosisDoctor + T1.doctor AS diagnosisDoctor, + CASE WHEN EXISTS ( + SELECT 1 FROM infectious_card T4 + WHERE T4.diag_id = T2.id AND T4.delete_flag = '0' AND T4.status >= 1 + ) THEN 1 ELSE 0 END AS hasInfectiousReport FROM adm_encounter_diagnosis AS T1 LEFT JOIN cli_condition AS T2 ON T2.ID = T1.condition_id AND T2.delete_flag = '0' AND T2.tcm_flag = 0 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 13248f8a1..0365b8802 100755 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue @@ -692,6 +692,7 @@ async function handleFoodDiseasesCheck() { /** * 传染病报告卡处理 * 通过诊断名称自动识别并勾选传染病报告卡中的疾病 + * 修复 Bug #519:跳过已有已提交报卡的诊断 */ function handleInfectiousDiseaseReport() { // 疾病名称到报卡编码的映射(根据传染病报告卡弹窗中的疾病列表) @@ -743,8 +744,9 @@ function handleInfectiousDiseaseReport() { '手足口病': '0311', }; - // 获取所有诊断名称对应的报卡编码 + // 获取所有诊断名称对应的报卡编码,但跳过已有已提交报卡的诊断 const allSelectedDiseases = form.value.diagnosisList + .filter(d => d.name && d.hasInfectiousReport !== 1) .map(d => diseaseNameToCode[d.name] || null) .filter(code => code); @@ -752,9 +754,9 @@ function handleInfectiousDiseaseReport() { return; } - // 优先使用主诊断 - const mainDiagnosis = form.value.diagnosisList.find(d => d.maindiseFlag === 1); - const firstDiagnosis = form.value.diagnosisList[0]; + // 优先使用主诊断(同样跳过已有报卡的) + const mainDiagnosis = form.value.diagnosisList.find(d => d.maindiseFlag === 1 && d.hasInfectiousReport !== 1); + const firstDiagnosis = form.value.diagnosisList.find(d => d.hasInfectiousReport !== 1) || form.value.diagnosisList[0]; const diagnosisToShow = { ...(mainDiagnosis || firstDiagnosis),