Mercurial > hg > orthanc
diff 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 |
line wrap: on
line diff
--- a/OrthancServer/Sources/ServerContext.cpp Mon Jun 19 19:20:53 2023 +0200 +++ b/OrthancServer/Sources/ServerContext.cpp Thu Jun 22 08:48:38 2023 +0200 @@ -552,8 +552,9 @@ bool hasPixelDataOffset; uint64_t pixelDataOffset; + ValueRepresentation pixelDataVR; hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset( - pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize()); + pixelDataOffset, pixelDataVR, dicom.GetBufferData(), dicom.GetBufferSize()); DicomTransferSyntax transferSyntax; bool hasTransferSyntax = dicom.LookupTransferSyntax(transferSyntax); @@ -653,7 +654,7 @@ InstanceMetadata instanceMetadata; result.SetStatus(index_.Store( instanceMetadata, summary, attachments, dicom.GetMetadata(), dicom.GetOrigin(), overwrite, - hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset, isReconstruct)); + hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset, pixelDataVR, isReconstruct)); // Only keep the metadata for the "instance" level dicom.ClearMetadata(); @@ -1094,11 +1095,14 @@ * Orthanc have failed. Try again this precomputation now * for future calls. **/ - if (DicomStreamReader::LookupPixelDataOffset(pixelDataOffset, dicom) && + ValueRepresentation pixelDataVR; + if (DicomStreamReader::LookupPixelDataOffset(pixelDataOffset, pixelDataVR, dicom) && pixelDataOffset < dicom.size()) { index_.OverwriteMetadata(instancePublicId, MetadataType_Instance_PixelDataOffset, boost::lexical_cast<std::string>(pixelDataOffset)); + index_.OverwriteMetadata(instancePublicId, MetadataType_Instance_PixelDataVR, + EnumerationToString(pixelDataVR)); if (!area_.HasReadRange() || compressionEnabled_)