From d8c51b44c1fe2fa4b518b614e173fae4c65f00e7 Mon Sep 17 00:00:00 2001 From: kradchen Date: Tue, 9 Sep 2025 09:29:28 +0800 Subject: [PATCH] feat: Changes study Query column header and detail, add some miss translate --- src/src/PACS/Common/dicomviewertype.h | 5 +- src/src/PACS/Network/queryworker.cpp | 13 ++-- src/src/PACS/Widget/importwidget.cpp | 101 ++------------------------ src/translations/zh_CN.ts | 29 ++++++-- 4 files changed, 37 insertions(+), 111 deletions(-) diff --git a/src/src/PACS/Common/dicomviewertype.h b/src/src/PACS/Common/dicomviewertype.h index e25b6ec..e2d4eb0 100644 --- a/src/src/PACS/Common/dicomviewertype.h +++ b/src/src/PACS/Common/dicomviewertype.h @@ -12,9 +12,10 @@ struct PACSStudyInfo { QString patientSex; QString patientAge; QString studyInstanceUID; - QString studyID; - QString requestingPhysician; + QString studyDescription; + QString modality; QString relatedInstanceNumber; + }; struct PACSSeriesInfo { diff --git a/src/src/PACS/Network/queryworker.cpp b/src/src/PACS/Network/queryworker.cpp index 00c6bbc..256762f 100644 --- a/src/src/PACS/Network/queryworker.cpp +++ b/src/src/PACS/Network/queryworker.cpp @@ -230,7 +230,7 @@ void QueryWorker::onFoundResult(int index, DcmDataset *response) { std::string studyDate_, patientName_, patientID_, accessionNumber_, patientBirthDate_, patientSex_, studyInstanceUID_, - studyID_, requestingPhysician_, seriesUid_, modality_, seriesNumber_, + studyDescription_, modality_, seriesUid_, seriesNumber_, instanceNumber_; response->findAndGetOFString(DCM_StudyDate, studyDate_); response->findAndGetOFString(DCM_PatientName, patientName_); @@ -239,10 +239,9 @@ void QueryWorker::onFoundResult(int index, DcmDataset *response) response->findAndGetOFString(DCM_PatientBirthDate, patientBirthDate_); response->findAndGetOFString(DCM_PatientSex, patientSex_); response->findAndGetOFString(DCM_StudyInstanceUID, studyInstanceUID_); - response->findAndGetOFString(DCM_StudyID, studyID_); - response->findAndGetOFString(DCM_RequestingPhysician, requestingPhysician_); - response->findAndGetOFString(DCM_SeriesInstanceUID, seriesUid_); + response->findAndGetOFString(DCM_StudyDescription, studyDescription_); response->findAndGetOFString(DCM_Modality, modality_); + response->findAndGetOFString(DCM_SeriesInstanceUID, seriesUid_); response->findAndGetOFString(DCM_SeriesNumber, seriesNumber_); response->findAndGetOFString(DCM_NumberOfStudyRelatedInstances, instanceNumber_); @@ -257,8 +256,8 @@ void QueryWorker::onFoundResult(int index, DcmDataset *response) study.patientBirthDate = QString::fromStdString(patientBirthDate_); study.patientSex = QString::fromStdString(patientSex_); study.studyInstanceUID = QString::fromStdString(studyInstanceUID_); - study.studyID = QString::fromStdString(studyID_); - study.requestingPhysician = QString::fromStdString(requestingPhysician_); + study.studyDescription = QString::fromStdString(studyDescription_); + study.modality = QString::fromStdString(modality_); study.relatedInstanceNumber = QString::fromStdString(instanceNumber_); emit sendStudyItemFound(study); @@ -268,7 +267,7 @@ void QueryWorker::onFoundResult(int index, DcmDataset *response) PACSSeriesInfo series; series.patientName = QString::fromStdString(patientName_); series.studyInstanceUID = QString::fromStdString(studyInstanceUID_); - series.studyID = QString::fromStdString(studyID_); + series.studyID = QString::fromStdString(studyDescription_); series.seriesUID = QString::fromStdString(seriesUid_); series.modality = QString::fromStdString(modality_); series.seriesNumber = QString::fromStdString(seriesNumber_); diff --git a/src/src/PACS/Widget/importwidget.cpp b/src/src/PACS/Widget/importwidget.cpp index e6e61fe..8cc7d01 100644 --- a/src/src/PACS/Widget/importwidget.cpp +++ b/src/src/PACS/Widget/importwidget.cpp @@ -221,20 +221,14 @@ void ImportWidget::initFilterDicom() m_pDicomComboBox->addItem(tr("Patient ID")); m_pDicomComboBox->addItem(tr("Accession number")); m_pDicomComboBox->addItem(tr("Device name")); - //m_pDicomComboBox->addItem("Study description"); - //m_pDicomComboBox->addItem("Referring physician"); - //m_pDicomComboBox->addItem("Performing physician"); - //m_pDicomComboBox->addItem("Reading physician"); - //m_pDicomComboBox->addItem("Institution name"); } void ImportWidget::initStudyHeader() { m_lStudyHeaders.clear(); m_lStudyHeaders << tr("Study date") << tr("Patient name") << tr("Date of birth") << tr("Patient ID") - << tr("Modality") << tr("Study ID") << tr("Study Instance Uid") << tr("Accession number") - << tr("Referring physician") << tr("Performing physician") << tr("Reading physician") << tr("Institution name") - << tr("Images") << tr("Source"); + << tr("Study Description") << tr("Accession number") + << tr("Images") << tr("Source")<< tr("Study Instance Uid") ; } void ImportWidget::initStudy() @@ -510,93 +504,25 @@ void ImportWidget::updateStudyView() QStandardItem* name = new QStandardItem(itr->patientName); name->setEditable(false); QStandardItem* birth = new QStandardItem(itr->patientBirthDate); birth->setEditable(false); QStandardItem* id = new QStandardItem(itr->patientID); id->setEditable(false); - QStandardItem* modality = new QStandardItem(""); modality->setEditable(false); - QStandardItem* studyID = new QStandardItem(itr->studyID); studyID->setEditable(false); + // QStandardItem* modality = new QStandardItem(m_pModalityComboBox->currentText()); modality->setEditable(false); + QStandardItem* studyDescription = new QStandardItem(itr->studyDescription); studyDescription->setEditable(false); QStandardItem* accNo = new QStandardItem(itr->accessionNumber); accNo->setEditable(false); QStandardItem* uid = new QStandardItem(itr->studyInstanceUID); uid->setEditable(false); - QStandardItem* referPhy = new QStandardItem(""); referPhy->setEditable(false); - QStandardItem* performPhy = new QStandardItem(""); performPhy->setEditable(false); - QStandardItem* readingPhysician = new QStandardItem(itr->requestingPhysician); readingPhysician->setEditable(false); - QStandardItem* inst = new QStandardItem(""); inst->setEditable(false); QStandardItem* image = new QStandardItem(itr->relatedInstanceNumber); image->setEditable(false); QStandardItem* source = new QStandardItem(m_pPacsComboBox->currentText()); source->setEditable(false); QList list; - list << date << name << birth << id << modality << studyID << uid << accNo << referPhy - << performPhy << readingPhysician << inst << image << source; + list << date << name << birth << id << studyDescription << accNo + << image << source<< uid ; m_pStudyModel->insertRow(iRowIdx, list); ++iRowIdx; } - - //for each (PACSStudyInfo var in m_studyInfo) - //{ - // QString n = var.studyDate; - // QStandardItem* date = new QStandardItem(var.studyDate); date->setEditable(false); - // QStandardItem* name = new QStandardItem(var.patientName); name->setEditable(false); - // QStandardItem* birth = new QStandardItem(var.patientBirthDate); birth->setEditable(false); - // QStandardItem* id = new QStandardItem(var.patientID); id->setEditable(false); - // QStandardItem* modality = new QStandardItem(""); modality->setEditable(false); - // QStandardItem* description = new QStandardItem(""); description->setEditable(false); - // QStandardItem* accNo = new QStandardItem(var.accessionNumber); accNo->setEditable(false); - // QStandardItem* examId = new QStandardItem(""); examId->setEditable(false); - // QStandardItem* referPhy = new QStandardItem(""); referPhy->setEditable(false); - // QStandardItem* performPhy = new QStandardItem(""); performPhy->setEditable(false); - // QStandardItem* readingPhysician = new QStandardItem(var.requestingPhysician); readingPhysician->setEditable(false); - // QStandardItem* inst = new QStandardItem(""); inst->setEditable(false); - // QStandardItem* image = new QStandardItem(""); image->setEditable(false); - // QStandardItem* source = new QStandardItem(m_pPacsComboBox->currentText()); source->setEditable(false); - // QStandardItem* uid = new QStandardItem(var.studyInstanceUID); uid->setEditable(false); - // QList list; - // list << date << name << birth << id << modality << description << accNo << examId << referPhy - // << performPhy << readingPhysician << inst << image << source << uid; - // m_pStudyModel->insertRow(iRowIdx, list); - // ++iRowIdx; - //} -// m_pStudyResult->setModel(m_pStudyModel); -// m_pStudyResult->setColumnHidden(14, true); } void ImportWidget::onStudySelected(const QModelIndex ¤t) { -// int row = current.row(); -// if (row < 0) -// return; -// if (mQueryWorkerThread == nullptr) -// { -// mQueryWorkerThread = new QThread; -// } -// else -// { -// if (!mQueryWorkerThread->isFinished()) -// { -// mQueryWorkerThread->exit(); -// mQueryWorkerThread->wait(); -// } -// } - -// if (mQueryWorker == nullptr) -// { -// std::string peerIP, peerTitle, ourTitle; -// unsigned long peerPort = 0, ourPort = 0; -// getNetParams(peerIP, peerPort, peerTitle, ourPort, ourTitle); -// if (peerIP.empty() || peerTitle.empty() || ourTitle.empty() || peerPort == 0 || ourPort == 0) -// { -// return; -// } - -// mQueryWorker = new QueryWorker(QString::fromStdString(peerIP), peerPort, QString::fromStdString(peerTitle), QString::fromStdString(ourTitle)); -// QObject::connect(mQueryWorker, SIGNAL(sendFindDone(int)), this, SLOT(onQueryDone(int)), Qt::QueuedConnection); -// QObject::connect(mQueryWorker, SIGNAL(sendStudyItemFound(PACSStudyInfo)), this, SLOT(onStudyFoundResult(PACSStudyInfo)), Qt::QueuedConnection); -// QObject::connect(mQueryWorker, SIGNAL(sendSeriesItemFound(PACSSeriesInfo)), this, SLOT(onSeriesFoundResult(PACSSeriesInfo)), Qt::QueuedConnection); -// } -// mQueryWorker->moveToThread(mQueryWorkerThread); -// mQueryWorkerThread->start(); - -// m_seriesInfo.clear(); -// std::string studyInstanceUID = m_pStudyModel->index(row, 14).data().toString().toStdString(); -// QMetaObject::invokeMethod(mQueryWorker, "queryBySeriesUID", Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(studyInstanceUID))); } @@ -685,17 +611,8 @@ void ImportWidget::executeCGet(const QModelIndex ¤t) mGetWorkerThread->wait(); } } - -// std::string seriesNumber = m_pSeriesModel->index(row, 1).data().toString().toStdString(); -// std::string studyInstanceUID = m_pSeriesModel->index(row, 4).data().toString().toStdString(); -// std::string studyID = m_pSeriesModel->index(row, 5).data().toString().toStdString(); -// std::string seriesUID = m_pSeriesModel->index(row, 6).data().toString().toStdString(); -// std::string patientName = m_pSeriesModel->index(row, 7).data().toString().toStdString(); std::string outDirectory = DicomViewerHelper::applicationPath().toStdString(); outDirectory += "/"; -// outDirectory += studyInstanceUID; -// outDirectory += "/"; -// outDirectory += seriesUID; bool mkRet = false; QDir d(QString::fromStdString(outDirectory)); @@ -718,10 +635,6 @@ void ImportWidget::executeCGet(const QModelIndex ¤t) mGetWorker->setOutputDirectory(QString::fromStdString(outDirectory)); mGetWorker->moveToThread(mGetWorkerThread); mGetWorkerThread->start(); - -// std::string seriesInstanceUID = m_pSeriesModel->index(row, 6).data().toString().toStdString(); -// std::string dicomType = m_pSeriesModel->index(row, 2).data().toString().toStdString(); -// QMetaObject::invokeMethod(mGetWorker, "moveBySeriesUID", Qt::QueuedConnection, Q_ARG(QString, QString::fromStdString(studyInstanceUID)), Q_ARG(QString, QString::fromStdString(seriesInstanceUID)), Q_ARG(QString, QString::fromStdString(dicomType))); } @@ -736,7 +649,7 @@ void ImportWidget::moveDone(int code, QString dir) } else { - QMessageBox::warning(this, "error", "Download dicom failed"); + QMessageBox::warning(this, tr("error"), tr("Download dicom failed")); } } diff --git a/src/translations/zh_CN.ts b/src/translations/zh_CN.ts index 6b4a36f..3a86bef 100644 --- a/src/translations/zh_CN.ts +++ b/src/translations/zh_CN.ts @@ -41,8 +41,10 @@ 检索协议 - - + + Test connection + 连接测试 + IP address IP地址 @@ -116,22 +118,22 @@ Connection Testing - "连接测试" + 连接测试 Connecting...... - "连接中......" + 连接中...... Success! - "连接成功!" + 连接成功! Fail! - "连接失败!" + 连接失败! @@ -862,8 +864,9 @@ Avg:%5, SD:%6 - Study description - 检查描述 + + Study Description + 检查描述 @@ -929,6 +932,16 @@ Avg:%5, SD:%6 Custom date range 自定义时间段 + + + error + 错误 + + + + Download dicom failed + 下载DICOM文件失败 + Exam ID 检查编码