loadDicomfir()

in src/engine/loaders/LoaderDcmDaikon.js [48:87]


  loadDicomfir(fileName, strContent) {
    const dataFile = new DataView(strContent);
    let image = null;
    try {
      image = daikon.Series.parseImage(dataFile);
    } catch (err) {
      console.log('error parse dcm file buffer');
      return LoadResult.BAD_DICOM;
    }
    if (image === undefined || image === null) {
      return LoadResult.BAD_DICOM;
    }
    const TAG_DIRECTORY_REC = [0x0004, 0x1220];
    let ind;
    // slice location detect (to correct slices order on z)
    ind = daikon.Utils.dec2hex(TAG_DIRECTORY_REC[0]) + daikon.Utils.dec2hex(TAG_DIRECTORY_REC[1]);
    const tagDirRec = image.tags[ind];
    if (tagDirRec !== undefined) {
      const numEntries = tagDirRec.value.length;
      for (let k = 0; k < numEntries; k++) {
        let dirEntry = tagDirRec.value[k];
        if (dirEntry.element === 57344 && dirEntry.group === 65534) {
          const numSub = dirEntry.value.length;
          for (let s = 0; s < numSub; s++) {
            let elemSub = dirEntry.value[s];
            if (elemSub.element === 5168 && elemSub.group === 4) {
              //const str = elemSub.value[0];
              //console.log(`elem sub val = ${str}`);
            }
            if (elemSub.element === 5376 && elemSub.group === 4) {
              const fold = elemSub.value[0];
              const fname = elemSub.value[1];
              console.log(`image nm = ${fold} / ${fname}`);
            }
          } // for s, all sub elemenst
        } // if entry with patient and image information
      } // for k all entries in dir
    } // if dir rec found
    return LoadResult.SUCCESS;
  }