Refactory ScanFormWidget.

This commit is contained in:
sunwen
2024-04-29 17:58:17 +08:00
parent db1d589622
commit 7ef3b312e8
13 changed files with 972 additions and 932 deletions

View File

@@ -93,6 +93,7 @@ void GetWorkListDialog::initializeContentWidgets()
mPatientIDText->setText(tr("Patient ID")); mPatientIDText->setText(tr("Patient ID"));
contentLayout->addWidget(mPatientIDText); contentLayout->addWidget(mPatientIDText);
contentLayout->addWidget(mPatientId); contentLayout->addWidget(mPatientId);
mEditEndLine->setFixedHeight(3);
mEditEndLine->setObjectName("endline"); mEditEndLine->setObjectName("endline");
contentLayout->addWidget(mEditEndLine); contentLayout->addWidget(mEditEndLine);
mPatientIDText->setVisible(false); mPatientIDText->setVisible(false);

View File

@@ -23,46 +23,35 @@ PatientInformationForm::~PatientInformationForm()
delete mJsonStr; delete mJsonStr;
} }
void PatientInformationForm::setPatientInformation(PatientInformation* information) { void PatientInformationForm::setPatientInformation(PatientInformationPointer information) {
if(information){ if(information)
mUI->lbl_ID->setText(information->ID); {
mUI->lbl_Date->setText(information->BirthDate); mUI->mPatientID->setText(information->ID);
mUI->lbl_Name->setText(information->Name); mUI->mPatientBirthday->setText(information->BirthDate);
mUI->lbl_Sex->setText(information->Sex); mUI->mPatientName->setText(information->Name);
mUI->lbl_Acc->setText(information->AccessionNumber); mUI->mPatientGender->setText(information->Sex);
mUI->mPaitenAccessionNumber->setText(information->AccessionNumber);
} }
else{ else
mUI->lbl_ID->clear(); {
mUI->lbl_Date->clear(); mUI->mPatientID->clear();
mUI->lbl_Name->clear(); mUI->mPatientBirthday->clear();
mUI->lbl_Sex->clear(); mUI->mPatientName->clear();
mUI->lbl_Acc->clear(); mUI->mPatientGender->clear();
mUI->mPaitenAccessionNumber->clear();
} }
if (mInfo){ if (mInfo)
{
mInfo->deleteLater(); mInfo->deleteLater();
} }
mInfo = information; mInfo = information;
} }
PatientInformation* PatientInformationForm::getPatientInformation() PatientInformationPointer PatientInformationForm::getPatientInformation()
{ {
return mInfo->Copy(); return mInfo->Copy();
} }
void PatientInformationForm::setProtocol(int type) {
mCurrentProtocol = type;
switch (type)
{
case 0:
mUI->lbl_Protocol->setText(tr("LEFT ONLY"));
break;
case 1:
default:
mUI->lbl_Protocol->setText(tr("RIGHT ONLY"));
break;
}
}
int PatientInformationForm::getProtocol() int PatientInformationForm::getProtocol()
{ {
return mCurrentProtocol; return mCurrentProtocol;
@@ -70,7 +59,7 @@ int PatientInformationForm::getProtocol()
QString PatientInformationForm::getPatientID() QString PatientInformationForm::getPatientID()
{ {
return mUI->lbl_ID->text(); return mUI->mPatientID->text();
} }
const char* PatientInformationForm::getCurrentPatientJsonString(bool empty) const char* PatientInformationForm::getCurrentPatientJsonString(bool empty)

View File

@@ -14,9 +14,8 @@ class PatientInformationForm : public QWidget
public: public:
explicit PatientInformationForm(QWidget *parent = nullptr); explicit PatientInformationForm(QWidget *parent = nullptr);
~PatientInformationForm() override; ~PatientInformationForm() override;
void setPatientInformation(PatientInformation* information); void setPatientInformation(PatientInformationPointer information);
PatientInformation* getPatientInformation(); PatientInformationPointer getPatientInformation();
void setProtocol(int type);
int getProtocol(); int getProtocol();
const char * getCurrentPatientJsonString(bool emptyScan); const char * getCurrentPatientJsonString(bool emptyScan);
@@ -24,7 +23,7 @@ public:
private: private:
Ui::PatientInformationForm *mUI; Ui::PatientInformationForm *mUI;
PatientInformation* mInfo = nullptr; PatientInformationPointer mInfo;
int mCurrentProtocol = 0; int mCurrentProtocol = 0;
char * mJsonStr = nullptr; char * mJsonStr = nullptr;
}; };

View File

