@@ -4739,6 +4739,7 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
4739
4739
float patientPosition2[kMaxSlice2D ];
4740
4740
float patientPosition3[kMaxSlice2D ];
4741
4741
bool isKludgeIssue533 = false ;
4742
+ bool isKludgeIssue809 = false ;
4742
4743
uint32_t dimensionIndexPointer[MAX_NUMBER_OF_DIMENSIONS];
4743
4744
size_t dimensionIndexPointerCounter = 0 ;
4744
4745
int maxInStackPositionNumber = 0 ;
@@ -4933,7 +4934,6 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
4933
4934
// printf("slice %d---> 0020,9157 = %d %d %d\n", inStackPositionNumber, d.dimensionIndexValues[0], d.dimensionIndexValues[1], d.dimensionIndexValues[2]);
4934
4935
// d.aslFlags = kASL_FLAG_PHILIPS_LABEL; kASL_FLAG_PHILIPS_LABEL
4935
4936
if ((nDimIndxVal > 1 ) && (volumeNumber > 0 ) && (inStackPositionNumber > 0 ) && ((d.aslFlags == kASL_FLAG_PHILIPS_LABEL ) || (d.aslFlags == kASL_FLAG_PHILIPS_CONTROL ))) {
4936
-
4937
4937
isKludgeIssue533 = true ;
4938
4938
for (int i = 0 ; i < nDimIndxVal; i++)
4939
4939
d.dimensionIndexValues [i] = 0 ;
@@ -4946,6 +4946,14 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
4946
4946
d.dimensionIndexValues [3 ] = volumeNumber; // dim[6] Repeat changes slowest
4947
4947
nDimIndxVal = 4 ; // slice < phase < control/label < volume
4948
4948
// printf("slice %d phase %d control/label %d repeat %d\n", inStackPositionNumber, d.phaseNumber, d.aslFlags == kASL_FLAG_PHILIPS_LABEL, volumeNumber);
4949
+ } else if ((d.manufacturer == kMANUFACTURER_PHILIPS ) && (nDimIndxVal > 1 ) && (volumeNumber > 0 ) && (B0Philips >= 0 ) && (inStackPositionNumber > 0 ) && (philMRImageDiffBValueNumber > 0 )) {
4950
+ isKludgeIssue809 = true ;
4951
+ for (int i = 0 ; i < nDimIndxVal; i++)
4952
+ d.dimensionIndexValues [i] = 0 ;
4953
+ d.dimensionIndexValues [0 ] = gradientOrientationNumberPhilips;
4954
+ d.dimensionIndexValues [1 ] = floor (B0Philips);
4955
+ d.dimensionIndexValues [2 ] = inStackPositionNumber;
4956
+ nDimIndxVal = 3 ;
4949
4957
}
4950
4958
if ((volumeNumber == 1 ) && (acquisitionTimePhilips >= 0.0 ) && (inStackPositionNumber > 0 )) {
4951
4959
d.CSA .sliceTiming [inStackPositionNumber - 1 ] = acquisitionTimePhilips;
@@ -8136,6 +8144,8 @@ struct TDICOMdata readDICOMx(char *fname, struct TDCMprefs *prefs, struct TDTI4D
8136
8144
}*/
8137
8145
if ((isKludgeIssue533) && (numDimensionIndexValues > 1 ))
8138
8146
printWarning (" Guessing temporal order for Philips enhanced DICOM ASL (issue 532).\n " );
8147
+ if ((isKludgeIssue809) && (numDimensionIndexValues > 1 ))
8148
+ printWarning (" Guessing temporal order for Philips enhanced DICOM DWI (issue 809).\n " );
8139
8149
// sort dimensions
8140
8150
if (stackPositionItem < maxVariableItem)
8141
8151
qsort (dcmDim, numberOfFrames, sizeof (struct TDCMdim ), compareTDCMdim);
0 commit comments