X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=vv%2FvvQPacsConnection.cxx;h=22d5d971ddb51a878801987424a28603e1b72cc9;hb=f4ee750a005c1406848ffdfd85a0ebcbe824bca6;hp=a99789ad2d6cb9379311812d167d537f0e7e0c60;hpb=0214afd767bbb5d3d0489c192a184c3bcfdf791f;p=clitk.git diff --git a/vv/vvQPacsConnection.cxx b/vv/vvQPacsConnection.cxx index a99789a..22d5d97 100644 --- a/vv/vvQPacsConnection.cxx +++ b/vv/vvQPacsConnection.cxx @@ -9,6 +9,7 @@ #include "vvUtils.h" + vvQPacsConnection::vvQPacsConnection(QWidget *i_parent) :QDialog(i_parent) { @@ -20,30 +21,45 @@ vvQPacsConnection::vvQPacsConnection(QWidget *i_parent) ui. tabNetwork->setTabText(0,QString(tr("Network"))); ui. tabNetwork->setTabText(1,QString(tr("Configuration"))); - //ui.setChecked(true); - //ui.on_check_ModAll_clicked(true); - QIcon icon; - icon.addFile("basket_download.png",QSize(),QIcon::Normal,QIcon::Off); - ui.importButton->setIcon(icon); - icon.addFile("file_upload.png",QSize(),QIcon::Normal,QIcon::Off); - // exportButton->setIcon(icon); - icon.addFile("email_forward.png",QSize(),QIcon::Normal,QIcon::Off); - icon.addFile("edit.png",QSize(),QIcon::Normal,QIcon::Off); - ui.optionsButton->setIcon(icon); - icon.addFile("bullet_info.png",QSize(),QIcon::Normal,QIcon::Off); - ui.helpButton->setIcon(icon); - connect(ui.optionsButton,SIGNAL(clicked()),this,SLOT(setNewPacs())); + ui.check_ModAll->setEnabled(true); + ui.networkCombo->addItem(""); ui.networkCombo->addItems(getDicomServers()); - connect(ui.networkCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(connectServer(int))); - connect(ui.scanButton,SIGNAL(clicked()),this,SLOT(on_scanButton_clicked())); + + // Connection + connect(ui.networkCombo,SIGNAL(currentIndexChanged(int)),this,SLOT(chooseServer(int))); + connect(ui.removeNetworkButton,SIGNAL(clicked()),this,SLOT(removeServer())); + connect(ui.NetworkButton,SIGNAL(clicked()),this,SLOT(modifyServer())); + update(); } +// remote a Dicom Server in VV settings +void vvQPacsConnection::removeServer() +{ + removeDicomServer(m_nickname); + ui.networkCombo->removeItem(ui.networkCombo->findText(QString(m_nickname.c_str()))); + m_nickname=""; + refreshNetworks(); +} + +// modify a Dicom Server in VV settings +void vvQPacsConnection::modifyServer() +{ + AddDicomServer(ui.NameEdit->text().toStdString(),ui.AETitleEdit->text().toStdString(),ui.AdressEdit->text().toStdString(),ui.PortEdit->text().toStdString()); + removeServer(); +} + +// refresh the list of Dicom Servers available from VV settings void vvQPacsConnection::refreshNetworks() { ui.networkCombo->clear(); + ui.networkCombo->addItem(QString()); ui.networkCombo->addItems(getDicomServers()); - //ui.networkCombo->show(); + ui.NameEdit->setText(QString()); + ui.AETitleEdit->setText(QString()); + ui.AdressEdit->setText(QString()); + ui.PortEdit->setText(QString()); + ui.tabNetwork->setCurrentIndex(0); } void vvQPacsConnection::on_clearButton_clicked() @@ -56,112 +72,38 @@ void vvQPacsConnection::on_clearButton_clicked() void vvQPacsConnection::on_scanButton_clicked() { - //on_clearButton_clicked(); + cleanTree(); manageStudiesFilter(true); - // #if defined (USE_GDCM2) - bool didItWork = gdcm::CompositeNetworkFunctions::CEcho(m_adress.c_str(), atoi(m_port.c_str()), "CREATIS", m_nickname.c_str() ); - /* tag.SetElement(8); - tag.SetGroup(8);*/ - std::vector< std::pair > keys = getKeys(); - - //std::pair pa; - //pa.first = tag; - //pa.second = ""; - ////keys.push_back(std::make_pair(tag, "")); - gdcm::EQueryLevel theLevel = gdcm::eStudy; - gdcm::ERootType theRoot = gdcm::eStudyRootType;//ePatientRootType; - //gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - - - std::vector theDataSet; - theLevel = gdcm::ePatient; - theRoot = gdcm::ePatientRootType;//ePatientRootType; - gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,getPatientKeys("")); - - // - //theDataSet.clear(); - // gdcm::CompositeNetworkFunctions::CFind(m_adress, m_port, theQuery, theDataSet, - // "CREATIS", m_nickname); - // keys.clear(); - // keys.push_back(std::make_pair(gdcm::Tag(0x0010,0x0010), "")); - // - gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), theQuery, theDataSet, - "CREATIS", m_nickname.c_str()); - std::vector::iterator it_ds = theDataSet.begin(); - // - for(; it_ds != theDataSet.end(); it_ds++) + // test first if echo works + bool didItWork = gdcm::CompositeNetworkFunctions::CEcho(m_adress.c_str(), atoi(m_port.c_str()), getDicomClientAETitle().c_str(), m_nickname.c_str() ); + if (didItWork) { - - QList items; - const gdcm::DataSet ds = (*it_ds); - std::vector< std::pair >::iterator it_key = keys.begin(); - int ind = 0; - for(; it_key != keys.end(); it_key++, ind++) + m_level =gdcm::ePatient; + std::vector theDataSet; + f_query = getQueryPatient(ui.patientName->toPlainText().toStdString(), ui.patientID->toPlainText().toStdString()); + + bool cfindWork = gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), + gdcm::CompositeNetworkFunctions::ConstructQuery(f_query.theRoot, f_query.theLevel ,f_query.keys), + theDataSet, getDicomClientAETitle().c_str() , m_nickname.c_str()); + if( cfindWork) { - gdcm::DataElement de = ds.GetDataElement((*it_key).first); - QStandardItem *item = new QStandardItem; - const gdcm::ByteValue *bv = (de).GetByteValue(); - if( !de.IsEmpty() ) - { - std::string buffer = std::string( bv->GetPointer(), bv->GetLength() ); - item->setText(tr(buffer.c_str())); - } - else - { - item->setText(tr("")); - } - if(ind ==0) - { - item->setCheckable(true); - } - items.push_back(item); - } - Patientmodel->appendRow(items); - } - // gdcm::Tag tagtest(0x0020,0x1208); - // keys.clear(); - // keys.push_back(std::make_pair(gdcm::Tag(0x0010,0x0010), "")); - //// keys.push_back(std::make_pair(tagtest, "")); - // theLevel = gdcm::ePatient; - // theRoot = gdcm::ePatientRootType;//ePatientRootType; - // theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - // - // - //theDataSet.clear(); - // gdcm::CompositeNetworkFunctions::CFind(m_adress, m_port, theQuery, theDataSet, - // "CREATIS",m_nickname); - + convertDataSet(theDataSet,Patientmodel,getPatientKeys("","")); + } // end cfindwork + } // end didItwork } +/// show Options DialogBox to set a new Dicom Server void vvQPacsConnection::on_optionsButton_clicked() { - vvPacsSettingsDialog *dg = new vvPacsSettingsDialog(this); dg->show(); - - /*QModelIndex index; - QVariant elt= Patientmodel->data(index.sibling(ui.patientTreeView->selectionModel()->selectedRows().first().row(),1)); - - gdcm::EQueryLevel theLevel = gdcm::ePatient; - gdcm::ERootType theRoot = gdcm::ePatientRootType;//ePatientRootType; - std::vector theDataSet; - std::vector< std::pair > keys; - - // Study Description - gdcm::Tag tagsdc(0x0010,0x0020); - keys.push_back(std::make_pair(tagsdc, elt.toString().toStdString())); - gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - gdcm::CompositeNetworkFunctions::CFind(m_adress, m_port, theQuery, theDataSet, "CREATIS", m_nickname); - - bool didItWork = gdcm::CompositeNetworkFunctions::CMove( m_adress, m_port, theQuery, 0, - "CREATIS", m_nickname,m_destination );*/ } void vvQPacsConnection::convertDataSet(std::vector i_ds, QStandardItemModel *i_model, std::vector< std::pair > keys) { - gdcm::Tag tagdb(0x0008,0x0020); + std::vector::iterator it_ds = i_ds.begin(); for(; it_ds != i_ds.end(); it_ds++) { @@ -177,16 +119,7 @@ void vvQPacsConnection::convertDataSet(std::vector i_ds, QStandar if( !de.IsEmpty() ) { std::string buffer = std::string( bv->GetPointer(), bv->GetLength() ); - /*if((*it_key).first == tagdb) - { - QDate date; - date.fromString(tr(buffer.c_str()),"yyyy'MM'd"); - item->setText(date.toString()); - } - else - {*/ item->setText(tr(buffer.c_str())); - //} } else { @@ -200,10 +133,9 @@ void vvQPacsConnection::convertDataSet(std::vector i_ds, QStandar } i_model->appendRow(items); } - } - +// TreeViews creation void vvQPacsConnection::createTreeView() { // Patient Tree View @@ -222,6 +154,7 @@ void vvQPacsConnection::createTreeView() Studylist.push_back(tr("DESCRIPTION")); Studylist.push_back(tr("DATE")); Studylist.push_back(tr("HOUR")); + Studylist.push_back(tr("STUDY ID")); Studymodel->setHorizontalHeaderLabels(Studylist); ui.studyTreeView->setModel(Studymodel); connect(ui.studyTreeView, SIGNAL(clicked(QModelIndex)), this, SLOT(selectSeries(QModelIndex))); @@ -241,119 +174,87 @@ void vvQPacsConnection::createTreeView() Imagesmodel = new QStandardItemModel(0,1,this); QStringList Imageslist; Imageslist.push_back(tr("instance number")); + Imageslist.push_back(tr("sopuid")); Imagesmodel->setHorizontalHeaderLabels(Imageslist); ui.imagesTreeView->setModel(Imagesmodel); +} - //model->setHeaderData(0, Qt::Horizontal,tr("test"),Qt::DisplayRole); - /*QFileSystemModel *filemodel = new QFileSystemModel; - filemodel->insertColumn(1); - filemodel->setHeaderData(1, Qt::Horizontal,"test",0);*/ +// clean the different model Trees +void vvQPacsConnection::cleanTree() +{ + Patientmodel->removeRows(0,Patientmodel->rowCount()); + Studymodel->removeRows(0,Patientmodel->rowCount()); + Seriesmodel->removeRows(0,Patientmodel->rowCount()); + Imagesmodel->removeRows(0,Patientmodel->rowCount()); } void vvQPacsConnection::selectStudies(const QModelIndex &index) { + + Studymodel->removeRows(0, Studymodel->rowCount(),QModelIndex()); QVariant elt= Patientmodel->data(index.sibling(index.row(),1)); m_patient=elt.toString().toStdString(); manageSeriesFilter(true); - gdcm::EQueryLevel theLevel = gdcm::eStudy; - gdcm::ERootType theRoot = gdcm::ePatientRootType;//ePatientRootType; + std::vector theDataSet; - std::vector< std::pair > keys; - - // Study Description - gdcm::Tag tagsd(0x0010,0x0020); - keys.push_back(std::make_pair(tagsd, m_patient)); - // Study Description - gdcm::Tag tagsdc(0x0008,0x1030); - keys.push_back(std::make_pair(tagsdc, "")); - // Study date - gdcm::Tag tagdb(0x0008,0x0020); - keys.push_back(std::make_pair(tagdb, "")); - // Study Hour - gdcm::Tag tagsdh(0x0008,0x0030); - keys.push_back(std::make_pair(tagsdh, "")); - gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), theQuery, theDataSet, "CREATIS", m_nickname.c_str()); - convertDataSet(theDataSet, Studymodel, getStudyKeys("")); + m_query = getQueryPatient("",m_patient); + f_query = getQueryforStudy(m_patient, false); + + + if ( gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), + gdcm::CompositeNetworkFunctions::ConstructQuery(f_query.theRoot, f_query.theLevel ,f_query.keys) + , theDataSet, getDicomClientAETitle().c_str(), m_nickname.c_str()) ) + { + convertDataSet(theDataSet, Studymodel, getQueryKeysforStudy("",true)); + } } + + void vvQPacsConnection::selectSeries(const QModelIndex &index) { + m_level =gdcm::eSeries; Seriesmodel->removeRows(0, Seriesmodel->rowCount(),QModelIndex()); QVariant elt= Studymodel->data(index.sibling(index.row(),3)); QVariant elt2= Patientmodel->data(index.sibling(ui.patientTreeView->selectionModel()->selectedRows().first().row(),1)); - //manageImagesFilter(true); - gdcm::EQueryLevel theLevel = gdcm::eSeries; - gdcm::ERootType theRoot = gdcm::ePatientRootType;//ePatientRootType; - std::vector theDataSet; - std::vector< std::pair > keys; - - //Patient Unique key - keys.push_back(std::make_pair(gdcm::Tag(0x0010,0x0020), m_patient)); - - //Study Unique Key - keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000d), elt.toString().toStdString())); - - - // Modality - keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), elt.toString().toStdString())); - // Description - keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), elt.toString().toStdString())); - // Acceptance NUmber???? - keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), elt.toString().toStdString())); - - gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - keys.clear(); - // Modality - keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), elt.toString().toStdString())); - // Description - keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), elt.toString().toStdString())); - // Acceptance NUmber???? - keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), elt.toString().toStdString())); - - - gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), theQuery, theDataSet, "CREATIS", m_nickname.c_str()); - convertDataSet(theDataSet, Seriesmodel, keys); + std::vector theDataSet; + + m_query = getQueryforSeries(elt.toString().toStdString(),elt2.toString().toStdString(), false); + f_query =getQueryforSeries(elt.toString().toStdString(),elt2.toString().toStdString(), false); + if ( gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), + gdcm::CompositeNetworkFunctions::ConstructQuery(f_query.theRoot, f_query.theLevel ,f_query.keys), theDataSet, + getDicomClientAETitle().c_str(), m_nickname.c_str())) + { + + convertDataSet(theDataSet, Seriesmodel, getSeriesKeys("","",true)); + } } void vvQPacsConnection::selectImages(const QModelIndex &index) { + m_level = gdcm::eImage; Imagesmodel->removeRows(0, Imagesmodel->rowCount(),QModelIndex()); - QVariant elt= Seriesmodel->data(index.sibling(index.row(),2)); - QVariant elt2= Patientmodel->data(index.sibling(ui.patientTreeView->selectionModel()->selectedRows().first().row(),1)); + QVariant elt3= Seriesmodel->data(index.sibling(index.row(),2)); + QVariant elt2= Studymodel->data(index.sibling(ui.studyTreeView->selectionModel()->selectedRows().first().row(),3)); + QVariant elt= Patientmodel->data(index.sibling(ui.patientTreeView->selectionModel()->selectedRows().first().row(),1)); //manageImagesFilter(true); - gdcm::EQueryLevel theLevel = gdcm::eImage; - gdcm::ERootType theRoot = gdcm::ePatientRootType;//ePatientRootType; + std::vector theDataSet; std::vector< std::pair > keys; - - gdcm::Tag tagsd(0x0010,0x0020); - keys.push_back(std::make_pair(tagsd, m_patient)); - - gdcm::Tag tagss(0x0020,0x000e); - keys.push_back(std::make_pair(tagss, elt.toString().toStdString())); - //= getStudyKeys(elt.toString().toStdString()); - - // Study Description - gdcm::Tag tagsdc(0x0020,0x0013); - keys.push_back(std::make_pair(tagsdc, "")); - - - gdcm::SmartPointer theQuery = gdcm::CompositeNetworkFunctions::ConstructQuery(theRoot, theLevel ,keys); - keys.clear(); - // Study Description - - keys.push_back(std::make_pair(tagsdc, "")); - - - gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), theQuery, theDataSet, "CREATIS", m_nickname.c_str()); - convertDataSet(theDataSet, Imagesmodel, keys); + f_query =getQueryforImages(elt.toString().toStdString(),elt2.toString().toStdString(), elt3.toString().toStdString(),false); + m_query =getQueryforImages(elt.toString().toStdString(),elt2.toString().toStdString(), elt3.toString().toStdString(),false); + if( gdcm::CompositeNetworkFunctions::CFind(m_adress.c_str(), atoi(m_port.c_str()), + gdcm::CompositeNetworkFunctions::ConstructQuery(f_query.theRoot, f_query.theLevel ,f_query.keys), theDataSet, + getDicomClientAETitle().c_str(), m_nickname.c_str())) + { + convertDataSet(theDataSet, Imagesmodel, getQueryKeysforImages("","","",true)); + } } @@ -370,16 +271,26 @@ void vvQPacsConnection::manageSeriesFilter(bool i_enable) ui.modalityTab->setEnabled(i_enable); } -std::vector< std::pair > vvQPacsConnection::getPatientKeys(const std::string i_val) +vvQuery vvQPacsConnection::getQueryPatient(const std::string i_patname, const std::string i_patid) +{ + vvQuery query; + query.theRoot = gdcm::ePatientRootType; + query.theLevel = gdcm::ePatient; + query.keys = getPatientKeys(i_patname, i_patid); + return query; + +} + +std::vector< std::pair > vvQPacsConnection::getPatientKeys(const std::string i_patname, const std::string i_patid) { std::vector< std::pair > keys; // Patient Name gdcm::Tag tag(0x0010,0x0010); - keys.push_back(std::make_pair(tag, "")); + keys.push_back(std::make_pair(tag, i_patname)); //// Patient ID gdcm::Tag tagpid(0x0010,0x0020); - keys.push_back(std::make_pair(tagpid, i_val)); + keys.push_back(std::make_pair(tagpid, i_patid)); return keys; } @@ -402,22 +313,33 @@ std::vector< std::pair > vvQPacsConnection::getStudyKeys return keys; } - -std::vector< std::pair > vvQPacsConnection::getSeriesKeys(const std::string i_val) +vvQuery vvQPacsConnection::getQueryforSeries(const std::string patient_id, const std::string series_id, bool bdisplay) +{ + vvQuery query; + query.theRoot = gdcm::ePatientRootType; + query.theLevel = gdcm::eSeries; + query.keys = getSeriesKeys(patient_id, series_id, bdisplay); + return query; +} +std::vector< std::pair > vvQPacsConnection::getSeriesKeys(const std::string patient_id, const std::string study_id, bool bdisplay) { std::vector< std::pair > keys; // Modality - gdcm::Tag tagsm(0x0008,0x0060); - keys.push_back(std::make_pair(tagsm, "")); + keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0060), "")); // Study date - gdcm::Tag tagdb(0x0008,0x103e); - keys.push_back(std::make_pair(tagdb, "")); - // Study Hour - gdcm::Tag tagsdh(0x0020,0x000e); - keys.push_back(std::make_pair(tagsdh, "")); - // Study Instance UID - gdcm::Tag tagsid(0x0020,0x1209); - keys.push_back(std::make_pair(tagsid, i_val)); + + keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x103e),"")); +// Series Instance UID + keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), "")); + + + + if(!bdisplay) + { + // Study Instance UID + gdcm::Tag tagsid(0x0020,0x1209); + keys.push_back(std::make_pair(tagsid, study_id)); + } return keys; } @@ -497,7 +419,7 @@ void vvQPacsConnection::on_check_ModAll_clicked(bool state) } -void vvQPacsConnection::connectServer(int index) +void vvQPacsConnection::chooseServer(int index) { std::map < std::string, std:: string> values = getDicomServer(ui.networkCombo->currentText()); m_port = values["PORT"]; @@ -510,8 +432,106 @@ void vvQPacsConnection::connectServer(int index) ui.PortEdit->setText(QString(m_port.c_str())); } -void vvQPacsConnection::setNewPacs() +void vvQPacsConnection::on_importButton_clicked() + { + + bool didItWork = gdcm::CompositeNetworkFunctions::CMove(m_adress.c_str(),atoi(m_port.c_str()), + gdcm::CompositeNetworkFunctions::ConstructQuery(m_query.theRoot, m_query.theLevel ,m_query.keys,true), getDicomClientPort(), + getDicomClientAETitle().c_str(), m_aetitle.c_str(),"D:\\move" ); + gdcm::Directory theDir; + theDir.Load("D:\\move"); + m_files = theDir.GetFilenames(); + accept(); + } + +std::vector vvQPacsConnection::getFileNames() +{ + std::vector filenames; + gdcm::Directory::FilenamesType::iterator it = m_files.begin(); + for (;it != m_files.end(); it++) + filenames.push_back(it->c_str()); + return filenames; +} +std::vector< std::pair > vvQPacsConnection::fillMoveKeys() +{ + std::vector< std::pair > keys; + switch(m_level) + { + case gdcm::ePatient: + //keys.push_back(getPatientKeys("","")); + break; + } + + return keys; +} + +vvQuery vvQPacsConnection::getQueryforStudy(const std::string patient_id, bool bdisplay) { - int i; - i =0; + vvQuery query; + query.keys = getQueryKeysforStudy( patient_id, bdisplay); + query.theRoot = gdcm::ePatientRootType; + query.theLevel = gdcm::eStudy; + return query; } + +std::vector< std::pair > vvQPacsConnection::getQueryKeysforStudy(const std::string patient_id, bool bdisplay) +{ + std::vector< std::pair > keys; + + + // Study Description + gdcm::Tag tagsdc(0x0008,0x1030); + keys.push_back(std::make_pair(tagsdc, "")); + // Study date + gdcm::Tag tagdb(0x0008,0x0020); + keys.push_back(std::make_pair(tagdb, "")); + // Study Hour + gdcm::Tag tagsdh(0x0008,0x0030); + keys.push_back(std::make_pair(tagsdh, "")); + + // Study UID + gdcm::Tag tagsid(0x020,0x000d); + keys.push_back(std::make_pair(tagsid, "")); + + if (!bdisplay) + { + // Patient ID + gdcm::Tag tagsd(0x0010,0x0020); + keys.push_back(std::make_pair(tagsd, patient_id)); + } + + return keys; +} + +vvQuery vvQPacsConnection::getQueryforImages(const std::string patient_id, const std::string study_id, const std::string series_id,bool bdisplay) +{ + vvQuery query; + query.keys = getQueryKeysforImages( patient_id, study_id, series_id, bdisplay); + query.theRoot = gdcm::ePatientRootType; + query.theLevel = gdcm::eImage; + return query; +} + +std::vector< std::pair > vvQPacsConnection::getQueryKeysforImages(const std::string patient_id, const std::string study_id, const std::string series_id,bool bdisplay) +{ + + std::vector< std::pair > keys; + + if (!bdisplay) + { + //Patient UID + keys.push_back(std::make_pair(gdcm::Tag (0x0010,0x0020), patient_id)); + + //Study UID + // keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000d), study_id)); + + //Series UID + keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x000e), series_id)); + } + // Image Description + + keys.push_back(std::make_pair(gdcm::Tag(0x0020,0x0013), "")); + //SOP Instance UID + keys.push_back(std::make_pair(gdcm::Tag(0x0008,0x0018), "")); + return keys; +} \ No newline at end of file