|
|
@@ -256,16 +256,37 @@ namespace HealthMonitor.WebApi |
|
|
|
var commonPHR = await _serviceTDengine.InitPregnancyCommonHeartRateModeAsync(imeiDel); |
|
|
|
if (commonPHR != null) |
|
|
|
{ |
|
|
|
# region 计算胎心数据 |
|
|
|
# region 计算上刻钟的胎心数据 |
|
|
|
// 告警上限阀值 |
|
|
|
var upperAlarmThreshold = (int)watchConfig!["upperAlarmThreshold"]!; |
|
|
|
// 告警下限阀值 |
|
|
|
var lowerAlarmThreshold = (int)watchConfig["lowerAlarmThreshold"]!; |
|
|
|
|
|
|
|
var lastPhr = await _serviceTDengine.GetLastAsync<PregnancyHeartRateModel>(); |
|
|
|
//var lastPhr = await _serviceTDengine.GetLastAsync<PregnancyHeartRateModel>(); |
|
|
|
// 计算胎心=孕妇心率*系数 |
|
|
|
var fetalHeartRate = SafeType.SafeInt(lastPhr.PregnancyHeartRate * commonPHR?.StatModeAvgFprCoefficient!); |
|
|
|
|
|
|
|
//var fetalHeartRate = SafeType.SafeInt(lastPhr.PregnancyHeartRate * commonPHR?.StatModeAvgFprCoefficient!); |
|
|
|
|
|
|
|
// 上15分钟的数据 |
|
|
|
// 获取当前时间 |
|
|
|
DateTime now = DateTime.Now; |
|
|
|
|
|
|
|
// 计算当前时间到上一刻钟的分钟数 |
|
|
|
int minutesToSubtract = now.Minute % 15; |
|
|
|
|
|
|
|
// 计算上一刻钟的时间 |
|
|
|
DateTime previousQuarter = now.AddMinutes(-minutesToSubtract).AddSeconds(-now.Second).AddMilliseconds(-now.Millisecond); |
|
|
|
|
|
|
|
var lastQuarterPhr = await _serviceTDengine.GetBySerialNoAsync<PregnancyHeartRateModel>(imeiDel, 1); |
|
|
|
|
|
|
|
var filteredPhr = lastQuarterPhr |
|
|
|
.Where(i => i.LastUpdate <= previousQuarter && i.LastUpdate >= previousQuarter.AddMinutes(-15)) |
|
|
|
.ToList(); |
|
|
|
|
|
|
|
var lastQuarterPhrValue = filteredPhr.Count == 1 |
|
|
|
? filteredPhr.First().PregnancyHeartRate |
|
|
|
: filteredPhr.Average(i => i.PregnancyHeartRate); |
|
|
|
|
|
|
|
var fetalHeartRate = SafeType.SafeInt(lastQuarterPhrValue * commonPHR?.StatModeAvgFprCoefficient!); |
|
|
|
var sampleTime = DateTimeUtil.ConvertToTimeStamp(DateTime.Now).ToString(); |
|
|
|
|
|
|
|
var isAbnormal = fetalHeartRate > upperAlarmThreshold ? 1 : (fetalHeartRate < lowerAlarmThreshold ? 2 : 0); |
|
|
@@ -278,8 +299,8 @@ namespace HealthMonitor.WebApi |
|
|
|
HeartRate = fetalHeartRate, |
|
|
|
SampleTime = sampleTime, |
|
|
|
IsAbnormal = isAbnormal, |
|
|
|
StatStartTime = commonPHR.StatStartTime, |
|
|
|
StatEndTime = commonPHR.StatEndTime, |
|
|
|
StatStartTime = filteredPhr.OrderByDescending(i=>i.LastUpdate).First().LastUpdate, |
|
|
|
StatEndTime = filteredPhr.OrderByDescending(i => i.LastUpdate).Last().LastUpdate, |
|
|
|
CreateTime = DateTime.Now, |
|
|
|
Method = 1, |
|
|
|
IsDisplay = 1, |
|
|
@@ -293,30 +314,7 @@ namespace HealthMonitor.WebApi |
|
|
|
#endregion |
|
|
|
|
|
|
|
#region 注册定时计算胎心数据触发器 {interval} 秒后 |
|
|
|
//var fetalKey = $"health_monitor/schedule_push/cal_fetal_heart_rate/imei/{imeiDel}"; |
|
|
|
//var fetalKey = key; |
|
|
|
//var scheduleFetalPush = await _serviceEtcd.GetValAsync(fetalKey).ConfigureAwait(false); |
|
|
|
//if (string.IsNullOrWhiteSpace(scheduleFetalPush)) |
|
|
|
//{ |
|
|
|
// // var fetalInterval = (int)watchConfig!["interval"]!; |
|
|
|
// var fetalInterval = 60 * 15; |
|
|
|
|
|
|
|
// var fetalNow = DateTime.Now; |
|
|
|
// var fetalTimeNextRun = fetalNow.Add(TimeSpan.FromSeconds(fetalInterval)); |
|
|
|
// var fetalTTL = fetalInterval; |
|
|
|
// var data = new |
|
|
|
// { |
|
|
|
// imei = imeiDel, |
|
|
|
// create_time = fetalNow.ToString("yyyy-MM-dd HH:mm:ss"), |
|
|
|
// fetalTTL, |
|
|
|
// next_run_time = fetalTimeNextRun.ToString("yyyy-MM-dd HH:mm:ss") |
|
|
|
// }; |
|
|
|
// var result = JsonConvert.SerializeObject(data); |
|
|
|
// await _serviceEtcd.PutValAsync(fetalKey, result, fetalTTL, false).ConfigureAwait(false); |
|
|
|
//} |
|
|
|
|
|
|
|
await SetIntervalTriggerAsync(key, imeiDel, 60 * 15); |
|
|
|
|
|
|
|
//await SetIntervalTriggerAsync(key, imeiDel, 60 * 15); |
|
|
|
#endregion |
|
|
|
} |
|
|
|
} |
|
|
|