BMI提示

This commit is contained in:
Euni4U 2025-04-14 16:18:16 +08:00
parent a0a6b15702
commit edeb37be35

View File

@ -565,7 +565,7 @@ const switchTab = async (tabId) => {
const conclusionData = ref({ const conclusionData = ref({
general: { summary: '未见异常' }, general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' }, ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' }, ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '未见异常' }, blood: { summary: '未见异常' },
urine: { summary: '未见异常' }, urine: { summary: '未见异常' },
biochemical: { summary: '未见异常' }, biochemical: { summary: '未见异常' },
@ -754,148 +754,104 @@ const getpatientitemData = async (medicalSn) => {
// loadPatientData // loadPatientData
const loadPatientData = async (patient) => { const loadPatientData = async (patient) => {
try { try {
const loading = ElLoading.service({ //
lock: true, patientDataCache.value.clear()
text: '加载中...',
background: 'rgba(255, 255, 255, 0.7)'
})
try {
// //
const patientData = await PatientApi.getPatient(patient.id) const patientInfo = await PatientApi.getPatient(patient.id)
reportData.value = patientData reportData.value = patientInfo
// //
inspectDoctor.value = ''
inspectTime.value = ''
// true
isExamCompleted.value = patient.status === '1' || patient.status === 1
//
const itemsRes = await PatientitemsApi.getPatientitemsPage({ const itemsRes = await PatientitemsApi.getPatientitemsPage({
medicalSn: patient.medicalSn, medicalSn: patient.medicalSn,
pageNo: 1, pageNo: 1,
pageSize: 100 pageSize: 100
}) })
//
if (itemsRes.list && itemsRes.list.length > 0) { if (itemsRes.list && itemsRes.list.length > 0) {
// //
const groupedItems = {} const categorizedItems = {}
itemsRes.list.forEach(item => {
// const category = getCategoryByItemName(item.itemName)
const conclusions = { if (!categorizedItems[category]) {
general: { summary: '未见异常' }, categorizedItems[category] = []
ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' },
blood: { summary: '' },
urine: { summary: '' },
biochemical: { summary: '' }
} }
categorizedItems[category].push(processItemData(item))
//
const checkedItems = itemsRes.list.filter((item) => item.itemStatus === '1')
if (checkedItems.length > 0) {
// 使
const firstCheckedItem = checkedItems[0]
//
if (firstCheckedItem.inspectdoctor) {
inspectDoctor.value = firstCheckedItem.inspectdoctor
}
//
if (firstCheckedItem.inspecttime) {
const inspectDate = new Date(Number(firstCheckedItem.inspecttime))
inspectTime.value = formatDate(inspectDate)
}
}
itemsRes.list.forEach((item) => {
//
const category = getCategoryByItemName(item.itemName || '')
if (!groupedItems[category]) {
groupedItems[category] = []
}
//
const processedItem = processItemData(item)
groupedItems[category].push(processedItem)
//
processConclusion(item, category, conclusions)
}) })
examItems.value = groupedItems //
conclusionData.value = conclusions examItems.value = categorizedItems
// BMI
const allItems = Object.values(examItems.value).flat()
//
let abnormalSummary = []
// BMI
const bmiItem = allItems.find(item =>
item.name && item.name.includes('体质指数') && item.name.includes('BMI') &&
item.value
)
if (bmiItem) {
const bmiValue = parseFloat(bmiItem.value)
if (!isNaN(bmiValue)) {
if (bmiValue < 18.5) {
bmiItem.note = '↓'
bmiItem.risk = '偏瘦'
bmiItem.status = 'danger'
abnormalSummary.push('【BMI】' + bmiValue + ',偏瘦')
} else if (bmiValue >= 24) {
bmiItem.note = '↑'
bmiItem.risk = '超重'
bmiItem.status = 'danger'
abnormalSummary.push('【BMI】' + bmiValue + ',超重')
} else {
bmiItem.note = '-'
bmiItem.risk = '正常'
bmiItem.status = ''
}
}
} }
// PACS //
try { const bpItem = allItems.find(item =>
// PACS item.name && item.name.includes('血压') &&
const res = await PacsDataApi.getPacsDataDetail(patient.medicalSn) item.value
)
if (res && res.length > 0) { if (bpItem) {
// type const bpMatch = bpItem.value.match(/(\d+)\/(\d+)/)
const typeGroups = {} if (bpMatch) {
const systolic = parseInt(bpMatch[1]) //
const diastolic = parseInt(bpMatch[2]) //
// type if (!isNaN(systolic) && !isNaN(diastolic)) {
res.forEach((item) => { if (systolic >= 130 || diastolic >= 85) {
if (item.type && item.item) { bpItem.note = '↑'
if (!typeGroups[item.type]) { bpItem.risk = '血压偏高'
typeGroups[item.type] = [] bpItem.status = 'danger'
abnormalSummary.push('【血压】' + bpItem.value + ',偏高')
} else {
bpItem.note = '-'
bpItem.risk = '正常'
bpItem.status = ''
}
} }
typeGroups[item.type].push(item.item)
} }
})
//
//
const typeToTabMapping = {
cbc: 'blood', //
rt: 'urine', // 尿
bt: 'biochemical' //
} }
// // ""
Object.entries(typeGroups).forEach(([type, items]) => { if (patient.status !== '1' && patient.status !== 1 &&
// 便 conclusionData.value.general.summary === '未见异常' &&
const lowerType = type.toLowerCase() abnormalSummary.length > 0) {
// conclusionData.value.general.summary = abnormalSummary.join('')
const tabKey = typeToTabMapping[lowerType]
if (tabKey) {
//
const combinedData = items.join(';')
// summary
conclusionData.value[tabKey].summary = combinedData
//
if (examItems.value[tabKey]) {
examItems.value[tabKey].forEach((item) => {
//
if (item.name.toLowerCase().includes(tabKey)) {
item.value = combinedData
item.itemStatus = '1' //
} }
})
}
}
})
}
} catch (error) {
console.error('获取PACS数据失败:', error)
} }
} catch (error) { } catch (error) {
console.error('加载患者数据失败:', error) console.error('加载患者数据失败:', error)
ElMessage.error('加载患者数据失败') message.error('加载患者数据失败')
} finally {
loading.close()
}
} catch (error) {
console.error('加载患者数据失败:', error)
ElMessage.error('加载患者数据失败')
} }
} }
@ -909,7 +865,7 @@ const handlePatientSelect = async (patient) => {
conclusionData.value = { conclusionData.value = {
general: { summary: '未见异常' }, general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' }, ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' }, ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '' }, blood: { summary: '' },
urine: { summary: '' }, urine: { summary: '' },
biochemical: { summary: '' }, biochemical: { summary: '' },
@ -1629,7 +1585,7 @@ const handleRefresh = async (e) => {
// //
general: { summary: '未见异常' }, general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' }, ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' }, ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '' }, blood: { summary: '' },
urine: { summary: '' }, urine: { summary: '' },
biochemical: { summary: '' } biochemical: { summary: '' }
@ -2174,7 +2130,7 @@ const handleSummarySave = async () => {
if (conclusionData.value.ultrasound?.finding || conclusionData.value.ultrasound?.diagnosis) { if (conclusionData.value.ultrasound?.finding || conclusionData.value.ultrasound?.diagnosis) {
summaryContent += '【超声】\n' summaryContent += '【超声】\n'
if (conclusionData.value.ultrasound.finding) { if (conclusionData.value.ultrasound.finding) {
summaryContent += '检查所见:' + conclusionData.value.ultrasound.finding + '\n' summaryContent += '检查所见:' +'\n'+ conclusionData.value.ultrasound.finding + '\n'
} }
if (conclusionData.value.ultrasound.diagnosis) { if (conclusionData.value.ultrasound.diagnosis) {
summaryContent += '检查结果:' + conclusionData.value.ultrasound.diagnosis + '\n' summaryContent += '检查结果:' + conclusionData.value.ultrasound.diagnosis + '\n'