1 Commits

Author SHA1 Message Date
赵云
ae8f0bc06b Fix Bug #518: [门诊医生工作站-诊断-传染病报卡] 报卡页面缺失"性别、出生日期、实足年龄"核心字段
根因:infectiousDiseaseReportDialog.vue 读取患者性别时使用了错误的字段名
patientInfo.sex || patientInfo.genderName,但门诊医生站API返回的字段是
genderEnum(数字:1=男,2=女)和genderEnum_enumText(文本:男/女)。
新增 normalizeSexFromPatientInfo 函数,兼容HIS系统所有可能的性别字段命名。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 16:14:52 +08:00
5 changed files with 15 additions and 28 deletions

View File

@@ -96,9 +96,4 @@ public class DiagnosisQueryDto {
*/
private String diagnosisDoctor;
/**
* 是否已有传染病报卡0-无1-有)
*/
private Integer hasInfectiousReport;
}

View File

@@ -134,11 +134,7 @@
T2.yb_no,
T1.onset_date AS onsetDate,
T1.diagnosis_time AS diagnosisTime,
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
T1.doctor AS diagnosisDoctor
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

View File

@@ -692,7 +692,6 @@ async function handleFoodDiseasesCheck() {
/**
* 传染病报告卡处理
* 通过诊断名称自动识别并勾选传染病报告卡中的疾病
* 修复 Bug #519跳过已有已提交报卡的诊断
*/
function handleInfectiousDiseaseReport() {
// 疾病名称到报卡编码的映射(根据传染病报告卡弹窗中的疾病列表)
@@ -744,9 +743,8 @@ function handleInfectiousDiseaseReport() {
'手足口病': '0311',
};
// 获取所有诊断名称对应的报卡编码,但跳过已有已提交报卡的诊断
// 获取所有诊断名称对应的报卡编码
const allSelectedDiseases = form.value.diagnosisList
.filter(d => d.name && d.hasInfectiousReport !== 1)
.map(d => diseaseNameToCode[d.name] || null)
.filter(code => code);
@@ -754,9 +752,9 @@ function handleInfectiousDiseaseReport() {
return;
}
// 优先使用主诊断(同样跳过已有报卡的)
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 mainDiagnosis = form.value.diagnosisList.find(d => d.maindiseFlag === 1);
const firstDiagnosis = form.value.diagnosisList[0];
const diagnosisToShow = {
...(mainDiagnosis || firstDiagnosis),

View File

@@ -1503,16 +1503,16 @@ function handleSaveBatch() {
}
function setValue(row) {
// 构造单位列表,确保 value 始终为 String 类型,避免 el-select 值类型不匹配
// 构造单位列表
unitCodeList.value = [
{ value: String(row.unitCode ?? ''), label: row.unitCode_dictText, type: 'unit' },
{ value: row.unitCode, label: row.unitCode_dictText, type: 'unit' },
{
value: String(row.doseUnitCode ?? ''),
value: row.doseUnitCode,
label: row.doseUnitCode_dictText,
type: 'dose',
},
{
value: String(row.minUnitCode ?? ''),
value: row.minUnitCode,
label: row.minUnitCode_dictText,
type: 'minUnit',
},
@@ -1577,9 +1577,9 @@ function setValue(row) {
orgName: row.adviceType != 3 ? undefined : (findOrgName(row.orgId || row.positionId || patientInfo.value?.inHospitalOrgId) || row.orgName || patientInfo.value?.inHospitalOrgName || ''),
// dose: undefined, Removed to preserve dose value from group package
unitCodeList: unitCodeList.value,
doseUnitCode: String(row.doseUnitCode ?? ''),
minUnitCode: String(row.minUnitCode ?? ''),
unitCode: row.partAttributeEnum == 1 ? String(row.minUnitCode ?? '') : String(row.unitCode ?? ''),
doseUnitCode: row.doseUnitCode,
minUnitCode: row.minUnitCode,
unitCode: row.partAttributeEnum == 1 ? row.minUnitCode : row.unitCode,
categoryEnum: row.categoryCode,
definitionId: row.chargeItemDefinitionId,
executeNum: 1,
@@ -1595,10 +1595,6 @@ function setValue(row) {
? new Decimal(selectedStock.price).div(row.partPercent).toFixed(6)
: prevRow.minUnitPrice,
positionName: selectedStock?.locationName,
// 🔧 Bug #523 修复:初始化 totalPrice 为 0避免总金额列显示为横杠
totalPrice: row.quantity
? new Decimal(row.quantity).mul(selectedStock?.price ?? 0).toFixed(6)
: '0',
}
: {
quantity: 1,

View File

@@ -1057,8 +1057,8 @@ function confirmCharge() {
params.recordingDate = formData.value.recordingDate || moment(new Date()).format('YYYY-MM-DD');
addVitalSigns(params).then(res => {
console.log('保存成功:', res);
if (res.code === 200) {
proxy.msgSuccess('保存成功');
// 保存成功后刷新列表
getPatientList();
// 清空表单
@@ -1087,6 +1087,8 @@ function confirmCharge() {
urineVolume: '',
stoolVolume: '',
};
// 保存成功后关闭弹窗
closeDialog();
}
});
}