Project

General

Profile

Bug #370

Updated by Marco Eichelberg almost 9 years ago

*Status:* A large part of 'DcmItem::checkAndUpdateVR()' implemented 

 See http://forum.dcmtk.org/viewtopic.php?p=4984 

 The rule in DICOM part 5 section 8.3 is that WaveformData, when read in implicit VR 
 shall be converted to OB iff WaveformBitsAllocated==8 and OW otherwise. 
 We currently always convert to OB, which is wrong. 

 ==== Comments (MO?) ==== 

 This is about writing data in Explicit VR, which will be either created in RAM or be read from Implicit VR. 

 This could also concern LUT Data (general checks, to what extent other tags that can have other VRs are affected) 

 List of "polymorphous attributes" from DICOM 2009 that can take on various data types: 

 * //OB/OW Value Representation// 
 * (50xx,200C) Audio Sample Data AudioSampleData OW or OB 1 RET -> **retired** 
 * (50xx,3000) Curve Data CurveData OW or OB 1 RET -> **done** 
 * (5400,0110) Channel Minimum Value ChannelMinimumValue OB or OW 1 
 * (5400,0112) Channel Maximum Value ChannelMaximumValue OB or OW 1 
 * (5400,100A) Waveform Padding Value WaveformPaddingValue OB or OW 1 -> **done** 
 * (5400,1010) Waveform Data WaveformData OB or OW 1 -> **done** 
 * (60xx,3000) Overlay Data OverlayData OB or OW 1 -> **done** 
 * (7FE0,0010) Pixel Data PixelData OW or OB 1 -> **done** 
 * (7Fxx,0010) Variable Pixel Data VariablePixelData OW or OB 1 RET -> **retired** 
 * // 
 * Other Value Representations// 
 * (0028,0071) Perimeter Value PerimeterValue US or SS 1 RET -> **retired** 
 * (0028,0104) Smallest Valid Pixel Value SmallestValidPixelValue US or SS 1 RET -> **retired** 
 * (0028,0105) Largest Valid Pixel Value LargestValidPixelValue US or SS 1 RET -> **retired** 
 * (0028,0106) Smallest Image Pixel Value SmallestImagePixelValue US or SS 1 
 * (0028,0107) Largest Image Pixel Value LargestImagePixelValue US or SS 1 
 * (0028,0108) Smallest Pixel Value in Series SmallestPixelValueInSeries US or SS 1 
 * (0028,0109) Largest Pixel Value in Series LargestPixelValueInSeries US or SS 1 
 * (0028,0110) Smallest Image Pixel Value in Plane SmallestImagePixelValueInPlane US or SS 1 RET -> **retired** 
 * (0028,0111) Largest Image Pixel Value in Plane LargestImagePixelValueInPl US or SS 1 RET -> **retired** 
 * (0028,0120) Pixel Padding Value PixelPaddingValue US or SS 1 -> **done** 
 * (0028,0121) Pixel Padding Range Limit PixelPaddingRangeLimit US or SS 1 -> **done** 
 * (0028,1100) Gray Lookup Table Descriptor GrayLookupTableDescriptor US or SS 3 RET -> **retired** 
 * (0028,1101) Red Palette Color Lookup Table Descriptor RedPaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 * (0028,1102) Green Palette Color Lookup Table DescriptorGreenPaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 * (0028,1103) Blue Palette Color Lookup Table DescriptorBluePaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 * (0028,1111) Large Red Palette Color Lookup TableDescriptorLargeRedPaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 * (0028,1112) Large Green Palette Color Lookup Table Descriptor LargeGreenPaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 * (0028,1113) Large Blue Palette Color Lookup Table Descriptor LargeBluePaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 * (0028,1200) Gray Lookup Table Data GrayLookupTableData US or SS or OW 1-n 1 RET -> **retired** 
 * (0028,3002) LUT Descriptor LUTDescriptor US or SS 3 
 * (0028,3006) LUT Data LUTData US <del>or SS</del> or OW 1-n/1 
 * (0040,9211) Real World Value Last Value Mapped RealWorldValueLastValueMapped US or SS 1 
 * (0040,9216) Real World Value First Value Mapped RealWorldValueFirstValueMapped US or SS 1 
 * (0060,3004) Histogram First Bin Value HistogramFirstBinValue US or SS 1 -> **done** 
 * (0060,3006) Histogram Last Bin Value HistogramLastBinValue US or SS 1 -> **done** 

 > Status: größtenteils in ''DcmItem::checkAndUpdateVR()'' umgesetzt   
 > See http://forum.dcmtk.org/viewtopic.php?p=4984 
 >  
 > The rule in DICOM part 5 section 8.3 is that WaveformData, when read in implicit VR 
 > shall be converted to OB iff WaveformBitsAllocated==8 and OW otherwise. 
 > We currently always convert to OB, which is wrong. 
 >  
 > ==== Kommentar (MO?) ==== 
 >  
 > Hier geht es um das Schreiben von Daten in Explicit VR, die entweder im Speicher 
 > aufgebaut wurden oder die in Implicit VR gelesen wurden. 
 >  
 > Das betrifft möglicherweise auch LUT Data (generell prüfen, inwieweit andere Tags, 
 > die mehrere VRs haben können, betroffen sind) 
 >  
 > Liste von "polymorphen" Attributen, die unterschiedliche Datentypen annehmen können, basierend auf DICOM 2009: 
 >  
 > //OB/OW Value Representation// 
 >  
 > * (50xx,200C) Audio Sample Data AudioSampleData OW or OB 1 RET -> **retired** 
 > * (50xx,3000) Curve Data CurveData OW or OB 1 RET -> **done** 
 > * (5400,0110) Channel Minimum Value ChannelMinimumValue OB or OW 1 
 > * (5400,0112) Channel Maximum Value ChannelMaximumValue OB or OW 1 
 > * (5400,100A) Waveform Padding Value WaveformPaddingValue OB or OW 1 -> **done** 
 > * (5400,1010) Waveform Data WaveformData OB or OW 1 -> **done** 
 > * (60xx,3000) Overlay Data OverlayData OB or OW 1 -> **done** 
 > * (7FE0,0010) Pixel Data PixelData OW or OB 1 -> **done** 
 > * (7Fxx,0010) Variable Pixel Data VariablePixelData OW or OB 1 RET -> **retired** 
 > // 
 > Other Value Representations// 
 >  
 > * (0028,0071) Perimeter Value PerimeterValue US or SS 1 RET -> **retired** 
 > * (0028,0104) Smallest Valid Pixel Value SmallestValidPixelValue US or SS 1 RET -> **retired** 
 > * (0028,0105) Largest Valid Pixel Value LargestValidPixelValue US or SS 1 RET -> **retired** 
 > * (0028,0106) Smallest Image Pixel Value SmallestImagePixelValue US or SS 1 
 > * (0028,0107) Largest Image Pixel Value LargestImagePixelValue US or SS 1 
 > * (0028,0108) Smallest Pixel Value in Series SmallestPixelValueInSeries US or SS 1 
 > * (0028,0109) Largest Pixel Value in Series LargestPixelValueInSeries US or SS 1 
 > * (0028,0110) Smallest Image Pixel Value in Plane SmallestImagePixelValueInPlane US or SS 1 RET -> **retired** 
 > * (0028,0111) Largest Image Pixel Value in Plane LargestImagePixelValueInPl US or SS 1 RET -> **retired** 
 > * (0028,0120) Pixel Padding Value PixelPaddingValue US or SS 1 -> **done** 
 > * (0028,0121) Pixel Padding Range Limit PixelPaddingRangeLimit US or SS 1 -> **done** 
 > * (0028,1100) Gray Lookup Table Descriptor GrayLookupTableDescriptor US or SS 3 RET -> **retired** 
 > * (0028,1101) Red Palette Color Lookup Table Descriptor RedPaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 > * (0028,1102) Green Palette Color Lookup Table DescriptorGreenPaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 > * (0028,1103) Blue Palette Color Lookup Table DescriptorBluePaletteColorLookupTableDescriptor US or SS 3 -> **done** (OW according to PS 3.6) 
 > * (0028,1111) Large Red Palette Color Lookup TableDescriptorLargeRedPaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 > * (0028,1112) Large Green Palette Color Lookup Table Descriptor LargeGreenPaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 > * (0028,1113) Large Blue Palette Color Lookup Table Descriptor LargeBluePaletteColorLookupTableDescriptor US or SS 4 RET -> **retired** 
 > * (0028,1200) Gray Lookup Table Data GrayLookupTableData US or SS or OW 1-n 1 RET -> **retired** 
 > * (0028,3002) LUT Descriptor LUTDescriptor US or SS 3 
 > * (0028,3006) LUT Data LUTData US <del>or SS</del> or OW 1-n/1 
 > * (0040,9211) Real World Value Last Value Mapped RealWorldValueLastValueMapped US or SS 1 
 > * (0040,9216) Real World Value First Value Mapped RealWorldValueFirstValueMapped US or SS 1 
 > * (0060,3004) Histogram First Bin Value HistogramFirstBinValue US or SS 1 -> **done** 
 > * (0060,3006) Histogram Last Bin Value HistogramLastBinValue US or SS 1 -> **done**

Back