isValid implementation

This commit is contained in:
Milos Kozak 2017-08-17 20:51:24 +02:00
parent b93a153b23
commit 73c2be5248
12 changed files with 52 additions and 17 deletions

View file

@ -22,12 +22,12 @@ public class DetailedBolusInfo {
public double insulin = 0; public double insulin = 0;
public double carbs = 0; public double carbs = 0;
public int source = Source.NONE; public int source = Source.NONE;
public boolean isValid = true;
public double glucose = 0; // Bg value in current units public double glucose = 0; // Bg value in current units
public String glucoseType = ""; // NS values: Manual, Finger, Sensor public String glucoseType = ""; // NS values: Manual, Finger, Sensor
public int carbTime = 0; // time shift of carbs in minutes public int carbTime = 0; // time shift of carbs in minutes
public JSONObject boluscalc = null; // additional bolus wizard info public JSONObject boluscalc = null; // additional bolus wizard info
public Context context = null; // context for progress dialog public Context context = null; // context for progress dialog
public boolean addToTreatments = true;
public long pumpId = 0; // id of record if comming from pump history (not a newly created treatment) public long pumpId = 0; // id of record if comming from pump history (not a newly created treatment)
public boolean isSMB = false; // is a Super-MicroBolus public boolean isSMB = false; // is a Super-MicroBolus
} }

View file

