Mercurial > hg > orthanc
comparison 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 |
comparison
equal
deleted
inserted
replaced
1156:8c9574576f42 | 1160:80671157d051 |
---|---|
429 static void CreateDicom(RestApiPostCall& call) | 429 static void CreateDicom(RestApiPostCall& call) |
430 { | 430 { |
431 // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World"}' | 431 // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World"}' |
432 // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World","PixelData":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUGDDcB53FulQAAAElJREFUGNNtj0sSAEEEQ1+U+185s1CtmRkblQ9CZldsKHJDk6DLGLJa6chjh0ooQmpjXMM86zPwydGEj6Ed/UGykkEM8X+p3u8/8LcOJIWLGeMAAAAASUVORK5CYII="}' | 432 // curl http://localhost:8042/tools/create-dicom -X POST -d '{"PatientName":"Hello^World","PixelData":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gUGDDcB53FulQAAAElJREFUGNNtj0sSAEEEQ1+U+185s1CtmRkblQ9CZldsKHJDk6DLGLJa6chjh0ooQmpjXMM86zPwydGEj6Ed/UGykkEM8X+p3u8/8LcOJIWLGeMAAAAASUVORK5CYII="}' |
433 | 433 |
434 Json::Value request; | 434 Json::Value replacements; |
435 if (call.ParseJsonRequest(request) && request.isObject()) | 435 if (call.ParseJsonRequest(replacements) && replacements.isObject()) |
436 { | 436 { |
437 DicomModification modification; | |
438 modification.SetLevel(ResourceType_Patient); | |
439 ParseReplacements(modification, request); | |
440 | |
441 // If no PatientID is specified, create a random one | |
442 if (!modification.IsReplaced(DICOM_TAG_PATIENT_ID)) | |
443 { | |
444 modification.Replace(DICOM_TAG_PATIENT_ID, Toolbox::GenerateUuid()); | |
445 } | |
446 | |
447 ParsedDicomFile dicom; | 437 ParsedDicomFile dicom; |
448 | 438 |
449 if (modification.IsReplaced(DICOM_TAG_PIXEL_DATA)) | 439 Json::Value::Members members = replacements.getMemberNames(); |
450 { | 440 for (size_t i = 0; i < members.size(); i++) |
451 dicom.EmbedImage(modification.GetReplacement(DICOM_TAG_PIXEL_DATA)); | 441 { |
452 modification.Keep(DICOM_TAG_PIXEL_DATA); | 442 const std::string& name = members[i]; |
453 } | 443 std::string value = replacements[name].asString(); |
454 | 444 |
455 modification.Apply(dicom); | 445 DicomTag tag = FromDcmtkBridge::ParseTag(name); |
446 if (tag == DICOM_TAG_PIXEL_DATA) | |
447 { | |
448 dicom.EmbedImage(value); | |
449 } | |
450 else | |
451 { | |
452 dicom.Replace(tag, value); | |
453 } | |
454 } | |
456 | 455 |
457 DicomInstanceToStore toStore; | 456 DicomInstanceToStore toStore; |
458 toStore.SetParsedDicomFile(dicom); | 457 toStore.SetParsedDicomFile(dicom); |
459 | 458 |
460 std::string id; | 459 std::string id; |