Add recon page can search by patient info.

This commit is contained in:
sunwen
2023-08-24 15:10:46 +08:00
parent 2aa6541085
commit 4cf795d368
9 changed files with 155 additions and 66 deletions

View File

@@ -169,7 +169,6 @@ void DeviceManager::initDevice()
}
startTransfer();
initEmptyScanMeasurementID();
updateReconState();
//mGetSoftwareVersionAction->execute();
}

View File

@@ -1,5 +1,4 @@
#include "MultyMessageDialogManager.h"
#include "MultyMessageDialog.h"
#include <QMutexLocker>

View File

@@ -5,8 +5,7 @@
#include <QList>
#include <QMutex>
class MultyMessageDialog;
enum MessageLevel:unsigned int;
#include "MultyMessageDialog.h"
class MultyMessageDialogManager : public QObject
{
@@ -27,4 +26,4 @@ private:
QMutex mMutex;
};
#endif // MULTYMESSAGEDIALOGMANAGER_H
#endif // MULTYMESSAGEDIALOGMANAGER_H

View File

@@ -5,12 +5,15 @@
#include <QToolButton>
#include <QVBoxLayout>
#include <QHeaderView>
#include <QSqlRecord>
#include "components/SlideTableView.h"
#include "db/SQLHelper.h"
#include "device/DeviceManager.h"
#include "ScanSearchCriteriaForm.h"
#include "ReconStateDelegate.h"
#include "dialogs/DialogManager.h"
#include "log/UserOperationLog.h"
ReconFormWidget::ReconFormWidget(QWidget *parent)
: TabFormWidget(parent)
@@ -49,6 +52,7 @@ ReconFormWidget::ReconFormWidget(QWidget *parent)
connect(mBtnRefresh, &QToolButton::clicked, DeviceManager::Default(), &DeviceManager::updateReconState);
connect(DeviceManager::Default(), &DeviceManager::updateReconStateFinished, mModel, &QSqlTableModel::select);
connect(mSearchWidget, &ScanSearchCriteriaForm::searchFilterUpdated, this, &ReconFormWidget::updateSearchFilter);
connect(mBtnDelete, &QToolButton::clicked, this, &ReconFormWidget::deleteReconRecord);
}
@@ -56,7 +60,7 @@ void ReconFormWidget::initTableView(QHBoxLayout *contentLayout)
{
// TableView for Scan
ReconStateDelegate* delegate = new ReconStateDelegate(this);
mScanTable->setItemDelegateForColumn(9, delegate);
mScanTable->setItemDelegateForColumn(getTableColumnIndex("State"), delegate);
mScanTable->setAlternatingRowColors(true);
mScanTable->setSelectionMode(QAbstractItemView::SingleSelection);
mScanTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
@@ -70,16 +74,16 @@ void ReconFormWidget::initTableView(QHBoxLayout *contentLayout)
mScanTable->setSortingEnabled(true); // enable sortingEnabled
mScanTable->setModel(mModel);
mScanTable->hideColumn(0);
mScanTable->hideColumn(1);
mScanTable->hideColumn(5);
mScanTable->hideColumn(getTableColumnIndex("ScanID"));
mScanTable->hideColumn(getTableColumnIndex("ReferenceID"));
mScanTable->hideColumn(getTableColumnIndex("UpdateTime"));
mScanTable->setColumnWidth(2, 200);
mScanTable->setColumnWidth(3, 200);
mScanTable->setColumnWidth(4, 300);
mScanTable->setColumnWidth(6, 200);
mScanTable->setColumnWidth(7, 100);
mScanTable->setColumnWidth(8, 200);
mScanTable->setColumnWidth(getTableColumnIndex("PatientID"), 200);
mScanTable->setColumnWidth(getTableColumnIndex("AccessionNumber"), 200);
mScanTable->setColumnWidth(getTableColumnIndex("ScanDateTime"), 300);
mScanTable->setColumnWidth(getTableColumnIndex("PatientName"), 200);
mScanTable->setColumnWidth(getTableColumnIndex("Laterality"), 100);
mScanTable->setColumnWidth(getTableColumnIndex("OperatorName"), 200);
contentLayout->addWidget(mScanTable);
//table current row selection changing event
@@ -90,16 +94,16 @@ void ReconFormWidget::initDataModel()
{
//TODO:单独初始化预防SQL错误
mModel = SQLHelper::getTable("Scan");
mModel->sort(4, Qt::DescendingOrder);
mModel->sort(getTableColumnIndex("ScanDateTime"), Qt::DescendingOrder);
updateSearchFilter();
mModel->setHeaderData(2, Qt::Horizontal, tr("Patient ID"));
mModel->setHeaderData(3, Qt::Horizontal, tr("Accession Number"));
mModel->setHeaderData(6, Qt::Horizontal, tr("Patient Name"));
mModel->setHeaderData(4, Qt::Horizontal, tr("Scan Time"));
mModel->setHeaderData(7, Qt::Horizontal, tr("Laterality"));
mModel->setHeaderData(8, Qt::Horizontal, tr("Operator Name"));
mModel->setHeaderData(9, Qt::Horizontal, tr("State"));
mModel->setHeaderData(getTableColumnIndex("PatientID"), Qt::Horizontal, tr("Patient ID"));
mModel->setHeaderData(getTableColumnIndex("AccessionNumber"), Qt::Horizontal, tr("Accession Number"));
mModel->setHeaderData(getTableColumnIndex("PatientName"), Qt::Horizontal, tr("Patient Name"));
mModel->setHeaderData(getTableColumnIndex("ScanDateTime"), Qt::Horizontal, tr("Scan Time"));
mModel->setHeaderData(getTableColumnIndex("Laterality"), Qt::Horizontal, tr("Laterality"));
mModel->setHeaderData(getTableColumnIndex("OperatorName"), Qt::Horizontal, tr("Operator Name"));
mModel->setHeaderData(getTableColumnIndex("State"), Qt::Horizontal, tr("State"));
}
void ReconFormWidget::updateSearchFilter()
@@ -107,3 +111,51 @@ void ReconFormWidget::updateSearchFilter()
mModel->setFilter(mSearchWidget->getSearchFilter());
mModel->select();
}
void ReconFormWidget::showEvent(QShowEvent *aEvent)
{
TabFormWidget::showEvent(aEvent);
DeviceManager::Default()->updateReconState();
}
void ReconFormWidget::deleteReconRecord()
{
if(mScanTable->currentIndex().row() < 0)
{
DialogManager::Default()->requestAlertMessage(tr("No data selected."), DialogButtonMode::OkOnly, tr("Alert"));
return;
}
int currentRowIndex = mScanTable->currentIndex().row();
int state = mModel->index(currentRowIndex, getTableColumnIndex("State")).data().toInt();
if(state != 999)
{
DialogManager::Default()->requestAlertMessage(tr("Can not delete this record before pacs succeed."), DialogButtonMode::OkOnly, tr("Alert"));
return;
}
QString patientName = mModel->index(currentRowIndex, getTableColumnIndex("PatientName")).data().toString();
if (DialogManager::Default()->requestAlertMessage(QString(tr("Delete recon record with patient \"%1\" ?")).arg(patientName),DialogButtonMode::OkAndCancel,tr("Confirm")) != QDialog::Accepted)
{
return;
}
mModel->removeRow(currentRowIndex);
if (mModel->submitAll())
{
mModel->select();
if (mModel->rowCount() > 0)
{
mScanTable->selectRow(0);
mModel->selectRow(0);
LOG_USER_OPERATION(DeletePatient)
}
}
else
{
DialogManager::Default()->requestAlertMessage(tr("Can't delete selected record , db error!"), DialogButtonMode::OkOnly, tr("Alert"));
}
}
int ReconFormWidget::getTableColumnIndex(const QString& aColumnName)
{
return mModel->record().indexOf(aColumnName);
}

