128 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
129 if(verbose>1) printf(
"%s()\n", __func__);
130 if(ift==NULL || ml==NULL) {
167 if(verbose>2) printf(
"imageType := %s\n", buf);
168 if(
strcasestr(buf,
"DYNAMIC")!=NULL) dynamic=1;
else dynamic=0;
171 if(verbose>1) {printf(
"dynamic := %d\n", dynamic); fflush(stdout);}
178 if(verbose>1) fprintf(stderr,
"Notice: Per-frame Functional Groups Sequence is available.\n");
186 if(verbose>1) {printf(
"reading frame and slice number\n"); fflush(stdout);}
187 unsigned short int frameNr=0;
192 if(verbose>1) printf(
"frameNr := %u\n", frameNr);
193 unsigned short int sliceNr=0;
202 if(verbose>1) printf(
"sliceNr := %u\n", sliceNr);
203 if(frameNr<=0 || sliceNr<=0) {
204 if(verbose>0) fprintf(stderr,
"Error: cannot find frame/slice number.\n");
210 short unsigned int decayCorrection=0;
215 if(verbose>2) printf(
"Decay Correction := '%s'\n", buf);
216 if(
strcasestr(buf,
"YES")!=NULL) decayCorrection=1;
219 if(verbose>1) printf(
"decayCorrection := %d\n", decayCorrection);
222 char zeroDateTime[32]; zeroDateTime[0]=(char)0;
223 if(decayCorrection==0) {
233 if(!zeroDateTime[0]) {
234 if(verbose>0) fprintf(stderr,
"Error: missing Acquisition Date and Time.\n");
238 if(verbose>4) printf(
"zeroDateTime := %s\n", zeroDateTime);
243 statusSet(status, __func__, __FILE__, __LINE__, ret);
255 fprintf(stderr,
"Error: cannot find Per Frame Functional Groups Sequence.\n");
270 if(verbose>10) printf(
" found Frame Content Sequence\n");
272 if(ml->
nr>=ml->
anr) {
282 if(verbose>0) {printf(
"cannot find Temporal Position Index.\n"); fflush(stdout);}
296 if(verbose>0) {printf(
"cannot find Slice Index.\n"); fflush(stdout);}
303 char facqDateTime[32]; facqDateTime[0]=(char)0;
305 if(!facqDateTime[0]) {
306 if(verbose>0) {printf(
"cannot find Frame Acquisition DateTime.\n"); fflush(stdout);}
309 if(verbose>20) printf(
"facqDateTime := %s\n", facqDateTime);
325 statusSet(status, __func__, __FILE__, __LINE__, ret);
333 unsigned short int frameNr=0;
346 if(verbose>1) printf(
"frameNr := %u\n", frameNr);
349 unsigned short int sliceNr=0;
357 if(verbose>1) printf(
"sliceNr := %u\n", sliceNr);
360 short unsigned int decayCorrection=0;
365 if(verbose>2) printf(
"Decay Correction := %s\n", buf);
366 if(strcasecmp(buf,
"NONE")==0) decayCorrection=0;
367 else if(strcasecmp(buf,
"START")==0) decayCorrection=1;
368 else if(strcasecmp(buf,
"ADMIN")==0) decayCorrection=2;
373 char injDateTime[32]; injDateTime[0]=(char)0;
374 if(decayCorrection==2) {
393 sprintf(injDateTime,
"%s %s", s1, s2);
397 if(injDateTime[0] && verbose>3) printf(
"injection_time := %s\n", injDateTime);
403 char seriesDateTime[32]; seriesDateTime[0]=(char)0;
412 sprintf(seriesDateTime,
"%s %s", s1, s2);
415 if(seriesDateTime[0] && verbose>3) printf(
"seriesDateTime := %s\n", seriesDateTime);
421 statusSet(status, __func__, __FILE__, __LINE__, ret);
434 unsigned short int imageIndex=0;
440 unsigned short int frameIndex, sliceIndex;
442 div_t meh=div(imageIndex-1, sliceNr);
447 if(ml->
nr>=ml->
anr) {
456 char acqDateTime[32]; acqDateTime[0]=(char)0;
462 if(!acqDateTime[0]) {
471 sprintf(acqDateTime,
"%s %s", s1, s2);
483 if(decayCorrection==2 && injDateTime[0]) {
487 }
else if(seriesDateTime[0]) {
512 statusSet(status, __func__, __FILE__, __LINE__, ret);