Index: sources/view/td/data/VTreatmentRanges.cpp =================================================================== diff -u -r6e41d2d9f431580bb350db71cc52dd40e60e1a28 -r863906f104a18dbe6020b939b739214679d49d8a --- sources/view/td/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision 6e41d2d9f431580bb350db71cc52dd40e60e1a28) +++ sources/view/td/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision 863906f104a18dbe6020b939b739214679d49d8a) @@ -66,7 +66,7 @@ heparinDispensingRateMax ( vData.mHepDispRateMax ); heparinDispensingRateDef ( vData.mHepDispRateDef ); heparinStopTimeMin ( vData.mHepStopTimeMin ); - + vitalsInterval ( vData.mVitalsIntervalDef ); acidConcentratePotassiumMin ( vData.mPotassiumMin ); acidConcentratePotassiumMax ( vData.mPotassiumMax ); acidConcentrateCalciumMin ( vData.mCalciumMin ); @@ -121,19 +121,48 @@ */ void View::VTreatmentRanges::doPopulateAcidConcentrate (const int &vSet, const int &vIndex) { + QString mAcidConcentrate; + QStringList values; + bool ok1 = false; + bool ok2 = false; + float potassiumValue = 0; + float calciumValue = 0; + enum AcidConcentrates { ePotassium , eCalcium , eMagnesium , }; - if ( ! vSet ) { return; } + static const QRegularExpression splitRegex("[^0-9.]"); - QString mAcidConcentrate =_acidConcentrateOptions[vIndex]; - QStringList values = mAcidConcentrate.split(QRegExp("[^0-9.]"), Qt::SkipEmptyParts); - potassium (values.value(AcidConcentrates::ePotassium) .toFloat()); - calcium (values.value(AcidConcentrates::eCalcium) .toFloat()); - didPopulateAcidConcentrate(); + if ( ! vSet ) goto lOut; + + // Check vIndex out of range + if ( vIndex < 0 || + vIndex >= _acidConcentrateOptions.size()) goto lOut; + + mAcidConcentrate =_acidConcentrateOptions.at(vIndex); + values = mAcidConcentrate.split(splitRegex, Qt::SkipEmptyParts); + + // Check string missing numbers + if ( values.size() < 2 ) goto lOut; + + ok1 = false; + ok2 = false; + potassiumValue = values.value(AcidConcentrates::ePotassium) .toFloat(&ok1); + calciumValue = values.value(AcidConcentrates::eCalcium) .toFloat(&ok2); + + // check float conversion + if ( ! ok1 || ! ok2 ) goto lOut; + + potassium(potassiumValue); + calcium(calciumValue); + + emit didPopulateAcidConcentrate(); + +lOut: + return; } /*! @@ -229,6 +258,8 @@ isConfigsOk = isConfigsOk && !_dryBicabCartridgeSizeOptions .isEmpty(); isConfigsOk = isConfigsOk && !_waterSampleTestResultRequired.isEmpty(); + vitalsInterval(_bloodPressureMeasureInterval.indexOf(_vitalsDef)); + FROMVARIANT_WITHRETURN ( dialysateTempDef , "Dialysate Temperature" , "Dialysate_Temperature_Def" , Float , isConfigsOk ); FROMVARIANT_WITHRETURN ( dialysateTempMin , "Dialysate Temperature" , "Dialysate_Temperature_Min" , Float , isConfigsOk ); FROMVARIANT_WITHRETURN ( dialysateTempMax , "Dialysate Temperature" , "Dialysate_Temperature_Max" , Float , isConfigsOk );