@@ -46,44 +46,108 @@
</property> </property>
<item> <item>
<widget class="QLabel" name="patientTitle"> <widget class="QLabel" name="patientTitle">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">background:#0078d8</string>
</property>
<property name="text"> <property name="text">
<string>Patient Information</string> <string>Current Patient</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="lbl_ID"> <widget class="QWidget" name="mPatientInfomation" native="true">
<property name="text"> <layout class="QGridLayout" name="gridLayout">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;PatientID:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> <item row="1" column="0">
</property> <widget class="QLabel" name="mPatientNameLabel">
</widget> <property name="text">
</item> <string>Patient Name:</string>
<item> </property>
<widget class="QLabel" name="lbl_Name"> </widget>
<property name="text"> </item>
<string>Someone Somebody</string> <item row="0" column="1">
</property> <widget class="QLabel" name="mPatientID">
</widget> <property name="text">
</item> <string/>
<item> </property>
<widget class="QLabel" name="lbl_Date"> </widget>
<property name="text"> </item>
<string>2021/11/11</string> <item row="2" column="1">
</property> <widget class="QLabel" name="mPatientGender">
</widget> <property name="text">
</item> <string/>
<item> </property>
<widget class="QLabel" name="lbl_Sex"> </widget>
<property name="text"> </item>
<string>Female</string> <item row="0" column="0">
</property> <widget class="QLabel" name="mPatientIDLabel">
</widget> <property name="text">
</item> <string>Patient ID:</string>
<item> </property>
<widget class="QLabel" name="lbl_Acc"> </widget>
<property name="text"> </item>
<string>Acc# 27812398</string> <item row="3" column="0">
</property> <widget class="QLabel" name="mPatientBirthdayLabel">
<property name="text">
<string>Patient Birthday:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="mPatientBirthday">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="mPatientGenderLabel">
<property name="text">
<string>Patient Gender:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="mPaitenAccessionNumber">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="mPatientAccessionNumberLabel">
<property name="text">
<string>Patient AccessionNum:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="mPatientName">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="mScanProtocolLabel">
<property name="text">
<string>Scan Protocol:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="mScanProtocol">
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item> <item>
@@ -100,20 +164,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QLabel" name="protocolTitle">
<property name="text">
<string>Current Protocol</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_Protocol">
<property name="text">
<string>LEFT ONLY</string>
</property>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">

View File

