package com.nightscout.core.utils;
import com.nightscout.core.dexcom.records.CalRecord;
import com.nightscout.core.dexcom.records.EGVRecord;
import com.nightscout.core.dexcom.records.SensorRecord;
import com.nightscout.core.model.G4Noise;
import com.nightscout.core.model.GlucoseUnit;
public class IsigReading extends GlucoseReading {
protected SensorRecord sensorRecord;
protected CalRecord calRecord;
protected EGVRecord egvRecord;
public IsigReading(SensorRecord sensorRecord, CalRecord calRecord, EGVRecord egvRecord) {
this.sensorRecord = sensorRecord;
this.calRecord = calRecord;
this.egvRecord = egvRecord;
if (calRecord.getSlope() == 0 || calRecord.getScale() == 0 || sensorRecord.getUnfiltered() == 0) {
this.valueMgdl = 0;
} else if (sensorRecord.getFiltered() == 0 || egvRecord.getBgMgdl() < 40) {
valueMgdl = (int) (calRecord.getScale() * (sensorRecord.getUnfiltered() - calRecord.getIntercept()) / calRecord.getSlope());
} else {
double ratio = calRecord.getScale() * (sensorRecord.getFiltered() - calRecord.getIntercept()) / calRecord.getSlope() / egvRecord.getBgMgdl();
valueMgdl = (int) (calRecord.getScale() * (sensorRecord.getUnfiltered() - calRecord.getIntercept()) / calRecord.getSlope() / ratio);
}
}
public IsigReading() {
this.valueMgdl = 0;
}
protected IsigReading(int valueMgdl, GlucoseUnit unit) {
super(valueMgdl, unit);
}
public G4Noise getNoise() {
return egvRecord.getNoiseMode();
}
}