UNPKG

modified-dicom-pacs

Version:

A modified version of DICOM PACS implementation

221 lines (176 loc) 7.67 kB
#!/usr/bin/env node "use strict"; const config = require('config'); var fs = require('fs'); const fs1 = require('fs-extra'); const path = require('path'); var spawn = require('child_process').spawn; console.log("startServer runs?"); // console.log("Current __dirname:", __dirname); let baseDir = path.resolve(__dirname.split('webpacsApp')[0]); // console.log("baseDir", baseDir); console.log('starting modified-dicom-pacs...'); process.chdir('./node_modules/modified-dicom-pacs'); const ls = spawn('node', ['src/app.js']); let TestsTxtFile = path.join(baseDir, 'webpacsApp', 'node_modules', 'modified-dicom-pacs', 'Testss.Txt'); let getTxtFile = path.join(baseDir, 'webpacsApp', 'node_modules', 'modified-dicom-pacs', 'getText.txt'); let DataNativeFolder = path.join(baseDir, 'data', 'Native'); ls.stdout.on('data', (data) => { console.log(`stdout mao out: ${data}`) }); ls.stderr.on('data', (data) => { fs.appendFileSync(TestsTxtFile, data); const contents2 = fs.readFileSync(TestsTxtFile, 'utf-8'); var newString = contents2.toString(); let result1 = newString.replace(/\s/g, ''); let result2 = result1.replace(/['"]+/g, ''); const citrus = result2.slice(result2.indexOf("I:AssociationReceived") + 37, result2.indexOf("I:AssociationReceived") + 75); var mySubString = citrus.substring( citrus.indexOf(":") + 1, citrus.lastIndexOf("->") ); if(mySubString != "DICOMWEB_PACS" && mySubString.length > 2 && mySubString.length < 20 && !mySubString.includes(":") && !mySubString.includes(".") && !mySubString.includes("&")){ fs.writeFileSync(getTxtFile, mySubString); } //latest code //1. catch edit aet and create folder. const gettext = fs.readFileSync(getTxtFile, 'utf8'); console.log("gettext", gettext); //read folders in Native const getfolder = fs.readdirSync(DataNativeFolder); console.log("getfolder", getfolder); const getfolder2 = getfolder.filter((cur) => cur != "image.db"); //get latest time folder then replace with desktop name let dateaArr = []; let nameOfLatestFolder = ""; for(var i = 0; i < getfolder2.length - 1; i++){ fs.stat(`${DataNativeFolder}/${getfolder2[i]}`, (error, stats) => { // in case of any error if (error) { console.log(error); return; } // else show creation time from stats object console.log("File created at: ", stats.birthtime); dateaArr.push(stats.birthtime); console.log("dateaArr === ", dateaArr); console.log("Folders === ", getfolder2); //find latest created folder var largest= 0; for (i=0; i<dateaArr.length; i++){ if (dateaArr[i]>largest) { largest=dateaArr[i]; } } //find index of latest created folder and name of that folder const indexOfLatestDate = dateaArr.indexOf(largest); nameOfLatestFolder = getfolder2[indexOfLatestDate]; }); } //create folder of gettext // setTimeout(() => { // console.log("start"); // fs.readFile(getTxtFile, 'utf8', function(err, data){ // if(data){ // if(data != "DICOMWEB_PACS"){ // var dir = `${DataNativeFolder}/${data}`; // // if (!fs.existsSync(dir)){ // // fs.mkdirSync(dir); // // } // } // }else{ // console.log("see data", err); // } // }); // }, 1000); // //now sote incoming file in date folder, date can be created wehn file sent // setTimeout(() => { // if(nameOfLatestFolder.includes(".")){ // const src = `${DataNativeFolder}/${nameOfLatestFolder}` // const d = new Date(); // const day = d.getDate(); // const year = d.getFullYear(); // const month = d.getMonth() + 1; // let finalDate = `${year}${month}${day}` // const dest = `${DataNativeFolder}/${gettext}/${finalDate}/${nameOfLatestFolder}` // if(gettext != "DICOMWEB_PACS" && gettext.length > 2 && gettext.length < 20){ // fs1.move(src, dest, { overwrite: false }, function(err, data){ // if(data){ // console.log("files has been succcessfully moved", data); // }else{ // console.log("files has not been moved", err); // } // }); // } // } // }, 12000); // //----------------------------------------reading tags starts----------------------------- // setInterval(() => { // fs.stat(DataNativeFolder, (err, stats) => { // if (err) { // throw err // } // var diff = Math.abs(new Date() - stats.ctime); // function millisToMinutesAndSeconds(millis) { // var minutes = Math.floor(millis / 60000); // var seconds = ((millis % 60000) / 1000).toFixed(0); // return minutes + ":" + (seconds < 10 ? '0' : '') + seconds; // } // // console.log("differencedifferencedifference=", millisToMinutesAndSeconds(diff)); // var timeSplit = millisToMinutesAndSeconds(diff).split(":"); // // console.log("splitsplitsplit", timeSplit[0]); // // var delay = Math.ceil(files.length/25); // console.log("change folder interval is ", timeSplit); // if(parseInt(timeSplit[0]) >= 1 || parseInt(timeSplit[1]) >= 50){ // fs.readdir(DataNativeFolder, (err, topFolders) => { // if (err) // console.log(err); // else { // if(topFolders.length > 1){ // var Mfolders1 = topFolders.filter((cur) => cur !== 'image.db'); // var Mfolders2 = Mfolders1.filter((cur) => cur.includes(".")); // if(Mfolders2.length >= 1){ // console.log("Mfolders2Mfolders2", Mfolders2); // const gettext = fs.readFileSync(getTxtFile, 'utf8'); // console.log("gettext", gettext); // Mfolders2.forEach((cur) => { // const src = `${DataNativeFolder}/${cur}` // const d = new Date(); // const day = d.getDate(); // const year = d.getFullYear(); // const month = d.getMonth() + 1; // let finalDate = `${year}${month}${day}` // const dest = `${DataNativeFolder}/${gettext}/${finalDate}/${cur}` // if(gettext != "DICOMWEB_PACS" && gettext.length > 2 && gettext.length < 20){ // fs1.move(src, dest, { overwrite: false }, function(err, data){ // if(data){ // console.log("files has been succcessfully moved", data); // }else{ // console.log("files has not been moved", err); // } // }); // } // }); // } // } // } // }); // } // }) // }, 5000); // //--------------------------------reding tags ends----------------------------------- setTimeout(() => { fs.writeFileSync(TestsTxtFile, ""); console.log("set time out for test.txt clear nameOfLatestFolder", nameOfLatestFolder); console.log("gettext length", gettext.length); if(gettext.length > 2){ console.log("yes greater than 1", gettext.length); }else{ console.log("no not greater than 1", gettext.length); } }, 2000); console.error(`stderr mao err: ${data}`); }); ls.on('close', (code) => { console.log(`child process exited with code ${code}`); });