@@ -32,196 +32,75 @@ namespace{
} }
ScanFormWidget::ScanFormWidget(QWidget* parent) ScanFormWidget::ScanFormWidget(QWidget* parent)
: TabFormWidget(parent) : TabFormWidget(parent)
, mPatInf(new PatientInformationForm(this)) , mPatInf(new PatientInformationForm(this))
, mLblProtocol(new QLabel(this)) , mAccountButton(new QToolButton(this))
, mBtnLeft(new QToolButton(this)) , mShutdownButton(new QToolButton(this))
, mBtnRight(new QToolButton(this)) , mWorklistButton(new QToolButton(this))
, mBtnEScan(new QToolButton(this)) , mStartScanButton(new QToolButton(this))
, mBtnPreview(new QToolButton(this)) , mDrainageButton(new QToolButton(this))
, mBtnStop(new QToolButton(this)) , mXYLabel(new QLabel(this))
, mBtnScan(new QToolButton(this)) , mZLabel(new QLabel(this))
, mBtnDrainage(new QToolButton(this)) , mScanProcessLabel(new QLabel(this))
, mViewer(new QLabel(this)) , mDrainageTimer(new QTimer(this))
, mLblPreview(new QLabel(this))
, mLblE(new QLabel(this))
, mLblParams(new QLabel(this))
, mLblE2(new QLabel(this))
, mDrainageTimer(new QTimer(this))
{ {
auto layout = new QHBoxLayout(ui->commandWidget); auto commandlayout = new QHBoxLayout(ui->commandWidget);
initProtocolUI(layout); initCommandWidget(commandlayout);
layout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
addVerticalLine(layout);
initScanControlBar(layout); //initScanControlBar(commandlayout);
initScanContent(); initScanContent();
initEvents(); initEvents();
mDrainageTimer->setSingleShot(true); mDrainageTimer->setSingleShot(true);
connect(mDrainageTimer, &QTimer::timeout, this, [this]() connect(mDrainageTimer, &QTimer::timeout, this, [this]()
{ {
mBtnDrainage->click(); mDrainageButton->click();
}); });
} }
void ScanFormWidget::initProtocolUI(QHBoxLayout *layout) { void ScanFormWidget::initCommandWidget(QHBoxLayout *layout)
mLblProtocol->setText(tr("Protocol")); {
mLblProtocol->setAlignment(Qt::AlignTop); bool anonymousMode = JsonObject::Instance()->getAnonymousMode();
mLblProtocol->setObjectName("protocolPanelTitle"); mAccountButton->setObjectName("btnAccount");
layout->addWidget(mLblProtocol); mAccountButton->setText(tr("Account"));
layout->addWidget(mAccountButton);
mShutdownButton->setObjectName("btnShutDown");
mShutdownButton->setText(tr("ShutDown"));
layout->addWidget(mShutdownButton);
mWorklistButton->setObjectName("btnWorklist");
mWorklistButton->setText(tr("Worklist"));
mWorklistButton->setEnabled(!anonymousMode);
layout->addWidget(mWorklistButton);
mStartScanButton->setObjectName("btnScan");
mStartScanButton->setText(tr("Start Scan"));
layout->addWidget(mStartScanButton);
layout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Expanding));
addVerticalLine(layout); addVerticalLine(layout);
mBtnLeft->setObjectName("btnLeft");
mBtnRight->setObjectName("btnRight");
mBtnLeft->setText(tr("LEFT"));
mBtnRight->setText(tr("RIGHT"));
layout->addWidget(mBtnLeft);
layout->addWidget(mBtnRight);
auto group = new QButtonGroup(ui->commandWidget); mDrainageButton->setObjectName("btnDrainage");
mBtnLeft->setCheckable(true); mDrainageButton->setCheckable(true);
mBtnLeft->setChecked(true); mDrainageButton->setText(tr("Drainage"));
mBtnRight->setCheckable(true); layout->addWidget(mDrainageButton);
group->addButton(mBtnRight, 1);
group->addButton(mBtnLeft, 0);
connect(group, SIGNAL(buttonClicked(int)), this, SLOT(protocolChanged(int)));
}
void ScanFormWidget::initScanContent() { connect(mDrainageButton, &QToolButton::clicked, [=](bool aSatus)
auto contentLayout = new QHBoxLayout();
ui->contentWidget->setLayout(contentLayout);
contentLayout->addWidget(mPatInf);
auto paramWidget = new QWidget(this);
auto broadcastWidget = new QWidget(this);
broadcastWidget->setObjectName("broadcastWidget");
mViewer->setObjectName("viewer");
mViewer->setFixedSize(800, 800);
mViewer->setText("");
auto viewerLayout = new QHBoxLayout(mViewer);
broadcastWidget->setLayout(viewerLayout);
viewerLayout->addWidget(mViewer);
contentLayout->addWidget(broadcastWidget);
paramWidget->setObjectName("paramWidget");
auto paramLayout = new QVBoxLayout(paramWidget);
mLblPreview->setText(tr("Preview Parameters"));
mLblPreview->setObjectName("parameterTitle");
paramLayout->addWidget(mLblPreview);
mLblE->setWordWrap(true);
mLblE->setObjectName("placeholder");
mLblE->setText(tr("some settings\n\nparameters\n"));
paramLayout->addWidget(mLblE);
auto lbl_end = new QLabel(this);
lbl_end->setObjectName("endSpaceLine");
paramLayout->addWidget(lbl_end);
mLblParams->setText(tr("Scan Parameters"));
mLblParams->setObjectName("parameterTitle");
paramLayout->addWidget(mLblParams);
mLblE2->setWordWrap(true);
mLblE2->setObjectName("placeholder");
mLblE2->setText(tr("some settings\n\nparameters\n"));
paramLayout->addWidget(mLblE2);
auto lbl_end2 = new QLabel(this);
lbl_end2->setObjectName("endSpaceLine");
paramLayout->addWidget(lbl_end2);
paramLayout->addSpacerItem(new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
contentLayout->addWidget(paramWidget);
}
void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
mBtnEScan->setObjectName("btnRefresh");
mBtnPreview->setObjectName("btnPreview");
mBtnStop->setObjectName("btnStop");
mBtnScan->setObjectName("btnScan");
mBtnDrainage->setObjectName("btnDrainage");
mBtnDrainage->setCheckable(true);
mBtnEScan->setText(tr("Empty Scan"));
mBtnPreview->setText(tr("Preview"));
mBtnStop->setText(tr("Stop"));
mBtnScan->setText(tr("Scan"));
mBtnDrainage->setText(tr("Drainage"));
mBtnScan->setEnabled(false);
mBtnEScan->setEnabled(false);
mBtnPreview->setEnabled(false);
mBtnStop->setEnabled(false);
layout->addWidget(mBtnEScan);
layout->addWidget(mBtnPreview);
layout->addWidget(mBtnStop);
layout->addWidget(mBtnScan);
layout->addWidget(mBtnDrainage);
connect(mBtnEScan, &QToolButton::clicked, [=]() {
int result = DialogManager::Default()->requestAlertMessage(tr("Please make sure the holder is only contain water!"),DialogButtonMode::OkAndCancel,tr("Confirm Scan"));
if (result != QDialog::Accepted)return;
QString patientInf(mPatInf->getCurrentPatientJsonString(true));
LOG_USER_OPERATION("Start Empty Scan")
EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf));
});
connect(mBtnPreview, &QToolButton::clicked, [=]() {
LOG_USER_OPERATION(QString("Start Preview, ID: %1").arg(mPatInf->getPatientID()))
EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr);
});
connect(DeviceManager::Default(), &DeviceManager::startPreviewScanResult, [this](bool aIsSucessful)
{ {
if(!aIsSucessful)
{
setPreviewing(false);
}
});
connect(DeviceManager::Default(), &DeviceManager::startPumpControlResult, [this](bool aIsSucessful)
{
mBtnDrainage->setEnabled(true);
if(!aIsSucessful)
{
mDrainageTimer->stop();
bool isChecked = mBtnDrainage->isChecked();
mBtnDrainage->setChecked(!isChecked);
if(isChecked)
{
mBtnDrainage->setText(tr("Drainage"));
}
else
{
mBtnDrainage->setText(tr("Drainaging"));
}
}
});
connect(mBtnScan, &QToolButton::clicked, [=]() {
if(JsonObject::Instance()->getScanConfirm())
{
int ret = DialogManager::Default()->requestPatientConfirm(mPatInf->getPatientInformation(),mPatInf->getProtocol());
if (ret != QDialog::Accepted) return;
}
QString patientInf(mPatInf->getCurrentPatientJsonString(false));
LOG_USER_OPERATION(QString("Start Scan, ID: %1").arg(mPatInf->getPatientID()))
if (!DeviceManager::Default()->hasValidEmptyScan()){
QString msg(tr("No refresh data exists, please do Refresh operation first."));
EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg));
return;
}
EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf));
});
connect(mBtnStop, &QToolButton::clicked, [=]() {
LOG_USER_OPERATION("Stop Preview")
EventCenter::Default()->triggerEvent(RequestPreviewStop, nullptr, nullptr);
});
connect(mBtnDrainage, &QToolButton::clicked, [=](bool aSatus) {
//Drainage //Drainage
if(aSatus && DialogManager::Default()->requestAlertMessage(tr("Make sure to open the drain valve ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected) if(aSatus && DialogManager::Default()->requestAlertMessage(tr("Make sure to open the drain valve ?"), DialogButtonMode::OkAndCancel, tr("Confirm Drainage")) == QDialog::Rejected)
{ {
mBtnDrainage->setChecked(!aSatus); mDrainageButton->setChecked(!aSatus);
return; return;
} }
mBtnDrainage->setEnabled(false); mDrainageButton->setEnabled(false);
if(aSatus == true) if(aSatus == true)
{ {
mDrainageTimer->start(DRAINAGE_TIME); mDrainageTimer->start(DRAINAGE_TIME);
QString code = "1"; QString code = "1";
mBtnDrainage->setText(tr("Drainaging")); mDrainageButton->setText(tr("Drainaging"));
EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code)); EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code));
LOG_USER_OPERATION("Perform Drainage"); LOG_USER_OPERATION("Perform Drainage");
} }
@@ -229,30 +108,159 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){
{ {
mDrainageTimer->stop(); mDrainageTimer->stop();
QString code = "0"; QString code = "0";
mBtnDrainage->setText(tr("Drainage")); mDrainageButton->setText(tr("Drainage"));
EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code)); EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code));
LOG_USER_OPERATION("Stop Drainage"); LOG_USER_OPERATION("Stop Drainage");
} }
}); });
connect(DeviceManager::Default(), &DeviceManager::startPumpControlResult, [this](bool aIsSucessful)
{
mDrainageButton->setEnabled(true);
if(!aIsSucessful)
{
mDrainageTimer->stop();
bool isChecked = mDrainageButton->isChecked();
mDrainageButton->setChecked(!isChecked);
if(isChecked)
{
mDrainageButton->setText(tr("Drainage"));
}
else
{
mDrainageButton->setText(tr("Drainaging"));
}
}
});
connect(mAccountButton, &QToolButton::clicked, DialogManager::Default(),&DialogManager::requestEditSelfAccount);
connect(mShutdownButton, &QToolButton::clicked, []()
{
if(DialogManager::Default()->requestAlertMessage(QString(tr("Shut down now ?")), DialogButtonMode::OkAndCancel,tr("Shut Down")) == QDialog::Accepted)
{
LOG_USER_OPERATION("Shut Down")
EventCenter::Default()->triggerEvent(GUIEvents::RequestShutdown, nullptr, nullptr);
}
});
connect(mWorklistButton, &QToolButton::clicked, [&]()
{
DialogManager::Default()->requestGetWorkList();
});
connect(EventCenter::Default(), &EventCenter::AnonymousModeChanged, this, &ScanFormWidget::updateDataByAnonymousMode);
// auto group = new QButtonGroup(ui->commandWidget);
// mBtnLeft->setCheckable(true);
// mBtnLeft->setChecked(true);
// mBtnRight->setCheckable(true);
// group->addButton(mBtnRight, 1);
// group->addButton(mBtnLeft, 0);
// connect(group, SIGNAL(buttonClicked(int)), this, SLOT(protocolChanged(int)));
} }
void ScanFormWidget::protocolChanged(int type) { void ScanFormWidget::initScanContent()
mPatInf->setProtocol(type); {
QHBoxLayout* contentLayout = new QHBoxLayout(ui->contentWidget);
contentLayout->addWidget(mPatInf);
QWidget* scanProcessWidget = new QWidget(this);
scanProcessWidget->setObjectName("ScanProcessWidget");
contentLayout->addWidget(scanProcessWidget);
QVBoxLayout* scanProcessLayout = new QVBoxLayout(scanProcessWidget);
mScanProcessLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
mScanProcessLabel->setAlignment(Qt::AlignCenter);
mScanProcessLabel->setObjectName("ScanProcessInformation");
mScanProcessLabel->setText(tr("Please confirm checking patient information to start the process"));
scanProcessLayout->addWidget(mScanProcessLabel);
QWidget* displayWidget = new QWidget(this);
scanProcessLayout->addWidget(displayWidget);
QHBoxLayout* displayLayout = new QHBoxLayout(displayWidget);
QWidget* xyWidget = new QWidget(this);
xyWidget->setObjectName("broadcastWidget");
QHBoxLayout* xyLayout = new QHBoxLayout(xyWidget);
xyLayout->addWidget(mXYLabel);
displayLayout->addWidget(xyWidget);
QWidget* zWidget = new QWidget(this);
zWidget->setObjectName("broadcastWidget");
QHBoxLayout* zLayout = new QHBoxLayout(zWidget);
zLayout->addWidget(mZLabel);
displayLayout->addWidget(zWidget);
}
void ScanFormWidget::initScanControlBar(QHBoxLayout *layout)
{
// connect(mBtnEScan, &QToolButton::clicked, [=]() {
// int result = DialogManager::Default()->requestAlertMessage(tr("Please make sure the holder is only contain water!"),DialogButtonMode::OkAndCancel,tr("Confirm Scan"));
// if (result != QDialog::Accepted)return;
// QString patientInf(mPatInf->getCurrentPatientJsonString(true));
// LOG_USER_OPERATION("Start Empty Scan")
// EventCenter::Default()->triggerEvent(RequestEmptyScan, nullptr, (QObject*)(&patientInf));
// });
// connect(mBtnPreview, &QToolButton::clicked, [=]() {
// LOG_USER_OPERATION(QString("Start Preview, ID: %1").arg(mPatInf->getPatientID()))
// EventCenter::Default()->triggerEvent(RequestPreviewScan, nullptr, nullptr);
// });
connect(DeviceManager::Default(), &DeviceManager::startPreviewScanResult, [this](bool aIsSucessful)
{
if(!aIsSucessful)
{
setPreviewing(false);
}
});
// connect(mBtnScan, &QToolButton::clicked, [=]() {
// if(JsonObject::Instance()->getScanConfirm())
// {
// int ret = DialogManager::Default()->requestPatientConfirm(mPatInf->getPatientInformation(),mPatInf->getProtocol());
// if (ret != QDialog::Accepted) return;
// }
// QString patientInf(mPatInf->getCurrentPatientJsonString(false));
// LOG_USER_OPERATION(QString("Start Scan, ID: %1").arg(mPatInf->getPatientID()))
// if (!DeviceManager::Default()->hasValidEmptyScan()){
// QString msg(tr("No refresh data exists, please do Refresh operation first."));
// EventCenter::Default()->triggerEvent(DeviceErrorRaise, nullptr, (QObject*)(&msg));
// return;
// }
// EventCenter::Default()->triggerEvent(RequestPatientScan, nullptr, (QObject*)(&patientInf));
// });
// connect(mBtnStop, &QToolButton::clicked, [=]() {
// LOG_USER_OPERATION("Stop Preview")
// EventCenter::Default()->triggerEvent(RequestPreviewStop, nullptr, nullptr);
// });
}
void ScanFormWidget::protocolChanged(int type)
{
LOG_USER_OPERATION(QString("Select Laterality %1").arg(type == 0 ? "Left" : "Right")); LOG_USER_OPERATION(QString("Select Laterality %1").arg(type == 0 ? "Left" : "Right"));
} }
void ScanFormWidget::setPreviewing(bool val) { void ScanFormWidget::setPreviewing(bool val)
mViewer->setVisible(val); {
mBtnPreview->setCheckable(val); // mBtnPreview->setCheckable(val);
mBtnPreview->setChecked(val); // mBtnPreview->setChecked(val);
mBtnPreview->setEnabled(!val); // mBtnPreview->setEnabled(!val);
mBtnEScan->setEnabled(!val); // mBtnEScan->setEnabled(!val);
mBtnScan->setEnabled(!val); // mBtnScan->setEnabled(!val);
mBtnDrainage->setEnabled(!val); mDrainageButton->setEnabled(!val);
} }
void ScanFormWidget::renderLoading() { void ScanFormWidget::renderLoading()
{
setPreviewing(true); setPreviewing(true);
uchar c_data[PREVIEW_ROW][PREVIEW_COL]; uchar c_data[PREVIEW_ROW][PREVIEW_COL];
@@ -260,7 +268,6 @@ void ScanFormWidget::renderLoading() {
memset(data_ptr, 0, PREVIEW_COL); memset(data_ptr, 0, PREVIEW_COL);
} }
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8); QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
mViewer->setFixedSize(800, 800);
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation); QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation);
QPainter painter(&pic); QPainter painter(&pic);
QPen pen; QPen pen;
@@ -273,10 +280,10 @@ void ScanFormWidget::renderLoading() {
pen.setColor(QColor(255, 255, 0)); pen.setColor(QColor(255, 255, 0));
painter.setPen(pen); painter.setPen(pen);
painter.drawText(400 - 13 * 5, 400 + 13, "Loading..."); painter.drawText(400 - 13 * 5, 400 + 13, "Loading...");
mViewer->setPixmap(pic);
} }
void ScanFormWidget::renderPreviewData(const QObject* /*sender*/,const QObject *data) { void ScanFormWidget::renderPreviewData(const QObject* /*sender*/,const QObject *data)
{
if (!data)return; if (!data)return;
auto array = (QByteArray*)data; auto array = (QByteArray*)data;
auto raw_dataptr = (uchar*)array->data(); auto raw_dataptr = (uchar*)array->data();
@@ -286,7 +293,6 @@ void ScanFormWidget::renderPreviewData(const QObject* /*sender*/,const QObject *
raw_dataptr += PREVIEW_COL; raw_dataptr += PREVIEW_COL;
} }
QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8); QImage img(c_data[0], PREVIEW_COL, PREVIEW_ROW, QImage::Format_Grayscale8);
mViewer->setFixedSize(800, 800);
QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation); QPixmap pic = QPixmap::fromImage(img).scaledToHeight(800, Qt::SmoothTransformation);
QPainter painter(&pic); QPainter painter(&pic);
QPen pen; QPen pen;
@@ -311,25 +317,33 @@ void ScanFormWidget::renderPreviewData(const QObject* /*sender*/,const QObject *
painter.drawText(400 - 13, borderSpacing + 30, "H"); painter.drawText(400 - 13, borderSpacing + 30, "H");
painter.drawText(400 - 13, 800 - borderSpacing - 13, "F"); painter.drawText(400 - 13, 800 - borderSpacing - 13, "F");
painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI"); painter.drawText(borderSpacing + 6, borderSpacing + 30, "ROI");
mViewer->setPixmap(pic);
} }
void ScanFormWidget::initEvents() {//Events--------------------------------------------------------------- void ScanFormWidget::initEvents()
{
//Events---------------------------------------------------------------
connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) { connect(EventCenter::Default(), &EventCenter::PatientSelected, [=](QObject* sender, QObject* data) {
if (data) if (data)
{ {
mBtnScan->setEnabled(true); PatientInformation* patientInfo = (PatientInformation*)data;
mBtnEScan->setEnabled(true); DialogResult result = DialogManager::Default()->reuqestConfirmStartScan(patientInfo);
mBtnPreview->setEnabled(true); if(result.ResultCode == QDialog::Accepted)
mBtnStop->setEnabled(true); {
mPatInf->setPatientInformation(patientInfo->Copy());
}
// mBtnScan->setEnabled(true);
// mBtnEScan->setEnabled(true);
// mBtnPreview->setEnabled(true);
// mBtnStop->setEnabled(true);
} }
else{ else{
mBtnScan->setEnabled(false); // mBtnScan->setEnabled(false);
mBtnEScan->setEnabled(false); // mBtnEScan->setEnabled(false);
mBtnPreview->setEnabled(false); // mBtnPreview->setEnabled(false);
mBtnStop->setEnabled(false); // mBtnStop->setEnabled(false);
} }
mPatInf->setPatientInformation((PatientInformation*)data);
}); });
connect(EventCenter::Default(), &EventCenter::ResponseStopPreview, [=](QObject* sender, QObject* data) { connect(EventCenter::Default(), &EventCenter::ResponseStopPreview, [=](QObject* sender, QObject* data) {
setPreviewing(false); setPreviewing(false);
@@ -342,19 +356,19 @@ void ScanFormWidget::initEvents() {//Events-------------------------------------
}); });
} }
void ScanFormWidget::reloadLanguage(){ void ScanFormWidget::reloadLanguage()
mBtnLeft->setText(tr("LEFT")); {
mBtnRight->setText(tr("RIGHT")); mAccountButton->setText(tr("Account"));
mBtnEScan->setText(tr("Empty Scan")); mShutdownButton->setText(tr("ShutDown"));
mBtnPreview->setText(tr("Preview")); mWorklistButton->setText(tr("Worklist"));
mBtnStop->setText(tr("Stop")); mStartScanButton->setText(tr("Start Scan"));
mBtnScan->setText(tr("Scan")); mDrainageButton->isChecked() ? mDrainageButton->setText(tr("Drainaging")) : mDrainageButton->setText(tr("Drainage"));
mLblProtocol->setText(tr("Protocol")); }
mLblPreview->setText(tr("Preview Parameters"));
mLblPreview->setText(tr("Scan Parameters")); void ScanFormWidget::updateDataByAnonymousMode()
mLblE->setText(tr("some settings\n\nparameters\n")); {
mLblE2->setText(tr("some settings\n\nparameters\n")); bool anonymousMode = JsonObject::Instance()->getAnonymousMode();
mBtnDrainage->isChecked() ? mBtnDrainage->setText(tr("Drainaging")) : mBtnDrainage->setText(tr("Drainage")); mWorklistButton->setEnabled(!anonymousMode);
} }
void ScanFormWidget::keyPressEvent(QKeyEvent* aEvent) void ScanFormWidget::keyPressEvent(QKeyEvent* aEvent)

