# HG changeset patch # User Sebastien Jodogne # Date 1445331726 -7200 # Node ID 7e0b5e413c7cb69b3783631fc7d0b69c69d63a70 # Parent 40a8445fc81d01345aa2a17fdb3db20e66f9bed9 C-Move SCP for studies using AccessionNumber tag diff -r 40a8445fc81d -r 7e0b5e413c7c NEWS --- a/NEWS Tue Oct 20 10:45:21 2015 +0200 +++ b/NEWS Tue Oct 20 11:02:06 2015 +0200 @@ -22,6 +22,7 @@ Maintenance ----------- +* C-Move SCP for studies using AccessionNumber tag * Fix issue 4 (C-Store Association not renegotiated on Specific-to-specific transfer syntax change) * "/system" URI gives information about the plugins used for storage area and DB back-end * Plugin callbacks should now return explicit "OrthancPluginErrorCode" instead of integers diff -r 40a8445fc81d -r 7e0b5e413c7c OrthancServer/OrthancMoveRequestHandler.cpp --- a/OrthancServer/OrthancMoveRequestHandler.cpp Tue Oct 20 10:45:21 2015 +0200 +++ b/OrthancServer/OrthancMoveRequestHandler.cpp Tue Oct 20 11:02:06 2015 +0200 @@ -108,7 +108,30 @@ ResourceType level, const DicomMap& input) { - DicomTag tag = GetIdentifierTag(level); + DicomTag tag(0, 0); // Dummy initialization + + switch (level) + { + case ResourceType_Patient: + tag = DICOM_TAG_PATIENT_ID; + break; + + case ResourceType_Study: + tag = (input.HasTag(DICOM_TAG_ACCESSION_NUMBER) ? + DICOM_TAG_ACCESSION_NUMBER : DICOM_TAG_STUDY_INSTANCE_UID); + break; + + case ResourceType_Series: + tag = DICOM_TAG_SERIES_INSTANCE_UID; + break; + + case ResourceType_Instance: + tag = DICOM_TAG_SOP_INSTANCE_UID; + break; + + default: + throw OrthancException(ErrorCode_ParameterOutOfRange); + } if (!input.HasTag(tag)) { diff -r 40a8445fc81d -r 7e0b5e413c7c OrthancServer/ServerEnumerations.cpp --- a/OrthancServer/ServerEnumerations.cpp Tue Oct 20 10:45:21 2015 +0200 +++ b/OrthancServer/ServerEnumerations.cpp Tue Oct 20 11:02:06 2015 +0200 @@ -364,26 +364,4 @@ throw OrthancException(ErrorCode_ParameterOutOfRange); } } - - - DicomTag GetIdentifierTag(ResourceType level) - { - switch (level) - { - case ResourceType_Patient: - return DICOM_TAG_PATIENT_ID; - - case ResourceType_Study: - return DICOM_TAG_STUDY_INSTANCE_UID; - - case ResourceType_Series: - return DICOM_TAG_SERIES_INSTANCE_UID; - - case ResourceType_Instance: - return DICOM_TAG_SOP_INSTANCE_UID; - - default: - throw OrthancException(ErrorCode_ParameterOutOfRange); - } - } } diff -r 40a8445fc81d -r 7e0b5e413c7c OrthancServer/ServerEnumerations.h --- a/OrthancServer/ServerEnumerations.h Tue Oct 20 10:45:21 2015 +0200 +++ b/OrthancServer/ServerEnumerations.h Tue Oct 20 11:02:06 2015 +0200 @@ -195,6 +195,4 @@ const char* EnumerationToString(TransferSyntax syntax); ModalityManufacturer StringToModalityManufacturer(const std::string& manufacturer); - - DicomTag GetIdentifierTag(ResourceType level); }