From 591b4a8319b8cbe26658be2020d53badcc239d31 Mon Sep 17 00:00:00 2001 From: Graham Jones Date: Fri, 28 Apr 2023 20:37:01 +0100 Subject: [PATCH] Enabled new SdAlgHr checks in SdDataSource - needs testing! --- .../uk/org/openseizuredetector/CircBuf.java | 7 +++++++ .../uk/org/openseizuredetector/SdData.java | 5 +++++ .../org/openseizuredetector/SdDataSource.java | 18 +++++++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/uk/org/openseizuredetector/CircBuf.java b/app/src/main/java/uk/org/openseizuredetector/CircBuf.java index 27cb597..4875cf6 100644 --- a/app/src/main/java/uk/org/openseizuredetector/CircBuf.java +++ b/app/src/main/java/uk/org/openseizuredetector/CircBuf.java @@ -49,6 +49,9 @@ public class CircBuf { } public int getNumVals() { + /** + * Returns the total count of values stored in the buffer (including error values). + */ int numElements; if (mIsFull) { numElements = mBuffLen; @@ -78,6 +81,10 @@ public class CircBuf { } public double getAverageVal() { + /** + * Returns the average of the values stored in the buffer, which do not equal the error value mErrVal. + * Error values are ignored. + */ double hrSum = 0.; int hrCount = 0; double valArr[] = getVals(); diff --git a/app/src/main/java/uk/org/openseizuredetector/SdData.java b/app/src/main/java/uk/org/openseizuredetector/SdData.java index cd423d6..413b2e3 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdData.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdData.java @@ -106,6 +106,8 @@ public class SdData implements Parcelable { public boolean mHRAlarmStanding = false; public boolean mHRFaultStanding = false; + public boolean mAdaptiveHRAlarmStanding = false; + public boolean mAverageHRAlarmStanding = false; public double mHR = 0; public boolean mO2SatAlarmStanding = false; @@ -318,6 +320,9 @@ public class SdData implements Parcelable { jsonObj.put("alarmRatioThresh", alarmRatioThresh); jsonObj.put("hrAlarmActive", mHRAlarmActive); jsonObj.put("hrAlarmStanding", mHRAlarmStanding); + jsonObj.put("adaptiveHrAlarmStanding", mAdaptiveHRAlarmStanding); + jsonObj.put("averageHrAlarmStanding", mAverageHRAlarmStanding); + jsonObj.put("hrAlarmStanding", mHRAlarmStanding); jsonObj.put("hrThreshMin", mHRThreshMin); jsonObj.put("hrThreshMax", mHRThreshMax); jsonObj.put("hr", mHR); diff --git a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java index 14d60f2..286daea 100644 --- a/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java +++ b/app/src/main/java/uk/org/openseizuredetector/SdDataSource.java @@ -39,6 +39,7 @@ import org.json.JSONException; import org.json.JSONObject; import org.jtransforms.fft.DoubleFFT_1D; +import java.util.ArrayList; import java.util.Arrays; import java.util.Timer; import java.util.TimerTask; @@ -589,25 +590,28 @@ public abstract class SdDataSource { */ public void hrCheck() { Log.v(TAG, "hrCheck()"); - /* Check Heart Rate against alarm settings */ + ArrayList checkResults; + checkResults = mSdAlgHr.checkHr(mSdData.mHR); + /* Check for heart rate fault condition */ if (mSdData.mHRAlarmActive) { if (mSdData.mHR < 0) { if (mSdData.mHRNullAsAlarm) { Log.i(TAG, "Heart Rate Null - Alarming"); mSdData.mHRFaultStanding = false; mSdData.mHRAlarmStanding = true; + mSdData.mAdaptiveHRAlarmStanding = false; + mSdData.mAverageHRAlarmStanding = false; } else { Log.i(TAG, "Heart Rate Fault (HR<0)"); mSdData.mHRFaultStanding = true; mSdData.mHRAlarmStanding = false; + mSdData.mAdaptiveHRAlarmStanding = false; + mSdData.mAverageHRAlarmStanding = false; } - } else if ((mSdData.mHR > mSdData.mHRThreshMax) || (mSdData.mHR < mSdData.mHRThreshMin)) { - Log.i(TAG, "Heart Rate Abnormal - " + mSdData.mHR + " bpm"); - mSdData.mHRFaultStanding = false; - mSdData.mHRAlarmStanding = true; } else { - mSdData.mHRFaultStanding = false; - mSdData.mHRAlarmStanding = false; + mSdData.mHRAlarmStanding = checkResults.get(0); + mSdData.mAdaptiveHRAlarmStanding = checkResults.get(1); + mSdData.mAverageHRAlarmStanding = checkResults.get(2); } } }