Index: sources/storage/TreatmentLog.cpp =================================================================== diff -u -rb16dca16497e752a74bab670eb06bd25f4207659 -r44c45c64baa4ddcd94b0fda9ec5d735bb087caa9 --- sources/storage/TreatmentLog.cpp (.../TreatmentLog.cpp) (revision b16dca16497e752a74bab670eb06bd25f4207659) +++ sources/storage/TreatmentLog.cpp (.../TreatmentLog.cpp) (revision 44c45c64baa4ddcd94b0fda9ec5d735bb087caa9) @@ -32,7 +32,7 @@ #define FLOAT3 0,'f',3 #define ADDTITLE(vTITLE) logContent += QString("[%1]\n").arg(vTITLE) #define ADDALINE(vTEXT ) logContent += QString("%1\n" ).arg(vTEXT ) -#define ADDTOLOG(vINDEX) index = vINDEX; logContent += title(index) + sep + value(index) + sep + unit(index) + "\n"; +#define ADDTOLOG(vINDEX) index = vINDEX; logContent += title(index) + _sep + value(index) + _sep + unit(index) + "\n"; /*! * \brief TreatmentLog::TreatmentLog @@ -180,13 +180,14 @@ * Initializing the model for the constant values. * \param vData - the response model data. */ -void TreatmentLog::initModel(const AdjustTreatmentLogResponseData &vData, const QString &vPatientID, bool vIsHeparinOff) +void TreatmentLog::initModel(const AdjustTreatmentLogResponseData &vData, const QString &vPatientID, bool vHeparinBolusVolumeOff, bool vHeparinDispensingRateOff) { // Formatted values QString mStrText = "%1"; // DEBUG: qDebug() << _Settings.groups(); // SRSUI910 : PRS178 : Clinical - Data - Order + bool isHeparinOff = vHeparinBolusVolumeOff && vHeparinDispensingRateOff; QString mTreatmentDurationFmt = QTime (0, 0).addSecs(int(vData.mTreatmentDuration )).toString(_timeFormat); QString mActualTreatmentDurationFmt = QTime (0, 0).addSecs(int(vData.mActualTreatmentDuration )).toString(_timeFormat); @@ -207,53 +208,41 @@ // init/fill/clear the _values - _valuesLog.clear(); - for (int i = 0; i < eTreatmentLogIndexCount; i++) _valuesLog << ""; + clearModel(); - _valuesLog[ePatientID ] = vPatientID.trimmed() ; - _valuesLog[eBloodFlowRate ] = mStrText.arg(vData.mBloodFlowRate ); - _valuesLog[eDialysateFlowRate ] = mStrText.arg(vData.mDialysateFlowRate ); - _valuesLog[eTreatmentDuration ] = mTreatmentDuration ; - _valuesLog[eActualTreatmentDuration ] = mActualTreatmentDuration ; - _valuesLog[eAcidConcentrateType ] = mAcidConcentrateType ; - _valuesLog[eBicarbonateConcentrateType ] = mBicarbonateConcentrateType ; - _valuesLog[ePotassiumConcentration ] = mStrText.arg(vData.mPotassiumConcentration ); - _valuesLog[eCalciumConcentration ] = mStrText.arg(vData.mCalciumConcentration ); - _valuesLog[eBicarbonateConcentration ] = mStrText.arg(vData.mBicarbonateConcentration ); - _valuesLog[eSodiumConcentration ] = mStrText.arg(vData.mSodiumConcentration ); - _valuesLog[eDialysateTemperature ] = mStrText.arg(vData.mDialysateTemperature ,FLOAT3 ); - _valuesLog[eDialyzerType ] = mDialyzerType ; - _valuesLog[eHeparinType ] = mHeparinType ; - _valuesLog[eHeparinConcentration ] = mStrText.arg(vData.mHeparinConcentration ); - _valuesLog[eHeparinBolusVolume ] = mStrText.arg(vData.mHeparinBolusVolume ,FLOAT3 ); - _valuesLog[eHeparinDispenseRate ] = mStrText.arg(vData.mHeparinDispenseRate ,FLOAT3 ); - _valuesLog[eHeparinStop ] = mStrText.arg(vData.mHeparinStop ); - _valuesLog[eHeparinDeliveredVolume ] = mStrText.arg(vData.mHeparinDeliveredVolume ,FLOAT3 ); - _valuesLog[eTreatmentStartDateTime ] = mTreatmentStartDateTime ; - _valuesLog[eTreatmentEndDateTime ] = mTreatmentEndDateTime ; - _valuesLog[eWaterSampleTestResult ] = mWaterSampleTestResult ; - _valuesLog[eDialysateVolumeUsed ] = mStrText.arg(vData.mDialysateVolumeUsed ,FLOAT3 ); - _valuesLog[eOriginUFVolume ] = mStrText.arg(vData.mOriginUFVolume ,FLOAT3 ); - _valuesLog[eTargetUFVolume ] = mStrText.arg(vData.mTargetUFVolume ,FLOAT3 ); - _valuesLog[eActualUFVolume ] = mStrText.arg(vData.mActualUFVolume ,FLOAT3 ); - _valuesLog[eOriginUFRate ] = mStrText.arg(vData.mOriginUFRate ,FLOAT3 ); - _valuesLog[eTargetUFRate ] = mStrText.arg(vData.mTargetUFRate ,FLOAT3 ); - _valuesLog[eActualUFRate ] = mStrText.arg(vData.mActualUFRate ,FLOAT3 ); - _valuesLog[eSalineBolusVolume ] = mStrText.arg(vData.mSalineBolusVolume ); + _values[ePatientID ] = vPatientID.trimmed() ; + _values[eBloodFlowRate ] = mStrText.arg(vData.mBloodFlowRate ); + _values[eDialysateFlowRate ] = mStrText.arg(vData.mDialysateFlowRate ); + _values[eTreatmentDuration ] = mTreatmentDuration ; + _values[eActualTreatmentDuration ] = mActualTreatmentDuration ; + _values[eAcidConcentrateType ] = mAcidConcentrateType ; + _values[eBicarbonateConcentrateType ] = mBicarbonateConcentrateType ; + _values[ePotassiumConcentration ] = mStrText.arg(vData.mPotassiumConcentration ); + _values[eCalciumConcentration ] = mStrText.arg(vData.mCalciumConcentration ); + _values[eBicarbonateConcentration ] = mStrText.arg(vData.mBicarbonateConcentration ); + _values[eSodiumConcentration ] = mStrText.arg(vData.mSodiumConcentration ); + _values[eDialysateTemperature ] = mStrText.arg(vData.mDialysateTemperature ,FLOAT3 ); + _values[eDialyzerType ] = mDialyzerType ; + _values[eTreatmentStartDateTime ] = mTreatmentStartDateTime ; + _values[eTreatmentEndDateTime ] = mTreatmentEndDateTime ; + _values[eWaterSampleTestResult ] = mWaterSampleTestResult ; + _values[eDialysateVolumeUsed ] = mStrText.arg(vData.mDialysateVolumeUsed ,FLOAT3 ); + _values[eOriginUFVolume ] = mStrText.arg(vData.mOriginUFVolume ,FLOAT3 ); + _values[eTargetUFVolume ] = mStrText.arg(vData.mTargetUFVolume ,FLOAT3 ); + _values[eActualUFVolume ] = mStrText.arg(vData.mActualUFVolume ,FLOAT3 ); + _values[eOriginUFRate ] = mStrText.arg(vData.mOriginUFRate ,FLOAT3 ); + _values[eTargetUFRate ] = mStrText.arg(vData.mTargetUFRate ,FLOAT3 ); + _values[eActualUFRate ] = mStrText.arg(vData.mActualUFRate ,FLOAT3 ); + _values[eSalineBolusVolume ] = mStrText.arg(vData.mSalineBolusVolume ); - //https://diality.atlassian.net/browse/DEN-15911 - _valuesGui = _valuesLog; - if ( ! vIsHeparinOff ) goto lOut; + _values[eHeparinType ] = isHeparinOff ? tr("NONE") : mHeparinType ; + _values[eHeparinConcentration ] = isHeparinOff ? tr("NONE") : mStrText.arg(vData.mHeparinConcentration ); + _values[eHeparinBolusVolume ] = vHeparinBolusVolumeOff ? tr("OFF" ) : mStrText.arg(vData.mHeparinBolusVolume ,FLOAT3 ); + _values[eHeparinDispenseRate ] = vHeparinDispensingRateOff ? tr("OFF" ) : mStrText.arg(vData.mHeparinDispenseRate ,FLOAT3 ); + _values[eHeparinStop ] = vHeparinDispensingRateOff ? tr("OFF" ) : mStrText.arg(vData.mHeparinStop ); + _values[eHeparinDeliveredVolume ] = isHeparinOff ? tr("OFF" ) : mStrText.arg(vData.mHeparinDeliveredVolume ,FLOAT3 ); - _valuesGui[eHeparinType ] = tr("NONE"); - _valuesGui[eHeparinConcentration ] = tr("NONE"); - _valuesGui[eHeparinBolusVolume ] = tr("NONE"); - _valuesGui[eHeparinDispenseRate ] = tr("NONE"); - _valuesGui[eHeparinStop ] = tr("NONE"); - _valuesGui[eHeparinDeliveredVolume ] = tr("NONE"); - -lOut: - emit didTxCodeReceive("..."); /* put ... just to notify user about the wait for data */ + emit didTxCodeReceive(""); } /*! @@ -330,19 +319,19 @@ bool TreatmentLog::saveLog() { _lastTxInfo.clear(); - bool ok = (unsigned)_valuesLog.count() >= eTreatmentLogIndexCount; + bool ok = (unsigned)_values.count() >= eTreatmentLogIndexCount; if (!ok) return false; QString logContent ; - QString sep = "," ; - QString csv = "%1" + sep ; + QString csv = "%1" + _sep ; QString end = "%1" ; uint index = 0 ; - QString txCode = "Tx Code,%1," ; + QString txCode = "%1,%2," ; ADDTITLE("Title"); - ADDALINE(txCode.arg(_gTxCode) ); + ADDALINE(txCode + .arg(_txCodeKey).arg(_gTxCode) ); ADDTOLOG( ePatientID ); ADDTITLE("Treatment Parameters" ); @@ -420,13 +409,13 @@ } ADDALINE(""); - _lastTxInfo.mDateTime = _valuesLog[eTreatmentStartDateTime]; + _lastTxInfo.mDateTime = _values[eTreatmentStartDateTime]; _lastTxInfo.mDateTime.replace("/", "" ); // remove date separator _lastTxInfo.mDateTime.replace(":", "" ); // remove time separator _lastTxInfo.mDateTime.replace(" ", "_"); // replace spaces _lastTxInfo.mDeviceID = _deviceID; - _lastTxInfo.mPatientID = _valuesLog[ePatientID]; + _lastTxInfo.mPatientID = _values[ePatientID]; _lastTxInfo.mFileName = QString("%1%2_%3.%4") .arg(_treatmentLogPath) .arg(_lastTxInfo.mDateTime) @@ -580,7 +569,7 @@ ok = _gTxCode == _rTxCode; if ( ! ok ) { - LOG_DEBUG(QString("Generated '%1' TxCode and Received TxCode '%1' does not match").arg(_gTxCode).arg(_rTxCode)); + LOG_DEBUG(QString("Generated '%1' TxCode and Received TxCode '%2' does not match").arg(_gTxCode).arg(_rTxCode)); return ok; } @@ -594,6 +583,28 @@ return ok; } +bool TreatmentLog::findTxCode() +{ + bool ok = false; + QString content = ""; + FileHandler::read(_pendingTxr, content); + QStringList lines = content.split('\n'); + for ( const QString &line : lines ) { + if ( line.contains(_txCodeKey) ) { + QStringList fields = line.split(','); + if ( fields.count() >= Role::eCount ) { + if ( fields[Role::eTitle] == _txCodeKey ) { + if ( fields[Role::eValue].length() ) { + _gTxCode = fields[Role::eValue]; + ok = true; + } + } + } + } + } + return ok; +} + /*! * \brief TreatmentLog::sendPending * \details Resets the pending counter to immediately/ASAP as for the pending and won't waits for the timeout. @@ -613,6 +624,7 @@ */ void TreatmentLog::testPendingTxReports() { + static QString pendingTxr = ""; if ( _pendingCounter ) { _pendingCounter -- ; return; @@ -631,6 +643,12 @@ if ( pendingFiles.count() ) { // the most recent/first Tx file, to first ask for the current treatment which has just saved as pending on screen _pendingTxr = pendingFiles.first().absoluteFilePath(); + if (pendingTxr != _pendingTxr ) { + pendingTxr = _pendingTxr; + findTxCode(); + } + QString message = pendingTxr + " , " + _pendingTxr + " , " + _gTxCode; + LOG_DEBUG(message); emit didTxPending( _pendingTxr ); } }