View File

@@ -21,21 +21,16 @@ private:
PatientInformationForm* mPatInf= nullptr; PatientInformationForm* mPatInf= nullptr;
bool mUnInited = true; bool mUnInited = true;
int mCurrentFrame = 0; int mCurrentFrame = 0;
QLabel* mLblProtocol; QToolButton* mAccountButton;
QToolButton* mBtnLeft; QToolButton* mShutdownButton;
QToolButton* mBtnRight; QToolButton* mWorklistButton;
QToolButton* mBtnEScan; QToolButton* mStartScanButton;
QToolButton* mBtnPreview; QToolButton* mDrainageButton;
QToolButton* mBtnStop; QLabel* mXYLabel;
QToolButton* mBtnScan; QLabel* mZLabel;
QToolButton* mBtnDrainage; QLabel* mScanProcessLabel;
QLabel* mViewer;
QLabel* mLblPreview;
QLabel* mLblE;
QLabel* mLblParams;
QLabel* mLblE2;
QTimer* mDrainageTimer; QTimer* mDrainageTimer;
void initProtocolUI(QHBoxLayout *layout); void initCommandWidget(QHBoxLayout *layout);
void initScanControlBar(QHBoxLayout *layout); void initScanControlBar(QHBoxLayout *layout);
void initScanContent(); void initScanContent();
void renderLoading(); void renderLoading();
@@ -43,6 +38,7 @@ private:
void reloadLanguage(); void reloadLanguage();
private slots: private slots:
void protocolChanged(int type); void protocolChanged(int type);
void updateDataByAnonymousMode();
void initEvents(); void initEvents();
}; };

