hum hum thank you Michael but it does not help me ^ ^
But that's OK, here is my code with which I can get my info:
Code: Select all
req.putAndInsertOFStringArray(DCM_QueryRetrieveLevel, "STUDY");
//req.putAndInsertOFStringArray(DCM_QueryRetrieveLevel, "SERIES");
//CONSTRUCTION DE LA REQUETE
//AVEC LES CHAMPS DU FILTRE
QString nom = MedicUi.m_lineEditName->text()+"*"; nom.replace(" ","^"); OFString OFNom = nom; req.putAndInsertOFStringArray(DCM_PatientName, OFNom);
QString d1 = MedicUi.m_lineEditExamD1->text();
QString d2 = MedicUi.m_lineEditExamD1->text();
//CHAMPS INDISPENSEMBLE
req.putAndInsertOFStringArray(DCM_Modality, "MR");
//req.putAndInsertOFStringArray(DCM_SeriesDescription, "PERFUSION");
//INFORMATIONS NECESSAIRE POUR IDENTIFIER L'EXAMEN
DcmElement *dcmelementStudyDate = new DcmAttributeTag(DCM_StudyDate); req.insert(dcmelementStudyDate);
DcmElement *dcmelementPatientName = new DcmAttributeTag(DCM_PatientName); req.insert(dcmelementPatientName);
DcmElement *dcmelementModality = new DcmAttributeTag(DCM_Modality); req.insert(dcmelementModality);
DcmElement *dcmelementNaissancePatient = new DcmAttributeTag(DCM_PatientBirthDate); req.insert(dcmelementNaissancePatient);
DcmElement *dcmelementIDPatient = new DcmAttributeTag(DCM_PatientID); req.insert(dcmelementIDPatient);
DcmElement *dcmelementStudyDescription = new DcmAttributeTag(DCM_StudyDescription); req.insert(dcmelementStudyDescription);
DcmElement *dcmelementCommentairePatient = new DcmAttributeTag(DCM_PatientComments); req.insert(dcmelementCommentairePatient);
DcmElement *dcmelementSexePatient = new DcmAttributeTag(DCM_PatientSex); req.insert(dcmelementSexePatient);
DcmElement *dcmelementStudyId = new DcmAttributeTag(DCM_StudyID); req.insert(dcmelementStudyId);
T_ASC_PresentationContextID presID = findUncompressedPC(UID_FINDStudyRootQueryRetrieveInformationModel, scu);
if (presID == 0)
{//PROBLEME avec le contexte de présentation
QMessageBox::information(0,"CONNEXION","TENTATIVE DE CONNEXION :\nJe suis : "+monIpAdress+":"+monPort+" ("+monAet+")\nEt je veux parler à : "+serverIpAdress+":"+serverPort+" ("+serverAet+")\n\nIl n'y a pas de contexte de présentation non compressé pour Study Root FIND");
return res;
}
progressDialog.setValue(70);
result = scu.sendFINDRequest(presID, &req, &findResponses);
if (result.bad())
{//PROBLEME AVEC LE RESULTAT DE LA RECHERCHE, il n'y a pas de serie disponnible
QString add = result.text();
QMessageBox::information(0,"CONNEXION","TENTATIVE DE CONNEXION :\nJe suis : "+monIpAdress+":"+monPort+" ("+monAet+")\nEt je veux parler à : "+serverIpAdress+":"+serverPort+" ("+serverAet+")\n\nIl n'y a pas de series disponnibles: "+add);
return res;
}
else
{ //La connexion est opérationnelle et il y a des series à récupérer
//QMessageBox::information(0,"CONNEXION","TENTATIVE DE CONNEXION :\nJe suis : "+monIpAdress+":"+monPort+" ("+monAet+")\nEt je veux parler à : "+serverIpAdress+":"+serverPort+" ("+serverAet+")\n\nIl y a des series disponnibles");
}
progressDialog.setValue(80);
//Construction et envoi d'une requete C-MOVE, pour tous les examens identifiés au dessus
presID = findUncompressedPC(UID_MOVEStudyRootQueryRetrieveInformationModel, scu);
if (presID == 0)
{//PROBLEME avec le contexte de présentation
QMessageBox::information(0,"CONNEXION","TENTATIVE DE CONNEXION :\nJe suis : "+monIpAdress+":"+monPort+" ("+monAet+")\nEt je veux parler à : "+serverIpAdress+":"+serverPort+" ("+serverAet+")\n\nIl n'y a pas de contexte de présentation non compressé pour Study Root MOVE");
return res;
}
progressDialog.setValue(90);
OFListIterator(FINDResponse*) study = findResponses.begin();
Uint32 studyCount = 1;
OFBool failed = OFFalse;
int nbr = 0;
while (study != findResponses.end() && result.good())
{
//Chaque boucle exécuté récupère toutes l'image
//MOVEResponses moveResponses;
//Etre sûr que ce n'est pas la dernière réponse, car elle n'a pas de données
if ( (*study)->m_dataset != NULL)
{
OFString studyInstanceUID;
result = (*study)->m_dataset->findAndGetOFStringArray(DCM_StudyInstanceUID, studyInstanceUID);
//On essaye seulement de récupérer la série si il y a effectivement un ID d'instance de série, sinon on l'ignore
if (result.good())
{
//req.putAndInsertOFStringArray(DCM_StudyInstanceUID, studyInstanceUID);
// On récupère toutes les images de cette série particulière
QString val = "";
OFString OFStrin;
(*study)->m_dataset->findAndGetOFString(DCM_StudyDate, OFStrin); val = val +"Date examen: "+OFStrin.c_str()+""+Outils::separateur;
(*study)->m_dataset->findAndGetOFString(DCM_PatientName, OFStrin); val = val +"Nom patient: "+OFStrin.c_str()+""+Outils::separateur;
(*study)->m_dataset->findAndGetOFString(DCM_Modality, OFStrin); val = val +"Modalité: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_PatientBirthDate, OFStrin); val = val +"Date de Naissance patient: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_PatientID, OFStrin); val = val +"ID patient: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_StudyDescription, OFStrin); val = val +"Description Examen: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_PatientComments, OFStrin); val = val +"Commentaire patient: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_PatientSex, OFStrin); val = val +"Sexe: "+OFStrin.c_str()+"\n";
(*study)->m_dataset->findAndGetOFString(DCM_StudyID, OFStrin); val = val +"ID examen: "+OFStrin.c_str()+"\n";
res = res + val;
QMessageBox::information(0,"RESULTAT",val);
/*result = scu.sendMOVERequest(presID, "MOVESCP", &req, &moveResponses);
if (result.good())
{
QMessageBox::information(0,"","Received study #");
studyCount++;
}*/
nbr++;
if (nbr>1000) break;
}
}
study++;
}
//QString val = ""; val.sprintf("%d",nbr); QMessageBox::information(0,"CONNEXION","Il y a "+val+" réponse");
if (result.bad())
I must specify in the request what attributes I want it back.
(As QSL, after the SELECT, I must say what I want fields to return)
-------------
For MOVEResponses I saw the comment at the bottom of the wiki, only it does not explain (or I do not understand) what to do