comparison Framework/Toolbox/OrthancSlicesLoader.cpp @ 118:a4d0b6c82b29 wasm

using Orthanc::DicomMap instead of OrthancPlugins::DicomDatasetReader
author Sebastien Jodogne <s.jodogne@gmail.com>
date Mon, 02 Oct 2017 14:31:26 +0200
parents 42c05a3baee3
children ba83e38cf3ff
comparison
equal deleted inserted replaced
117:42c05a3baee3 118:a4d0b6c82b29
29 #include <Core/Images/PngReader.h> 29 #include <Core/Images/PngReader.h>
30 #include <Core/Compression/GzipCompressor.h> 30 #include <Core/Compression/GzipCompressor.h>
31 #include <Core/Logging.h> 31 #include <Core/Logging.h>
32 #include <Core/OrthancException.h> 32 #include <Core/OrthancException.h>
33 #include <Core/Toolbox.h> 33 #include <Core/Toolbox.h>
34 #include <Plugins/Samples/Common/DicomDatasetReader.h>
35 #include <Plugins/Samples/Common/FullOrthancDataset.h> 34 #include <Plugins/Samples/Common/FullOrthancDataset.h>
36 35
37 #include <boost/lexical_cast.hpp> 36 #include <boost/lexical_cast.hpp>
38 37
39 38
293 slices_.Reserve(instances.size()); 292 slices_.Reserve(instances.size());
294 293
295 for (size_t i = 0; i < instances.size(); i++) 294 for (size_t i = 0; i < instances.size(); i++)
296 { 295 {
297 OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]); 296 OrthancPlugins::FullOrthancDataset dataset(series[instances[i]]);
298 OrthancPlugins::DicomDatasetReader reader(dataset); 297
298 Orthanc::DicomMap dicom;
299 MessagingToolbox::ConvertDataset(dicom, dataset);
299 300
300 unsigned int frames; 301 unsigned int frames;
301 if (!reader.GetUnsignedIntegerValue(frames, OrthancPlugins::DICOM_TAG_NUMBER_OF_FRAMES)) 302 if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
302 { 303 {
303 frames = 1; 304 frames = 1;
304 } 305 }
305 306
306 for (unsigned int frame = 0; frame < frames; frame++) 307 for (unsigned int frame = 0; frame < frames; frame++)
307 { 308 {
308 Slice slice; 309 Slice slice;
309 if (slice.ParseOrthancFrame(dataset, instances[i], frame)) 310 if (slice.ParseOrthancFrame(dicom, instances[i], frame))
310 { 311 {
311 slices_.AddSlice(slice); 312 slices_.AddSlice(slice);
312 } 313 }
313 else 314 else
314 { 315 {
357 userCallback_.NotifyGeometryError(*this); 358 userCallback_.NotifyGeometryError(*this);
358 return; 359 return;
359 } 360 }
360 361
361 OrthancPlugins::FullOrthancDataset dataset(tags); 362 OrthancPlugins::FullOrthancDataset dataset(tags);
362 OrthancPlugins::DicomDatasetReader reader(dataset); 363
363 364 Orthanc::DicomMap dicom;
365 MessagingToolbox::ConvertDataset(dicom, dataset);
366
364 unsigned int frames; 367 unsigned int frames;
365 if (!reader.GetUnsignedIntegerValue(frames, OrthancPlugins::DICOM_TAG_NUMBER_OF_FRAMES)) 368 if (!dicom.ParseUnsignedInteger32(frames, Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))
366 { 369 {
367 frames = 1; 370 frames = 1;
368 } 371 }
369 372
370 LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)"; 373 LOG(INFO) << "Instance " << instanceId << " contains " << frames << " frame(s)";
372 state_ = State_GeometryReady; 375 state_ = State_GeometryReady;
373 376
374 for (unsigned int frame = 0; frame < frames; frame++) 377 for (unsigned int frame = 0; frame < frames; frame++)
375 { 378 {
376 Slice slice; 379 Slice slice;
377 if (slice.ParseOrthancFrame(dataset, instanceId, frame)) 380 if (slice.ParseOrthancFrame(dicom, instanceId, frame))
378 { 381 {
379 slices_.AddSlice(slice); 382 slices_.AddSlice(slice);
380 } 383 }
381 else 384 else
382 { 385 {
404 } 407 }
405 408
406 OrthancPlugins::FullOrthancDataset dataset(tags); 409 OrthancPlugins::FullOrthancDataset dataset(tags);
407 410
408 state_ = State_GeometryReady; 411 state_ = State_GeometryReady;
409 412
413 Orthanc::DicomMap dicom;
414 MessagingToolbox::ConvertDataset(dicom, dataset);
415
410 Slice slice; 416 Slice slice;
411 if (slice.ParseOrthancFrame(dataset, instanceId, frame)) 417 if (slice.ParseOrthancFrame(dicom, instanceId, frame))
412 { 418 {
413 LOG(INFO) << "Loaded instance " << instanceId; 419 LOG(INFO) << "Loaded instance " << instanceId;
414 slices_.AddSlice(slice); 420 slices_.AddSlice(slice);
415 userCallback_.NotifyGeometryReady(*this); 421 userCallback_.NotifyGeometryReady(*this);
416 } 422 }