View File

@@ -26,6 +26,7 @@ enum PatientInformationEnum{
* @brief this class was designed to be a edit form, * @brief this class was designed to be a edit form,
* but now has been change to a detail display class. * but now has been change to a detail display class.
*/ */
class PatientInformation:public QObject{ class PatientInformation:public QObject{
Q_OBJECT Q_OBJECT
public: public:
@@ -47,9 +48,9 @@ public:
this->AddDate = other.AddDate; this->AddDate = other.AddDate;
} }
QString ScheduledStartDate; QString ScheduledStartDate;
PatientInformation* Copy() QSharedPointer<PatientInformation> Copy()
{ {
PatientInformation* n=new PatientInformation; QSharedPointer<PatientInformation> n= QSharedPointer<PatientInformation>(new PatientInformation);
n->PatientUID = this->PatientUID; n->PatientUID = this->PatientUID;
n->ID = this->ID; n->ID = this->ID;
n->Name = this->Name; n->Name = this->Name;
@@ -61,5 +62,7 @@ public:
return n; return n;
} }
}; };
typedef QSharedPointer<PatientInformation> PatientInformationPointer; typedef QSharedPointer<PatientInformation> PatientInformationPointer;
#endif //GUI_PATIENTINFORMATION_H #endif //GUI_PATIENTINFORMATION_H