View File

@@ -17,8 +17,15 @@ public:
~ReconFormWidget() override = default;
protected:
void showEvent(QShowEvent *aEvent) override;
private slots:
void updateSearchFilter();
void deleteReconRecord();
private:
int getTableColumnIndex(const QString& aColumnName);
private:
QToolButton* mBtnDiscard;

View File

@@ -18,7 +18,8 @@ ScanSearchCriteriaForm::ScanSearchCriteriaForm(QWidget *parent)
ui->mLBBeginDate->setVisible(false);
ui->mLBBeginDate->deleteLater();
ui->mLBBeginDate=beginBox;
ui->mLBBeginDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ui->mLBBeginDate->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->mLBBeginDate->setFixedWidth(200);
ui->mLBBeginDate->setUpdatesEnabled(true);
ui->mLBBeginDate->setText(QDate::currentDate().toString("yyyy-MM-dd"));
@@ -28,7 +29,8 @@ ScanSearchCriteriaForm::ScanSearchCriteriaForm(QWidget *parent)
ui->mLBEndDate->setVisible(false);
ui->mLBEndDate->deleteLater();
ui->mLBEndDate=endBox;
ui->mLBEndDate->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ui->mLBEndDate->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
ui->mLBEndDate->setFixedWidth(200);
ui->mLBEndDate->setUpdatesEnabled(true);
ui->mLBEndDate->setText(QDate::currentDate().toString("yyyy-MM-dd"));
ui->CriteriaTitle->setObjectName("parameterTitle");
@@ -86,7 +88,8 @@ ScanSearchCriteriaForm::ScanSearchCriteriaForm(QWidget *parent)
});
connect(ui->mBtnDates, &QPushButton::clicked, this, &ScanSearchCriteriaForm::updateSearchFilter);
connect(ui->mRetrieveButton, &QPushButton::clicked, this, &ScanSearchCriteriaForm::updateSearchFilter);
connect(ui->mClearButton, &QPushButton::clicked, this, &ScanSearchCriteriaForm::clearCriteria);
}
ScanSearchCriteriaForm::~ScanSearchCriteriaForm()
@@ -96,10 +99,36 @@ ScanSearchCriteriaForm::~ScanSearchCriteriaForm()
QString ScanSearchCriteriaForm::getSearchFilter()
{
return QString("ScanDateTime >= '%1 00:00:00' And ScanDateTime <= '%2 23:59:59'").arg(ui->mLBBeginDate->text()).arg(ui->mLBEndDate->text());
QString filter = QString("ScanDateTime >= '%1 00:00:00' And ScanDateTime <= '%2 23:59:59'").arg(ui->mLBBeginDate->text()).arg(ui->mLBEndDate->text());
QString patientID = ui->mPatientIDEdit->text();
if(!patientID.isEmpty())
{
filter += QString("And PatientID = '%1'").arg(patientID);
}
QString patientName = ui->mPatientNameEdit->text();
if(!patientName.isEmpty())
{
filter += QString("And PatientName = '%1'").arg(patientName);
}
QString accessionNumber = ui->mAccessionNumberEdit->text();
if(!accessionNumber.isEmpty())
{
filter += QString("And AccessionNumber = '%1'").arg(accessionNumber);
}
return filter;
}
void ScanSearchCriteriaForm::updateSearchFilter()
{
emit searchFilterUpdated();
}
void ScanSearchCriteriaForm::clearCriteria()
{
ui->mPatientIDEdit->clear();
ui->mPatientNameEdit->clear();
ui->mAccessionNumberEdit->clear();
}

