comparison OrthancFramework/Sources/DicomNetworking/DicomControlUserConnection.cpp @ 5025:afa427f65444

Added an Asynchronous mode to /modalities/../move
author Alain Mazy <am@osimis.io>
date Tue, 21 Jun 2022 10:55:45 +0200
parents 6fbff89fd5a4
children 0ea402b4d901
comparison
equal deleted inserted replaced
5021:559b35d18ef7 5025:afa427f65444
360 std::unique_ptr<ParsedDicomFile> query( 360 std::unique_ptr<ParsedDicomFile> query(
361 ConvertQueryFields(fields, parameters_.GetRemoteModality().GetManufacturer())); 361 ConvertQueryFields(fields, parameters_.GetRemoteModality().GetManufacturer()));
362 DcmDataset* dataset = query->GetDcmtkObject().getDataset(); 362 DcmDataset* dataset = query->GetDcmtkObject().getDataset();
363 363
364 const char* sopClass = UID_MOVEStudyRootQueryRetrieveInformationModel; 364 const char* sopClass = UID_MOVEStudyRootQueryRetrieveInformationModel;
365 switch (level) 365 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, ResourceTypeToDicomQueryRetrieveLevel(level));
366 {
367 case ResourceType_Patient:
368 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "PATIENT");
369 break;
370
371 case ResourceType_Study:
372 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "STUDY");
373 break;
374
375 case ResourceType_Series:
376 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "SERIES");
377 break;
378
379 case ResourceType_Instance:
380 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
381 break;
382
383 default:
384 throw OrthancException(ErrorCode_ParameterOutOfRange);
385 }
386 366
387 // Figure out which of the accepted presentation contexts should be used 367 // Figure out which of the accepted presentation contexts should be used
388 int presID = ASC_findAcceptedPresentationContextID(&association_->GetDcmtkAssociation(), sopClass); 368 int presID = ASC_findAcceptedPresentationContextID(&association_->GetDcmtkAssociation(), sopClass);
389 if (presID == 0) 369 if (presID == 0)
390 { 370 {
517 } 497 }
518 498
519 DcmDataset* dataset = query->GetDcmtkObject().getDataset(); 499 DcmDataset* dataset = query->GetDcmtkObject().getDataset();
520 assert(dataset != NULL); 500 assert(dataset != NULL);
521 501
522 const char* clevel = NULL; 502 const char* clevel = ResourceTypeToDicomQueryRetrieveLevel(level);
523 const char* sopClass = NULL; 503 const char* sopClass = NULL;
524 504
505 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, clevel);
506
525 switch (level) 507 switch (level)
526 { 508 {
527 case ResourceType_Patient: 509 case ResourceType_Patient:
528 clevel = "PATIENT";
529 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "PATIENT");
530 sopClass = UID_FINDPatientRootQueryRetrieveInformationModel; 510 sopClass = UID_FINDPatientRootQueryRetrieveInformationModel;
531 break; 511 break;
532 512
533 case ResourceType_Study: 513 case ResourceType_Study:
534 clevel = "STUDY";
535 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "STUDY");
536 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel; 514 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel;
537 break; 515 break;
538 516
539 case ResourceType_Series: 517 case ResourceType_Series:
540 clevel = "SERIES";
541 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "SERIES");
542 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel; 518 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel;
543 break; 519 break;
544 520
545 case ResourceType_Instance: 521 case ResourceType_Instance:
546 clevel = "IMAGE";
547 DU_putStringDOElement(dataset, DCM_QueryRetrieveLevel, "IMAGE");
548 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel; 522 sopClass = UID_FINDStudyRootQueryRetrieveInformationModel;
549 break; 523 break;
550 524
551 default: 525 default:
552 throw OrthancException(ErrorCode_ParameterOutOfRange); 526 throw OrthancException(ErrorCode_ParameterOutOfRange);