@@ -245,13 +245,10 @@ class DICOMSeries extends DICOMEntity {
245245 const m = Number ( meta . RescaleSlope )
246246 const hasIntercept = ! Number . isNaN ( b ) && b !== 0
247247 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+ }
255252 }
256253
257254 return {
@@ -348,11 +345,10 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
348345 const dataSet = dicomParser . parseDicom ( byteArray )
349346
350347 // Read metadata (recursive)
351- async function readTags ( dataSet ) {
348+ function readTags ( dataSet ) {
352349 const metaData = { }
353350
354- // Read value for a single tag
355- async function readTag ( tag ) {
351+ for ( const tag in dataSet . elements ) {
356352 const tagGroup = tag . substring ( 1 , 5 )
357353 const tagElement = tag . substring ( 5 , 9 )
358354 const tagKey = ( "(" + tagGroup + "," + tagElement + ")" ) . toUpperCase ( ) ;
@@ -362,12 +358,12 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
362358
363359 if ( element . items ) {
364360 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
371367 }
372368
373369 let value = undefined
@@ -425,7 +421,7 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
425421 } else if ( element . length === 4 ) {
426422 value = dataSet . uint32 ( tag )
427423 } else {
428- return
424+ continue
429425 }
430426 break
431427 default : //string
@@ -437,15 +433,9 @@ async function parseDicomFiles(fileList, ignoreFailedFiles = false) {
437433 metaData [ tagName ] = value
438434 }
439435
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 )
446436 return metaData
447437 }
448- const metaData = await readTags ( dataSet )
438+ const metaData = readTags ( dataSet )
449439
450440 // Organize metadata
451441 const patientId = metaData [ DICOMPatient . primaryTag ]
0 commit comments