# HG changeset patch # User Alain Mazy # Date 1669131050 -3600 # Node ID 98da039474b165350fb905505544ac34c73058ca # Parent 027366cae7660d39d18e54e63988bfd8ee42ac9b /store: allows overriding CalledAet, Host, Port diff -r 027366cae766 -r 98da039474b1 NEWS --- a/NEWS Tue Nov 22 12:57:10 2022 +0100 +++ b/NEWS Tue Nov 22 16:30:50 2022 +0100 @@ -22,6 +22,8 @@ if you modify the PatientID at study level, also make sure to modify all other Patient related tags (PatientName, PatientBirthDate, ...) * Allow the HTTP server to return responses > 2GB (fixes asynchronous download of zip studies > 2GB) +* /modalities/.../store now accepts "CalledAet", "Host", "Port" to override the modality configuration + from the configuration file for a specific operation. OrthancFramework (C++) diff -r 027366cae766 -r 98da039474b1 OrthancServer/Sources/OrthancRestApi/OrthancRestModalities.cpp --- a/OrthancServer/Sources/OrthancRestApi/OrthancRestModalities.cpp Tue Nov 22 12:57:10 2022 +0100 +++ b/OrthancServer/Sources/OrthancRestApi/OrthancRestModalities.cpp Tue Nov 22 16:30:50 2022 +0100 @@ -44,6 +44,9 @@ { static const char* const KEY_LEVEL = "Level"; static const char* const KEY_LOCAL_AET = "LocalAet"; + static const char* const KEY_CALLED_AET = "CalledAet"; + static const char* const KEY_HOST = "Host"; + static const char* const KEY_PORT = "Port"; static const char* const KEY_NORMALIZE = "Normalize"; static const char* const KEY_QUERY = "Query"; static const char* const KEY_RESOURCES = "Resources"; @@ -1421,6 +1424,15 @@ .SetRequestField(KEY_LOCAL_AET, RestApiCallDocumentation::Type_String, "Local AET that is used for this commands, defaults to `DicomAet` configuration option. " "Ignored if `DicomModalities` already sets `LocalAet` for this modality.", false) + .SetRequestField(KEY_CALLED_AET, RestApiCallDocumentation::Type_String, + "Called AET that is used for this commands, defaults to `AET` configuration option. " + "Allows you to overwrite the destination AET for a specific operation.", false) + .SetRequestField(KEY_HOST, RestApiCallDocumentation::Type_String, + "Host that is used for this commands, defaults to `Host` configuration option. " + "Allows you to overwrite the destination host for a specific operation.", false) + .SetRequestField(KEY_PORT, RestApiCallDocumentation::Type_Number, + "Port that is used for this commands, defaults to `Port` configuration option. " + "Allows you to overwrite the destination port for a specific operation.", false) .SetRequestField(KEY_MOVE_ORIGINATOR_AET, RestApiCallDocumentation::Type_String, "Move originator AET that is used for this commands, in order to fake a C-MOVE SCU", false) .SetRequestField(KEY_MOVE_ORIGINATOR_ID, RestApiCallDocumentation::Type_Number, @@ -1450,8 +1462,17 @@ int moveOriginatorID = Toolbox::GetJsonIntegerField (request, KEY_MOVE_ORIGINATOR_ID, 0 /* By default, not a C-MOVE */); + RemoteModalityParameters remoteModality = MyGetModalityUsingSymbolicName(remote); + + remoteModality.SetApplicationEntityTitle(Toolbox::GetJsonStringField + (request, KEY_CALLED_AET, remoteModality.GetApplicationEntityTitle())); + remoteModality.SetHost(Toolbox::GetJsonStringField + (request, KEY_HOST, remoteModality.GetHost())); + remoteModality.SetPortNumber(static_cast(Toolbox::GetJsonUnsignedIntegerField + (request, KEY_PORT, remoteModality.GetPortNumber()))); + job->SetLocalAet(localAet); - job->SetRemoteModality(MyGetModalityUsingSymbolicName(remote)); + job->SetRemoteModality(remoteModality); if (moveOriginatorID != 0) {