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