@ -598,6 +598,16 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
scheduleTreatmentChange(); scheduleTreatmentChange();
} }
public void update(Treatment treatment) {
try {
getDaoTreatments().update(treatment);
updateEarliestDataChange(treatment.date);
} catch (SQLException e) {
e.printStackTrace();
}
scheduleTreatmentChange();
}
public void deleteTreatmentById(String _id) { public void deleteTreatmentById(String _id) {
Treatment stored = findTreatmentById(_id); Treatment stored = findTreatmentById(_id);
if (stored != null) { if (stored != null) {

View file

@ -181,6 +181,8 @@ public class Treatment implements DataPointWithLabelInterface {
// ----------------- DataPointInterface end -------------------- // ----------------- DataPointInterface end --------------------
public Iob iobCalc(long time, double dia) { public Iob iobCalc(long time, double dia) {
if (!isValid)
return new Iob();
InsulinInterface insulinInterface = MainApp.getInsulinIterfaceById(insulinInterfaceID); InsulinInterface insulinInterface = MainApp.getInsulinIterfaceById(insulinInterfaceID);
if (insulinInterface == null) if (insulinInterface == null)
insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); insulinInterface = ConfigBuilderPlugin.getActiveInsulin();

View file

@ -164,8 +164,8 @@ public class FillDialog extends DialogFragment implements OnClickListener {
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo(); DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
detailedBolusInfo.insulin = finalInsulinAfterConstraints; detailedBolusInfo.insulin = finalInsulinAfterConstraints;
detailedBolusInfo.context = context; detailedBolusInfo.context = context;
detailedBolusInfo.addToTreatments = false;
detailedBolusInfo.source = Source.NONE; detailedBolusInfo.source = Source.NONE;
detailedBolusInfo.isValid = false; // do not count it in IOB (for pump history)
PumpEnactResult result = pump.deliverTreatment(detailedBolusInfo); PumpEnactResult result = pump.deliverTreatment(detailedBolusInfo);
if (!result.success) { if (!result.success) {
AlertDialog.Builder builder = new AlertDialog.Builder(context); AlertDialog.Builder builder = new AlertDialog.Builder(context);

View file

@ -884,10 +884,8 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
@Override @Override
// return true if new record is created // return true if new record is created
public boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo) { public boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo) {
if (!detailedBolusInfo.addToTreatments)
return false;
boolean newRecordCreated = activeTreatments.addToHistoryTreatment(detailedBolusInfo); boolean newRecordCreated = activeTreatments.addToHistoryTreatment(detailedBolusInfo);
if (newRecordCreated) if (newRecordCreated && detailedBolusInfo.isValid)
NSUpload.uploadBolusWizardRecord(detailedBolusInfo); NSUpload.uploadBolusWizardRecord(detailedBolusInfo);
return newRecordCreated; return newRecordCreated;
} }

View file

@ -1597,7 +1597,9 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
List<Treatment> treatments = MainApp.getConfigBuilder().getTreatmentsFromHistory(); List<Treatment> treatments = MainApp.getConfigBuilder().getTreatmentsFromHistory();
for (int tx = 0; tx < treatments.size(); tx++) { for (int tx = 0; tx < treatments.size(); tx++) {
DataPointWithLabelInterface t = treatments.get(tx); Treatment t = treatments.get(tx);
if (!t.isValid)
continue;
if (t.getX() < fromTime || t.getX() > endTime) continue; if (t.getX() < fromTime || t.getX() > endTime) continue;
t.setY(getNearestBg((long) t.getX(), bgReadingsArray)); t.setY(getNearestBg((long) t.getX(), bgReadingsArray));
filteredTreatments.add(t); filteredTreatments.add(t);

View file

@ -99,14 +99,14 @@ public class MsgHistoryEvents_v2 extends MessageBase {
MainApp.getConfigBuilder().addToHistoryExtendedBolus(extendedBolus); MainApp.getConfigBuilder().addToHistoryExtendedBolus(extendedBolus);
break; break;
case DanaRPump.BOLUS: case DanaRPump.BOLUS:
log.debug("EVENT BOLUS (" + recordCode + ") " + datetime.toLocaleString() + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min");
detailedBolusInfo.insulin = param1 / 100d; detailedBolusInfo.insulin = param1 / 100d;
MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo); boolean newRecord = MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo);
log.debug((newRecord ? "**NEW** " : "") + "EVENT BOLUS (" + recordCode + ") " + datetime.toLocaleString() + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min");
break; break;
case DanaRPump.DUALBOLUS: case DanaRPump.DUALBOLUS:
log.debug("EVENT DUALBOLUS (" + recordCode + ") " + datetime.toLocaleString() + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min");
detailedBolusInfo.insulin = param1 / 100d; detailedBolusInfo.insulin = param1 / 100d;
MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo); newRecord = MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo);
log.debug((newRecord ? "**NEW** " : "") + "EVENT DUALBOLUS (" + recordCode + ") " + datetime.toLocaleString() + " Bolus: " + (param1 / 100d) + "U Duration: " + param2 + "min");
break; break;
case DanaRPump.DUALEXTENDEDSTART: case DanaRPump.DUALEXTENDEDSTART:
log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min"); log.debug("EVENT DUALEXTENDEDSTART (" + recordCode + ") " + datetime.toLocaleString() + " Amount: " + (param1 / 100d) + "U Duration: " + param2 + "min");
@ -134,9 +134,9 @@ public class MsgHistoryEvents_v2 extends MessageBase {
log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + datetime.toLocaleString() + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h"); log.debug("EVENT PROFILECHANGE (" + recordCode + ") " + datetime.toLocaleString() + " No: " + param1 + " CurrentRate: " + (param2 / 100d) + "U/h");
break; break;
case DanaRPump.CARBS: case DanaRPump.CARBS:
log.debug("EVENT CARBS (" + recordCode + ") " + datetime.toLocaleString() + " Carbs: " + param1 + "g");
detailedBolusInfo.carbs = param1; detailedBolusInfo.carbs = param1;
MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo); newRecord = MainApp.getConfigBuilder().addToHistoryTreatment(detailedBolusInfo);
log.debug((newRecord ? "**NEW** " : "") + "EVENT CARBS (" + recordCode + ") " + datetime.toLocaleString() + " Carbs: " + param1 + "g");
break; break;
default: default:
log.debug("Event: " + recordCode + " " + datetime.toLocaleString() + " Param1: " + param1 + " Param2: " + param2); log.debug("Event: " + recordCode + " " + datetime.toLocaleString() + " Param1: " + param1 + " Param2: " + param2);

View file

@ -179,6 +179,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface {
for (Integer pos = 0; pos < treatments.size(); pos++) { for (Integer pos = 0; pos < treatments.size(); pos++) {
Treatment t = treatments.get(pos); Treatment t = treatments.get(pos);
if (!t.isValid) continue;
if (t.date > time) continue; if (t.date > time) continue;
Iob tIOB = t.iobCalc(time, dia); Iob tIOB = t.iobCalc(time, dia);
total.iob += tIOB.iobContrib; total.iob += tIOB.iobContrib;
@ -222,6 +223,8 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface {
long dia_ago = now - (new Double(1.5d * profile.getDia() * 60 * 60 * 1000l)).longValue(); long dia_ago = now - (new Double(1.5d * profile.getDia() * 60 * 60 * 1000l)).longValue();
for (Treatment treatment : treatments) { for (Treatment treatment : treatments) {
if (!treatment.isValid)
continue;
long t = treatment.date; long t = treatment.date;
if (t > dia_ago && t <= now) { if (t > dia_ago && t <= now) {
if (treatment.carbs >= 1) { if (treatment.carbs >= 1) {
@ -250,6 +253,8 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface {
List<Treatment> in5minback = new ArrayList<>(); List<Treatment> in5minback = new ArrayList<>();
for (Integer pos = 0; pos < treatments.size(); pos++) { for (Integer pos = 0; pos < treatments.size(); pos++) {
Treatment t = treatments.get(pos); Treatment t = treatments.get(pos);
if (!t.isValid)
continue;
if (t.date <= time && t.date > time - 5 * 60 * 1000 && t.carbs > 0) if (t.date <= time && t.date > time - 5 * 60 * 1000 && t.carbs > 0)
in5minback.add(t); in5minback.add(t);
} }
@ -409,6 +414,8 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface {
treatment.source = detailedBolusInfo.source; treatment.source = detailedBolusInfo.source;
treatment.pumpId = detailedBolusInfo.pumpId; treatment.pumpId = detailedBolusInfo.pumpId;
treatment.insulin = detailedBolusInfo.insulin; treatment.insulin = detailedBolusInfo.insulin;
treatment.isValid = detailedBolusInfo.isValid;
treatment.isSMB = detailedBolusInfo.isSMB;
if (detailedBolusInfo.carbTime == 0) if (detailedBolusInfo.carbTime == 0)
treatment.carbs = detailedBolusInfo.carbs; treatment.carbs = detailedBolusInfo.carbs;
treatment.source = detailedBolusInfo.source; treatment.source = detailedBolusInfo.source;

View file

@ -85,6 +85,7 @@ public class TreatmentsBolusFragment extends SubscriberFragment implements View.
holder.mealOrCorrection.setText(t.mealBolus ? MainApp.sResources.getString(R.string.mealbolus) : MainApp.sResources.getString(R.string.correctionbous)); holder.mealOrCorrection.setText(t.mealBolus ? MainApp.sResources.getString(R.string.mealbolus) : MainApp.sResources.getString(R.string.correctionbous));
holder.ph.setVisibility(t.source == Source.PUMP ? View.VISIBLE : View.GONE); holder.ph.setVisibility(t.source == Source.PUMP ? View.VISIBLE : View.GONE);
holder.ns.setVisibility(t._id != null ? View.VISIBLE : View.GONE); holder.ns.setVisibility(t._id != null ? View.VISIBLE : View.GONE);
holder.invalid.setVisibility(t.isValid ? View.GONE : View.VISIBLE);
if (iob.iobContrib != 0) if (iob.iobContrib != 0)
holder.iob.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorActive)); holder.iob.setTextColor(ContextCompat.getColor(MainApp.instance(), R.color.colorActive));
else else
@ -113,6 +114,7 @@ public class TreatmentsBolusFragment extends SubscriberFragment implements View.
TextView remove; TextView remove;
TextView ph; TextView ph;
TextView ns; TextView ns;
TextView invalid;
TreatmentsViewHolder(View itemView) { TreatmentsViewHolder(View itemView) {
super(itemView); super(itemView);
@ -125,6 +127,7 @@ public class TreatmentsBolusFragment extends SubscriberFragment implements View.
mealOrCorrection = (TextView) itemView.findViewById(R.id.treatments_mealorcorrection); mealOrCorrection = (TextView) itemView.findViewById(R.id.treatments_mealorcorrection);
ph = (TextView) itemView.findViewById(R.id.pump_sign); ph = (TextView) itemView.findViewById(R.id.pump_sign);
ns = (TextView) itemView.findViewById(R.id.ns_sign); ns = (TextView) itemView.findViewById(R.id.ns_sign);
invalid = (TextView) itemView.findViewById(R.id.invalid_sign);
remove = (TextView) itemView.findViewById(R.id.treatments_remove); remove = (TextView) itemView.findViewById(R.id.treatments_remove);
remove.setOnClickListener(this); remove.setOnClickListener(this);
remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
@ -141,10 +144,15 @@ public class TreatmentsBolusFragment extends SubscriberFragment implements View.
builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), new DialogInterface.OnClickListener() { builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
final String _id = treatment._id; final String _id = treatment._id;
if (_id != null && !_id.equals("")) { if (treatment.source == Source.PUMP) {
NSUpload.removeCareportalEntryFromNS(_id); treatment.isValid = false;
MainApp.getDbHelper().update(treatment);
} else {
if (_id != null && !_id.equals("")) {
NSUpload.removeCareportalEntryFromNS(_id);
}
MainApp.getDbHelper().delete(treatment);
} }
MainApp.getDbHelper().delete(treatment);
updateGUI(); updateGUI();
Answers.getInstance().logCustom(new CustomEvent("RemoveTreatment")); Answers.getInstance().logCustom(new CustomEvent("RemoveTreatment"));
} }

View file

@ -615,7 +615,7 @@ public class ActionStringHandler {
public void run() { public void run() {
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo(); DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
detailedBolusInfo.insulin = amount; detailedBolusInfo.insulin = amount;
detailedBolusInfo.addToTreatments = false; detailedBolusInfo.isValid = false;
detailedBolusInfo.source = Source.USER; detailedBolusInfo.source = Source.USER;
PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(detailedBolusInfo); PumpEnactResult result = MainApp.getConfigBuilder().deliverTreatment(detailedBolusInfo);
if (!result.success) { if (!result.success) {

View file

@ -80,7 +80,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginRight="30dp"
android:textStyle="bold" /> android:textStyle="bold" />
<TextView <TextView
@ -106,6 +105,14 @@
android:text="NS" android:text="NS"
android:textColor="@color/colorSetTempButton" /> android:textColor="@color/colorSetTempButton" />
<TextView
android:id="@+id/invalid_sign"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/invalid"
android:textColor="@android:color/holo_red_light" />
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout

View file

@ -699,6 +699,7 @@
<string name="ultrarapid_oref">Ultra-Rapid Oref</string> <string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="dia_too_short" formatted="false">"DIA of %s too short - using %s instead!"</string> <string name="dia_too_short" formatted="false">"DIA of %s too short - using %s instead!"</string>
<string name="activate_profile">ACTIVATE PROFILE</string> <string name="activate_profile">ACTIVATE PROFILE</string>
<string name="invalid">INVALID</string>
</resources> </resources>