dicomweb-proxy
Version:
A proxy to translate between dicomweb and dimse
39 lines (36 loc) • 1.28 kB
text/typescript
import { ConfParams, config } from '../utils/config';
import { recompress, recompressOptions } from 'dicom-dimse-native';
import { LoggerSingleton } from '../utils/logger';
export async function compressFile(inputFile: string, outputDirectory: string, transferSyntax: string | undefined = undefined) {
const logger = LoggerSingleton.Instance;
const options: recompressOptions = {
sourcePath: inputFile,
storagePath: outputDirectory,
writeTransfer: transferSyntax || config.get(ConfParams.XTRANSFER),
lossyQuality: config.get(ConfParams.LOSSY_QUALITY),
verbose: config.get(ConfParams.VERBOSE),
};
// run find scu and return json response
return new Promise((resolve, reject) => {
recompress(options, (result: string) => {
if (result && result.length > 0) {
try {
const json = JSON.parse(result);
if (json.code === 0) {
resolve(true);
} else {
logger.error(`recompression failure (${inputFile}): ${json.message}`);
reject();
}
} catch (error) {
logger.error(error);
logger.error(result);
reject();
}
} else {
logger.error('invalid result received');
reject();
}
});
});
}