calculateBasalHeartRate method
basalHeartRate = average FHR over low variation episodes
- bradycardia basalHeartRate <= 110 bpm
- tachycardia basalHeartRate >= 160 bpm
- If no episodes of low variation are identified, it is derived from the frequency distribution of pulse intervals used in the baseline fitting algorithm (not implemented yet)
TODO: How to consider parallel scanning of signal for deaccelerations and processing? Are we loosing some part of signal here?
Implementation
void calculateBasalHeartRate() {
int size = millisecondsEpoch.length;
calculateLengthOfFHREpisodes(millisecondsEpoch, baselineFHRDR);
if (lowFHRVariationBpm! > 0) {
basalHeartRate = lowFHRVariationBpm;
} else {
// calculate it from frequency distribution of intervals. Consider mean?
double sumOfValuesBpm = 0, zeroValuesBpm = 0;
for (int i = 0; i < size; i++) {
if (millisecondsEpoch[i] != 0) {
sumOfValuesBpm += (SIXTY_THOUSAND_MS / millisecondsEpoch[i]!).truncate();
} else {
zeroValuesBpm++;
}
}
basalHeartRate = (sumOfValuesBpm / size).truncate();
}
if (basalHeartRate! <= 110) {
isBradycardia = true;
} else {
isBradycardia = false;
}
if (basalHeartRate! >= 160) {
isTachycardia = true;
} else {
isTachycardia = false;
}
//rounding off to 5
if(basalHeartRate!%5>=3){
basalHeartRate = basalHeartRate! - (basalHeartRate!%5);
basalHeartRate = basalHeartRate! + 5;
}else{
basalHeartRate = basalHeartRate! - (basalHeartRate!%5);
}
//return basalHeartRate;
}