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);