@@ -245,13 +245,10 @@ class DICOMSeries extends DICOMEntity {
245
245
const m = Number ( meta . RescaleSlope )
246
246
const hasIntercept = ! Number . isNaN ( b ) && b !== 0
247
247
const hasSlope = ! Number . isNaN ( m ) && m !== 1
248
- let rescaleFunction
249
- if ( hasIntercept && hasSlope ) {
250
- data = data . map ( ( value ) => m * value + b )
251
- } else if ( hasIntercept ) {
252
- data = data . map ( ( value ) => value + b )
253
- } else if ( hasSlope ) {
254
- data = data . map ( ( value ) => m * value )
248
+ if ( hasIntercept || hasSlope ) {
249
+ for ( let i = 0 ; i < data . length ; i ++ ) {
250
+ data [ i ] = m * data [ i ] + b
251
+ }
255
252
}
256
253
257
254
return {
@@ -348,11 +345,10 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
348
345
const dataSet = dicomParser . parseDicom ( byteArray )
349
346
350
347
// Read metadata (recursive)
351
- async function readTags ( dataSet ) {
348
+ function readTags ( dataSet ) {
352
349
const metaData = { }
353
350
354
- // Read value for a single tag
355
- async function readTag ( tag ) {
351
+ for ( const tag in dataSet . elements ) {
356
352
const tagGroup = tag . substring ( 1 , 5 )
357
353
const tagElement = tag . substring ( 5 , 9 )
358
354
const tagKey = ( "(" + tagGroup + "," + tagElement + ")" ) . toUpperCase ( ) ;
@@ -362,12 +358,12 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
362
358
363
359
if ( element . items ) {
364
360
metaData [ tagName ] = [ ]
365
- const readTagsOfItems = element . items . map ( async ( item ) => {
366
- const itemMetaData = await readTags ( item . dataSet )
367
- metaData [ tagName ] . push ( itemMetaData )
368
- } )
369
- await Promise . all ( readTagsOfItems )
370
- return
361
+ for ( let j = 0 ; j < element . items . length ; j ++ ) {
362
+ const innerDataSet = element . items [ j ] . dataSet
363
+ const innerMetaData = readTags ( innerDataSet )
364
+ metaData [ tagName ] . push ( innerMetaData )
365
+ }
366
+ continue
371
367
}
372
368
373
369
let value = undefined
@@ -425,7 +421,7 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
425
421
} else if ( element . length === 4 ) {
426
422
value = dataSet . uint32 ( tag )
427
423
} else {
428
- return
424
+ continue
429
425
}
430
426
break
431
427
default : //string
@@ -437,15 +433,9 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
437
433
metaData [ tagName ] = value
438
434
}
439
435
440
- // Set up promises for all tags
441
- const tags = Object . keys ( dataSet . elements )
442
- const readAllTags = tags . map ( readTag )
443
-
444
- // Read all tags
445
- await Promise . all ( readAllTags )
446
436
return metaData
447
437
}
448
- const metaData = await readTags ( dataSet )
438
+ const metaData = readTags ( dataSet )
449
439
450
440
// Organize metadata
451
441
const patientId = metaData [ DICOMPatient . primaryTag ]
0 commit comments