Add accession number and fix a problem with create recon record automaticly.
This commit is contained in:
@@ -175,7 +175,12 @@ QList<QVariant> SQLHelper::queryValues(const QString& aSql)
|
|||||||
|
|
||||||
while(query.next())
|
while(query.next())
|
||||||
{
|
{
|
||||||
result.append(query.value(0));
|
QList<QVariant> record;
|
||||||
|
for(int i=0 ; i<query.record().count(); ++i)
|
||||||
|
{
|
||||||
|
record.append(query.value(i));
|
||||||
|
}
|
||||||
|
result.append(QVariant::fromValue(record));
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ void DeviceManager::startScan(const QString& json, bool empty)
|
|||||||
mIsEmptyScan = empty;
|
mIsEmptyScan = empty;
|
||||||
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
|
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
|
||||||
mCurrentPatientID = patientInfo["PatientID"].toString();
|
mCurrentPatientID = patientInfo["PatientID"].toString();
|
||||||
|
mCurrentAccessionNumber = patientInfo["AccessionNumber"].toString();
|
||||||
mCurrentPatientName = patientInfo["PatientName"].toString();
|
mCurrentPatientName = patientInfo["PatientName"].toString();
|
||||||
mCurrentLaterality = patientInfo["Laterality"].toString();
|
mCurrentLaterality = patientInfo["Laterality"].toString();
|
||||||
mCurrentOperatorName = patientInfo["OperatorName"].toString();
|
mCurrentOperatorName = patientInfo["OperatorName"].toString();
|
||||||
@@ -631,10 +632,11 @@ void DeviceManager::insertEmptyScanRecord()
|
|||||||
|
|
||||||
void DeviceManager::insertScanRecord()
|
void DeviceManager::insertScanRecord()
|
||||||
{
|
{
|
||||||
QString sql = QString("INSERT INTO Scan (ScanID, ReferenceID, PatientID, PatientName, ScanDateTime, Laterality, OperatorName, State) VALUES ('%1','%2','%3','%4','%5','%6','%7',%8)")
|
QString sql = QString("INSERT INTO Scan (ScanID, ReferenceID, PatientID, AccessionNumber, PatientName, ScanDateTime, Laterality, OperatorName, State) VALUES ('%1','%2','%3','%4','%5','%6','%7','%8', %9)")
|
||||||
.arg(mCurrentScanMeasurementID)
|
.arg(mCurrentScanMeasurementID)
|
||||||
.arg(mCurrentEmptyMeasurementID)
|
.arg(mCurrentEmptyMeasurementID)
|
||||||
.arg(mCurrentPatientID)
|
.arg(mCurrentPatientID)
|
||||||
|
.arg(mCurrentAccessionNumber)
|
||||||
.arg(mCurrentPatientName)
|
.arg(mCurrentPatientName)
|
||||||
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
|
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
|
||||||
.arg(mCurrentLaterality)
|
.arg(mCurrentLaterality)
|
||||||
@@ -725,7 +727,6 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
|
|||||||
QString sql = QString("UPDATE %1 set State = 200 where ScanID = '%2'")
|
QString sql = QString("UPDATE %1 set State = 200 where ScanID = '%2'")
|
||||||
.arg(mIsTransferEmptyScan ? "EScan" : "Scan")
|
.arg(mIsTransferEmptyScan ? "EScan" : "Scan")
|
||||||
.arg(mCurrentTransferMeasurementID);
|
.arg(mCurrentTransferMeasurementID);
|
||||||
createScanReconRecord(mCurrentTransferMeasurementID, mCurrentTransferPatientID, mCurrentEmptyMeasurementID);
|
|
||||||
mIsTransfering = false;
|
mIsTransfering = false;
|
||||||
mCurrentTransferMeasurementID.clear();
|
mCurrentTransferMeasurementID.clear();
|
||||||
if(!SQLHelper::exec(sql))
|
if(!SQLHelper::exec(sql))
|
||||||
@@ -735,6 +736,7 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
|
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
|
||||||
|
startCreateReconRecord();
|
||||||
startTransfer();
|
startTransfer();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -800,9 +802,16 @@ void DeviceManager::processReconCreateScan(bool aResult, const QString& aScanID,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::processReconQueryScanState(const QMap<QString, int> aResult)
|
void DeviceManager::processReconQueryScanState(bool aResult, const QVariant& aState)
|
||||||
{
|
{
|
||||||
for(auto itor= aResult.constBegin(); itor != aResult.constEnd(); ++itor)
|
if(!aResult)
|
||||||
|
{
|
||||||
|
emitInfoCallback(aState.toString(), MessageLevel::Error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMap<QString, int> states = aState.value<QMap<QString, int>>();
|
||||||
|
for(auto itor= states.constBegin(); itor != states.constEnd(); ++itor)
|
||||||
{
|
{
|
||||||
QString sql = QString("UPDATE Scan set State = %1 where ScanID = '%2'").arg(itor.value()).arg(itor.key());
|
QString sql = QString("UPDATE Scan set State = %1 where ScanID = '%2'").arg(itor.value()).arg(itor.key());
|
||||||
if(!SQLHelper::exec(sql))
|
if(!SQLHelper::exec(sql))
|
||||||
@@ -814,15 +823,25 @@ void DeviceManager::processReconQueryScanState(const QMap<QString, int> aResult)
|
|||||||
emit updateReconStateFinished();
|
emit updateReconStateFinished();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceManager::createScanReconRecord(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID)
|
void DeviceManager::startCreateReconRecord()
|
||||||
{
|
{
|
||||||
if(aPatientID.isEmpty())
|
QString sql = "SELECT ScanID FROM EScan WHERE State < 300 And State >= 200 ORDER BY ScanDateTime ASC";
|
||||||
|
auto result = SQLHelper::queryValues(sql);
|
||||||
|
for (const QVariant &variant : result)
|
||||||
{
|
{
|
||||||
emit createEmptyScanToRecon(aScanID, RECON_TRANSFER_PATH + "/" + aScanID);
|
QString scanid = variant.value<QList<QVariant>>()[0].toString();
|
||||||
|
emit createEmptyScanToRecon(scanid, RECON_TRANSFER_PATH + "/" + scanid);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
sql = "SELECT ScanID, ReferenceID, PatientID FROM Scan WHERE State < 300 And State >= 200 ORDER BY ScanDateTime ASC";
|
||||||
|
result = SQLHelper::queryValues(sql);
|
||||||
|
for (const QVariant &variant : result)
|
||||||
{
|
{
|
||||||
emit createScanToRecon(aScanID, aPatientID, aReferenceID, RECON_TRANSFER_PATH + "/" + aScanID);
|
QList<QVariant> record = variant.value<QList<QVariant>>();
|
||||||
|
QString scanID = record[0].toString();
|
||||||
|
QString referenceID = record[1].toString();
|
||||||
|
QString patientID = record[2].toString();;
|
||||||
|
emit createScanToRecon(scanID, patientID, referenceID, RECON_TRANSFER_PATH + "/" + scanID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -835,12 +854,12 @@ void DeviceManager::initEmptyScanMeasurementID()
|
|||||||
void DeviceManager::updateReconState()
|
void DeviceManager::updateReconState()
|
||||||
{
|
{
|
||||||
updateTransferProgress();
|
updateTransferProgress();
|
||||||
QString sql = "SELECT ScanID FROM Scan WHERE State != 999";
|
QString sql = "SELECT ScanID FROM Scan WHERE State < 999 And State >= 300";
|
||||||
auto result = SQLHelper::queryValues(sql);
|
auto result = SQLHelper::queryValues(sql);
|
||||||
QStringList scanIDs;
|
QStringList scanIDs;
|
||||||
for (const QVariant &variant : result)
|
for (const QVariant &variant : result)
|
||||||
{
|
{
|
||||||
scanIDs << variant.toString();
|
scanIDs << variant.value<QList<QVariant>>()[0].toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(scanIDs.isEmpty())
|
if(scanIDs.isEmpty())
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ private:
|
|||||||
void startScan(const QString& json, bool empty = false);
|
void startScan(const QString& json, bool empty = false);
|
||||||
void startPreview();
|
void startPreview();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
void createScanReconRecord(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID);
|
void startCreateReconRecord();
|
||||||
|
|
||||||
//-----------------new
|
//-----------------new
|
||||||
DeviceStatus getDeviceStatus();
|
DeviceStatus getDeviceStatus();
|
||||||
@@ -122,7 +122,7 @@ private slots:
|
|||||||
//Recon
|
//Recon
|
||||||
void processReconCreateEmptyScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
void processReconCreateEmptyScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
||||||
void processReconCreateScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
void processReconCreateScan(bool aResult, const QString& aScanID, const QString& aMessage);
|
||||||
void processReconQueryScanState(const QMap<QString, int> aResult);
|
void processReconQueryScanState(bool aResult, const QVariant& aState);
|
||||||
//GUI
|
//GUI
|
||||||
void scanTimeout();
|
void scanTimeout();
|
||||||
|
|
||||||
@@ -158,6 +158,7 @@ private:
|
|||||||
QString mCurrentEmptyMeasurementID = "";
|
QString mCurrentEmptyMeasurementID = "";
|
||||||
QString mCurrentPatientName = "";
|
QString mCurrentPatientName = "";
|
||||||
QString mCurrentPatientID = "";
|
QString mCurrentPatientID = "";
|
||||||
|
QString mCurrentAccessionNumber = "";
|
||||||
QString mCurrentLaterality = "";
|
QString mCurrentLaterality = "";
|
||||||
QString mCurrentOperatorName = "";
|
QString mCurrentOperatorName = "";
|
||||||
QString mCurrentTransferMeasurementID = "";
|
QString mCurrentTransferMeasurementID = "";
|
||||||
|
|||||||
@@ -18,13 +18,17 @@
|
|||||||
#include "components/ULineEdit.h"
|
#include "components/ULineEdit.h"
|
||||||
#include "components/UTextEdit.h"
|
#include "components/UTextEdit.h"
|
||||||
|
|
||||||
int queryValue(QSqlTableModel* model, int colID, const QVariant& var)
|
namespace
|
||||||
{
|
{
|
||||||
for (int i = 0; i < model->rowCount(); ++i)
|
const int ENDLINE_SPACE = 3;
|
||||||
|
int queryValue(QSqlTableModel* model, int colID, const QVariant& var)
|
||||||
{
|
{
|
||||||
if (model->data(model->index(i, colID)) == var) return i;
|
for (int i = 0; i < model->rowCount(); ++i)
|
||||||
|
{
|
||||||
|
if (model->data(model->index(i, colID)) == var) return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f)
|
EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFormBaseDialog(parent, f)
|
||||||
@@ -45,15 +49,27 @@ EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFo
|
|||||||
layout->addWidget(lbl_id);
|
layout->addWidget(lbl_id);
|
||||||
layout->addWidget(le_id);
|
layout->addWidget(le_id);
|
||||||
QLabel* lbl_endline1 = new QLabel(this);
|
QLabel* lbl_endline1 = new QLabel(this);
|
||||||
|
lbl_endline1->setFixedHeight(ENDLINE_SPACE);
|
||||||
lbl_endline1->setObjectName("endline");
|
lbl_endline1->setObjectName("endline");
|
||||||
layout->addWidget(lbl_endline1);
|
layout->addWidget(lbl_endline1);
|
||||||
|
|
||||||
|
QLabel* lbl_AccessionNumber = new QLabel(this);
|
||||||
|
lbl_AccessionNumber->setText(tr("Accession Number"));
|
||||||
|
mAccessionNumber = new ULineEdit(this);
|
||||||
|
layout->addWidget(lbl_AccessionNumber);
|
||||||
|
layout->addWidget(mAccessionNumber);
|
||||||
|
QLabel* accessionNumber_endline1 = new QLabel(this);
|
||||||
|
accessionNumber_endline1->setObjectName("endline");
|
||||||
|
accessionNumber_endline1->setFixedHeight(ENDLINE_SPACE);
|
||||||
|
layout->addWidget(accessionNumber_endline1);
|
||||||
|
|
||||||
QLabel* lbl_name = new QLabel(this);
|
QLabel* lbl_name = new QLabel(this);
|
||||||
lbl_name->setText(tr("Name"));
|
lbl_name->setText(tr("Name"));
|
||||||
le_name = new ULineEdit(this);
|
le_name = new ULineEdit(this);
|
||||||
layout->addWidget(lbl_name);
|
layout->addWidget(lbl_name);
|
||||||
layout->addWidget(le_name);
|
layout->addWidget(le_name);
|
||||||
QLabel* lbl_endline2 = new QLabel(this);
|
QLabel* lbl_endline2 = new QLabel(this);
|
||||||
|
lbl_endline2->setFixedHeight(ENDLINE_SPACE);
|
||||||
lbl_endline2->setObjectName("endline");
|
lbl_endline2->setObjectName("endline");
|
||||||
layout->addWidget(lbl_endline2);
|
layout->addWidget(lbl_endline2);
|
||||||
|
|
||||||
@@ -80,7 +96,7 @@ EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFo
|
|||||||
});
|
});
|
||||||
layout->addWidget(btnSex);
|
layout->addWidget(btnSex);
|
||||||
QLabel* lbl_endline9 = new QLabel(this);
|
QLabel* lbl_endline9 = new QLabel(this);
|
||||||
lbl_endline9->setFixedHeight(2);
|
lbl_endline9->setFixedHeight(ENDLINE_SPACE);
|
||||||
lbl_endline9->setObjectName("endline");
|
lbl_endline9->setObjectName("endline");
|
||||||
layout->addWidget(lbl_endline9);
|
layout->addWidget(lbl_endline9);
|
||||||
|
|
||||||
@@ -102,6 +118,7 @@ EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFo
|
|||||||
layout->addWidget(btnDate);
|
layout->addWidget(btnDate);
|
||||||
QLabel* lbl_endline5 = new QLabel(this);
|
QLabel* lbl_endline5 = new QLabel(this);
|
||||||
lbl_endline5->setObjectName("endline");
|
lbl_endline5->setObjectName("endline");
|
||||||
|
lbl_endline5->setFixedHeight(ENDLINE_SPACE);
|
||||||
layout->addWidget(lbl_endline5);
|
layout->addWidget(lbl_endline5);
|
||||||
|
|
||||||
QLabel* lbl_comment = new QLabel(this);
|
QLabel* lbl_comment = new QLabel(this);
|
||||||
@@ -110,6 +127,7 @@ EditPatientDialog::EditPatientDialog(QWidget* parent, Qt::WindowFlags f) : GUIFo
|
|||||||
layout->addWidget(lbl_comment);
|
layout->addWidget(lbl_comment);
|
||||||
layout->addWidget(te_comment);
|
layout->addWidget(te_comment);
|
||||||
QLabel* lbl_endline6 = new QLabel(this);
|
QLabel* lbl_endline6 = new QLabel(this);
|
||||||
|
lbl_endline6->setFixedHeight(ENDLINE_SPACE);
|
||||||
lbl_endline6->setObjectName("endline");
|
lbl_endline6->setObjectName("endline");
|
||||||
layout->addWidget(lbl_endline6);
|
layout->addWidget(lbl_endline6);
|
||||||
|
|
||||||
@@ -134,7 +152,9 @@ void EditPatientDialog::setPatientInformation(PatientInformation* information)
|
|||||||
btnDate->setText(information->BirthDate);
|
btnDate->setText(information->BirthDate);
|
||||||
currentPatientUID = information->PatientUID;
|
currentPatientUID = information->PatientUID;
|
||||||
AddDate = information->AddDate;
|
AddDate = information->AddDate;
|
||||||
|
mAccessionNumber->setText(information->AccessionNumber);
|
||||||
le_id->setEnabled(false);
|
le_id->setEnabled(false);
|
||||||
|
mAccessionNumber->setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,17 +164,7 @@ void EditPatientDialog::clearPatientInformation()
|
|||||||
// le_date->setText("");
|
// le_date->setText("");
|
||||||
le_name->setText("");
|
le_name->setText("");
|
||||||
te_comment->setText("");
|
te_comment->setText("");
|
||||||
}
|
mAccessionNumber->setText("");
|
||||||
|
|
||||||
void EditPatientDialog::storePatientInformation()
|
|
||||||
{
|
|
||||||
store.PatientUID = currentPatientUID;
|
|
||||||
// store.AddDate = AddDate;
|
|
||||||
store.ID = le_id->text();
|
|
||||||
store.BirthDate = le_date->text();
|
|
||||||
store.Name = le_name->text();
|
|
||||||
store.Sex = le_sex->text();
|
|
||||||
store.Comment = te_comment->toPlainText();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EditPatientDialog::updateReferenceData()
|
bool EditPatientDialog::updateReferenceData()
|
||||||
@@ -173,6 +183,7 @@ bool EditPatientDialog::updateReferenceData()
|
|||||||
lbl_error->setVisible(true);
|
lbl_error->setVisible(true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
inf->AccessionNumber = mAccessionNumber->text().trimmed();
|
||||||
inf->Name = le_name->text().trimmed();
|
inf->Name = le_name->text().trimmed();
|
||||||
int selectedRow = 0;
|
int selectedRow = 0;
|
||||||
bool isAdd = currentPatientUID.isEmpty();
|
bool isAdd = currentPatientUID.isEmpty();
|
||||||
@@ -199,7 +210,6 @@ bool EditPatientDialog::updateReferenceData()
|
|||||||
inf->BirthDate = btnDate->text();
|
inf->BirthDate = btnDate->text();
|
||||||
inf->Comment = te_comment->toPlainText();
|
inf->Comment = te_comment->toPlainText();
|
||||||
|
|
||||||
|
|
||||||
#define ADD_PATIENT_PROPERTY(val)\
|
#define ADD_PATIENT_PROPERTY(val)\
|
||||||
model->setData(model->index(selectedRow,PatientInformationEnum:: val),inf-> val);
|
model->setData(model->index(selectedRow,PatientInformationEnum:: val),inf-> val);
|
||||||
EDIT_PATIENT()
|
EDIT_PATIENT()
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ public:
|
|||||||
}
|
}
|
||||||
void setPatientInformation(PatientInformation* information);
|
void setPatientInformation(PatientInformation* information);
|
||||||
void clearPatientInformation();
|
void clearPatientInformation();
|
||||||
void storePatientInformation();
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -38,6 +37,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
ULineEdit* le_id = nullptr;
|
ULineEdit* le_id = nullptr;
|
||||||
|
ULineEdit* mAccessionNumber = nullptr;
|
||||||
ULineEdit* le_name = nullptr;
|
ULineEdit* le_name = nullptr;
|
||||||
ULineEdit* le_sex = nullptr;
|
ULineEdit* le_sex = nullptr;
|
||||||
ULineEdit* le_date = nullptr;
|
ULineEdit* le_date = nullptr;
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ MultyMessageDialog::MultyMessageDialog(const QString& aMessage,MessageLevel aMes
|
|||||||
QHBoxLayout* layout = new QHBoxLayout(this);
|
QHBoxLayout* layout = new QHBoxLayout(this);
|
||||||
layout->addWidget(mIcon);
|
layout->addWidget(mIcon);
|
||||||
layout->addWidget(mMessage);
|
layout->addWidget(mMessage);
|
||||||
|
|
||||||
|
mMessage->setWordWrap(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
MultyMessageDialog::~MultyMessageDialog()
|
MultyMessageDialog::~MultyMessageDialog()
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ PatientInformationPointer WorkListManager::getPatientFromWorkList(const QString&
|
|||||||
{
|
{
|
||||||
qDebug()<<"dcmdatadict error";
|
qDebug()<<"dcmdatadict error";
|
||||||
}
|
}
|
||||||
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD> scu*/
|
/*scu*/
|
||||||
OFList<OFString> syntaxes;
|
OFList<OFString> syntaxes;
|
||||||
syntaxes.push_back(UID_LittleEndianImplicitTransferSyntax);
|
syntaxes.push_back(UID_LittleEndianImplicitTransferSyntax);
|
||||||
scu.setMaxReceivePDULength(ASC_DEFAULTMAXPDU);
|
scu.setMaxReceivePDULength(ASC_DEFAULTMAXPDU);
|
||||||
@@ -71,7 +71,6 @@ PatientInformationPointer WorkListManager::getPatientFromWorkList(const QString&
|
|||||||
DcmFileFormat dcmff;
|
DcmFileFormat dcmff;
|
||||||
DcmDataset *dset = dcmff.getDataset();
|
DcmDataset *dset = dcmff.getDataset();
|
||||||
OFList<QRResponse*> responses;
|
OFList<QRResponse*> responses;
|
||||||
//<2F><>ѯ
|
|
||||||
DcmPathProcessor proc;
|
DcmPathProcessor proc;
|
||||||
proc.setItemWildcardSupport(OFFalse);
|
proc.setItemWildcardSupport(OFFalse);
|
||||||
proc.checkPrivateReservations(OFFalse);
|
proc.checkPrivateReservations(OFFalse);
|
||||||
@@ -93,6 +92,7 @@ PatientInformationPointer WorkListManager::getPatientFromWorkList(const QString&
|
|||||||
OFString Name;
|
OFString Name;
|
||||||
OFString BirthDate;
|
OFString BirthDate;
|
||||||
OFString Sex;
|
OFString Sex;
|
||||||
|
OFString AccessionNumber;
|
||||||
item->m_dataset->findAndGetOFString(DCM_PatientID, ID);
|
item->m_dataset->findAndGetOFString(DCM_PatientID, ID);
|
||||||
if (ID.empty())
|
if (ID.empty())
|
||||||
{
|
{
|
||||||
@@ -101,10 +101,12 @@ PatientInformationPointer WorkListManager::getPatientFromWorkList(const QString&
|
|||||||
item->m_dataset->findAndGetOFString(DCM_PatientName, Name);
|
item->m_dataset->findAndGetOFString(DCM_PatientName, Name);
|
||||||
item->m_dataset->findAndGetOFString(DCM_PatientBirthDate, BirthDate);
|
item->m_dataset->findAndGetOFString(DCM_PatientBirthDate, BirthDate);
|
||||||
item->m_dataset->findAndGetOFString(DCM_PatientSex, Sex);
|
item->m_dataset->findAndGetOFString(DCM_PatientSex, Sex);
|
||||||
|
item->m_dataset->findAndGetOFString(DCM_AccessionNumber, AccessionNumber);
|
||||||
result->ID = QString(ID.c_str());
|
result->ID = QString(ID.c_str());
|
||||||
result->Name = QString(Name.c_str());
|
result->Name = QString(Name.c_str());
|
||||||
result->BirthDate = QString(BirthDate.c_str()).insert(4,"-").insert(7,"-");
|
result->BirthDate = QString(BirthDate.c_str()).insert(4,"-").insert(7,"-");
|
||||||
result->Sex = QString(Sex.c_str());
|
result->Sex = QString(Sex.c_str());
|
||||||
|
result->AccessionNumber = QString(AccessionNumber.c_str());
|
||||||
//if (patientName.bad())
|
//if (patientName.bad())
|
||||||
//{
|
//{
|
||||||
// std::cout << patientName.text() << std::endl;
|
// std::cout << patientName.text() << std::endl;
|
||||||
@@ -142,7 +144,7 @@ PatientInformationPointer WorkListManager::getPatientFromWorkList(const QString&
|
|||||||
{
|
{
|
||||||
scu.abortAssociation();
|
scu.abortAssociation();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ void ReconFormWidget::initTableView(QHBoxLayout *contentLayout)
|
|||||||
{
|
{
|
||||||
// TableView for Scan
|
// TableView for Scan
|
||||||
ReconStateDelegate* delegate = new ReconStateDelegate(this);
|
ReconStateDelegate* delegate = new ReconStateDelegate(this);
|
||||||
mScanTable->setItemDelegateForColumn(8, delegate);
|
mScanTable->setItemDelegateForColumn(9, delegate);
|
||||||
mScanTable->setAlternatingRowColors(true);
|
mScanTable->setAlternatingRowColors(true);
|
||||||
mScanTable->setSelectionMode(QAbstractItemView::SingleSelection);
|
mScanTable->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
mScanTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
mScanTable->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
||||||
@@ -72,16 +72,15 @@ void ReconFormWidget::initTableView(QHBoxLayout *contentLayout)
|
|||||||
mScanTable->setModel(mModel);
|
mScanTable->setModel(mModel);
|
||||||
mScanTable->hideColumn(0);
|
mScanTable->hideColumn(0);
|
||||||
mScanTable->hideColumn(1);
|
mScanTable->hideColumn(1);
|
||||||
mScanTable->hideColumn(4);
|
mScanTable->hideColumn(5);
|
||||||
|
|
||||||
mScanTable->setColumnWidth(2, 250);
|
mScanTable->setColumnWidth(2, 200);
|
||||||
mScanTable->setColumnWidth(3, 250);
|
mScanTable->setColumnWidth(3, 200);
|
||||||
mScanTable->setColumnWidth(5, 250);
|
mScanTable->setColumnWidth(4, 300);
|
||||||
mScanTable->setColumnWidth(6, 100);
|
mScanTable->setColumnWidth(6, 200);
|
||||||
mScanTable->setColumnWidth(7, 250);
|
mScanTable->setColumnWidth(7, 100);
|
||||||
|
mScanTable->setColumnWidth(8, 200);
|
||||||
contentLayout->addWidget(mScanTable);
|
contentLayout->addWidget(mScanTable);
|
||||||
|
|
||||||
mScanTable->show();
|
|
||||||
//table current row selection changing event
|
//table current row selection changing event
|
||||||
|
|
||||||
// after sort by column
|
// after sort by column
|
||||||
@@ -91,15 +90,16 @@ void ReconFormWidget::initDataModel()
|
|||||||
{
|
{
|
||||||
//TODO:单独初始化预防SQL错误
|
//TODO:单独初始化预防SQL错误
|
||||||
mModel = SQLHelper::getTable("Scan");
|
mModel = SQLHelper::getTable("Scan");
|
||||||
mModel->sort(3, Qt::DescendingOrder);
|
mModel->sort(4, Qt::DescendingOrder);
|
||||||
updateSearchFilter();
|
updateSearchFilter();
|
||||||
|
|
||||||
mModel->setHeaderData(2, Qt::Horizontal, tr("PatientID"));
|
mModel->setHeaderData(2, Qt::Horizontal, tr("Patient ID"));
|
||||||
mModel->setHeaderData(5, Qt::Horizontal, tr("PatientName"));
|
mModel->setHeaderData(3, Qt::Horizontal, tr("Accession Number"));
|
||||||
mModel->setHeaderData(3, Qt::Horizontal, tr("Scan Time"));
|
mModel->setHeaderData(6, Qt::Horizontal, tr("Patient Name"));
|
||||||
mModel->setHeaderData(6, Qt::Horizontal, tr("Laterality"));
|
mModel->setHeaderData(4, Qt::Horizontal, tr("Scan Time"));
|
||||||
mModel->setHeaderData(7, Qt::Horizontal, tr("OperatorName"));
|
mModel->setHeaderData(7, Qt::Horizontal, tr("Laterality"));
|
||||||
mModel->setHeaderData(8, Qt::Horizontal, tr("State"));
|
mModel->setHeaderData(8, Qt::Horizontal, tr("Operator Name"));
|
||||||
|
mModel->setHeaderData(9, Qt::Horizontal, tr("State"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReconFormWidget::updateSearchFilter()
|
void ReconFormWidget::updateSearchFilter()
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ void ReconStateDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op
|
|||||||
displayText = tr("Transfering");
|
displayText = tr("Transfering");
|
||||||
int progress = DeviceManager::Default()->getTransferProgress();
|
int progress = DeviceManager::Default()->getTransferProgress();
|
||||||
QRect textRect = option.rect;
|
QRect textRect = option.rect;
|
||||||
textRect.setRight(option.rect.right() - 300);
|
textRect.setRight(option.rect.right() - 180);
|
||||||
painter->drawText(textRect, Qt::AlignCenter, displayText);
|
painter->drawText(textRect, Qt::AlignCenter, displayText);
|
||||||
|
|
||||||
QRect progressBarRect = option.rect;
|
QRect progressBarRect = option.rect;
|
||||||
progressBarRect.setLeft(textRect.right() + 20);
|
progressBarRect.setLeft(textRect.right() + 10);
|
||||||
progressBarRect.setRight(option.rect.right() - 5);
|
progressBarRect.setRight(option.rect.right() - 5);
|
||||||
progressBarRect.setTop(option.rect.top() + 5);
|
progressBarRect.setTop(option.rect.top() + 5);
|
||||||
progressBarRect.setBottom(option.rect.bottom() - 5);
|
progressBarRect.setBottom(option.rect.bottom() - 5);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ void PatientInformationForm::setPatientInformation(PatientInformation* informati
|
|||||||
mUI->lbl_Date->setText(information->BirthDate);
|
mUI->lbl_Date->setText(information->BirthDate);
|
||||||
mUI->lbl_Name->setText(information->Name);
|
mUI->lbl_Name->setText(information->Name);
|
||||||
mUI->lbl_Sex->setText(information->Sex);
|
mUI->lbl_Sex->setText(information->Sex);
|
||||||
|
mUI->lbl_Acc->setText(information->AccessionNumber);
|
||||||
mInfo = information;
|
mInfo = information;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,8 +50,9 @@ void PatientInformationForm::setProtocol(int type) {
|
|||||||
const char* PatientInformationForm::getCurrentPatientJsonString(bool empty)
|
const char* PatientInformationForm::getCurrentPatientJsonString(bool empty)
|
||||||
{
|
{
|
||||||
cJSON* patientInfoObject = cJSON_CreateObject();
|
cJSON* patientInfoObject = cJSON_CreateObject();
|
||||||
cJSON_AddItemToObject(patientInfoObject, "PatientName", cJSON_CreateString(mUI->lbl_Name->text().replace(' ', '_').toStdString().data()));
|
cJSON_AddItemToObject(patientInfoObject, "PatientName", cJSON_CreateString(mUI->lbl_Name->text().toStdString().data()));
|
||||||
cJSON_AddItemToObject(patientInfoObject, "PatientID", cJSON_CreateString(mUI->lbl_ID->text().replace(' ', '_').toStdString().data()));
|
cJSON_AddItemToObject(patientInfoObject, "PatientID", cJSON_CreateString(mUI->lbl_ID->text().toStdString().data()));
|
||||||
|
cJSON_AddItemToObject(patientInfoObject, "AccessionNumber", cJSON_CreateString(mUI->lbl_Acc->text().toStdString().data()));
|
||||||
cJSON_AddItemToObject(patientInfoObject, "PatientSex", cJSON_CreateString(mUI->lbl_Sex->text().toStdString().data()));
|
cJSON_AddItemToObject(patientInfoObject, "PatientSex", cJSON_CreateString(mUI->lbl_Sex->text().toStdString().data()));
|
||||||
cJSON_AddItemToObject(patientInfoObject, "PatientBirthDate",
|
cJSON_AddItemToObject(patientInfoObject, "PatientBirthDate",
|
||||||
cJSON_CreateString(mUI->lbl_Date->text().replace("/", "").replace("-", "").replace(' ', '.').toStdString().data()));
|
cJSON_CreateString(mUI->lbl_Date->text().replace("/", "").replace("-", "").replace(' ', '.').toStdString().data()));
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ void PatientDetailForm::setPatientInformation(PatientInformation* information) {
|
|||||||
mCurrentPatientUID = information->PatientUID;
|
mCurrentPatientUID = information->PatientUID;
|
||||||
mAddDate = information->AddDate;
|
mAddDate = information->AddDate;
|
||||||
mStore.Sex = information->Sex;
|
mStore.Sex = information->Sex;
|
||||||
|
mStore.AccessionNumber = information->AccessionNumber;
|
||||||
storePatientInformation();
|
storePatientInformation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
#define GUI_PATIENTINFORMATION_H
|
#define GUI_PATIENTINFORMATION_H
|
||||||
#define ADD_PATIENT()\
|
#define ADD_PATIENT()\
|
||||||
ADD_PATIENT_PROPERTY(ID)\
|
ADD_PATIENT_PROPERTY(ID)\
|
||||||
|
ADD_PATIENT_PROPERTY(AccessionNumber)\
|
||||||
ADD_PATIENT_PROPERTY(Name)\
|
ADD_PATIENT_PROPERTY(Name)\
|
||||||
ADD_PATIENT_PROPERTY(BirthDate)\
|
ADD_PATIENT_PROPERTY(BirthDate)\
|
||||||
ADD_PATIENT_PROPERTY(Sex)\
|
ADD_PATIENT_PROPERTY(Sex)\
|
||||||
ADD_PATIENT_PROPERTY(AddDate)\
|
ADD_PATIENT_PROPERTY(AddDate)\
|
||||||
ADD_PATIENT_PROPERTY(Comment)\
|
ADD_PATIENT_PROPERTY(Comment)
|
||||||
ADD_PATIENT_PROPERTY(Flag)
|
|
||||||
|
|
||||||
#define EDIT_PATIENT()\
|
#define EDIT_PATIENT()\
|
||||||
ADD_PATIENT_PROPERTY(PatientUID)\
|
ADD_PATIENT_PROPERTY(PatientUID)\
|
||||||
@@ -34,12 +34,11 @@ class PatientInformation:public QObject{
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
#define ADD_PATIENT_PROPERTY(val) QString val;
|
#define ADD_PATIENT_PROPERTY(val) QString val;
|
||||||
EDIT_PATIENT();
|
EDIT_PATIENT()
|
||||||
#undef ADD_PATIENT_PROPERTY
|
#undef ADD_PATIENT_PROPERTY
|
||||||
PatientInformation()
|
PatientInformation()
|
||||||
: QObject()
|
: QObject()
|
||||||
{
|
{
|
||||||
this->Flag = QString("0");
|
|
||||||
}
|
}
|
||||||
PatientInformation* Copy()
|
PatientInformation* Copy()
|
||||||
{
|
{
|
||||||
@@ -50,6 +49,7 @@ public:
|
|||||||
n->BirthDate = this->BirthDate;
|
n->BirthDate = this->BirthDate;
|
||||||
n->Sex = this->Sex;
|
n->Sex = this->Sex;
|
||||||
n->Comment = this->Comment;
|
n->Comment = this->Comment;
|
||||||
|
n->AccessionNumber = this->AccessionNumber;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -209,14 +209,14 @@ void SelectFormWidget::initTableView(QHBoxLayout *contentLayout) {// TableView f
|
|||||||
mPatTable->setSortingEnabled(true); // enable sortingEnabled
|
mPatTable->setSortingEnabled(true); // enable sortingEnabled
|
||||||
mPatTable->setModel((QAbstractItemModel*) mModel);
|
mPatTable->setModel((QAbstractItemModel*) mModel);
|
||||||
mPatTable->hideColumn(0);
|
mPatTable->hideColumn(0);
|
||||||
mPatTable->hideColumn(7);
|
|
||||||
mPatTable->show();
|
mPatTable->show();
|
||||||
|
|
||||||
mPatTable->setColumnWidth(1, 250);
|
mPatTable->setColumnWidth(1, 250);
|
||||||
mPatTable->setColumnWidth(2, 250);
|
mPatTable->setColumnWidth(2, 250);
|
||||||
mPatTable->setColumnWidth(3, 160);
|
mPatTable->setColumnWidth(3, 250);
|
||||||
mPatTable->setColumnWidth(4, 120);
|
mPatTable->setColumnWidth(4, 160);
|
||||||
mPatTable->setColumnWidth(5, 250);
|
mPatTable->setColumnWidth(5, 120);
|
||||||
|
mPatTable->setColumnWidth(6, 250);
|
||||||
contentLayout->addWidget(mPatTable);
|
contentLayout->addWidget(mPatTable);
|
||||||
//table current row selection changing event
|
//table current row selection changing event
|
||||||
connect(mPatTable, &SlideTableView::currentRowChanged, [=](int row) {
|
connect(mPatTable, &SlideTableView::currentRowChanged, [=](int row) {
|
||||||
@@ -240,11 +240,12 @@ void SelectFormWidget::initDataModel() {//TODO:单独初始化预防SQL错误
|
|||||||
mModel->sort(5, Qt::DescendingOrder);
|
mModel->sort(5, Qt::DescendingOrder);
|
||||||
mModel->select();
|
mModel->select();
|
||||||
mModel->setHeaderData(1, Qt::Horizontal, "ID");
|
mModel->setHeaderData(1, Qt::Horizontal, "ID");
|
||||||
mModel->setHeaderData(2, Qt::Horizontal, tr("Name"));
|
mModel->setHeaderData(2, Qt::Horizontal, tr("AccessionNumber"));
|
||||||
mModel->setHeaderData(3, Qt::Horizontal, tr("Birth Date"));
|
mModel->setHeaderData(3, Qt::Horizontal, tr("Name"));
|
||||||
mModel->setHeaderData(4, Qt::Horizontal, tr("Gender"));
|
mModel->setHeaderData(4, Qt::Horizontal, tr("Birth Date"));
|
||||||
mModel->setHeaderData(5, Qt::Horizontal, tr("Add Date"));
|
mModel->setHeaderData(5, Qt::Horizontal, tr("Gender"));
|
||||||
mModel->setHeaderData(6, Qt::Horizontal, tr("Comment"));
|
mModel->setHeaderData(6, Qt::Horizontal, tr("Add Date"));
|
||||||
|
mModel->setHeaderData(7, Qt::Horizontal, tr("Comment"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectFormWidget::setPatientDetail(const SlideTableView *table, const QSqlTableModel *model,
|
void SelectFormWidget::setPatientDetail(const SlideTableView *table, const QSqlTableModel *model,
|
||||||
@@ -259,11 +260,12 @@ void SelectFormWidget::setPatientDetail(const SlideTableView *table, const QSqlT
|
|||||||
|
|
||||||
void SelectFormWidget::reloadLanguage(){
|
void SelectFormWidget::reloadLanguage(){
|
||||||
mModel->setHeaderData(1, Qt::Horizontal, "ID");
|
mModel->setHeaderData(1, Qt::Horizontal, "ID");
|
||||||
mModel->setHeaderData(2, Qt::Horizontal, tr("Name"));
|
mModel->setHeaderData(2, Qt::Horizontal, tr("AccessionNumber"));
|
||||||
mModel->setHeaderData(3, Qt::Horizontal, tr("Birth Date"));
|
mModel->setHeaderData(3, Qt::Horizontal, tr("Name"));
|
||||||
mModel->setHeaderData(4, Qt::Horizontal, tr("Gender"));
|
mModel->setHeaderData(4, Qt::Horizontal, tr("Birth Date"));
|
||||||
mModel->setHeaderData(5, Qt::Horizontal, tr("Add Date"));
|
mModel->setHeaderData(5, Qt::Horizontal, tr("Gender"));
|
||||||
mModel->setHeaderData(6, Qt::Horizontal, tr("Comment"));
|
mModel->setHeaderData(6, Qt::Horizontal, tr("Add Date"));
|
||||||
|
mModel->setHeaderData(7, Qt::Horizontal, tr("Comment"));
|
||||||
|
|
||||||
mBtnAccount->setText(tr("Account"));
|
mBtnAccount->setText(tr("Account"));
|
||||||
//mBtnWorklist->setText(tr("Worklist"));
|
//mBtnWorklist->setText(tr("Worklist"));
|
||||||
|
|||||||
@@ -85,10 +85,12 @@ void ReconManager::queryReconStatus(const QStringList& aScanIDs)
|
|||||||
auto response = mReconClient->QueryScan(scanID.toStdString(), state);
|
auto response = mReconClient->QueryScan(scanID.toStdString(), state);
|
||||||
if(response.bad())
|
if(response.bad())
|
||||||
{
|
{
|
||||||
qDebug()<< "Recon query failed by " << response.error().data();
|
QString msg = QString("Recon query failed by ") + response.error().data();
|
||||||
break;
|
qDebug()<< msg;
|
||||||
|
emit queryReconStateResponsed(false, QVariant::fromValue(msg));
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
result.insert(scanID, state);
|
result.insert(scanID, state);
|
||||||
}
|
}
|
||||||
emit queryReconStateResponsed(result);
|
emit queryReconStateResponsed(true, QVariant::fromValue(result));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ private:
|
|||||||
signals:
|
signals:
|
||||||
void createEmptyScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
void createEmptyScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
||||||
void createScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
void createScanResponsed(bool aResult, const QString& aScanID, const QString& aMessage = "");
|
||||||
void queryReconStateResponsed(const QMap<QString, int> aResult);
|
void queryReconStateResponsed(bool aResult, const QVariant& aData);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Recon::ReconClient* mReconClient;
|
Recon::ReconClient* mReconClient;
|
||||||
|
|||||||
Reference in New Issue
Block a user