Mercurial > hg > orthanc
diff OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp @ 1160:80671157d051
generalization of create-dicom
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 17 Sep 2014 11:57:28 +0200 |
parents | 8dabdc0d3007 |
children | 7f3a65e84d4b |
line wrap: on
line diff
--- a/OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp Fri Sep 12 15:53:57 2014 +0200 +++ b/OrthancServer/OrthancRestApi/OrthancRestAnonymizeModify.cpp Wed Sep 17 11:57:28 2014 +0200 @@ -431,29 +431,28 @@ // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World"}' // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World","PixelData":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUGDDcB53FulQAAAElJREFUGNNtj0sSAEEEQ1+U+185s1CtmRkblQ9CZldsKHJDk6DLGLJa6chjh0ooQmpjXMM86zPwydGEj6Ed/UGykkEM8X+p3u8/8LcOJIWLGeMAAAAASUVORK5CYII="}' - Json::Value request; - if (call.ParseJsonRequest(request) && request.isObject()) + Json::Value replacements; + if (call.ParseJsonRequest(replacements) && replacements.isObject()) { - DicomModification modification; - modification.SetLevel(ResourceType_Patient); - ParseReplacements(modification, request); - - // If no PatientID is specified, create a random one - if (!modification.IsReplaced(DICOM_TAG_PATIENT_ID)) - { - modification.Replace(DICOM_TAG_PATIENT_ID, Toolbox::GenerateUuid()); - } - ParsedDicomFile dicom; - if (modification.IsReplaced(DICOM_TAG_PIXEL_DATA)) + Json::Value::Members members = replacements.getMemberNames(); + for (size_t i = 0; i < members.size(); i++) { - dicom.EmbedImage(modification.GetReplacement(DICOM_TAG_PIXEL_DATA)); - modification.Keep(DICOM_TAG_PIXEL_DATA); + const std::string& name = members[i]; + std::string value = replacements[name].asString(); + + DicomTag tag = FromDcmtkBridge::ParseTag(name); + if (tag == DICOM_TAG_PIXEL_DATA) + { + dicom.EmbedImage(value); + } + else + { + dicom.Replace(tag, value); + } } - modification.Apply(dicom); - DicomInstanceToStore toStore; toStore.SetParsedDicomFile(dicom);