This commit is contained in:
Euni4U 2025-04-15 10:30:50 +08:00
parent 342c33e265
commit d05f0eb2ba

View File

@ -754,128 +754,202 @@ const getpatientitemData = async (medicalSn) => {
// loadPatientData // loadPatientData
const loadPatientData = async (patient) => { const loadPatientData = async (patient) => {
try { try {
// const loading = ElLoading.service({
patientDataCache.value.clear() lock: true,
text: '加载中...',
background: 'rgba(255, 255, 255, 0.7)'
})
try {
// //
const patientInfo = await PatientApi.getPatient(patient.id) const patientData = await PatientApi.getPatient(patient.id)
reportData.value = patientInfo reportData.value = patientData
// //
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 categorizedItems = {} const groupedItems = {}
itemsRes.list.forEach(item => {
const category = getCategoryByItemName(item.itemName)
if (!categorizedItems[category]) {
categorizedItems[category] = []
}
categorizedItems[category].push(processItemData(item))
})
// //
examItems.value = categorizedItems const conclusions = {
general: { summary: '未见异常' },
// ultrasound: { finding: '未见异常', diagnosis: '未见异常' },
const ultrasoundItems = itemsRes.list.filter(item => ecg: { finding: '详见报告单', diagnosis: '详见报告单' },
item.itemName && ( blood: { summary: '' },
item.itemName.includes('超声') || urine: { summary: '' },
item.itemName.includes('彩超') || biochemical: { summary: '' }
item.itemName.includes('B超')
)
)
if (ultrasoundItems.length > 0) {
// 使
const ultrasoundItem = ultrasoundItems[0]
conclusionData.value.ultrasound = {
finding: ultrasoundItem.examDescription || '未见异常',
diagnosis: ultrasoundItem.itemResult || '未见异常'
}
} else {
// 使
conclusionData.value.ultrasound = {
finding: '未见异常',
diagnosis: '未见异常'
}
} }
// BMI //
const allItems = Object.values(examItems.value).flat() 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)
}
}
// //
let abnormalSummary = [] let abnormalSummary = []
// BMI itemsRes.list.forEach((item) => {
const bmiItem = allItems.find(item => //
item.name && item.name.includes('体质指数') && item.name.includes('BMI') && const category = getCategoryByItemName(item.itemName || '')
item.value
)
if (bmiItem) { if (!groupedItems[category]) {
const bmiValue = parseFloat(bmiItem.value) groupedItems[category] = []
}
//
const processedItem = processItemData(item)
groupedItems[category].push(processedItem)
//
processConclusion(item, category, conclusions)
// BMI
if (item.itemName && item.itemName.includes('体质指数') && item.itemName.includes('BMI') && item.itemResult) {
const bmiValue = parseFloat(item.itemResult)
if (!isNaN(bmiValue)) { if (!isNaN(bmiValue)) {
if (bmiValue < 18.5) { if (bmiValue < 18.5) {
bmiItem.note = '↓' processedItem.note = '↓'
bmiItem.risk = '偏瘦' processedItem.risk = '偏瘦'
bmiItem.status = 'danger' processedItem.status = 'danger'
abnormalSummary.push('【BMI】' + bmiValue + ',偏瘦') abnormalSummary.push('【BMI】' + bmiValue + ',偏瘦')
} else if (bmiValue >= 24) { } else if (bmiValue >= 24) {
bmiItem.note = '↑' processedItem.note = '↑'
bmiItem.risk = '超重' processedItem.risk = '超重'
bmiItem.status = 'danger' processedItem.status = 'danger'
abnormalSummary.push('【BMI】' + bmiValue + ',超重') abnormalSummary.push('【BMI】' + bmiValue + ',超重')
} else { } else {
bmiItem.note = '-' processedItem.note = '-'
bmiItem.risk = '正常' processedItem.risk = '正常'
bmiItem.status = '' processedItem.status = ''
} }
} }
} }
// //
const bpItem = allItems.find(item => if (item.itemName && item.itemName.includes('血压') && item.itemResult) {
item.name && item.name.includes('血压') && const bpMatch = item.itemResult.match(/(\d+)\/(\d+)/)
item.value
)
if (bpItem) {
const bpMatch = bpItem.value.match(/(\d+)\/(\d+)/)
if (bpMatch) { if (bpMatch) {
const systolic = parseInt(bpMatch[1]) // const systolic = parseInt(bpMatch[1]) //
const diastolic = parseInt(bpMatch[2]) // const diastolic = parseInt(bpMatch[2]) //
if (!isNaN(systolic) && !isNaN(diastolic)) { if (!isNaN(systolic) && !isNaN(diastolic)) {
if (systolic >= 130 || diastolic >= 85) { if (systolic >= 130 || diastolic >= 85) {
bpItem.note = '↑' processedItem.note = '↑'
bpItem.risk = '血压偏高' processedItem.risk = '血压偏高'
bpItem.status = 'danger' processedItem.status = 'danger'
abnormalSummary.push('【血压】' + bpItem.value + ',偏高') abnormalSummary.push('【血压】' + item.itemResult + ',偏高')
} else { } else {
bpItem.note = '-' processedItem.note = '-'
bpItem.risk = '正常' processedItem.risk = '正常'
bpItem.status = '' processedItem.status = ''
} }
} }
} }
} }
})
// "" // ""
if (patient.status !== '1' && patient.status !== 1 && if (patient.status !== '1' && patient.status !== 1 &&
conclusionData.value.general.summary === '未见异常' && conclusions.general.summary === '未见异常' &&
abnormalSummary.length > 0) { abnormalSummary.length > 0) {
conclusionData.value.general.summary = abnormalSummary.join('') conclusions.general.summary = abnormalSummary.join('')
} }
examItems.value = groupedItems
conclusionData.value = conclusions
}
// PACS
try {
// PACS
const res = await PacsDataApi.getPacsDataDetail(patient.medicalSn)
if (res && res.length > 0) {
// type
const typeGroups = {}
// type
res.forEach((item) => {
if (item.type && item.item) {
if (!typeGroups[item.type]) {
typeGroups[item.type] = []
}
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' //
}
})
}
}
})
}
} catch (error) {
console.error('获取PACS数据失败:', error)
} }
} catch (error) { } catch (error) {
console.error('加载患者数据失败:', error) console.error('加载患者数据失败:', error)
message.error('加载患者数据失败') ElMessage.error('加载患者数据失败')
} finally {
loading.close()
}
} catch (error) {
console.error('加载患者数据失败:', error)
ElMessage.error('加载患者数据失败')
} }
} }