View File

@@ -19,6 +19,7 @@ public:
private slots:
void updateSearchFilter();
void clearCriteria();
signals:
void searchFilterUpdated();

View File

@@ -151,6 +151,12 @@
</item>
<item>
<widget class="QToolButton" name="mLBBeginDate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@@ -171,6 +177,12 @@
</item>
<item>
<widget class="QToolButton" name="mLBEndDate">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
@@ -230,16 +242,10 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<item row="7" column="1">
<widget class="QPushButton" name="mRetrieveButton">
<property name="text">
<string>Accession Number</string>
<string>Retrieve</string>
</property>
</widget>
</item>
@@ -256,21 +262,11 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Scan State</string>
</property>
</widget>
<item row="6" column="0">
<widget class="ULineEdit" name="mAccessionNumberEdit"/>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="lineEdit"/>
<item row="3" column="1">
<widget class="ULineEdit" name="mPatientIDEdit"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
@@ -285,26 +281,26 @@
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="6" column="0">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="7" column="0">
<widget class="QPushButton" name="pushButton">
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Clear Fields</string>
<string>Accession Number</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="comboBox"/>
<item row="3" column="0">
<widget class="ULineEdit" name="mPatientNameEdit"/>
</item>
<item row="7" column="1">
<widget class="QPushButton" name="pushButton_2">
<item row="7" column="0">
<widget class="QPushButton" name="mClearButton">
<property name="text">
<string>Query</string>
<string>Clear Fields</string>
</property>
</widget>
</item>
@@ -326,6 +322,13 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>ULineEdit</class>
<extends>QLineEdit</extends>
<header>components/ULineEdit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -109,14 +109,14 @@ void MainWindow::initializeTabWidget()
auto scanForm = new ScanFormWidget(this);
mTabWidget->addTab(scanForm, tr("Scan"));
auto verifyForm = new ReconFormWidget(this);
mTabWidget->addTab(verifyForm, tr("Verify"));
mTabWidget->addTab(verifyForm, tr("Recon"));
mTabWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}
void MainWindow::reloadLanguage() {
mTabWidget->setTabText(0, tr("Select"));
mTabWidget->setTabText(1, tr("Scan"));
mTabWidget->setTabText(2, tr("Verify"));
mTabWidget->setTabText(2, tr("Recon"));
mTabWidget->setTabText(3, tr("Settings"));
}