diff --git a/src/dialogs/DialogManager.cpp b/src/dialogs/DialogManager.cpp index 14c59a4..9e4b58a 100644 --- a/src/dialogs/DialogManager.cpp +++ b/src/dialogs/DialogManager.cpp @@ -400,7 +400,7 @@ DialogResult DialogManager::reuqestConfirmStartScan(PatientInformation* aPatient dialog.setWindowModality(Qt::WindowModal);; int ret = dialog.exec(); releaseTopWidget(&dialog); - return DialogResult(ret,QVariant("")); + return DialogResult(ret,dialog.getSelectedProtocal()); } int DialogManager::requestPatientConfirm(PatientInformation* patientInf, int type) diff --git a/src/dialogs/GetWorkListDialog.cpp b/src/dialogs/GetWorkListDialog.cpp index c64bb94..09eaa86 100644 --- a/src/dialogs/GetWorkListDialog.cpp +++ b/src/dialogs/GetWorkListDialog.cpp @@ -17,6 +17,7 @@ #include "action/GetWorkListAction.h" #include "action/ActionCreator.h" #include "log/UserOperationLog.h" +#include "event/EventCenter.h" GetWorkListDialog::GetWorkListDialog(QSqlTableModel* aSqlModel, QTableView* aTableView, QWidget* aParent, Qt::WindowFlags aFlags) : AsyncActionDialog(ActionCreator::getAsyncAction("GetWorkListAction"),"Work List", aParent, aFlags) @@ -256,6 +257,7 @@ void GetWorkListDialog::insertPatient(PatientInformationPointer aPatient) mSqlModel->data(mSqlModel->index(i, accessionNumberIndex)) == aPatient->AccessionNumber) { mTableView->selectRow(i); + EventCenter::Default()->triggerEvent(PatientSelected, nullptr, (QObject*)(aPatient.data())); return; } } @@ -276,6 +278,8 @@ void GetWorkListDialog::insertPatient(PatientInformationPointer aPatient) } mTableView->selectRow(0); LOG_USER_OPERATION(QString("Add Patient, ID:%1").arg(aPatient->ID)); + + EventCenter::Default()->triggerEvent(PatientSelected, nullptr, (QObject*)(aPatient.data())); } void GetWorkListDialog::showEvent(QShowEvent *aEvent) diff --git a/src/dialogs/StartScanProcessDialog.cpp b/src/dialogs/StartScanProcessDialog.cpp index f522efa..2e2a227 100644 --- a/src/dialogs/StartScanProcessDialog.cpp +++ b/src/dialogs/StartScanProcessDialog.cpp @@ -8,7 +8,8 @@ StartScanProcessDialog::StartScanProcessDialog(QWidget *aParent) : QDialog(aParent), - mUI(new Ui::StartScanProcessDialog) + mUI(new Ui::StartScanProcessDialog), + mScanProtocal(LSTAND) { mUI->setupUi(this); setObjectName("formDialog"); @@ -27,28 +28,33 @@ void StartScanProcessDialog::initButtons() connect(mUI->mCancelButton, &QPushButton::clicked, this, &QDialog::reject); QButtonGroup* buttonGroup = new QButtonGroup(this); + connect(buttonGroup, QOverload::of(&QButtonGroup::buttonClicked), this, &StartScanProcessDialog::setSelectedScanProtocal); buttonGroup->setExclusive(true); - buttonGroup->addButton(mUI->mLeftToRightButton); - buttonGroup->addButton(mUI->mRightToLeftButton); - buttonGroup->addButton(mUI->mOnlyLeftButton); - buttonGroup->addButton(mUI->mOnlyRightButton); + buttonGroup->addButton(mUI->mLeftToRightButton, LSTAND); + buttonGroup->addButton(mUI->mRightToLeftButton, RSTAND); + buttonGroup->addButton(mUI->mOnlyLeftButton, LONE); + buttonGroup->addButton(mUI->mOnlyRightButton, RONE); QString protocol = JsonObject::Instance()->defaultProtocal(); if(protocol == "LSTAND") { mUI->mLeftToRightButton->setChecked(true); + mScanProtocal = LSTAND; } else if(protocol == "RSTAND") { mUI->mRightToLeftButton->setChecked(true); + mScanProtocal = RSTAND; } else if(protocol == "LONE") { mUI->mOnlyLeftButton->setChecked(true); + mScanProtocal = LONE; } else { mUI->mOnlyRightButton->setChecked(true); + mScanProtocal = RONE; } } @@ -65,3 +71,14 @@ void StartScanProcessDialog::accept() { QDialog::accept(); } + +ScanProtocal StartScanProcessDialog::getSelectedProtocal() +{ + return mScanProtocal; +} + +void StartScanProcessDialog::setSelectedScanProtocal(int aButtonIndex) +{ + mScanProtocal = static_cast(aButtonIndex); +} + diff --git a/src/dialogs/StartScanProcessDialog.h b/src/dialogs/StartScanProcessDialog.h index 0b222b7..51ac543 100644 --- a/src/dialogs/StartScanProcessDialog.h +++ b/src/dialogs/StartScanProcessDialog.h @@ -2,6 +2,7 @@ #define STARTSCANPROCESSDIALOG_H #include +#include "forms/scan/PatientInformationForm.h" class PatientInformation; @@ -17,15 +18,18 @@ public: explicit StartScanProcessDialog(QWidget *aParent = nullptr); ~StartScanProcessDialog() override; void setPatientDetailForm(PatientInformation* aPatient); + ScanProtocal getSelectedProtocal(); public slots: void accept() override; + void setSelectedScanProtocal(int aButtonIndex); private: void initButtons(); private: Ui::StartScanProcessDialog *mUI; + ScanProtocal mScanProtocal; }; #endif // STARTSCANPROCESSDIALOG_H diff --git a/src/forms/scan/PatientInformationForm.cpp b/src/forms/scan/PatientInformationForm.cpp index c675100..8c1002a 100644 --- a/src/forms/scan/PatientInformationForm.cpp +++ b/src/forms/scan/PatientInformationForm.cpp @@ -23,7 +23,7 @@ PatientInformationForm::~PatientInformationForm() delete mJsonStr; } -void PatientInformationForm::setPatientInformation(PatientInformationPointer information) { +void PatientInformationForm::setPatientInformation(PatientInformationPointer information, ScanProtocal aProtocal) { if(information) { mUI->mPatientID->setText(information->ID); @@ -31,6 +31,7 @@ void PatientInformationForm::setPatientInformation(PatientInformationPointer inf mUI->mPatientName->setText(information->Name); mUI->mPatientGender->setText(information->Sex); mUI->mPaitenAccessionNumber->setText(information->AccessionNumber); + mUI->mScanProtocol->setText(getProtocolString(aProtocal)); } else { @@ -39,11 +40,9 @@ void PatientInformationForm::setPatientInformation(PatientInformationPointer inf mUI->mPatientName->clear(); mUI->mPatientGender->clear(); mUI->mPaitenAccessionNumber->clear(); + mUI->mScanProtocol->clear(); } - if (mInfo) - { - mInfo->deleteLater(); - } + mInfo = information; } @@ -57,6 +56,17 @@ int PatientInformationForm::getProtocol() return mCurrentProtocol; } +QString PatientInformationForm::getProtocolString(ScanProtocal aProtocal) +{ + switch (aProtocal) + { + case RSTAND: return tr("RSTAND"); + case LSTAND: return tr("LSTAND"); + case LONE: return tr("LONE"); + case RONE: return tr("RONE"); + } +} + QString PatientInformationForm::getPatientID() { return mUI->mPatientID->text(); diff --git a/src/forms/scan/PatientInformationForm.h b/src/forms/scan/PatientInformationForm.h index 743514a..90b222a 100644 --- a/src/forms/scan/PatientInformationForm.h +++ b/src/forms/scan/PatientInformationForm.h @@ -7,6 +7,11 @@ namespace Ui { class PatientInformationForm; } +enum ScanProtocal +{ + LSTAND = 0, RSTAND, LONE, RONE +}; + class PatientInformationForm : public QWidget { Q_OBJECT @@ -14,17 +19,18 @@ class PatientInformationForm : public QWidget public: explicit PatientInformationForm(QWidget *parent = nullptr); ~PatientInformationForm() override; - void setPatientInformation(PatientInformationPointer information); + void setPatientInformation(PatientInformationPointer information, ScanProtocal aProtocal); PatientInformationPointer getPatientInformation(); int getProtocol(); + QString getProtocolString(ScanProtocal aProtocal); const char * getCurrentPatientJsonString(bool emptyScan); - QString getPatientID(); + QString getPatientID(); private: Ui::PatientInformationForm *mUI; PatientInformationPointer mInfo; - int mCurrentProtocol = 0; + ScanProtocal mCurrentProtocol = LSTAND; char * mJsonStr = nullptr; }; diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index e941812..ce8a1ca 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -329,7 +329,7 @@ void ScanFormWidget::initEvents() DialogResult result = DialogManager::Default()->reuqestConfirmStartScan(patientInfo); if(result.ResultCode == QDialog::Accepted) { - mPatInf->setPatientInformation(patientInfo->Copy()); + mPatInf->setPatientInformation(patientInfo->Copy(), static_cast(result.ResultData.toInt())); LOG_USER_OPERATION(QString("Select Patient, ID: %1").arg(patientInfo->ID)) EventCenter::Default()->triggerEvent(StartScanProcess, nullptr, patientInfo); }