Protocol Data Block (compressed) (0025,101B) OB 1

265 views
Skip to first unread message

Mathieu Malaterre

unread,
Jun 16, 2008, 8:04:18 AM6/16/08
to
Hi,

does anyone knows what's in :

Protocol Data Block (compressed) (0025,101B) OB 1

This can be found in:

Private Creator Identification (GEMS_SERS_01)

from
http://www.gehealthcare.no/usen/interoperability/dicom/docs/5124914r2.pdf
or
http://www.gehealthcare.com/usen/interoperability/dicom/docs/DOC0225604r2.pdf

Thanks!
-Mathieu

Mathieu Malaterre

unread,
Jun 16, 2008, 8:06:18 AM6/16/08
to
On Jun 16, 2:04 pm, Mathieu Malaterre <mathieu.malate...@gmail.com>
wrote:

> Hi,
>
> does anyone knows what's in :
>
> Protocol Data Block (compressed) (0025,101B) OB 1
>
> This can be found in:
>
> Private Creator Identification (GEMS_SERS_01)
>
> fromhttp://www.gehealthcare.no/usen/interoperability/dicom/docs/5124914r2...
> orhttp://www.gehealthcare.com/usen/interoperability/dicom/docs/DOC02256...
>

ooops copy/paste problem, here is the correct link:

http://www.gehealthcare.com/usen/interoperability/dicom/docs/5124914r2.pdf

Harry Solomon

unread,
Jul 8, 2008, 5:34:45 PM7/8/08
to
Hi, Mathieu -

Protocol Data Block (compressed) (0025,101B) contains a compressed
version of the MR equipment settings for the protocol used to acquire
the images. GE does not publish further details of the content of the
OB value.

Harry Solomon
Interoperability Architect
GE Healthcare


Mathieu Malaterre

unread,
Jul 21, 2008, 10:28:32 AM7/21/08
to
On Jul 8, 11:34 pm, Harry Solomon <harrysolom...@gmail.com> wrote:
> Hi, Mathieu -
>
> ProtocolDataBlock(compressed) (0025,101B) contains a compressed
> version of the MR equipment settings for theprotocolused to acquire

> the images. GE does not publish further details of the content of the
> OB value.


I knew the compression had to be ultra simple (why reinvent the wheel,
esp in the compression world).

Steps:

$ gdcmraw -i input.dcm -o output.raw -t 0025,101b

$ dd bs=4 skip=1 if=output.raw of=foo

$ file foo
foo: gzip compressed data, was "Ex421Ser8Scan1", from Unix

$ gzip -dc foo
ENTRY "Head First"
POSITION "Supine"
COIL "8HRBRAIN"
PLANE "OBLIQUE"
SEDESCFLAG "1"
SEDESC "Diffusion"
IMODE "2D"
PSEQ "Spin Echo"
IOPT "EPI, DIFF"
PLUG "8"
MONSAR "y"
FILTCHOICE "None"
BWRT "-1"
TAG_SPACE "7"
TAG_TYPE "None"
USERCV0 "1.00"
USERCV6 "0.00"
USERCV_MASK "65"
BVALUE "1000"
OPTIMIZED_TE "Yes"
DFAX "7"
DIFNUMDIRS "3"
DIFNUMT2 "1"
DUALSPINECHO "1"
REOPT "1"
TE "Minimum"
NECHO "1"
TR "8000.0"
NUMSHOTS "1"
AUTOTRGTYPE "0"
PDGMSTR "None"
AUTOTRIGWIN "0"
FOV "24"
SLTHICK "5.0"
SPC "0.0"
GRXOPT "0"
SLOC1 "R5.9"
SLOC2 "A34.1"
SLOC3 "I9.8"
ELOC1 "R9.7"
ELOC2 "A28.8"
ELOC3 "S105.0"
NOSLC "24"
MATRIXX "128"
MATRIXY "128"
SWAPPF "R/L"
NEX "2.00"
CONTRAST "No"
CONTAM "10 "
TBLDELTA "0.00"
PHASEFOV "1.00"
AUTOSHIM "Yes"
PHASECORR "Yes"
AUTOCF "Water"
PAUSEDELMASKACQ "1"
AUTOSUBOPTIONS "0"
AUTOSCIC "0"
TOTALNOSTATION "0"
STATION "0"


-Mathieu

Mathieu Malaterre

unread,
Jul 21, 2008, 11:27:20 AM7/21/08
to
On Jul 21, 4:28 pm, Mathieu Malaterre <mathieu.malate...@gmail.com>
wrote:

Added to GDCM SVN:

$ wget http://server.oersted.dtu.dk/personal/jw/jwpublic/courses/31540/mri/second_set/dicom/t2/b17.dcm

