diff --git a/pages/home/case-home.vue b/pages/home/case-home.vue index 6f6558a..983638b 100644 --- a/pages/home/case-home.vue +++ b/pages/home/case-home.vue @@ -791,18 +791,52 @@ function resolveLatestRecord(lr) { return undefined; }; - const rawType = String(pick('medicalType', 'templateType') || '').trim(); - const uiType = normalizeMedicalType(rawType || pick('type')); - const typeLabel = String(pick('tempName', 'templateName', 'name', 'type') || '').trim(); + const rawType = String(pick('medicalType', 'templateType', 'type') || '').trim(); + const uiType = normalizeMedicalType(rawType); + // 注意:不要用 type 字段兜底“名称”,很多场景 type 是类型码(如 preConsultation / physicalExaminationTemplate) + const typeLabelRaw = String( + pick( + 'tempName', + 'templateName', + 'templateTitle', + 'tempTitle', + 'recordName', + 'medicalName', + 'medicalRecordName', + 'consultName', + 'preConsultationName', + 'inspectName', + 'physicalName', + 'name' + ) || '' + ).trim(); + const typeLabel = + typeLabelRaw && normalizeMedicalType(typeLabelRaw) === uiType ? '' : typeLabelRaw; - const rawDate = pick('date', 'visitTime', 'inhosDate', 'consultDate', 'inspectDate', 'sortTime'); + const rawDate = pick( + 'date', + 'visitTime', + 'inhosDate', + 'consultDate', + 'inspectDate', + 'sortTime', + 'createTime', + 'createdAt', + 'updateTime', + 'updatedAt', + 'time' + ); const rawDateStr = String(rawDate ?? '').trim(); const date = (/^\d{10,13}$/.test(rawDateStr) ? (formatAnyDate(rawDateStr, 'YYYY-MM-DD') || rawDateStr) : rawDateStr) - || formatAnyDate(pick('visitTime', 'inhosDate', 'consultDate', 'inspectDate', 'sortTime'), 'YYYY-MM-DD') + || formatAnyDate(pick('visitTime', 'inhosDate', 'consultDate', 'inspectDate', 'sortTime', 'createTime', 'updateTime'), 'YYYY-MM-DD') || '-'; let third = ''; - if (uiType === 'outpatient' || uiType === 'inhospital') { + // 后端若已计算出统一展示字段 diagnosis,则优先使用 + const directDiagnosis = normalizeText(pick('diagnosis', 'diagnosisName')); + if (String(directDiagnosis || '').trim()) { + third = directDiagnosis; + } else if (uiType === 'outpatient' || uiType === 'inhospital') { third = normalizeText(pick( 'diagnosisName', 'diagnosis', @@ -816,9 +850,53 @@ function resolveLatestRecord(lr) { 'inHospitalDiagnosis' )); } else if (uiType === 'preConsultation') { - third = normalizeText(pick('chiefComplaint', 'complaint', 'mainComplaint', 'mainSuit', 'chief')); + third = normalizeText( + pick( + 'diagnosis', + 'diagnosisName', + 'chiefComplaint', + 'chiefComplain', + 'chiefComplaintText', + 'chiefComplaintContent', + 'complaint', + 'complaintDesc', + 'complaintText', + 'mainComplaint', + 'mainSuit', + 'mainSuitText', + 'mainSuitContent', + 'chief', + 'zs', + 'zhuSu', + 'cc', + 'presentIllness', + 'historyOfPresentIllness', + 'currentIllness' + ) + ); } else if (uiType === 'physicalExaminationTemplate') { - third = normalizeText(pick('summary', 'inspectSummary', 'conclusion', 'inspectConclusion', 'inspectResult', 'finalConclusion')); + third = normalizeText( + pick( + 'diagnosis', + 'diagnosisName', + 'summary', + 'summaryText', + 'inspectSummary', + 'checkSummary', + 'examSummary', + 'physicalSummary', + 'briefSummary', + 'resultSummary', + 'conclusion', + 'conclusionText', + 'inspectConclusion', + 'inspectResult', + 'finalConclusion', + 'finalSummary', + 'reportConclusion', + 'reportSummary' + ) + ); } else { third = normalizeText(pick('diagnosis', 'diagnosisName', 'summary', 'chiefComplaint')); }