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({
general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '未见异常' },
urine: { summary: '未见异常' },
biochemical: { summary: '未见异常' },
@ -754,148 +754,104 @@ const getpatientitemData = async (medicalSn) => {
// loadPatientData
const loadPatientData = async (patient) => {
try {
const loading = ElLoading.service({
lock: true,
text: '加载中...',
background: 'rgba(255, 255, 255, 0.7)'
})
//
patientDataCache.value.clear()
try {
//
const patientData = await PatientApi.getPatient(patient.id)
reportData.value = patientData
const patientInfo = await PatientApi.getPatient(patient.id)
reportData.value = patientInfo
//
inspectDoctor.value = ''
inspectTime.value = ''
// true
isExamCompleted.value = patient.status === '1' || patient.status === 1
//
//
const itemsRes = await PatientitemsApi.getPatientitemsPage({
medicalSn: patient.medicalSn,
pageNo: 1,
pageSize: 100
})
//
if (itemsRes.list && itemsRes.list.length > 0) {
//
const groupedItems = {}
//
const conclusions = {
general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' },
blood: { summary: '' },
urine: { summary: '' },
biochemical: { summary: '' }
//
const categorizedItems = {}
itemsRes.list.forEach(item => {
const category = getCategoryByItemName(item.itemName)
if (!categorizedItems[category]) {
categorizedItems[category] = []
}
//
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)
categorizedItems[category].push(processItemData(item))
})
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 {
// PACS
const res = await PacsDataApi.getPacsDataDetail(patient.medicalSn)
//
const bpItem = allItems.find(item =>
item.name && item.name.includes('血压') &&
item.value
)
if (res && res.length > 0) {
// type
const typeGroups = {}
if (bpItem) {
const bpMatch = bpItem.value.match(/(\d+)\/(\d+)/)
if (bpMatch) {
const systolic = parseInt(bpMatch[1]) //
const diastolic = parseInt(bpMatch[2]) //
// type
res.forEach((item) => {
if (item.type && item.item) {
if (!typeGroups[item.type]) {
typeGroups[item.type] = []
if (!isNaN(systolic) && !isNaN(diastolic)) {
if (systolic >= 130 || diastolic >= 85) {
bpItem.note = '↑'
bpItem.risk = '血压偏高'
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]) => {
// 便
const lowerType = type.toLowerCase()
//
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' //
// ""
if (patient.status !== '1' && patient.status !== 1 &&
conclusionData.value.general.summary === '未见异常' &&
abnormalSummary.length > 0) {
conclusionData.value.general.summary = abnormalSummary.join('')
}
})
}
}
})
}
} catch (error) {
console.error('获取PACS数据失败:', error)
}
} catch (error) {
console.error('加载患者数据失败:', error)
ElMessage.error('加载患者数据失败')
} finally {
loading.close()
}
} catch (error) {
console.error('加载患者数据失败:', error)
ElMessage.error('加载患者数据失败')
message.error('加载患者数据失败')
}
}
@ -909,7 +865,7 @@ const handlePatientSelect = async (patient) => {
conclusionData.value = {
general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '' },
urine: { summary: '' },
biochemical: { summary: '' },
@ -1629,7 +1585,7 @@ const handleRefresh = async (e) => {
//
general: { summary: '未见异常' },
ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '未见异常', diagnosis: '未见异常' },
ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
blood: { summary: '' },
urine: { summary: '' },
biochemical: { summary: '' }
@ -2174,7 +2130,7 @@ const handleSummarySave = async () => {
if (conclusionData.value.ultrasound?.finding || conclusionData.value.ultrasound?.diagnosis) {
summaryContent += '【超声】\n'
if (conclusionData.value.ultrasound.finding) {
summaryContent += '检查所见:' + conclusionData.value.ultrasound.finding + '\n'
summaryContent += '检查所见:' +'\n'+ conclusionData.value.ultrasound.finding + '\n'
}
if (conclusionData.value.ultrasound.diagnosis) {
summaryContent += '检查结果:' + conclusionData.value.ultrasound.diagnosis + '\n'