Add accession number and fix a problem with create recon record automaticly.

This commit is contained in:
sunwen
2023-08-23 16:49:56 +08:00
parent a94269c487
commit 2aa6541085
15 changed files with 123 additions and 77 deletions

View File

@@ -203,6 +203,7 @@ void DeviceManager::startScan(const QString& json, bool empty)
mIsEmptyScan = empty;
QJsonObject patientInfo = QJsonDocument::fromJson(json.toUtf8()).object()["Patient Info"].toObject();
mCurrentPatientID = patientInfo["PatientID"].toString();
mCurrentAccessionNumber = patientInfo["AccessionNumber"].toString();
mCurrentPatientName = patientInfo["PatientName"].toString();
mCurrentLaterality = patientInfo["Laterality"].toString();
mCurrentOperatorName = patientInfo["OperatorName"].toString();
@@ -631,10 +632,11 @@ void DeviceManager::insertEmptyScanRecord()
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(mCurrentEmptyMeasurementID)
.arg(mCurrentPatientID)
.arg(mCurrentAccessionNumber)
.arg(mCurrentPatientName)
.arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"))
.arg(mCurrentLaterality)
@@ -725,7 +727,6 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
QString sql = QString("UPDATE %1 set State = 200 where ScanID = '%2'")
.arg(mIsTransferEmptyScan ? "EScan" : "Scan")
.arg(mCurrentTransferMeasurementID);
createScanReconRecord(mCurrentTransferMeasurementID, mCurrentTransferPatientID, mCurrentEmptyMeasurementID);
mIsTransfering = false;
mCurrentTransferMeasurementID.clear();
if(!SQLHelper::exec(sql))
@@ -735,6 +736,7 @@ void DeviceManager::processTransferProgress(const QString& aProgress)
break;
}
emitInfoCallback("Scan data transfer Succeeded!", MessageLevel::Sucess);
startCreateReconRecord();
startTransfer();
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());
if(!SQLHelper::exec(sql))
@@ -814,15 +823,25 @@ void DeviceManager::processReconQueryScanState(const QMap<QString, int> aResult)
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()
{
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);
QStringList scanIDs;
for (const QVariant &variant : result)
{
scanIDs << variant.toString();
scanIDs << variant.value<QList<QVariant>>()[0].toString();
}
if(scanIDs.isEmpty())

View File

@@ -92,7 +92,7 @@ private:
void startScan(const QString& json, bool empty = false);
void startPreview();
void shutdown();
void createScanReconRecord(const QString& aScanID, const QString& aPatientID, const QString& aReferenceID);
void startCreateReconRecord();
//-----------------new
DeviceStatus getDeviceStatus();
@@ -122,7 +122,7 @@ private slots:
//Recon
void processReconCreateEmptyScan(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
void scanTimeout();
@@ -158,6 +158,7 @@ private:
QString mCurrentEmptyMeasurementID = "";
QString mCurrentPatientName = "";
QString mCurrentPatientID = "";
QString mCurrentAccessionNumber = "";
QString mCurrentLaterality = "";
QString mCurrentOperatorName = "";
QString mCurrentTransferMeasurementID = "";