View File

@@ -175,7 +175,7 @@ void SelectFormWidget::delPatient() {
} }
void SelectFormWidget::selectPatient() { void SelectFormWidget::selectPatient() {
EventCenter::Default()->triggerEvent(PatientSelected, nullptr, patientDetailForm->getPatientInformation()->Copy()); EventCenter::Default()->triggerEvent(PatientSelected, nullptr, (QObject*)patientDetailForm->getPatientInformation());
selectedPatientUID = patientDetailForm->getPatientInformation()->PatientUID; selectedPatientUID = patientDetailForm->getPatientInformation()->PatientUID;
LOG_USER_OPERATION(QString("Select Patient, ID: %1").arg(patientDetailForm->getPatientInformation()->ID)) LOG_USER_OPERATION(QString("Select Patient, ID: %1").arg(patientDetailForm->getPatientInformation()->ID))
} }
@@ -255,7 +255,7 @@ void SelectFormWidget::initDataModel() {
mModel->setData(mModel->index(0,7),""); mModel->setData(mModel->index(0,7),"");
} }
mModel->setHeaderData(1, Qt::Horizontal, "ID"); mModel->setHeaderData(1, Qt::Horizontal, tr("ID"));
mModel->setHeaderData(2, Qt::Horizontal, tr("AccessionNumber")); mModel->setHeaderData(2, Qt::Horizontal, tr("AccessionNumber"));
mModel->setHeaderData(3, Qt::Horizontal, tr("Name")); mModel->setHeaderData(3, Qt::Horizontal, tr("Name"));
mModel->setHeaderData(4, Qt::Horizontal, tr("Birth Date")); mModel->setHeaderData(4, Qt::Horizontal, tr("Birth Date"));