$ make DumpProtocolDataBlock && ./bin/DumpProtocolDataBlock /tmp/
b17.dcm
750,754


ENTRY "Head First"
POSITION "Supine"

ANREF "NA"
COIL "HEAD"
PLANE "OBLIQUE"
SEDESCFLAG "1"
SEDESC "AX FSE T2"
IMODE "2D"
PSEQ "FSE-XL"
IOPT "FC, EDR, TRF, Fast"
PLUG "22"
FILTCHOICE "None"
BWRT "-1"
TRICKSIMG "1"
TAG_SPACE "7"
TAG_TYPE "None"
USERCV0 "0.00"
USERCV6 "0.00"
USERCV7 "0.00"
USERCV21 "0.00"
USERCV_MASK "2097344"
TE "102.0"
NECHO "1"
TR "5720.0"
NUMACQS "1"
ETL "17"
BPMMODE "0"
AUTOTRGTYPE "0"
PSDTRIG "0"
SLICEORDER "1"
VIEWORDER "1"
TRREST "0"
TRACTIVE "0"
SLICEASSET "1.00"
PHASEASSET "1.00"
SEPSERIES "0"
AUTOTRIGWIN "0"
FOV "24.0"
SLTHICK "2.0"
SPC "2.0"
GRXOPT "0"
SLOC1 "L11.8"
SLOC2 "P29.9"
SLOC3 "I50.0"
ELOC1 "L11.6"
ELOC2 "P29.4"
ELOC3 "S53.9"
NOSLC "27"
SL3PLANE "0"
SL3PLANE1 "0"
SL3PLANE2 "0"
SL3PLANE3 "0"
SPCPERPLANE1 "0.0"
SPCPERPLANE2 "0.0"
SPCPERPLANE3 "0.0"
MATRIXX "448"
MATRIXY "224"
SWAPPF "A/P"
NEX "4.00"
CONTRAST "No"
CONTAM "Yes "
TBLDELTA "0.00"
PHASEFOV "0.75"
RBW "31.25"
AUTOSHIM "Auto"
PHASECORR "Yes"
FLDIR "Freq"
NUMACCELFACTOR "1.00"
PAUSEDELMASKACQ "1"
NOTES ".pn/_3"
GRIP_NUMSLGROUPS "1"
GRIP_SLGROUP1 "-11.703952 -29.677423 1.949659 0.002380 0.004775
0.999985 0.999997 0.000175 -0.002380 0.000186 -0.999988 0.004775 27
0.000000 1 0 0"
GRIP_SATGROUP1 "0"
GRIP_SATGROUP2 "0"
GRIP_SATGROUP3 "0"
GRIP_SATGROUP4 "0"
GRIP_SATGROUP5 "0"
GRIP_SATGROUP6 "0"
GRIP_TRACKER "0"
GRIP_SPECTRO "0"
GRIP_NUMPSCVOL "0"
GRIP_PSCVOL1 "0"
GRIP_PSCVOL2 "0"
GRIP_PSCVOLFOV "0.000000"
GRIP_PSCVOLTHICK "0.000000"
AUTOSUBOPTIONS "0"
AUTOSCIC "0"
AUTOVOICE "0"
PRESETDELAY "0.0"
MASKPHASE "0"
MASKPAUSE "0"
TOTALNOSTATION "0"
STATION "0"

Mathieu Malaterre

