/*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file TreatmentLog.h * \author (last) Behrouz NematiPour * \date (last) 4/30/2021 * \author (original) Behrouz NematiPour * \date (original) 4/30/2021 * */ #pragma once // Qt #include #include #include // Project #include "main.h" // Doxygen : don't remove #include "MPostTreatmentAdjustTreatmentLogResponse.h" #include "MTreatmentLogAvrgeData.h" #include "MTreatmentLogAlarmData.h" #include "MTreatmentLogEventData.h" // define #define _TreatmentLog Storage::TreatmentLog::I() namespace Storage { class TreatmentLog : public QObject { Q_OBJECT QString _treatmentLogPath; QFutureWatcher _saveWatcher; QFutureWatcher _exportWatcher; QString _dateFormat = "yyyy/MM/dd" ; QString _timeFormat = "HH:mm" ; QString _datetimeFormat = _dateFormat + " " + _timeFormat; // TODO : A Unit class needs to be created to have all the unit string and all the required conversions. QString _unitTextFlowRate = tr("mL/min" ); QString _unitTextDuration = tr("min" ); QString _unitTextConcentration = tr("mEg/L" ); QString _unitTextTemperature = tr("°C" ); QString _unitTextVolume = tr("L" ); QString _unitTextFluid = tr("mL" ); QString _unitTextHeparinConcentration = tr("IU/mL" ); QString _unitTextDispencingRate = tr("mL/hr" ); QString _unitTextBloodPressure = tr("mmHg" ); enum TreatmentLogIndex { eDeviceID , eBloodFlowRate , eDialysateFlowRate , eTreatmentDuration , eActualTreatmentDuration , eAcidConcentrateType , eBicarbonateConcentrateType , ePotassiumConcentration , eCalciumConcentration , eBicarbonateConcentration , eSodiumConcentration , eDialysateTemperature , eDialyzerType , eHeparinType , eHeparinConcentration , eHeparinBolusVolume , eHeparinDispenseRate , eHeparinStop , eHeparinDeliveredVolume , eTreatmentDateTime , eWaterSampleTestResult , eDialysateVolumeUsed , eTargetUFVolume , eActualUFVolume , eTargetUFRate , eActualUFRate , eSalineBolusVolume , eAverageBloodFlow , eAverageDialysateFlow , eAverageDialysateTemp , eAverageArterialPressure , eAverageVenousPressure , eEndTreatmentEarlyAlarm , eTreatmentLogIndexCount }; const QStringList _titles { tr("Device ID" ), tr("Blood Flow Rate" ), tr("Dialysate Flow Rate" ), tr("Treatment Duration" ), tr("Actual Treatment Duration" ), tr("Acid ConcentrateType" ), tr("Bicarbonate Concentrate Type" ), tr("Potassium Concentration" ), tr("Calcium Concentration" ), tr("Bicarbonate Concentration" ), tr("Sodium Concentration" ), tr("Dialysate Temperature" ), tr("Dialyzer Type" ), tr("Heparin Type" ), tr("Heparin Concentration" ), tr("Heparin Bolus Volume" ), tr("Heparin Dispense Rate" ), tr("Heparin Stop" ), tr("Heparin Delivered Volume" ), tr("Treatment DateTime" ), tr("Water Sample Test Result" ), tr("Dialysate Volume Used" ), tr("Target UF Volume" ), tr("Actual UF Volume" ), tr("Target UF Rate" ), tr("Actual UF Rate" ), tr("Saline Bolus Volume" ), tr("Average Blood Flow" ), tr("Average Dialysate Flow" ), tr("Average Dialysate Temp" ), tr("Average Arterial Pressure" ), tr("Average Venous Pressure" ), tr("End Treatment Early Alarm" ), }; const QStringList _units { "" , _unitTextFlowRate , _unitTextFlowRate , _unitTextDuration , _unitTextDuration , "" , "" , _unitTextConcentration , _unitTextConcentration , _unitTextConcentration , _unitTextConcentration , _unitTextTemperature , "" , "" , _unitTextHeparinConcentration , _unitTextFluid , _unitTextDispencingRate , _unitTextDuration , _unitTextFluid , "" , "" , _unitTextVolume , _unitTextVolume , _unitTextVolume , _unitTextFlowRate , _unitTextFlowRate , _unitTextFluid , _unitTextFlowRate , _unitTextFlowRate , _unitTextTemperature , _unitTextBloodPressure , _unitTextBloodPressure , "" , }; // Lists QStringList _values; QList _treatmentLogAvrgeData; QList _treatmentLogAlarmData; QList _treatmentLogEventData; void initConnections(); void logPath (Logger::LogType vLogType = Logger::eLogTrtmt, QString vLogPath = ""); bool saveLog (); void saveLogConcurrent (); bool exportLog (); void exportLogConcurrent(); NOTIFIER(isIdle) SINGLETON(TreatmentLog) public: void initModel(const AdjustTreatmentLogResponseData &vData); const QStringList titles() const { return _titles; } const QStringList units () const { return _units ; } const QStringList values() const { return _values; } void append(const TreatmentLogAvrgeData &vData); void append(const TreatmentLogAlarmData &vData); void append(const TreatmentLogEventData &vData); private slots: void onLogPathSet(Logger::LogType vLogType, const QString &vLogPath); void onSave (); void onExport (); public slots: void doSave (); void doExport (); signals: }; }