Mercurial > hg > orthanc
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); |