unread,
Jun 2, 2015, 6:24:10 AM6/2/15
to
Just FYI, newer machine (DISCOVERY MR750 / 24\MX\MR Software release:DV24.0_R01_1344.a) are now storing an XML file within the Protocolo Data Block (compressed). They now looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<monarch version="1.2">
<object classname= "T2PROP.xml">
<child classname= "gemrimxhardware.selection.ScanningSelectedHardware" componentname="ScanningSelectedHardware">
<item index="1" paramname="CoilGroup" value="HD 8Ch High Res Brain Array by Invivo" type="java.lang.String">
</item>
<item index="2" paramname="GradientMode" value="NA" type="java.lang.String">
</item>
<item index="3" paramname="TableOffset" value="0.0" type="java.lang.String">
</item>
<item index="4" paramname="CoilRegion" value="1" type="java.lang.String">
</item>
<item index="5" paramname="RFCoil" value="8HRBRAIN" type="java.lang.String">
</item>
<item index="6" paramname="AutoCoil" value="false" type="java.lang.String">
</item>
<item index="7" paramname="RFGECoilName" value="C-GE_HDx 8HRBrain" type="java.lang.String">
</item>
<item index="8" paramname="HardwaresSelected" value="coil=8HRBRAIN, mode=NA, table=0.0mm" type="java.lang.String">
</item>
</child>
<child classname= "gemrimxapp.host.t2prop.T2PROPFactoryWithCommands" componentname="T2PROPFactoryWithCommands">
<item index="1" paramname="FLAG_TRF" value="true" type="java.lang.Boolean">
</item>
<item index="2" paramname="EffectiveBladeWidth" value="37" type="java.lang.Integer">
</item>
<item index="3" paramname="MotionReduction" value="true" type="java.lang.Boolean">
</item>
<item index="4" paramname="MotionRotationReduction" value="true" type="java.lang.Boolean">
</item>
<item index="5" paramname="AppDualDriveUIMode" value="Single" type="gemriutil.util.DualDriveMode">
</item>
<item index="6" paramname="numOverScans" value="0" type="java.lang.Integer">
</item>
<item index="7" paramname="NumCardiacCycles" value="2" type="java.lang.Integer">
</item>
<item index="8" paramname="RotationThreshold" value="2.0" type="java.lang.Float">
</item>
<item index="9" paramname="AnnefactFix" value="false" type="java.lang.Boolean">
</item>
<item index="10" paramname="NumberOfAcqsEnable" value="true" type="java.lang.Boolean">
</item>
<item index="11" paramname="UpdateRespRate" value="true" type="java.lang.Boolean">
</item>
<item index="12" paramname="Autolock" value="false" type="java.lang.Boolean">
</item>
<item index="13" paramname="FLAG_FR" value="false" type="java.lang.Boolean">
</item>
<item index="14" paramname="ShiftOversample" value="1" type="java.lang.Integer">
</item>
<item index="15" paramname="Scic" value="true" type="java.lang.Boolean">
</item>
<item index="16" paramname="MotionShiftReduction" value="true" type="java.lang.Boolean">
</item>
<item index="17" paramname="RepetitionTime" value="5.691s" type="gemriutil.util.MxTime">
</item>
<item index="18" paramname="YResolution" value="56" type="java.lang.Integer">
</item>
<item index="19" paramname="NpwFactor" value="1.5" type="java.lang.Float">
</item>
<item index="20" paramname="ARCOuterAcceleration" value="2" type="java.lang.Integer">
</item>
<item index="21" paramname="PureEnable" value="false" type="java.lang.Boolean">
</item>
<item index="22" paramname="CustomReconKeepOutput" value="false" type="java.lang.Boolean">
</item>
<item index="23" paramname="ShiftThreshold" value="0.01" type="java.lang.Float">
</item>
<item index="24" paramname="SliceThickness" value="5.0mm" type="gemriutil.util.MxLength">
</item>
<item index="25" paramname="ReceiverBandWidth1" value="83.333KHz" type="gemriutil.util.MxBandWidth">
</item>
<item index="26" paramname="HeartRateVariability" value="5" type="java.lang.Integer">
</item>
<item index="27" paramname="EchoTime" value="94.592ms" type="gemriutil.util.MxTime">
</item>
<item index="28" paramname="CenterFreqMethod" value="Peak" type="java.lang.String">
</item>
<item index="29" paramname="CalmSlewRate" value="4.0" type="java.lang.Float">
</item>
<item index="30" paramname="CalmEnable" value="false" type="java.lang.Boolean">
</item>
<item index="31" paramname="RespiratoryRate" value="20" type="java.lang.Integer">
</item>
<item index="32" paramname="SeriesDescription" value="OSag T2 Propeller" type="java.lang.String">
</item>
<item index="33" paramname="XResolution" value="352" type="java.lang.Integer">
</item>
<item index="34" paramname="RFRefocusFlip" value="142.0Degrees" type="gemriutil.util.MxAngle">
</item>
<item index="35" paramname="RFCoil" value="8HRBRAIN" type="java.lang.String">
</item>
<item index="36" paramname="ScanTime" value="Auto" type="gemriutil.util.MxTime">
</item>
<item index="37" paramname="RFTransmit" value="10.0dB" type="gemriutil.util.TransmitData">
</item>
<item index="38" paramname="ImageMode" value="2D" type="java.lang.String">
</item>
<item index="39" paramname="EchoSpacingOptimization" value="true" type="java.lang.Boolean">
</item>
<item index="40" paramname="NumberOfAcqs" value="1" type="java.lang.Integer">
</item>
<item index="41" paramname="CustomReconAutoInstall" value="true" type="java.lang.Boolean">
</item>
<item index="42" paramname="NumberOfSlices" value="20" type="java.lang.Integer">
</item>
<item index="43" paramname="NoPhaseEncode" value="false" type="java.lang.Boolean">
</item>
<item index="44" paramname="EffNumAverages" value="1.5" type="java.lang.Float">
</item>
<item index="45" paramname="InversionTimeEnable" value="false" type="java.lang.Boolean">
</item>
<item index="46" paramname="FreqFOV" value="24.0cm" type="gemriutil.util.MxLength">
</item>
<item index="47" paramname="SliceSpacing" value="1.0mm" type="gemriutil.util.MxLength">
</item>
<item index="48" paramname="RxPlane" value="Oblique" type="java.lang.String">
</item>
<item index="49" paramname="NumberOfChannels" value="8" type="java.lang.Integer">
</item>
<item index="50" paramname="AutoTRRequestedNumberofAcquistions" value="1" type="java.lang.Integer">
</item>
<item index="51" paramname="FlipAngle" value="142.0Degrees" type="gemriutil.util.MxAngle">
</item>
<item index="52" paramname="ChemSat" value="NONE" type="gemriutil.util.ChemSatMode">
</item>
<item index="53" paramname="DisableGating" value="true" type="java.lang.Boolean">
</item>
<item index="54" paramname="HardwaresSelected" value="coil=8HRBRAIN" type="java.lang.String">
</item>
<item index="55" paramname="MaxSlicesPerAcq" value="20" type="java.lang.Integer">
</item>
<item index="56" paramname="PhaseFOV" value="24.0cm" type="gemriutil.util.MxLength">
</item>
<item index="57" paramname="CenterFrequency" value="6250000.0Hz" type="gemriutil.util.CenterFrequency">
</item>
<item index="58" paramname="AnalogReceiverGain" value="-6.0dB" type="gemriutil.util.AnalogRecvGain">
</item>
<item index="59" paramname="DigitalReceiverGain" value="0.0dB" type="gemriutil.util.DigitalRecvGain">
</item>
<item index="60" paramname="FNEX" value="false" type="java.lang.Boolean">
</item>
<item index="61" paramname="TotalNumberOfSlices" value="20" type="java.lang.Integer">
</item>
<item index="62" paramname="SlicesPerAcq" value="20" type="java.lang.Integer">
</item>
<item index="63" paramname="NetAcceleration" value="1.75" type="java.lang.Float">
</item>
<item index="64" paramname="EffectiveResolution" value="0.682mm" type="gemriutil.util.MxLength">
</item>
<item index="65" paramname="CorrelationThreshold" value="0.5" type="java.lang.Float">
</item>
<item index="66" paramname="PrescanActiveChannel" value="1" type="java.lang.Integer">
</item>
<item index="67" paramname="EchoTrainLength" value="32" type="java.lang.Integer">
</item>
<item index="68" paramname="ARCAdditionalACSViews" value="4" type="java.lang.Integer">
</item>
<item index="69" paramname="NPW" value="true" type="java.lang.Boolean">
</item>
<item index="70" paramname="AccelerationEnable" value="true" type="java.lang.Boolean">
</item>
<item index="71" paramname="AcousticReductionMode" value="NONE" type="gemriutil.util.AcousticReductionTypes">
</item>
<item index="72" paramname="RotationOversample" value="1" type="java.lang.Integer">
</item>
<item index="73" paramname="FrameRate" value="2.1s" type="gemriutil.util.MxTime">
</item>
</child>
<child classname= "gemrimxframework.geom.geometryfactory.Explicit2DHelper" componentname="Explicit2DHelper">
<item index="1" paramname="center0" value="5.202384948730469 20.0 12.8119535446167" type="java.lang.String">
</item>
<item index="2" paramname="normal0" value="-0.9967729160804537 0.0 -0.08027299526284648" type="java.lang.String">
</item>
<item index="3" paramname="startNum0" value="1" type="java.lang.Integer">
</item>
<item index="4" paramname="numslice0" value="20" type="java.lang.Integer">
</item>
<item index="5" paramname="type0" value="0" type="java.lang.Integer">
</item>
<item index="6" paramname="normal10" value="0.08027299526284648 0.0 -0.9967729160804537" type="java.lang.String">
</item>
<item index="7" paramname="explicitData" value="Yes" type="java.lang.String">
</item>
<item index="8" paramname="normal20" value="0.0 -1.0 0.0" type="java.lang.String">
</item>
<item index="9" paramname="groups" value="1" type="java.lang.Integer">
</item>
</child>
<child classname= "gemrimxframework.geom.geometryfactory.TwoDGrxServiceProvider" componentname="TwoDGrxServiceProvider">
<item index="1" paramname="grxData" value="No" type="java.lang.String">
</item>
</child>
</object>
</monarch>
Reply all
Reply to author
Forward
0 new messages