feat: Add empty scan data corrupted process.

This commit is contained in:
sunwen
2024-05-29 17:14:09 +08:00
parent 23a747bde4
commit e9396c3054
8 changed files with 35 additions and 7 deletions

View File

@@ -182,6 +182,7 @@ void DeviceManager::initDevice()
reconConnectionTimer->start(CHECK_RECON_CONNECTION_TIME);
ReconManager::getInstance()->moveToThread(mReconHttpThread);
connect(ReconManager::getInstance(), &ReconManager::reconStateResponsed, UsctStateManager::getInstance(), &UsctStateManager::updateReconState);
connect(EventCenter::Default(), &EventCenter::LoginSuccess, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(this, &DeviceManager::checkReconConnection, ReconManager::getInstance(), &ReconManager::checkReconConnection);
connect(reconConnectionTimer, &QTimer::timeout, this, &DeviceManager::prepareCheckReconConnection);
connect(this, &DeviceManager::createEmptyScanToRecon, ReconManager::getInstance(), &ReconManager::createEmptyScan);
@@ -196,7 +197,6 @@ void DeviceManager::initDevice()
mTemperatureTimer = startTimer(GET_TEMPERATURE_TIME);
//init dms status--------------------make a function future
QMetaObject::invokeMethod(ReconManager::getInstance(), "checkReconConnection", Qt::QueuedConnection);
if(JsonObject::Instance()->isDmsSimulator())
{
//set simulator
@@ -346,7 +346,7 @@ void DeviceManager::processScanProgress(const QString& aProgress)
case 2:
{
ScanProcessSequence::getInstance()->fullScanDataExport();
QVariant var( (mIsEmptyScan ? QString("") : tr("Patient can leave.\nprogress:%1%")).arg(msg));
QVariant var( (mIsEmptyScan ? tr("progress:%1%") : tr("Patient can leave.\nprogress:%1%")).arg(msg));
TRIGGER_EVENT(InvokeOperationProgress, nullptr, (QObject *) &var);
break;
}
@@ -385,7 +385,10 @@ void DeviceManager::prepareFinishScan(bool isNormalFinish, const QString& aReaso
if(!isNormalFinish)
{
TRIGGER_EVENT(InvokeOperationEnd, nullptr, var);
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
if(!mIsEmptyScan)
{
TRIGGER_EVENT(StopScanProcess, nullptr, nullptr);
}
return;
}
@@ -1071,6 +1074,7 @@ void DeviceManager::processReconCreateEmptyScan(bool aResult, const QString& aSc
{
if(aResult)
{
UsctStateManager::getInstance()->setEmptyScanUpdateFlag(false);
QString sql = QString("UPDATE EScan set State = 300 where ScanID = '%1'").arg(aScanID);
if(!SQLHelper::exec(sql))
{
@@ -1150,7 +1154,7 @@ void DeviceManager::startCreateReconRecord()
QString scanID = record[0].toString();
QString referenceID = record[1].toString();
// QString patientID = record[2].toString();;
//TODO:need StudyUID & MPPS Uid
//TODO:need StudyUID & MPPS Uid
QString studyUID;
QString mppsUID;
emit createScanToRecon(scanID, studyUID,mppsUID, referenceID, RECON_TRANSFER_PATH + "/" + scanID);

View File

@@ -86,9 +86,15 @@ void UsctStateManager::updateReconState(bool aIsConnected,int aState)
{
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;
case ReconEmptyScanState: setState(ReconEmptyScanState, result);
if(!mIsEmptyScanUpdateing && !result)
{
mIsEmptyScanUpdateing = true;
EventCenter::Default()->triggerEvent(EmptyScanDataCorrupted, nullptr, nullptr);
}
break;
default: break;
}
}
@@ -99,4 +105,9 @@ bool UsctStateManager::getState(UsctState aStateCode)
return mState[aStateCode];
}
void UsctStateManager::setEmptyScanUpdateFlag(bool aIsUpdating)
{
mIsEmptyScanUpdateing = aIsUpdating;
}

View File

@@ -26,6 +26,7 @@ public:
void setState(int aStateCode, bool aState);
void updateReconState(bool aIsConnected,int aState);
bool getState(UsctState aStateCode);
void setEmptyScanUpdateFlag(bool aIsUpdating);
private:
QString getStateErrorMessage(int aStateCode);
@@ -37,6 +38,7 @@ private:
private:
QMap<int, bool> mState;
bool mIsEmptyScanUpdateing = false;
};

View File

@@ -44,6 +44,7 @@ ADD_EVENT_VALUE(StartScanProcess)\
ADD_EVENT_VALUE(StopScanProcess)\
ADD_EVENT_VALUE(CurrentUserNameChanged)\
ADD_EVENT_VALUE(EmptyScanFinished)\
ADD_EVENT_VALUE(EmptyScanDataCorrupted)\
ADD_EVENT_VALUE(UserVerificationSuccess)\
ADD_EVENT_VALUE(UsctStateUpdated)\
ADD_EVENT_VALUE(SetSelectedPatient)\

View File

@@ -179,7 +179,6 @@ void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
mScanProcessLabel->setText(getAutoLocateMessage());
});
connect(EventCenter::Default(), &EventCenter::RequestFullScanStop, EventCenter::Default(), &EventCenter::StopScanProcess);
connect(EventCenter::Default(), &EventCenter::StopScanProcess, [this]()
{
mWorklistButton->setEnabled(true);

View File

@@ -49,7 +49,7 @@ void ReconManager::setReconIpAndPort(const QString& aIp, const QString& aPort)
void ReconManager::createEmptyScan(const QString& aScanID, const QString& aPath)
{
Scan empty{aScanID.toStdString(), "", "", aPath.toStdString(),0};
Scan empty{aScanID.toStdString(), "", "", "", aPath.toStdString(),0};
auto result = mReconClient->Create(empty);
if(result.good())
{

View File

@@ -75,6 +75,7 @@ MainWindow::MainWindow(QWidget* aParent)
connect(EventCenter::Default(), &EventCenter::LoginSuccess, this,&MainWindow::checkEmptyScanValidity);
connect(EventCenter::Default(), &EventCenter::EmptyScanFinished, this,&MainWindow::enableAllTabWidget);
connect(EventCenter::Default(), &EventCenter::EmptyScanDataCorrupted, this, &MainWindow::handleEmptyScanDataCorrupted);
connect(mTabWidget, &QTabWidget::currentChanged, this, [this](int aIndex)
{
@@ -372,3 +373,12 @@ void MainWindow::enableAllTabWidget()
}
}
void MainWindow::handleEmptyScanDataCorrupted()
{
mTabWidget->setTabEnabled(0, false);
mTabWidget->setTabEnabled(1, false);
mTabWidget->setTabEnabled(2, false);
mTabWidget->setCurrentIndex(3);
DialogManager::Default()->requestAlertMessage(tr("Due to empty scan data corruption on the server, needs to be execute the empty scan. No other operations can be conducted until the scan is complete."), OkOnly, tr("Warning"));
}

View File

@@ -55,6 +55,7 @@ private:
void processShutdownDmsFailed();
void checkEmptyScanValidity();
void enableAllTabWidget();
void handleEmptyScanDataCorrupted();
private:
Ui::MainWindow* mUI;