Browse Source

设备连续12个心率值正常,不停止高频的兼容处理

datasub12_fetal_heart_rate_0
H Vs 6 months ago
parent
commit
5f85e502b4
2 changed files with 55 additions and 9 deletions
  1. +37
    -0
      HealthMonitor.Service/Cache/DeviceCacheManager.cs
  2. +18
    -9
      HealthMonitor.Service/Resolver/PregnancyHeartRateResolver.cs

+ 37
- 0
HealthMonitor.Service/Cache/DeviceCacheManager.cs View File

@@ -263,5 +263,42 @@ namespace HealthMonitor.Service.Cache
return false;
}
#endregion

#region 业务间隔
public async Task<string?> GetBizIntervalAsync(string sn, string biz)
{
try
{
var key = biz + "-"+sn;
var status = await RedisHelper.GetAsync(key).ConfigureAwait(false);
return status;
}
catch (Exception ex)
{
_logger.LogWarning($"Redis 发生异常:{ex.Message}, {ex.StackTrace}");
}
return null;
}
/// <summary>
/// 业务间隔(默认15分钟)
/// </summary>
/// <param name="sn"></param>
/// <param name="biz"></param>
/// <param name="ttl"></param>
/// <returns></returns>
public async Task SetBizIntervalAsync(string sn, string biz, int ttl=60*15)
{
try
{
var key = biz + "-" + sn;
await RedisHelper.SetAsync(key, biz, ttl).ConfigureAwait(false);
}
catch (Exception ex)
{
_logger.LogWarning($"Redis 发生异常:{ex.Message}, {ex.StackTrace}");
}
}

#endregion
}
}

+ 18
- 9
HealthMonitor.Service/Resolver/PregnancyHeartRateResolver.cs View File

@@ -163,8 +163,8 @@ namespace HealthMonitor.Service.Resolver
var lowerAlarmThreshold = (int)watchConfig["lowerAlarmThreshold"]!;
// EDOC
var edoc = DateTimeUtil.ToDateTime(watchConfig!["EDOC"]!.ToString());
// interval (分钟)
var intervalFHR = (int)watchConfig["interval"]!;
// interval (分钟) 固定15分钟
var intervalFHR = 15;//int)watchConfig["interval"]!;


@@ -240,7 +240,7 @@ namespace HealthMonitor.Service.Resolver
}
/// phr PregnancyHeartRate 连续连续正常次数个值都是正常(大于等于triggerHighFreqLow,少于等于triggerHighFreqHig),
/// 取连续正常次数正常值的平均值,推送到api/v1/open/OpenIot/SetFetalHeartRateConfig
#region 检查是否连续12个值都是正常的
#region 检查是否连续12个心率值都是正常的
// 获取最近连续正常次数个心率记录
var lastPhr = phr.OrderByDescending(i => i.LastUpdate).Take(stopHighFreqSampleCount).ToList();

@@ -253,13 +253,22 @@ namespace HealthMonitor.Service.Resolver
// 高频数据不建模
FreqStatsEnd = (DateTime)heartRate.LastUpdate!;
_logger.LogInformation($"{heartRate.Serialno} 高频状态已经持续{(FreqStatsEnd - phrFreqstatus!.LastUpdate).TotalSeconds} 秒,连续 {stopHighFreqSampleCount} 次采样心率正常,将下发指令");
//await SaveAndPushFreqFetalHeartRateAsync(heartRate, commonPHR, upperAlarmThreshold, lowerAlarmThreshold, avgPhr, DateTimeUtil.ConvertToTimeStamp(phrFreqstatus!.LastUpdate).ToString());
await SaveAndPushFetalHeartRateAsync(heartRate, commonPHR, upperAlarmThreshold, lowerAlarmThreshold, avgPhr, DateTimeUtil.ConvertToTimeStamp(phrFreqstatus!.LastUpdate).ToString(), phrFreqstatus!.LastUpdate, FreqStatsEnd);

// 删除高频状态的首条记录
await _deviceCacheMgr.DelPregnancyHeartRateFreqStatusAsync(heartRate.Serialno);

_logger.LogInformation($"{heartRate.Serialno} 连续正常结束高频心率状态, timeDiffInSeconds {timeDiffInSeconds},highFreqSampleInterval:{highFreqSampleInterval},高频状态持续{((DateTime)heartRate.LastUpdate - phrFreqstatus!.LastUpdate).TotalSeconds} 秒");
var freqSaveAndPushFetalHeartRate = await _deviceCacheMgr.GetBizIntervalAsync(heartRate.Serialno, "SaveAndPushFetalHeartRate");
// 高频不停,15分钟内只下发一条
if (string.IsNullOrEmpty(freqSaveAndPushFetalHeartRate))
{
await SaveAndPushFetalHeartRateAsync(heartRate, commonPHR, upperAlarmThreshold, lowerAlarmThreshold, avgPhr, DateTimeUtil.ConvertToTimeStamp(phrFreqstatus!.LastUpdate).ToString(), phrFreqstatus!.LastUpdate, FreqStatsEnd);
// 删除高频状态的首条记录
await _deviceCacheMgr.DelPregnancyHeartRateFreqStatusAsync(heartRate.Serialno);
// 设置15分的SaveAndPushFetalHeartRate业务间隔
await _deviceCacheMgr.SetBizIntervalAsync(heartRate.Serialno, "SaveAndPushFetalHeartRate");
_logger.LogInformation($"{heartRate.Serialno} 连续 {stopHighFreqSampleCount} 次采样心率正常,结束高频心率状态, timeDiffInSeconds {timeDiffInSeconds},highFreqSampleInterval:{highFreqSampleInterval},高频状态持续{((DateTime)heartRate.LastUpdate - phrFreqstatus!.LastUpdate).TotalSeconds} 秒");
}
else
{
_logger.LogWarning($"{heartRate.Serialno} 连续 {stopHighFreqSampleCount} 次采样心率正常,设备端应该结束高频状态,但设备端没有结束高频,平台高频15分钟内已经下发过指令");
}

}
else


Loading…
Cancel
Save