@@ -4954,6 +4954,18 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
4954
4954
d.dimensionIndexValues [1 ] = floor (B0Philips);
4955
4955
d.dimensionIndexValues [2 ] = inStackPositionNumber;
4956
4956
nDimIndxVal = 3 ;
4957
+ } else if ((d.manufacturer == kMANUFACTURER_PHILIPS ) && (nDimIndxVal > 1 ) && (volumeNumber > 0 ) && (inStackPositionNumber > 0 ) ) {
4958
+ isKludgeIssue809 = true ;
4959
+ for (int i = 0 ; i < nDimIndxVal; i++)
4960
+ d.dimensionIndexValues [i] = 0 ;
4961
+ int phase = d.phaseNumber ;
4962
+ if (d.phaseNumber < 0 )
4963
+ phase = 0 ; // if not set: we are saving as UINT
4964
+ d.dimensionIndexValues [0 ] = inStackPositionNumber; // dim[3] slice changes fastest
4965
+ d.dimensionIndexValues [1 ] = phase; // dim[4] successive volumes are phase
4966
+ d.dimensionIndexValues [2 ] = 0 ; // dim[5] Control/Label unused for fMRI
4967
+ d.dimensionIndexValues [3 ] = volumeNumber; // dim[6] Repeat changes slowest
4968
+ nDimIndxVal = 4 ; // slice < phase < control/label < volume
4957
4969
}
4958
4970
if ((volumeNumber == 1 ) && (acquisitionTimePhilips >= 0.0 ) && (inStackPositionNumber > 0 )) {
4959
4971
d.CSA .sliceTiming [inStackPositionNumber - 1 ] = acquisitionTimePhilips;
@@ -8145,7 +8157,7 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
8145
8157
if ((isKludgeIssue533) && (numDimensionIndexValues > 1 ))
8146
8158
printWarning (" Guessing temporal order for Philips enhanced DICOM ASL (issue 532).\n " );
8147
8159
if ((isKludgeIssue809) && (numDimensionIndexValues > 1 ))
8148
- printWarning (" Guessing temporal order for Philips enhanced DICOM DWI (issue 809).\n " );
8160
+ printWarning (" Guessing temporal order for Philips enhanced DICOM DWI and fMRI (issue 809).\n " );
8149
8161
// sort dimensions
8150
8162
if (stackPositionItem < maxVariableItem)
8151
8163
qsort (dcmDim, numberOfFrames, sizeof (struct TDCMdim ), compareTDCMdim);
0 commit comments