fix(doctorstation): 解决医嘱开具和报告查询中的问题

- 修复医嘱开具时诊断验证警告显示逻辑,支持可选的警告提示
- 修复中医医嘱库存检查条件判断逻辑
- 修复中医医嘱表单验证后数据处理逻辑,添加剂量单位字典值设置
- 优化报告查询处理,独立处理检查和检验报告查询,避免相互影响
- 修复LIS和PACS报告地址配置缺失时的处理逻辑,改为警告而非异常抛出
This commit is contained in:
2026-01-08 16:32:45 +08:00
parent 062c4a92b8
commit 58936c957d
4 changed files with 56 additions and 35 deletions

View File

@@ -959,13 +959,15 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// LIS查看报告地址 // LIS查看报告地址
String lisReportUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_REPORT_URL); String lisReportUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.LIS_REPORT_URL);
if (StringUtils.isEmpty(lisReportUrl)) { if (StringUtils.isEmpty(lisReportUrl)) {
throw new ServiceException("租户配置项【LIS查看报告地址】未配置"); log.warn("租户配置项【LIS查看报告地址】未配置");
} }
List<ProofAndTestResultDto> proofResult = doctorStationAdviceAppMapper.getProofAndTestResult(encounterId, List<ProofAndTestResultDto> proofResult = doctorStationAdviceAppMapper.getProofAndTestResult(encounterId,
RequestStatus.DRAFT.getValue(), ActivityType.PROOF.getValue()); RequestStatus.DRAFT.getValue(), ActivityType.PROOF.getValue());
for (ProofAndTestResultDto proofAndTestResultDto : proofResult) { for (ProofAndTestResultDto proofAndTestResultDto : proofResult) {
if (StringUtils.isNotEmpty(lisReportUrl)) {
proofAndTestResultDto.setRequestUrl(lisReportUrl.concat(proofAndTestResultDto.getBusNo())); proofAndTestResultDto.setRequestUrl(lisReportUrl.concat(proofAndTestResultDto.getBusNo()));
} }
}
return R.ok(proofResult); return R.ok(proofResult);
} }
@@ -981,13 +983,15 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// PACS查看报告地址 // PACS查看报告地址
String pacsReportUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.PACS_REPORT_URL); String pacsReportUrl = TenantOptionUtil.getOptionContent(TenantOptionDict.PACS_REPORT_URL);
if (StringUtils.isEmpty(pacsReportUrl)) { if (StringUtils.isEmpty(pacsReportUrl)) {
throw new ServiceException("租户配置项【PACS查看报告地址】未配置"); log.warn("租户配置项【PACS查看报告地址】未配置");
} }
List<ProofAndTestResultDto> testResult = doctorStationAdviceAppMapper.getProofAndTestResult(encounterId, List<ProofAndTestResultDto> testResult = doctorStationAdviceAppMapper.getProofAndTestResult(encounterId,
RequestStatus.DRAFT.getValue(), ActivityType.TEST.getValue()); RequestStatus.DRAFT.getValue(), ActivityType.TEST.getValue());
for (ProofAndTestResultDto proofAndTestResultDto : testResult) { for (ProofAndTestResultDto proofAndTestResultDto : testResult) {
if (StringUtils.isNotEmpty(pacsReportUrl)) {
proofAndTestResultDto.setRequestUrl(pacsReportUrl.concat(proofAndTestResultDto.getBusNo())); proofAndTestResultDto.setRequestUrl(pacsReportUrl.concat(proofAndTestResultDto.getBusNo()));
} }
}
return R.ok(testResult); return R.ok(testResult);
} }

View File

@@ -1106,7 +1106,7 @@ onMounted(() => {
document.addEventListener('keydown', escKeyListener); document.addEventListener('keydown', escKeyListener);
// 初始化时自动创建第一个西药处方 // 初始化时自动创建第一个西药处方
if (westernPrescriptions.value.length === 0) { if (westernPrescriptions.value.length === 0) {
handleAddPrescription(); handleAddPrescription(null, false);
} }
}); });
@@ -1531,7 +1531,7 @@ function getListInfo(addNewRow) {
}); });
getGroupMarkers(); // 更新标记 getGroupMarkers(); // 更新标记
if (props.activeTab == 'prescription' && addNewRow) { if (props.activeTab == 'prescription' && addNewRow) {
handleAddPrescription(); handleAddPrescription(null, false);
} }
// 在所有异步操作完成后 resolve Promise // 在所有异步操作完成后 resolve Promise
@@ -1595,14 +1595,16 @@ function handleSelectionChange(selection, row) {
} }
// 新增医嘱 // 新增医嘱
function handleAddPrescription(prescriptionId) { function handleAddPrescription(prescriptionId, showWarning = true) {
// 如果传入了处方ID先切换到该处方 // 如果传入了处方ID先切换到该处方
if (prescriptionId && prescriptionId !== currentPrescriptionId.value) { if (prescriptionId && prescriptionId !== currentPrescriptionId.value) {
switchToActivePrescription(prescriptionId); switchToActivePrescription(prescriptionId);
} }
if (diagnosisList.value.length == 0) { if (diagnosisList.value.length == 0) {
if (showWarning) {
proxy.$modal.msgWarning('请先保存诊断后再开立医嘱'); proxy.$modal.msgWarning('请先保存诊断后再开立医嘱');
}
return; return;
} }
if (isAdding.value) { if (isAdding.value) {
@@ -2291,7 +2293,7 @@ function handleSaveSign(row, index, prescriptionId) {
}); });
} else { } else {
if (prescriptionList.value[0].adviceName) { if (prescriptionList.value[0].adviceName) {
handleAddPrescription(); handleAddPrescription(null, false);
} }
} }
adviceQueryParams.value.adviceType = undefined; adviceQueryParams.value.adviceType = undefined;

