# HG changeset patch # User Sebastien Jodogne # Date 1428061988 -7200 # Node ID 479e31b13de529f1f9cbd0b37cef4183a9c1815e # Parent 0ad4773f28b3d04e4885e4ecfcaa8a2f0901b6bd Allow replacing PatientID/StudyInstanceUID/SeriesInstanceUID from Lua scripts diff -r 0ad4773f28b3 -r 479e31b13de5 NEWS --- a/NEWS Fri Apr 03 13:31:00 2015 +0200 +++ b/NEWS Fri Apr 03 13:53:08 2015 +0200 @@ -3,6 +3,7 @@ * Support of FreeBSD * Prevent freeze on C-FIND if no DICOM tag is to be returned +* Allow replacing PatientID/StudyInstanceUID/SeriesInstanceUID from Lua scripts * Fix issue 30 (QR response missing "Query/Retrieve Level" (008,0052)) diff -r 0ad4773f28b3 -r 479e31b13de5 OrthancServer/Scheduler/ModifyInstanceCommand.cpp --- a/OrthancServer/Scheduler/ModifyInstanceCommand.cpp Fri Apr 03 13:31:00 2015 +0200 +++ b/OrthancServer/Scheduler/ModifyInstanceCommand.cpp Fri Apr 03 13:53:08 2015 +0200 @@ -36,6 +36,32 @@ namespace Orthanc { + ModifyInstanceCommand::ModifyInstanceCommand(ServerContext& context, + const DicomModification& modification) : + context_(context), + modification_(modification) + { + modification_.SetAllowManualIdentifiers(true); + + if (modification_.IsReplaced(DICOM_TAG_PATIENT_ID)) + { + modification_.SetLevel(ResourceType_Patient); + } + else if (modification_.IsReplaced(DICOM_TAG_STUDY_INSTANCE_UID)) + { + modification_.SetLevel(ResourceType_Study); + } + else if (modification_.IsReplaced(DICOM_TAG_SERIES_INSTANCE_UID)) + { + modification_.SetLevel(ResourceType_Series); + } + else + { + modification_.SetLevel(ResourceType_Instance); + } + } + + bool ModifyInstanceCommand::Apply(ListOfStrings& outputs, const ListOfStrings& inputs) { diff -r 0ad4773f28b3 -r 479e31b13de5 OrthancServer/Scheduler/ModifyInstanceCommand.h --- a/OrthancServer/Scheduler/ModifyInstanceCommand.h Fri Apr 03 13:31:00 2015 +0200 +++ b/OrthancServer/Scheduler/ModifyInstanceCommand.h Fri Apr 03 13:53:08 2015 +0200 @@ -45,15 +45,8 @@ DicomModification modification_; public: - ModifyInstanceCommand(ServerContext& context) : - context_(context) - { - } - - DicomModification& GetModification() - { - return modification_; - } + ModifyInstanceCommand(ServerContext& context, + const DicomModification& modification); const DicomModification& GetModification() const { diff -r 0ad4773f28b3 -r 479e31b13de5 OrthancServer/ServerContext.cpp --- a/OrthancServer/ServerContext.cpp Fri Apr 03 13:31:00 2015 +0200 +++ b/OrthancServer/ServerContext.cpp Fri Apr 03 13:53:08 2015 +0200 @@ -159,8 +159,10 @@ if (operation == "modify") { LOG(INFO) << "Lua script to modify instance " << parameters["Instance"].asString(); - std::auto_ptr command(new ModifyInstanceCommand(context)); - OrthancRestApi::ParseModifyRequest(command->GetModification(), parameters); + DicomModification modification; + OrthancRestApi::ParseModifyRequest(modification, parameters); + + std::auto_ptr command(new ModifyInstanceCommand(context, modification)); return command.release(); }