comparison Framework/Inputs/DicomPyramidInstance.cpp @ 219:ef3f8c5126a4

Don't display the thumbnail/overview instances in the Web viewer
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 12 Jan 2021 17:09:57 +0100
parents 20bc074ec19a
children 443f219a68fd
comparison
equal deleted inserted replaced
218:c5a8b46c4cba 219:ef3f8c5126a4
42 static const Orthanc::DicomTag DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE(0x5200, 0x9230); 42 static const Orthanc::DicomTag DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE(0x5200, 0x9230);
43 static const Orthanc::DicomTag DICOM_TAG_PLANE_POSITION_SLIDE_SEQUENCE(0x0048, 0x021a); 43 static const Orthanc::DicomTag DICOM_TAG_PLANE_POSITION_SLIDE_SEQUENCE(0x0048, 0x021a);
44 static const Orthanc::DicomTag DICOM_TAG_ROW_POSITION_IN_TOTAL_IMAGE_PIXEL_MATRIX(0x0048, 0x021f); 44 static const Orthanc::DicomTag DICOM_TAG_ROW_POSITION_IN_TOTAL_IMAGE_PIXEL_MATRIX(0x0048, 0x021f);
45 static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_COLUMNS(0x0048, 0x0006); 45 static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_COLUMNS(0x0048, 0x0006);
46 static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS(0x0048, 0x0007); 46 static const Orthanc::DicomTag DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS(0x0048, 0x0007);
47 static const Orthanc::DicomTag DICOM_TAG_IMAGE_TYPE(0x0008, 0x0008);
47 48
48 static ImageCompression DetectImageCompression(OrthancStone::IOrthancConnection& orthanc, 49 static ImageCompression DetectImageCompression(OrthancStone::IOrthancConnection& orthanc,
49 const std::string& instanceId) 50 const std::string& instanceId)
50 { 51 {
51 using namespace OrthancStone; 52 using namespace OrthancStone;
170 !reader.GetUnsignedIntegerValue(totalHeight_, OrthancStone::DicomPath(DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS)) || 171 !reader.GetUnsignedIntegerValue(totalHeight_, OrthancStone::DicomPath(DICOM_TAG_TOTAL_PIXEL_MATRIX_ROWS)) ||
171 !reader.GetUnsignedIntegerValue(tmp, OrthancStone::DicomPath(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES))) 172 !reader.GetUnsignedIntegerValue(tmp, OrthancStone::DicomPath(Orthanc::DICOM_TAG_NUMBER_OF_FRAMES)))
172 { 173 {
173 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat); 174 throw Orthanc::OrthancException(Orthanc::ErrorCode_BadFileFormat);
174 } 175 }
176
177 imageType_ = reader.GetStringValue(OrthancStone::DicomPath(DICOM_TAG_IMAGE_TYPE), "");
175 178
176 size_t countFrames; 179 size_t countFrames;
177 if (reader.GetDataset().GetSequenceSize(countFrames, OrthancStone::DicomPath(DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE))) 180 if (reader.GetDataset().GetSequenceSize(countFrames, OrthancStone::DicomPath(DICOM_TAG_PER_FRAME_FUNCTIONAL_GROUPS_SEQUENCE)))
178 { 181 {
179 if (countFrames != tmp) 182 if (countFrames != tmp)
269 try 272 try
270 { 273 {
271 // Try and deserialized the cached information about this instance 274 // Try and deserialized the cached information about this instance
272 std::string serialized; 275 std::string serialized;
273 orthanc.RestApiGet(serialized, "/instances/" + instanceId + "/metadata/" + SERIALIZED_METADATA); 276 orthanc.RestApiGet(serialized, "/instances/" + instanceId + "/metadata/" + SERIALIZED_METADATA);
274 std::cout << serialized;
275 Deserialize(serialized); 277 Deserialize(serialized);
276 return; // Success 278 return; // Success
277 } 279 }
278 catch (Orthanc::OrthancException&) 280 catch (Orthanc::OrthancException&)
279 { 281 {
316 static const char* const TILE_WIDTH = "TileWidth"; 318 static const char* const TILE_WIDTH = "TileWidth";
317 static const char* const TILE_HEIGHT = "TileHeight"; 319 static const char* const TILE_HEIGHT = "TileHeight";
318 static const char* const TOTAL_WIDTH = "TotalWidth"; 320 static const char* const TOTAL_WIDTH = "TotalWidth";
319 static const char* const TOTAL_HEIGHT = "TotalHeight"; 321 static const char* const TOTAL_HEIGHT = "TotalHeight";
320 static const char* const PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation"; 322 static const char* const PHOTOMETRIC_INTERPRETATION = "PhotometricInterpretation";
323 static const char* const IMAGE_TYPE = "ImageType";
321 324
322 325
323 void DicomPyramidInstance::Serialize(std::string& result) const 326 void DicomPyramidInstance::Serialize(std::string& result) const
324 { 327 {
325 Json::Value frames = Json::arrayValue; 328 Json::Value frames = Json::arrayValue;
342 content[TILE_WIDTH] = tileWidth_; 345 content[TILE_WIDTH] = tileWidth_;
343 content[TILE_HEIGHT] = tileHeight_; 346 content[TILE_HEIGHT] = tileHeight_;
344 content[TOTAL_WIDTH] = totalWidth_; 347 content[TOTAL_WIDTH] = totalWidth_;
345 content[TOTAL_HEIGHT] = totalHeight_; 348 content[TOTAL_HEIGHT] = totalHeight_;
346 content[PHOTOMETRIC_INTERPRETATION] = Orthanc::EnumerationToString(photometric_); 349 content[PHOTOMETRIC_INTERPRETATION] = Orthanc::EnumerationToString(photometric_);
350 content[IMAGE_TYPE] = imageType_;
347 351
348 Orthanc::Toolbox::WriteFastJson(result, content); 352 Orthanc::Toolbox::WriteFastJson(result, content);
349 } 353 }
350 354
351 355
369 totalWidth_ = Orthanc::SerializationToolbox::ReadUnsignedInteger(content, TOTAL_WIDTH); 373 totalWidth_ = Orthanc::SerializationToolbox::ReadUnsignedInteger(content, TOTAL_WIDTH);
370 totalHeight_ = Orthanc::SerializationToolbox::ReadUnsignedInteger(content, TOTAL_HEIGHT); 374 totalHeight_ = Orthanc::SerializationToolbox::ReadUnsignedInteger(content, TOTAL_HEIGHT);
371 375
372 std::string p = Orthanc::SerializationToolbox::ReadString(content, PHOTOMETRIC_INTERPRETATION); 376 std::string p = Orthanc::SerializationToolbox::ReadString(content, PHOTOMETRIC_INTERPRETATION);
373 photometric_ = Orthanc::StringToPhotometricInterpretation(p.c_str()); 377 photometric_ = Orthanc::StringToPhotometricInterpretation(p.c_str());
378
379 imageType_ = Orthanc::SerializationToolbox::ReadString(content, IMAGE_TYPE);
374 380
375 const Json::Value f = content[FRAMES]; 381 const Json::Value f = content[FRAMES];
376 frames_.resize(f.size()); 382 frames_.resize(f.size());
377 383
378 for (Json::Value::ArrayIndex i = 0; i < f.size(); i++) 384 for (Json::Value::ArrayIndex i = 0; i < f.size(); i++)