diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java index 97b5b099..85bc48d9 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java @@ -260,7 +260,8 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn .eq(EncounterDiagnosis::getEncounterId, encounterId) .set(EncounterDiagnosis::getMaindiseFlag, 0)); } - + Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); + String username = SecurityUtils.getUsername(); // 保存诊断管理 Condition condition; for (SaveDiagnosisChildParam saveDiagnosisChildParam : diagnosisChildList) { @@ -277,13 +278,24 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn condition.setYbNo(saveDiagnosisChildParam.getYbNo()); condition.setRecordedDatetime(new Date()); condition.setRecorderId(SecurityUtils.getLoginUser().getPractitionerId());// 记录人 + + if(condition.getCreateBy() == null){ + condition.setCreateBy(username); + } + condition.setUpdateBy(username); + + condition.setTenantId(tenantId); + if(condition.getCreateTime() == null){ + condition.setCreateTime(new Date()); + } + condition.setUpdateTime(new Date()); iConditionService.saveOrUpdate(condition); saveDiagnosisChildParam.setConditionId(condition.getId()); } // 保存就诊诊断 - EncounterDiagnosis encounterDiagnosis; + EncounterDiagnosis encounterDiagnosis = null; for (SaveDiagnosisChildParam saveDiagnosisChildParam : diagnosisChildList) { if (saveDiagnosisChildParam.getUpdateId() != null) { String updateId = saveDiagnosisChildParam.getUpdateId(); @@ -306,6 +318,19 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn encounterDiagnosis.setDiagnosisDesc(saveDiagnosisChildParam.getDiagnosisDesc()); // 诊断描述 encounterDiagnosis.setIptDiseTypeCode(saveDiagnosisChildParam.getIptDiseTypeCode()); // 患者疾病诊断类型代码 encounterDiagnosis.setTcmFlag(Whether.YES.getValue());// 中医标识 + encounterDiagnosis.setDoctor(saveDiagnosisChildParam.getDiagnosisDoctor()); + encounterDiagnosis.setClassification(saveDiagnosisChildParam.getClassification()); + encounterDiagnosis.setName(saveDiagnosisChildParam.getName()); + encounterDiagnosis.setTenantId(tenantId); + encounterDiagnosis.setLongTermFlag(saveDiagnosisChildParam.getLongTermFlag()); + if(encounterDiagnosis.getCreateBy() == null){ + encounterDiagnosis.setCreateBy(username); + } + encounterDiagnosis.setUpdateBy(username); + if(encounterDiagnosis.getCreateTime() == null){ + encounterDiagnosis.setCreateTime(new Date()); + } + encounterDiagnosis.setUpdateTime(new Date()); iEncounterDiagnosisService.saveOrUpdate(encounterDiagnosis); i++; } @@ -319,11 +344,24 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn encounterDiagnosis.setMedTypeCode(saveDiagnosisChildParam.getMedTypeCode());// 医疗类型 encounterDiagnosis.setDiagnosisDesc(saveDiagnosisChildParam.getDiagnosisDesc()); // 诊断描述 encounterDiagnosis.setIptDiseTypeCode(saveDiagnosisChildParam.getIptDiseTypeCode()); // 患者疾病诊断类型代码 + encounterDiagnosis.setDoctor(saveDiagnosisChildParam.getDiagnosisDoctor()); + encounterDiagnosis.setClassification(saveDiagnosisChildParam.getClassification()); + encounterDiagnosis.setName(saveDiagnosisChildParam.getName()); + encounterDiagnosis.setTenantId(tenantId); + encounterDiagnosis.setLongTermFlag(saveDiagnosisChildParam.getLongTermFlag()); + if(encounterDiagnosis.getCreateBy() == null){ + encounterDiagnosis.setCreateBy(username); + } + encounterDiagnosis.setUpdateBy(username); + if(encounterDiagnosis.getCreateTime() == null){ + encounterDiagnosis.setCreateTime(new Date()); + } + encounterDiagnosis.setUpdateTime(new Date()); iEncounterDiagnosisService.saveOrUpdate(encounterDiagnosis); } } - return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊断"})); + return R.ok(encounterDiagnosis, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"诊断"})); } /** diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/SaveDiagnosisChildParam.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/SaveDiagnosisChildParam.java index b724210c..ce932917 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/SaveDiagnosisChildParam.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/SaveDiagnosisChildParam.java @@ -5,6 +5,8 @@ import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; import lombok.experimental.Accessors; +import java.util.Date; + /** * 保存诊断 子参数类 * @@ -33,6 +35,9 @@ public class SaveDiagnosisChildParam { @JsonSerialize(using = ToStringSerializer.class) private Long definitionId; + private String classification; + + private String name; /** * 医保编码 */ @@ -64,6 +69,18 @@ public class SaveDiagnosisChildParam { */ private String diagnosisDesc; + private String diagnosisDoctor; + + /** + * 诊断时间 + */ + private Date diagnosisTime; + + /** + * 发病时间 + */ + private Date onsetDate; + /** 患者疾病诊断类型代码 */ private Integer iptDiseTypeCode; @@ -77,4 +94,6 @@ public class SaveDiagnosisChildParam { */ private String updateConditionId; + private Integer longTermFlag; + } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/domain/EncounterDiagnosis.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/domain/EncounterDiagnosis.java index 9d30b90c..188bd2fa 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/domain/EncounterDiagnosis.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/domain/EncounterDiagnosis.java @@ -66,4 +66,25 @@ public class EncounterDiagnosis extends HisBaseEntity { */ private String diagnosisDesc; + /** + * 医生 + */ + private String doctor; + + /** + *病名 + */ + private String name; + + /** + *分类 + */ + private String classification; + + /** + * 长诊断标识 + */ + private Integer longTermFlag; + + } \ No newline at end of file diff --git a/openhis-ui-vue3/src/views/basicmanage/organization/index.vue b/openhis-ui-vue3/src/views/basicmanage/organization/index.vue index 420ef23c..c100882d 100644 --- a/openhis-ui-vue3/src/views/basicmanage/organization/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/organization/index.vue @@ -386,12 +386,6 @@ function parseClassEnumValues(value) { /** 搜索按钮操作 */ function handleQuery() { queryParams.value.pageNo = 1; - if (Array.isArray(queryParams.value.classEnum)) { - queryParams.value.classEnum = - queryParams.value.classEnum.length > 0 - ? queryParams.value.classEnum.join(',') - : undefined; - } getPageList(); } @@ -406,7 +400,15 @@ function resetQuery() { function getPageList() { loading.value = true; - getList(queryParams.value).then((res) => { + // 创建API调用的查询参数副本,处理classEnum的转换 + const apiParams = { ...queryParams.value }; + if (Array.isArray(apiParams.classEnum)) { + apiParams.classEnum = + apiParams.classEnum.length > 0 + ? apiParams.classEnum.join(',') + : undefined; + } + getList(apiParams).then((res) => { // 处理返回的科室数据,确保科室分类显示与系统标准字典一致 const processedData = res.data.records.map(item => { // 保留原有显示文本作为基础 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 d6fdf735..0c4707a0 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue @@ -75,15 +75,27 @@ - + - + - + - - - + + + + + + + + + + + + + + + + + + @@ -220,6 +284,9 @@ const emits = defineEmits(['diagnosisSave']); const { proxy } = getCurrentInstance(); const userStore = useUserStore(); const { diag_type } = proxy.useDict('diag_type'); +const { diagnosis_classification } = proxy.useDict('diagnosis_classification'); +const { long_term_flag } = proxy.useDict('long_term_flag'); + const rules = ref({ name: [{ required: true, message: '请选择诊断', trigger: 'change' }], medTypeCode: [{ required: true, message: '请选择诊断类型', trigger: 'change' }], @@ -255,6 +322,12 @@ function getList() { if (res.code == 200) { // 过滤掉中医诊断,只保留西医诊断 form.value.diagnosisList = res.data.filter(item => item.typeName !== '中医诊断'); + // 为旧数据添加默认分类 + form.value.diagnosisList.forEach(item => { + if (!item.classification) { + item.classification = '西医'; + } + }); emits('diagnosisSave', false); } maxNo = form.value.diagnosisList.length; @@ -274,6 +347,8 @@ function getList() { medTypeCode: item.medTypeCode, syndromeGroupNo: item.syndromeGroupNo, typeName: '中医诊断', + classification: '中医', // 中医诊断默认分类 + onsetDate: item.onsetDate, updateId:item.encounterDiagnosisId+'-'+res.data.symptom[index].encounterDiagnosisId, illnessDefinitionId : item.definitionId, symptomDefinitionId : res.data.symptom[index].definitionId, @@ -323,8 +398,10 @@ function handleImport() { diagSrtNo: maxSortNo + index + 1, iptDiseTypeCode: 2, diagnosisDesc: '', + classification: '西医', // 导入的慢性病默认为西医 + onsetDate: getCurrentDate(), diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name, - diagnosisTime: new Date().toLocaleString('zh-CN') + diagnosisTime: getCurrentDate() }, }); }); @@ -425,8 +502,10 @@ function handleAddDiagnosis() { diagSrtNo: maxSortNo + 1, iptDiseTypeCode: 2, diagnosisDesc: '', + classification: '西医', // 默认为西医 + onsetDate: getCurrentDate(), diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name, - diagnosisTime: new Date().toLocaleString('zh-CN') + diagnosisTime: getCurrentDate() }); // 添加后按排序号排序 @@ -613,8 +692,10 @@ function handleNodeClick(data) { medTypeCode: '11', diagSrtNo: maxSortNo + 1, definitionId: data.definitionId, + classification: '西医', // 默认为西医 + onsetDate: getCurrentDate(), diagnosisDoctor: props.patientInfo.practitionerName || props.patientInfo.doctorName || props.patientInfo.physicianName || userStore.name, - diagnosisTime: new Date().toLocaleString('zh-CN') + diagnosisTime: getCurrentDate() }); // 添加后按排序号排序 @@ -625,6 +706,16 @@ function handleNodeClick(data) { } } +function getCurrentDate() { + const date = new Date(); + const year = date.getFullYear(); + let month = date.getMonth() + 1; + let day = date.getDate(); + month = month < 10 ? "0" + month : month; + day = day < 10 ? "0" + day : day; + return `${year}-${month}-${day}`; +} + defineExpose({ getList, getDetail, handleSaveDiagnosis }); diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosislist.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosislist.vue index 0e9ff966..2644e2ad 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosislist.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosislist.vue @@ -8,7 +8,7 @@ max-height="400" > - + diff --git a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue index 129764da..58772e5a 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/prescription/prescriptionlist.vue @@ -356,265 +356,39 @@ - - - - - = - - - - - - - - - -
- - - - - - - - - - - - - -
- -
+
+
+
+ -
- - - - - - - - - - - - -
- - 确定 - -
+ + +
+ + 确定 + + @@ -1152,6 +926,12 @@ const adviceTypeList = ref([ }, ]); +// 根据类型值获取显示标签,避免非编辑态出现空标签 +const mapAdviceTypeLabel = (type) => { + const found = adviceTypeList.value.find((item) => item.value === type); + return found ? found.label : ''; +}; + // 西药处方管理相关变量 const westernPrescriptions = ref([]); // 西药处方列表 const currentPrescriptionId = ref(null); // 当前活跃的处方ID @@ -2321,6 +2101,8 @@ function handleSaveSign(row, index, prescriptionId) { row.patientId = props.patientInfo.patientId; row.encounterId = props.patientInfo.encounterId; row.accountId = accountId.value; + // 确保非编辑态显示正确的医嘱类型标签 + row.adviceType_dictText = mapAdviceTypeLabel(row.adviceType); if (row.adviceType == 1 || row.adviceType == 2) { row.minUnitQuantity = row.minUnitCode == row.unitCode ? row.quantity : row.quantity * row.partPercent;