View File

@@ -718,7 +718,6 @@ QLabel#parameterTitle{
QLabel#protocolTitle,#patientTitle{ QLabel#protocolTitle,#patientTitle{
font-size: 26px; font-size: 26px;
margin: 0; margin: 0;
border-bottom: 1px solid silver
} }
QLabel#endSpaceLine { QLabel#endSpaceLine {
@@ -1210,3 +1209,12 @@ QWidget#SystemCorrectionForm QLabel#SystemCorrectionTitle {
font-size: 30px; font-size: 30px;
} }
QWidget#ScanProcessWidget QLabel#ScanProcessInformation{
height: 100px;
font-weight: bold;
font-size: 50px;
}

Binary file not shown.

View File

@@ -429,12 +429,12 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Cancle</source> <source>Confirm stop the scan.
</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Confirm stop the scan. <source>Cancel</source>
</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
@@ -1018,18 +1018,10 @@
</context> </context>
<context> <context>
<name>PatientDetailForm</name> <name>PatientDetailForm</name>
<message>
<source>Form</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Name</source> <source>Name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Date Of Birth</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Gender</source> <source>Gender</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1046,46 +1038,10 @@
<source>Other</source> <source>Other</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Patient Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>111</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientID: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add Date: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AccNo: </source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Scan with this Patient?</source> <source>Scan with this Patient?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Protocol: </source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Left</source> <source>Left</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1094,6 +1050,30 @@
<source>Right</source> <source>Right</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Patient Detail</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Birth Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AccNo</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Add Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Protocol</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>PatientInformationForm</name> <name>PatientInformationForm</name>
@@ -1102,40 +1082,32 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>Patient Information</source> <source>Current Patient</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;PatientID:&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>Patient Name:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Name:</translation>
</message> </message>
<message> <message>
<source>Someone Somebody</source> <source>Patient Birthday:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Brith Date:</translation>
</message> </message>
<message> <message>
<source>2021/11/11</source> <source>Patient Gender:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Gender:</translation>
</message> </message>
<message> <message>
<source>Female</source> <source>Patient AccessionNum:</source>
<translation type="unfinished"></translation> <translation type="unfinished">AccNo:</translation>
</message> </message>
<message> <message>
<source>Acc# 27812398</source> <source>Scan Protocol:</source>
<translation type="unfinished"></translation> <translation type="unfinished">Protocol:</translation>
</message> </message>
<message> <message>
<source>Current Protocol</source> <source>Patient ID:</source>
<translation type="unfinished"></translation> <translation type="unfinished">ID:</translation>
</message>
<message>
<source>LEFT ONLY</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RIGHT ONLY</source>
<translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context> <context>
@@ -1155,18 +1127,6 @@
</context> </context>
<context> <context>
<name>ReconFormWidget</name> <name>ReconFormWidget</name>
<message>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Refresh</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Scan Time</source> <source>Scan Time</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1195,30 +1155,6 @@
<source>Operator Name</source> <source>Operator Name</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>No data selected.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alert</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can not delete this record before pacs succeed.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete recon record with patient &quot;%1&quot; ?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Can&apos;t delete selected record , db error!</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ReconSettingsDialog</name> <name>ReconSettingsDialog</name>
@@ -1308,69 +1244,14 @@
</context> </context>
<context> <context>
<name>ScanFormWidget</name> <name>ScanFormWidget</name>
<message>
<source>Protocol</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Stop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Scan</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Preview Parameters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>some settings
parameters
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Scan Parameters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LEFT</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>RIGHT</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Empty Scan</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Drainage</source> <source>Drainage</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>No refresh data exists, please do Refresh operation first.</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Drainaging</source> <source>Drainaging</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Please make sure the holder is only contain water!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm Scan</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Confirm Drainage</source> <source>Confirm Drainage</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1379,6 +1260,34 @@ parameters
<source>Make sure to open the drain valve ?</source> <source>Make sure to open the drain valve ?</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ShutDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Worklist</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Start Scan</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Please confirm checking patient information to start the process</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut down now ?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>ScanSearchCriteriaForm</name> <name>ScanSearchCriteriaForm</name>
@@ -1446,17 +1355,17 @@ parameters
<source>Retrieve</source> <source>Retrieve</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Manual Refresh</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Refresh</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SelectFormWidget</name> <name>SelectFormWidget</name>
<message>
<source>Account</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Worklist</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Add</source> <source>Add</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -1505,22 +1414,26 @@ parameters
<source>Can&apos;t delete selected Patient , db submit error!</source> <source>Can&apos;t delete selected Patient , db submit error!</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>ShutDown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut down now ?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shut Down</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>AccessionNumber</source> <source>AccessionNumber</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Patient Information Manage</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ID</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SettingFormWidget</name> <name>SettingFormWidget</name>
@@ -1560,6 +1473,69 @@ parameters
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>StartScanProcessDialog</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Patien Information</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientBirth:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientGender:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientName:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PatientID:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Protocol Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>left-&gt;right</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>right-&gt;left</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>only left</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>only right</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>start Scan</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AccessionNumber:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>SystemCorrectionForm</name> <name>SystemCorrectionForm</name>
<message> <message>
@@ -1590,6 +1566,14 @@ parameters
<source>Excute empty scan</source> <source>Excute empty scan</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Please make sure the holder is only contain water!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm Scan</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>SystemSettingForm</name> <name>SystemSettingForm</name>
@@ -1646,10 +1630,6 @@ parameters
<source></source> <source></source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>°C</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>UserOperationLogForm</name> <name>UserOperationLogForm</name>
@@ -1658,6 +1638,29 @@ parameters
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context> </context>
<context>
<name>WarningMessageWidget</name>
<message>
<source>System is working properly.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No message.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>System Status</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>System Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Clear</source>
<translation type="unfinished"></translation>
</message>
</context>
<context> <context>
<name>WorklistSettingsDialog</name> <name>WorklistSettingsDialog</name>
<message> <message>

Binary file not shown.

File diff suppressed because it is too large Load Diff