diff --git a/console/nii_dicom.cpp b/console/nii_dicom.cpp index c236576c..f42f5fd1 100644 --- a/console/nii_dicom.cpp +++ b/console/nii_dicom.cpp @@ -4477,6 +4477,7 @@ const uint32_t kEffectiveTE = 0x0018 + uint32_t(0x9082 << 16); //FD #define kLastScanLoc 0x0019 + (0x101B << 16) #define kBandwidthPerPixelPhaseEncode 0x0019 + (0x1028 << 16) //FD #define kSliceTimeSiemens 0x0019 + (0x1029 << 16) ///FD +#define kAcquisitionDurationGE 0x0019 + (0x105a << 16) //FL Acquisition Duration in microsecond, Duration of Scan (series) #define kPulseSequenceNameGE 0x0019 + (0x109C << 16) //LO 'epiRT' or 'epi' #define kInternalPulseSequenceNameGE 0x0019 + (0x109E << 16) //LO 'EPI' or 'EPI2' #define kRawDataRunNumberGE 0x0019 + (0x10A2 << 16)//SL @@ -5825,6 +5826,8 @@ const uint32_t kEffectiveTE = 0x0018 + uint32_t(0x9082 << 16); //FD d.accelFactPE = accelFactPE; break; case kAcquisitionDuration: + if (!isSameFloatGE(d.acquisitionDuration, 0.0)) + break; //issue 808: give precedence to more precise measures, e.g kAcquisitionDurationGE (0019,105a) //n.b. used differently by different vendors https://github.com/rordenlab/dcm2niix/issues/225 d.acquisitionDuration = dcmFloatDouble(lLength, &buffer[lPos], d.isLittleEndian); break; @@ -5838,6 +5841,12 @@ const uint32_t kEffectiveTE = 0x0018 + uint32_t(0x9082 << 16); //FD printf("%s\t FrameAcquisitionDateTime %0.4f \n", dateTime, dTime); //d.triggerDelayTime = dTime; }*/ + case kAcquisitionDurationGE: // issue 808 + if (d.manufacturer != kMANUFACTURER_GE) + break; + d.acquisitionDuration = dcmFloat(lLength, &buffer[lPos], d.isLittleEndian); + d.acquisitionDuration /= 1000000.0; //convert microsec to sec + break; case kDiffusionDirectionality: { // 0018, 9075 set_directionality0018_9075(&volDiffusion, (&buffer[lPos])); if ((d.manufacturer != kMANUFACTURER_PHILIPS) || (lLength < 10)) diff --git a/console/nii_dicom.h b/console/nii_dicom.h index 830c7576..6d3546df 100644 --- a/console/nii_dicom.h +++ b/console/nii_dicom.h @@ -50,7 +50,7 @@ extern "C" { #define kCPUsuf " " //unknown CPU #endif -#define kDCMdate "v1.0.20240325" +#define kDCMdate "v1.0.20240327" #define kDCMvers kDCMdate " " kJP2suf kLSsuf kCCsuf kCPUsuf static const int kMaxEPI3D = 1024; //maximum number of EPI images in Siemens Mosaic