feat: Add recon state in GUI.
This commit is contained in:
@@ -119,8 +119,8 @@ void DeviceManager::initDevice()
|
|||||||
controlDrainage(*(QString*)detail);
|
controlDrainage(*(QString*)detail);
|
||||||
});
|
});
|
||||||
//AutoLocate
|
//AutoLocate
|
||||||
connect(EventCenter::Default(), &EventCenter::StartScanProcess, this, &DeviceManager::startAutoLocate);
|
connect(EventCenter::Default(), &EventCenter::StartScanProcess, this, &DeviceManager::startScanProcess);
|
||||||
connect(EventCenter::Default(), &EventCenter::StopScanProcess, this, &DeviceManager::stopAutoLocate);
|
connect(EventCenter::Default(), &EventCenter::StopScanProcess, this, &DeviceManager::stopScanProcess);
|
||||||
|
|
||||||
//Sync action
|
//Sync action
|
||||||
mGetDeviceStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_STATUS, this, "responseGetDeviceStatus(const QString&)", this);
|
mGetDeviceStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_STATUS, this, "responseGetDeviceStatus(const QString&)", this);
|
||||||
@@ -181,7 +181,9 @@ void DeviceManager::initDevice()
|
|||||||
QTimer* reconConnectionTimer = new QTimer(this);
|
QTimer* reconConnectionTimer = new QTimer(this);
|
||||||
reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME);
|
reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME);
|
||||||
ReconManager::getInstance()->moveToThread(mReconHttpThread);
|
ReconManager::getInstance()->moveToThread(mReconHttpThread);
|
||||||
connect(reconConnectionTimer, &QTimer::timeout, ReconManager::getInstance(), &ReconManager::checkReconConnection);
|
connect(ReconManager::getInstance(), &ReconManager::reconStateResponsed, UsctStateManager::getInstance(), &UsctStateManager::updateReconState);
|
||||||
|
connect(this, &DeviceManager::checkReconConnection, ReconManager::getInstance(), &ReconManager::checkReconConnection);
|
||||||
|
connect(reconConnectionTimer, &QTimer::timeout, this, &DeviceManager::prepareCheckReconConnection);
|
||||||
connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan);
|
connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan);
|
||||||
connect(this, &DeviceManager::createScanToRecon, ReconManager::getInstance(), &ReconManager::createScan);
|
connect(this, &DeviceManager::createScanToRecon, ReconManager::getInstance(), &ReconManager::createScan);
|
||||||
connect(ReconManager::getInstance(), &ReconManager::createScanResponsed, this, &DeviceManager::processReconCreateScan);
|
connect(ReconManager::getInstance(), &ReconManager::createScanResponsed, this, &DeviceManager::processReconCreateScan);
|
||||||
@@ -306,7 +308,6 @@ void DeviceManager::startScan(const QString& json, bool empty)
|
|||||||
{
|
{
|
||||||
QString msg = "Start scan...";
|
QString msg = "Start scan...";
|
||||||
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, (QObject*)&msg);
|
TRIGGER_EVENT(GUIEvents::InvokeOperationStart, nullptr, (QObject*)&msg);
|
||||||
AppGlobalValues::setInProcessing(true);
|
|
||||||
mIsScanning = true;
|
mIsScanning = true;
|
||||||
mIsEmptyScan = empty;
|
mIsEmptyScan = empty;
|
||||||
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
|
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
|
||||||
@@ -376,7 +377,6 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso
|
|||||||
killTimer(mScanProgressTimer);
|
killTimer(mScanProgressTimer);
|
||||||
mScanProgressTimer = -1;
|
mScanProgressTimer = -1;
|
||||||
}
|
}
|
||||||
AppGlobalValues::setInProcessing(false);
|
|
||||||
mIsScanning = false;
|
mIsScanning = false;
|
||||||
QString message = aReason;
|
QString message = aReason;
|
||||||
QObject* var = message.isEmpty() ? nullptr : (QObject*)&message;
|
QObject* var = message.isEmpty() ? nullptr : (QObject*)&message;
|
||||||
@@ -1257,6 +1257,27 @@ void DeviceManager::updateReconConnectionState(bool aIsConnected)
|
|||||||
EventCenter::Default()->triggerEvent(ReconConnectionUpdated, nullptr, (QObject*)&aIsConnected);
|
EventCenter::Default()->triggerEvent(ReconConnectionUpdated, nullptr, (QObject*)&aIsConnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceManager::startScanProcess()
|
||||||
|
{
|
||||||
|
if( !UsctStateManager::getInstance()->getState(ReconConnectionState) ||
|
||||||
|
!UsctStateManager::getInstance()->getState(ReconState) ||
|
||||||
|
!UsctStateManager::getInstance()->getState(ReconDBState))
|
||||||
|
{
|
||||||
|
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
|
||||||
|
QString errorMessage = tr("Recon error, can't start scan process");
|
||||||
|
THROW_ERROR(errorMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
AppGlobalValues::setInProcessing(true);
|
||||||
|
startAutoLocate();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeviceManager::stopScanProcess()
|
||||||
|
{
|
||||||
|
AppGlobalValues::setInProcessing(false);
|
||||||
|
stopAutoLocate();
|
||||||
|
}
|
||||||
|
|
||||||
bool DeviceManager::startAutoLocate()
|
bool DeviceManager::startAutoLocate()
|
||||||
{
|
{
|
||||||
if(ScanProcessSequence::getInstance()->getScanPositionSize() == 0)
|
if(ScanProcessSequence::getInstance()->getScanPositionSize() == 0)
|
||||||
@@ -1275,10 +1296,6 @@ bool DeviceManager::startAutoLocate()
|
|||||||
mGetAutoLocatePositionTimer = startTimer(1000);
|
mGetAutoLocatePositionTimer = startTimer(1000);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
stopAutoLocate();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
|
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
|
||||||
QString errorMessage = tr("Start auto locate failed");
|
QString errorMessage = tr("Start auto locate failed");
|
||||||
@@ -1361,3 +1378,12 @@ void DeviceManager::checkDataQuality()
|
|||||||
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
|
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DeviceManager::prepareCheckReconConnection()
|
||||||
|
{
|
||||||
|
if(AppGlobalValues::InProcessing().toBool())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
emit checkReconConnection();
|
||||||
|
}
|
||||||
|
|||||||
@@ -94,6 +94,8 @@ private:
|
|||||||
|
|
||||||
//-----------------new
|
//-----------------new
|
||||||
DeviceStatus getDeviceStatus();
|
DeviceStatus getDeviceStatus();
|
||||||
|
void startScanProcess();
|
||||||
|
void stopScanProcess();
|
||||||
bool startFullScan(const QString& aPatientInfo);
|
bool startFullScan(const QString& aPatientInfo);
|
||||||
void stopFullScan();
|
void stopFullScan();
|
||||||
void stopPreviewScan();
|
void stopPreviewScan();
|
||||||
@@ -138,6 +140,7 @@ private slots:
|
|||||||
void processReconQueryScanState(bool aResult, const QVariant& aState);
|
void processReconQueryScanState(bool aResult, const QVariant& aState);
|
||||||
void startCreateReconRecord();
|
void startCreateReconRecord();
|
||||||
void updateReconConnectionState(bool aIsConnected);
|
void updateReconConnectionState(bool aIsConnected);
|
||||||
|
void prepareCheckReconConnection();
|
||||||
//GUI
|
//GUI
|
||||||
void scanTimeout();
|
void scanTimeout();
|
||||||
|
|
||||||
@@ -169,6 +172,7 @@ signals:
|
|||||||
void createScanToRecon(const QString& aScanID, const QString& aStudyUID,const QString& aMPPSUID, const QString& aReferenceID, const QString& aPath);
|
void createScanToRecon(const QString& aScanID, const QString& aStudyUID,const QString& aMPPSUID, const QString& aReferenceID, const QString& aPath);
|
||||||
void queryScanStatusToRecon(const QStringList& aScanIDs);
|
void queryScanStatusToRecon(const QStringList& aScanIDs);
|
||||||
void updateReconStateFinished();
|
void updateReconStateFinished();
|
||||||
|
void checkReconConnection();
|
||||||
//GUI
|
//GUI
|
||||||
void initializeFinished();
|
void initializeFinished();
|
||||||
void initializeProgress(const QString& aProgress);
|
void initializeProgress(const QString& aProgress);
|
||||||
|
|||||||
@@ -24,19 +24,19 @@ UsctStateManager::UsctStateManager(QObject* aParent)
|
|||||||
|
|
||||||
void UsctStateManager::setState(int aStateCode, bool aState)
|
void UsctStateManager::setState(int aStateCode, bool aState)
|
||||||
{
|
{
|
||||||
bool stateTemp = mState[aStateCode];
|
if(aState == mState[aStateCode])
|
||||||
mState[aStateCode] = aState;
|
|
||||||
if(stateTemp != aState)
|
|
||||||
{
|
{
|
||||||
bool UsctState = getUsctState();
|
return;
|
||||||
EventCenter::Default()->triggerEvent(UsctStateUpdated, nullptr, (QObject*)&UsctState);
|
|
||||||
}
|
}
|
||||||
mState[aStateCode] = aState;
|
mState[aStateCode] = aState;
|
||||||
|
bool UsctState = getUsctState();
|
||||||
|
EventCenter::Default()->triggerEvent(UsctStateUpdated, nullptr, (QObject*)&UsctState);
|
||||||
if(aState)
|
if(aState)
|
||||||
{
|
{
|
||||||
int msg = aStateCode;
|
int msg = aStateCode;
|
||||||
EventCenter::Default()->triggerEvent(ErrorStateUnactive, nullptr, (QObject*)&msg);
|
EventCenter::Default()->triggerEvent(ErrorStateUnactive, nullptr, (QObject*)&msg);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
QPair<int, QString> msg(QPair<int, QString>(aStateCode, getStateErrorMessage(aStateCode)));
|
QPair<int, QString> msg(QPair<int, QString>(aStateCode, getStateErrorMessage(aStateCode)));
|
||||||
EventCenter::Default()->triggerEvent(ErrorStateActive, nullptr, (QObject*)&msg);
|
EventCenter::Default()->triggerEvent(ErrorStateActive, nullptr, (QObject*)&msg);
|
||||||
@@ -65,6 +65,38 @@ QString UsctStateManager::getStateErrorMessage(int aStateCode)
|
|||||||
case ReconPacsState : return "Recon Pacs Connection Error";
|
case ReconPacsState : return "Recon Pacs Connection Error";
|
||||||
case ReconEmptyScanState : return "Recon Empty Scan Data Error";
|
case ReconEmptyScanState : return "Recon Empty Scan Data Error";
|
||||||
case ReconDBState : return "Recon Database Connection Error";
|
case ReconDBState : return "Recon Database Connection Error";
|
||||||
|
case ReconConnectionState : return "Recon Connection Error";
|
||||||
default: return "Unknow Error";
|
default: return "Unknow Error";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UsctStateManager::updateReconState(bool aIsConnected,int aState)
|
||||||
|
{
|
||||||
|
setState(ReconConnectionState, aIsConnected);
|
||||||
|
for (int i = 0; i < 5; ++i)
|
||||||
|
{
|
||||||
|
|
||||||
|
int mask = 1 << i;
|
||||||
|
bool result = true;
|
||||||
|
if (aState & mask)
|
||||||
|
{
|
||||||
|
result = false;
|
||||||
|
}
|
||||||
|
switch(i)
|
||||||
|
{
|
||||||
|
case ReconState: setState(ReconState, result); break;
|
||||||
|
case ReconDBState: setState(ReconDBState, result); break;
|
||||||
|
case ReconEmptyScanState: setState(ReconEmptyScanState, result); break;
|
||||||
|
case ReconPacsState: setState(ReconPacsState, result); break;
|
||||||
|
case ReconMppsState: setState(ReconMppsState, result); break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UsctStateManager::getState(UsctState aStateCode)
|
||||||
|
{
|
||||||
|
return mState[aStateCode];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,14 @@
|
|||||||
|
|
||||||
enum UsctState
|
enum UsctState
|
||||||
{
|
{
|
||||||
DmsState = 0, //Dms是否有致命错误,false代表存在致命错误
|
ReconState = 0, //Recon是否有致命错误,false代表存在致命错误
|
||||||
DmsConnectionState,
|
ReconDBState,
|
||||||
ReconState, //Recon是否有致命错误,false代表存在致命错误
|
|
||||||
ReconMppsState,
|
|
||||||
ReconPacsState,
|
|
||||||
ReconConnectionState,
|
|
||||||
ReconEmptyScanState,
|
ReconEmptyScanState,
|
||||||
ReconDBState
|
ReconPacsState,
|
||||||
|
ReconMppsState,
|
||||||
|
ReconConnectionState,
|
||||||
|
DmsState, //Dms是否有致命错误,false代表存在致命错误
|
||||||
|
DmsConnectionState
|
||||||
};
|
};
|
||||||
|
|
||||||
class UsctStateManager : public QObject
|
class UsctStateManager : public QObject
|
||||||
@@ -24,11 +24,12 @@ public:
|
|||||||
|
|
||||||
bool getUsctState();
|
bool getUsctState();
|
||||||
void setState(int aStateCode, bool aState);
|
void setState(int aStateCode, bool aState);
|
||||||
|
void updateReconState(bool aIsConnected,int aState);
|
||||||
|
bool getState(UsctState aStateCode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString getStateErrorMessage(int aStateCode);
|
QString getStateErrorMessage(int aStateCode);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UsctStateManager(QObject* aParent = nullptr);
|
UsctStateManager(QObject* aParent = nullptr);
|
||||||
UsctStateManager(const UsctStateManager&);
|
UsctStateManager(const UsctStateManager&);
|
||||||
|
|||||||
@@ -110,14 +110,16 @@ void ReconManager::checkReconConnection()
|
|||||||
emit restartCreatReconRecord();
|
emit restartCreatReconRecord();
|
||||||
}
|
}
|
||||||
mIsConnected = response.good();
|
mIsConnected = response.good();
|
||||||
|
int state = 0;
|
||||||
if (mIsConnected)
|
if (mIsConnected)
|
||||||
{
|
{
|
||||||
cJSON* json = cJSON_Parse(response.message().data());
|
cJSON* json = cJSON_Parse(response.message().data());
|
||||||
cJSON* stateProperty = cJSON_GetObjectItem(json, "State");
|
cJSON* stateProperty = cJSON_GetObjectItem(json, "State");
|
||||||
int state = stateProperty->valueint;
|
state = stateProperty->valueint;
|
||||||
cJSON_Delete(json);
|
cJSON_Delete(json);
|
||||||
qDebug()<<"Recon State:"<<state;
|
qDebug()<<"Recon State:"<<state;
|
||||||
}
|
}
|
||||||
|
emit reconStateResponsed(mIsConnected, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReconManager::setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort)
|
void ReconManager::setPacsSettings(const QString& aClientAETitle, const QString& aServerAETitle, const QString& aServerIP, int aServerPort)
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ signals:
|
|||||||
void setMppsSettingsResponsed(bool aResult, const QVariant& aMessage);
|
void setMppsSettingsResponsed(bool aResult, const QVariant& aMessage);
|
||||||
void checkReconConnectionResponsed(bool aResult);
|
void checkReconConnectionResponsed(bool aResult);
|
||||||
void getReconVersionResponsed(const QString& aResult);
|
void getReconVersionResponsed(const QString& aResult);
|
||||||
|
void reconStateResponsed(bool aIsConnected, int aState);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ReconClient* mReconClient;
|
ReconClient* mReconClient;
|
||||||
|
|||||||
Reference in New Issue
Block a user