调整饼图统计
This commit is contained in:
parent
454d621537
commit
bf02bba18c
@ -1263,12 +1263,12 @@
|
||||
function calculateStatistics(data) {
|
||||
const daytimeData = data.filter(item => {
|
||||
const hour = new Date(item.originalTime).getHours();
|
||||
return hour >= 6 && hour < 22;
|
||||
return hour >= 8 && hour < 22;
|
||||
});
|
||||
|
||||
const nighttimeData = data.filter(item => {
|
||||
const hour = new Date(item.originalTime).getHours();
|
||||
return hour < 6 || hour >= 22;
|
||||
return hour < 8 || hour >= 22;
|
||||
});
|
||||
|
||||
const calculatePeriodStats = (periodData, periodType) => {
|
||||
@ -2115,20 +2115,20 @@
|
||||
|
||||
// 渲染饼图
|
||||
function renderPieCharts() {
|
||||
// 收缩压饼图
|
||||
renderPieChart('pie-systolic-day', getDaytimeData(), 'systolic', 135);
|
||||
renderPieChart('pie-systolic-night', getNighttimeData(), 'systolic', 120);
|
||||
renderPieChart('pie-systolic-all', chartDataTable, 'systolic', 140);
|
||||
// 收缩压饼图 - 按照C#代码的参考值
|
||||
renderPieChart('pie-systolic-day', getDaytimeData(), 'systolic', 140); // 白天: 90-140
|
||||
renderPieChart('pie-systolic-night', getNighttimeData(), 'systolic', 120); // 夜间: 80-120
|
||||
renderPieChart('pie-systolic-all', chartDataTable, 'systolic', 140); // 全天: 综合白天和夜间
|
||||
|
||||
// 舒张压饼图
|
||||
renderPieChart('pie-diastolic-day', getDaytimeData(), 'diastolic', 85);
|
||||
renderPieChart('pie-diastolic-night', getNighttimeData(), 'diastolic', 70);
|
||||
renderPieChart('pie-diastolic-all', chartDataTable, 'diastolic', 90);
|
||||
// 舒张压饼图 - 按照C#代码的参考值
|
||||
renderPieChart('pie-diastolic-day', getDaytimeData(), 'diastolic', 90); // 白天: 65-90
|
||||
renderPieChart('pie-diastolic-night', getNighttimeData(), 'diastolic', 80); // 夜间: 55-80
|
||||
renderPieChart('pie-diastolic-all', chartDataTable, 'diastolic', 90); // 全天: 综合白天和夜间
|
||||
|
||||
// 心率饼图
|
||||
renderPieChart('pie-hr-day', getDaytimeData(), 'heartRate', null);
|
||||
renderPieChart('pie-hr-night', getNighttimeData(), 'heartRate', null);
|
||||
renderPieChart('pie-hr-all', chartDataTable, 'heartRate', null);
|
||||
// 心率饼图 - 按照C#代码的参考值
|
||||
renderPieChart('pie-hr-day', getDaytimeData(), 'heartRate', null); // 白天: 50-90
|
||||
renderPieChart('pie-hr-night', getNighttimeData(), 'heartRate', null); // 夜间: 50-90
|
||||
renderPieChart('pie-hr-all', chartDataTable, 'heartRate', null); // 全天: 50-90
|
||||
|
||||
// 填充饼图统计信息
|
||||
fillPieChartStats();
|
||||
@ -2140,10 +2140,55 @@
|
||||
|
||||
let normalCount, abnormalCount;
|
||||
if (field === 'heartRate') {
|
||||
normalCount = data.filter(item => item[field] >=60 && item[field] <= 100).length;
|
||||
// 按照C#代码的参考值:50-90 bpm
|
||||
normalCount = data.filter(item => item[field] >= 50 && item[field] < 90).length;
|
||||
abnormalCount = data.length - normalCount;
|
||||
} else {
|
||||
normalCount = data.filter(item => item[field] < threshold).length;
|
||||
// 血压的判断逻辑需要根据白天/夜间分别处理
|
||||
if (field === 'systolic') {
|
||||
// 收缩压:白天90-140,夜间80-120
|
||||
const isDaytime = data === getDaytimeData();
|
||||
const isNighttime = data === getNighttimeData();
|
||||
|
||||
if (isDaytime) {
|
||||
normalCount = data.filter(item => item[field] >= 90 && item[field] < 140).length;
|
||||
} else if (isNighttime) {
|
||||
normalCount = data.filter(item => item[field] >= 80 && item[field] < 120).length;
|
||||
} else {
|
||||
// 全天数据,需要综合判断
|
||||
normalCount = data.filter(item => {
|
||||
const isDay = isDaytimeData(item);
|
||||
if (isDay) {
|
||||
return item[field] >= 90 && item[field] < 140;
|
||||
} else {
|
||||
return item[field] >= 80 && item[field] < 120;
|
||||
}
|
||||
}).length;
|
||||
}
|
||||
} else if (field === 'diastolic') {
|
||||
// 舒张压:白天65-90,夜间55-80
|
||||
const isDaytime = data === getDaytimeData();
|
||||
const isNighttime = data === getNighttimeData();
|
||||
|
||||
if (isDaytime) {
|
||||
normalCount = data.filter(item => item[field] >= 65 && item[field] < 90).length;
|
||||
} else if (isNighttime) {
|
||||
normalCount = data.filter(item => item[field] >= 55 && item[field] < 80).length;
|
||||
} else {
|
||||
// 全天数据,需要综合判断
|
||||
normalCount = data.filter(item => {
|
||||
const isDay = isDaytimeData(item);
|
||||
if (isDay) {
|
||||
return item[field] >= 65 && item[field] < 90;
|
||||
} else {
|
||||
return item[field] >= 55 && item[field] < 80;
|
||||
}
|
||||
}).length;
|
||||
}
|
||||
} else {
|
||||
// 其他字段使用原来的逻辑
|
||||
normalCount = data.filter(item => item[field] < threshold).length;
|
||||
}
|
||||
abnormalCount = data.length - normalCount;
|
||||
}
|
||||
|
||||
@ -2178,7 +2223,7 @@
|
||||
if (params.name === '暂无数据') {
|
||||
return '暂无数据';
|
||||
}
|
||||
return params.name + ': ' + params.value + '次 (' + params.percent + '%)';
|
||||
return Math.round(params.percent) + '%';
|
||||
}
|
||||
},
|
||||
series: [{
|
||||
@ -2191,10 +2236,11 @@
|
||||
if (params.name === '暂无数据') {
|
||||
return '暂无数据';
|
||||
}
|
||||
return params.name + '\n' + params.value + '次\n' + params.percent + '%';
|
||||
return Math.round(params.percent) + '%';
|
||||
},
|
||||
fontSize: 10,
|
||||
position: 'inside'
|
||||
fontSize: 12,
|
||||
position: 'inside',
|
||||
color: '#000'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
@ -2622,7 +2668,7 @@
|
||||
function getDaytimeData() {
|
||||
return chartDataTable.filter(item => {
|
||||
const hour = new Date(item.originalTime).getHours();
|
||||
return hour >= 6 && hour < 22;
|
||||
return hour >= 8 && hour < 22;
|
||||
});
|
||||
}
|
||||
|
||||
@ -2633,6 +2679,12 @@
|
||||
});
|
||||
}
|
||||
|
||||
// 判断单个数据项是否为白天数据
|
||||
function isDaytimeData(item) {
|
||||
const hour = new Date(item.originalTime).getHours();
|
||||
return hour >= 8 && hour < 22;
|
||||
}
|
||||
|
||||
// 暴露全局函数供外部调用
|
||||
window.initializeABPMReport = initializeReport;
|
||||
|
||||
@ -2719,7 +2771,7 @@
|
||||
wearTime: '2024-01-01'
|
||||
},
|
||||
chartDataTable: [
|
||||
// 只有白天数据 (6:00-22:00)
|
||||
// 只有白天数据 (8:00-22:00)
|
||||
{ originalTime: '2024-01-01 08:00:00', systolic: 130, diastolic: 80, heartRate: 70, avgBP: 97, status: '正常', suggestion: '继续保持' },
|
||||
{ originalTime: '2024-01-01 10:00:00', systolic: 140, diastolic: 90, heartRate: 75, avgBP: 107, status: '轻度高血压', suggestion: '注意饮食' },
|
||||
{ originalTime: '2024-01-01 12:00:00', systolic: 145, diastolic: 95, heartRate: 80, avgBP: 112, status: '轻度高血压', suggestion: '适量运动' },
|
||||
@ -2755,7 +2807,7 @@
|
||||
wearTime: '2024-01-01'
|
||||
},
|
||||
chartDataTable: [
|
||||
// 白天数据 (6:00-22:00)
|
||||
// 白天数据 (8:00-22:00)
|
||||
{ originalTime: '2024-01-01 08:00:00', systolic: 130, diastolic: 80, heartRate: 70, avgBP: 97, status: '正常', suggestion: '继续保持' },
|
||||
{ originalTime: '2024-01-01 10:00:00', systolic: 140, diastolic: 90, heartRate: 75, avgBP: 107, status: '轻度高血压', suggestion: '注意饮食' },
|
||||
{ originalTime: '2024-01-01 12:00:00', systolic: 145, diastolic: 95, heartRate: 80, avgBP: 112, status: '轻度高血压', suggestion: '适量运动' },
|
||||
@ -2764,7 +2816,7 @@
|
||||
{ originalTime: '2024-01-01 18:00:00', systolic: 138, diastolic: 82, heartRate: 74, avgBP: 101, status: '正常', suggestion: '继续保持' },
|
||||
{ originalTime: '2024-01-01 20:00:00', systolic: 132, diastolic: 78, heartRate: 69, avgBP: 96, status: '正常', suggestion: '继续保持' },
|
||||
|
||||
// 夜间数据 (22:00-6:00)
|
||||
// 夜间数据 (22:00-8:00)
|
||||
{ originalTime: '2024-01-01 23:00:00', systolic: 125, diastolic: 75, heartRate: 65, avgBP: 92, status: '正常', suggestion: '继续保持' },
|
||||
{ originalTime: '2024-01-02 01:00:00', systolic: 120, diastolic: 70, heartRate: 62, avgBP: 87, status: '正常', suggestion: '继续保持' },
|
||||
{ originalTime: '2024-01-02 03:00:00', systolic: 118, diastolic: 68, heartRate: 60, avgBP: 85, status: '正常', suggestion: '继续保持' },
|
||||
|
||||
@ -734,15 +734,15 @@ const generateAnalysisReport = (rawList: any[]) => {
|
||||
? dayjs(minDiastolicItem.measuretime || minDiastolicItem.weartime).format('MM日HH:mm')
|
||||
: ''
|
||||
|
||||
// 按时间段分类(白天6:00-22:00,夜间22:00-6:00)
|
||||
// 按时间段分类(白天8:00-22:00,夜间22:00-8:00)
|
||||
const daytimeData = rawList.filter((item) => {
|
||||
const hour = dayjs(item.measuretime || item.weartime).hour()
|
||||
return hour >= 6 && hour < 22
|
||||
return hour >= 8 && hour < 22
|
||||
})
|
||||
|
||||
const nighttimeData = rawList.filter((item) => {
|
||||
const hour = dayjs(item.measuretime || item.weartime).hour()
|
||||
return hour < 6 || hour >= 22
|
||||
return hour < 8 || hour >= 22
|
||||
})
|
||||
|
||||
// 白天平均值
|
||||
|
||||
Loading…
Reference in New Issue
Block a user