@@ -173,7 +173,11 @@ namespace HealthMonitor.Service.Resolver | |||||
var phr = await _serviceTDengine.GetBySerialNoAsync<PregnancyHeartRateModel>(heartRate.Serialno, 7); | |||||
var daysPhr = await _serviceTDengine.GetBySerialNoAsync<PregnancyHeartRateModel>(heartRate.Serialno, 7); | |||||
var phr = daysPhr | |||||
.Where(p => p.LastUpdate >= heartRate.LastUpdate) | |||||
.ToList(); | |||||
if (phr.Count >= 30) | if (phr.Count >= 30) | ||||
{ | { | ||||
#region 定时计算胎动数据触发器两小时间隔开始 | #region 定时计算胎动数据触发器两小时间隔开始 | ||||
@@ -245,17 +249,17 @@ namespace HealthMonitor.Service.Resolver | |||||
} | } | ||||
/// phr PregnancyHeartRate 连续连续正常次数个值都是正常(大于等于triggerHighFreqLow,少于等于triggerHighFreqHig), | /// phr PregnancyHeartRate 连续连续正常次数个值都是正常(大于等于triggerHighFreqLow,少于等于triggerHighFreqHig), | ||||
/// 取连续正常次数正常值的平均值,推送到api/v1/open/OpenIot/SetFetalHeartRateConfig | /// 取连续正常次数正常值的平均值,推送到api/v1/open/OpenIot/SetFetalHeartRateConfig | ||||
#region 检查是否连续12个心率值都是正常的 | |||||
#region 检查高频状态是否连续12个心率值都是正常的 | |||||
// 获取最近连续正常次数个心率记录 | // 获取最近连续正常次数个心率记录 | ||||
//_logger.LogInformation($"{heartRate.Serialno} 设置 stopHighFreqSampleCount {stopHighFreqSampleCount}"); | //_logger.LogInformation($"{heartRate.Serialno} 设置 stopHighFreqSampleCount {stopHighFreqSampleCount}"); | ||||
var lastPhr = phr.OrderByDescending(i => i.LastUpdate).Take(stopHighFreqSampleCount).ToList(); | |||||
//var lastPhr = phr.OrderByDescending(i => i.LastUpdate).Take(stopHighFreqSampleCount).ToList(); | |||||
var lastPhr = phr.Where(i=>i.LastUpdate>= phrFreqstatus!.LastUpdate).Take(stopHighFreqSampleCount).ToList(); | |||||
//_logger.LogInformation($"{heartRate.Serialno} 设置 lastPhr {lastPhr.Count}"); | |||||
//_logger.LogInformation($"{heartRate.Serialno} 设置 triggerHighFreqLow {triggerHighFreqLow}"); | |||||
//_logger.LogInformation($"{heartRate.Serialno} 设置 triggerHighFreqHigh {triggerHighFreqHigh}"); | |||||
// 检查是否连续12个值都是正常的 | // 检查是否连续12个值都是正常的 | ||||
if (lastPhr.All(i => i.PregnancyHeartRate >= triggerHighFreqLow && i.PregnancyHeartRate <= triggerHighFreqHigh)) | |||||
if (lastPhr.Count >= stopHighFreqSampleCount && | |||||
lastPhr.All(i => i.PregnancyHeartRate >= triggerHighFreqLow && i.PregnancyHeartRate <= triggerHighFreqHigh) | |||||
) | |||||
{ | { | ||||
var avgPhr = lastPhr.Select(i => i.PregnancyHeartRate).Average(); | var avgPhr = lastPhr.Select(i => i.PregnancyHeartRate).Average(); | ||||
// 计算一般心率得到胎心系数 | // 计算一般心率得到胎心系数 | ||||
@@ -512,7 +516,8 @@ namespace HealthMonitor.Service.Resolver | |||||
var isAbnormal = fetalHeartRate > upperAlarmThreshold ? 1 : (fetalHeartRate < lowerAlarmThreshold ? 2 : 0); | var isAbnormal = fetalHeartRate > upperAlarmThreshold ? 1 : (fetalHeartRate < lowerAlarmThreshold ? 2 : 0); | ||||
var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(heartRate.Serialno); | var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(heartRate.Serialno); | ||||
if (phrFreqstatus == null) isAbnormal = 0; | if (phrFreqstatus == null) isAbnormal = 0; | ||||
var statsusDesc = (phrFreqstatus == null) ? "平常" : "高频"; | |||||
_logger.LogInformation($"{heartRate.Serialno} 在 {statsusDesc} 状态,生成胎心值:{fetalHeartRate},统计周期:{statStartTime.ToString("yyyy-MM-dd HH:mm:ss")}----{statEndTime.ToString("yyyy-MM-dd HH:mm:ss")}"); | |||||
//if (!isFreq) | //if (!isFreq) | ||||
//{ | //{ | ||||
// statStartTime = heartRate.LastUpdate; | // statStartTime = heartRate.LastUpdate; | ||||
@@ -312,12 +312,12 @@ namespace HealthMonitor.WebApi | |||||
else | else | ||||
{ | { | ||||
var phr = await _serviceTDengine.GetBySerialNoAsync<PregnancyHeartRateModel>(imeiDel, 7); | var phr = await _serviceTDengine.GetBySerialNoAsync<PregnancyHeartRateModel>(imeiDel, 7); | ||||
var freqFirstPhr = phr.Where(p => p.MessageId == triggerHeartRate?.MessageId).First(); | |||||
// 修改缓存中高频状态触发心率 | // 修改缓存中高频状态触发心率 | ||||
var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(imeiDel); | var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(imeiDel); | ||||
if (phrFreqstatus != null) | if (phrFreqstatus != null) | ||||
{ | { | ||||
#region 修改首条高频心率 | #region 修改首条高频心率 | ||||
var freqFirstPhr = phr.Where(p => p.MessageId == triggerHeartRate?.MessageId).First(); | |||||
await _deviceCacheMgr.SetPregnancyHeartRateFreqStatusAsync(imeiDel, freqFirstPhr); | await _deviceCacheMgr.SetPregnancyHeartRateFreqStatusAsync(imeiDel, freqFirstPhr); | ||||
_logger.LogInformation($"{imeiDel} 设置高频状态,修正触发的孕妇心率记录"); | _logger.LogInformation($"{imeiDel} 设置高频状态,修正触发的孕妇心率记录"); | ||||
#endregion | #endregion | ||||
@@ -1002,7 +1002,7 @@ namespace HealthMonitor.WebApi | |||||
var phrValue = filteredPhr.Count == 1 | var phrValue = filteredPhr.Count == 1 | ||||
? filteredPhr.First().PregnancyHeartRate | ? filteredPhr.First().PregnancyHeartRate | ||||
: filteredPhr.Average(i => i.PregnancyHeartRate); | : filteredPhr.Average(i => i.PregnancyHeartRate); | ||||
//await SaveAndPushFreqFetalHeartRateAsync(heartRate, commonPHR!, upperAlarmThreshold, lowerAlarmThreshold, phrValue, sampleTimeFHR); | //await SaveAndPushFreqFetalHeartRateAsync(heartRate, commonPHR!, upperAlarmThreshold, lowerAlarmThreshold, phrValue, sampleTimeFHR); | ||||
await SaveAndPushFetalHeartRateAsync(heartRate, commonPHR!, upperAlarmThreshold, lowerAlarmThreshold, phrValue, sampleTimeFHR, normalPhrStatStartTime, normalPhrStatEndTime); | await SaveAndPushFetalHeartRateAsync(heartRate, commonPHR!, upperAlarmThreshold, lowerAlarmThreshold, phrValue, sampleTimeFHR, normalPhrStatStartTime, normalPhrStatEndTime); | ||||
} | } | ||||
@@ -1033,7 +1033,8 @@ namespace HealthMonitor.WebApi | |||||
var isAbnormal = fetalHeartRate > upperAlarmThreshold ? 1 : (fetalHeartRate < lowerAlarmThreshold ? 2 : 0); | var isAbnormal = fetalHeartRate > upperAlarmThreshold ? 1 : (fetalHeartRate < lowerAlarmThreshold ? 2 : 0); | ||||
var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(heartRate.Serialno); | var phrFreqstatus = await _deviceCacheMgr.GetPregnancyHeartRateFreqStatusAsync(heartRate.Serialno); | ||||
if (phrFreqstatus == null) isAbnormal = 0; | if (phrFreqstatus == null) isAbnormal = 0; | ||||
var statsusDesc = (phrFreqstatus == null) ? "平常" : "高频"; | |||||
_logger.LogInformation($"{heartRate.Serialno} 在 {statsusDesc} 状态,生成胎心值:{fetalHeartRate},统计周期:{statStartTime.ToString("yyyy-MM-dd HH:mm:ss")}----{statEndTime.ToString("yyyy-MM-dd HH:mm:ss")}"); | |||||
//if (!isFreq) | //if (!isFreq) | ||||
//{ | //{ | ||||
// statStartTime = heartRate.LastUpdate; | // statStartTime = heartRate.LastUpdate; | ||||