使用HTML5从CD读取文件,与阅读本地文件相比,webkitdirectory需要更多时间

时间:2017-08-29 06:57:54

标签: javascript webkit dicom cd html5-filesystem

我有一个Web应用程序,允许用户将DICOM和非DICOM文件上传到他们的帐户。我正在使用 JavaScript HTML5 Webkitdirectory Chrome 数据表来填充所选内容UI上的文件。我面临的问题是 -

从本地计算机中选择文件时,以下代码似乎运行得非常快,并且所选文件立即在UI上填充,但是当从CD中选择相同数量的文件时,在UI上呈现需要时间。这是一个例子 -

  

对于包含20个DICOM + 2个非DICOM研究的CD,以及大约2241个图像,第一次填充列表大约需要 5-6分钟   在UI上。如果我尝试选择相同的CD文件夹,列表将填入   大约 60秒,如果它在之前已经填充过一次   会话。

     

但是,如果我使用本地计算机上的同一组文件,那么在UI上填充大致需要6到7秒。

这是我为每个DICOM文件执行的代码 -

var fileReader = new FileReader();
fileReader.onload = function(evt){
    console.log("Completed Reading");
    var arrayBuffer = fileReader.result;

    var byteArray = new Uint8Array(arrayBuffer);
    _parseDicom(byteArray);
    try {
        if (fileReader.readyState !== 2) {
            fileReader.abort();
        }
    }
    catch (err) {
        console.log('error occured: '+err);
    }
}
var blob = f.slice(0, 50000);
console.log("Starting to Read");
fileReader.readAsArrayBuffer(blob);

在分析了我提出的问题之后,

  • 我猜基本的东西是,操作系统需要时间将CD安装到内存中,因为它是一个外部驱动器。 如果我们第二次访问需要的时间更少,因为CD内容已经安装。

  • &#34;开始阅读&#34; &#34;完成阅读&#34; 之间的时间相对更多< / strong>从CD读取文件而不是从本地机器读取文件。

  • 我还尝试寻找 DICOMDIR文件,它是光盘中包含的所有研究文件的索引,并且正是出于这个原因而包括在内:以避免对光盘进行冗长的扫描。但我没有找到任何标准或方法来解析 JavaScript中的DICOMDIR文件

有没有办法减少从CD读取文件所花费的时间?

更新 -

我现在可以使用dicomParser将DICOMDIR文件结构转换为JavaScript - https://github.com/chafey/dicomParser

var fr = new FileReader();
fr.onload = function(evt){
    var byteArray = new Uint8Array(fr.result);
    try {
        var dataSet = dicomParser.parseDicom(byteArray);
        _searchDicom(dataSet, f);
    } catch (err) {
        if (typeof err.dataSet != 'undefined') {
            _searchDicom(err.dataSet, f);
        }
    }
}
var blob = f.slice(0, 1000000); 
fr.readAsArrayBuffer(blob);

function _searchDicom(dataset,f) {
    var data = dataset.elements.x00041220.items;
    if(data) {
    data.forEach(function (e) {
        if (e.dataSet.string('x00041430') === 'PATIENT') {
            console.log("Patient Name - "+e.dataSet.string('x00100010'));
        }
        else if (e.dataSet.string('x00041430') === 'STUDY') {}
        else if (e.dataSet.string('x00041430') === 'SERIES') {}
        else if (e.dataSet.string('x00041430') === 'IMAGE') {}              
    });
    }
}

对象的结构类似于 - https://rawgit.com/chafey/dicomParser/master/examples/dumpWithDataDictionary/index.html
当我们上传任何DICOMDIR文件时。

这里的问题是我无法收集所有患者研究系列图片一旦。我找到的唯一解决方案是迭代并检查是否患者学习系列图片对象

是否有更好的方法/标准检索?

0 个答案:

没有答案