void medPacsWidget::search(QString query) { this->readSettings(); this->clear(); if (!d->find) d->find = medAbstractPacsFactory::instance()->createFindScu("dcmtkFindScu"); if(d->find) { d->find->clearAllQueryAttributes(); d->find->setQueryLevel(medAbstractPacsFindScu::STUDY); d->find->addQueryAttribute(0x0010,0x0010, query.toAscii().constData()); // patient name d->find->addQueryAttribute(0x0008,0x0030, "\0"); // study date d->find->addQueryAttribute(0x0008,0x0050, "\0"); // accession no d->find->addQueryAttribute(0x0008,0x0061, "\0"); // modalities in study d->find->addQueryAttribute(0x0008,0x0090, "\0"); // ref physician d->find->addQueryAttribute(0x0008,0x1030, "\0"); // study description d->find->addQueryAttribute(0x0010,0x0020, "\0"); // patient ID d->find->addQueryAttribute(0x0010,0x0030, "\0"); // patient BD d->find->addQueryAttribute(0x0010,0x0040, "\0"); // sex d->find->addQueryAttribute(0x0020,0x000D, "\0"); // studyInstanceUID d->find->addQueryAttribute(0x0020,0x0010, "\0"); // study ID foreach(QStringList node, d->selectedNodes) d->find->sendFindRequest(node.at(0).toLatin1(), node.at(1).toLatin1(), tryToInt(node.at(2)), d->hostTitle.toLatin1(), d->hostAddress.toLatin1(), tryToInt(d->hostPort)); QVector<medAbstractPacsNode *> nodes = d->find->getNodeContainer(); foreach(medAbstractPacsNode *node, nodes) { QVector<medAbstractPacsResultDataset *> container = node->getResultDatasetContainer(); foreach(medAbstractPacsResultDataset *dataset, container) { QTreeWidgetItem *item = new QTreeWidgetItem(this, QStringList() << QString(dataset->findKeyValue(0x0010,0x0010)) << QString(dataset->findKeyValue(0x0008,0x1030)) << QString(dataset->findKeyValue(0x0020,0x0010)) << QString(dataset->findKeyValue(0x0008,0x0061))); item->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator); item->setData(0,Qt::UserRole, d->index(*node)); item->setData(1,Qt::UserRole, QPoint(0x0020,0x000D)); item->setData(2,Qt::UserRole, QString(dataset->getStudyInstanceUID())); }
void medPacsWidgetPrivate::run(void) { if(!this->server) { qWarning() << "DICOM server could not be started! pacsmodule not loaded?"; return; } QDir tmp = QDir::temp(); tmp.mkdir("import"); tmp.cd("import"); this->server->setStorageDirectory(tmp.absolutePath().toLatin1()); this->server->start(this->hostTitle.toLatin1(), this->hostAddress.toLatin1(), tryToInt(this->hostPort)); }