View File

@@ -145,14 +145,20 @@ const fetchAll = async () => {
} }
loadingCheck.value = true; loadingCheck.value = true;
loadingInspection.value = true; loadingInspection.value = true;
// 独立处理,互不影响
const runFetch = async (fn, loadingRef, name) => {
try { try {
await Promise.all([fetchCheckReport(), fetchInspectionReport()]); await fn();
} catch (e) { } catch (e) {
proxy.$modal?.msgError?.(e.message || '查询报告失败'); proxy.$modal?.msgError?.(`${name}查询失败: ${e.message || '未知错误'}`);
} finally { } finally {
loadingCheck.value = false; loadingRef.value = false;
loadingInspection.value = false;
} }
};
runFetch(fetchCheckReport, loadingCheck, '检查报告');
runFetch(fetchInspectionReport, loadingInspection, '检验报告');
}; };
const handleRefreshCheck = async () => { const handleRefreshCheck = async () => {

View File

@@ -893,7 +893,7 @@ function selectAdviceBase(key, row, pIndex) {
).chargeItemDefinitionId; ).chargeItemDefinitionId;
// 库存列表 + 价格列表拼成批次号的下拉框 // 库存列表 + 价格列表拼成批次号的下拉框
if (row.adviceType != 3) { if (row.adviceType == 1 || row.adviceType == 2) {
if (row.inventoryList && row.inventoryList.length == 0) { if (row.inventoryList && row.inventoryList.length == 0) {
prescription.expandOrder = []; prescription.expandOrder = [];
proxy.$modal.msgWarning('该项目无库存'); proxy.$modal.msgWarning('该项目无库存');
@@ -1069,6 +1069,7 @@ function handleSaveSign(row, index, pIndex) {
const prescription = tcmPrescriptionList.value[pIndex]; const prescription = tcmPrescriptionList.value[pIndex];
const formRefName = 'formRef' + pIndex + '-' + index; const formRefName = 'formRef' + pIndex + '-' + index;
proxy.$refs[formRefName][0].validate((valid) => { proxy.$refs[formRefName][0].validate((valid) => {
if (valid) {
row.isEdit = false; row.isEdit = false;
prescription.isAdding = false; prescription.isAdding = false;
prescription.expandOrder = []; prescription.expandOrder = [];
@@ -1077,7 +1078,7 @@ function handleSaveSign(row, index, pIndex) {
row.encounterId = props.patientInfo.encounterId; row.encounterId = props.patientInfo.encounterId;
row.accountId = prescription.accountId; row.accountId = prescription.accountId;
row.quantity = row.minUnitQuantity; row.quantity = row.minUnitQuantity;
row.conditionId = prescription.conditionId; row.chineseHerbsDoseQuantity = prescription.chineseHerbsDoseQuantity;
row.unitPrice = row.unitPrice =
row.unitCodeList.find((item) => item.value == row.unitCode).type == 'unit' row.unitCodeList.find((item) => item.value == row.unitCode).type == 'unit'
? row.unitPrice ? row.unitPrice
@@ -1085,7 +1086,15 @@ function handleSaveSign(row, index, pIndex) {
row.conditionDefinitionId = prescription.conditionDefinitionId; row.conditionDefinitionId = prescription.conditionDefinitionId;
row.encounterDiagnosisId = prescription.encounterDiagnosisId; row.encounterDiagnosisId = prescription.encounterDiagnosisId;
row.diagnosisName = prescription.diagnosisName; row.diagnosisName = prescription.diagnosisName;
// 寻找当前选中的单位字典值
const selectedUnit = row.unitCodeList.find((item) => item.value === row.minUnitCode);
if (selectedUnit) {
row.doseUnitCode_dictText = selectedUnit.label;
}
row.contentJson = JSON.stringify(row); row.contentJson = JSON.stringify(row);
}
}); });
} }