Mercurial > hg > orthanc
comparison OrthancServer/Sources/ServerContext.cpp @ 5316:03501a258d9e
added instance metadata "PixelDataVR"
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 22 Jun 2023 08:48:38 +0200 |
parents | 5053a10da5a2 |
children | e95caa87fed8 |
comparison
equal
deleted
inserted
replaced
5315:592507a8e227 | 5316:03501a258d9e |
---|---|
550 throw OrthancException(ErrorCode_ParameterOutOfRange); | 550 throw OrthancException(ErrorCode_ParameterOutOfRange); |
551 } | 551 } |
552 | 552 |
553 bool hasPixelDataOffset; | 553 bool hasPixelDataOffset; |
554 uint64_t pixelDataOffset; | 554 uint64_t pixelDataOffset; |
555 ValueRepresentation pixelDataVR; | |
555 hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset( | 556 hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset( |
556 pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize()); | 557 pixelDataOffset, pixelDataVR, dicom.GetBufferData(), dicom.GetBufferSize()); |
557 | 558 |
558 DicomTransferSyntax transferSyntax; | 559 DicomTransferSyntax transferSyntax; |
559 bool hasTransferSyntax = dicom.LookupTransferSyntax(transferSyntax); | 560 bool hasTransferSyntax = dicom.LookupTransferSyntax(transferSyntax); |
560 | 561 |
561 DicomMap summary; | 562 DicomMap summary; |
651 | 652 |
652 typedef std::map<MetadataType, std::string> InstanceMetadata; | 653 typedef std::map<MetadataType, std::string> InstanceMetadata; |
653 InstanceMetadata instanceMetadata; | 654 InstanceMetadata instanceMetadata; |
654 result.SetStatus(index_.Store( | 655 result.SetStatus(index_.Store( |
655 instanceMetadata, summary, attachments, dicom.GetMetadata(), dicom.GetOrigin(), overwrite, | 656 instanceMetadata, summary, attachments, dicom.GetMetadata(), dicom.GetOrigin(), overwrite, |
656 hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset, isReconstruct)); | 657 hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset, pixelDataVR, isReconstruct)); |
657 | 658 |
658 // Only keep the metadata for the "instance" level | 659 // Only keep the metadata for the "instance" level |
659 dicom.ClearMetadata(); | 660 dicom.ClearMetadata(); |
660 | 661 |
661 for (InstanceMetadata::const_iterator it = instanceMetadata.begin(); | 662 for (InstanceMetadata::const_iterator it = instanceMetadata.begin(); |
1092 * Orthanc <= 1.9.0, or that calls to | 1093 * Orthanc <= 1.9.0, or that calls to |
1093 * "LookupPixelDataOffset()" from earlier versions of | 1094 * "LookupPixelDataOffset()" from earlier versions of |
1094 * Orthanc have failed. Try again this precomputation now | 1095 * Orthanc have failed. Try again this precomputation now |
1095 * for future calls. | 1096 * for future calls. |
1096 **/ | 1097 **/ |
1097 if (DicomStreamReader::LookupPixelDataOffset(pixelDataOffset, dicom) && | 1098 ValueRepresentation pixelDataVR; |
1099 if (DicomStreamReader::LookupPixelDataOffset(pixelDataOffset, pixelDataVR, dicom) && | |
1098 pixelDataOffset < dicom.size()) | 1100 pixelDataOffset < dicom.size()) |
1099 { | 1101 { |
1100 index_.OverwriteMetadata(instancePublicId, MetadataType_Instance_PixelDataOffset, | 1102 index_.OverwriteMetadata(instancePublicId, MetadataType_Instance_PixelDataOffset, |
1101 boost::lexical_cast<std::string>(pixelDataOffset)); | 1103 boost::lexical_cast<std::string>(pixelDataOffset)); |
1104 index_.OverwriteMetadata(instancePublicId, MetadataType_Instance_PixelDataVR, | |
1105 EnumerationToString(pixelDataVR)); | |
1102 | 1106 |
1103 if (!area_.HasReadRange() || | 1107 if (!area_.HasReadRange() || |
1104 compressionEnabled_) | 1108 compressionEnabled_) |
1105 { | 1109 { |
1106 int64_t newRevision; | 1110 int64_t newRevision; |