diff --git a/bin/dicomwebserver.mjs b/bin/dicomwebserver.mjs index 3563426..7ade1dc 100644 --- a/bin/dicomwebserver.mjs +++ b/bin/dicomwebserver.mjs @@ -2,6 +2,13 @@ import DicomWebServer from '../src/webserver/index.mjs' +// TODO - load params from file, or default to local file instance if not available +const params = { + loadPaths: { + .. + } +}; + const server = DicomWebServer(); server.addDicomWeb('/users/wayfa/dicomweb'); diff --git a/package-lock.json b/package-lock.json index 47ffde7..a134077 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ }, "bin": { "dicomwebscp": "bin/dicomwebscp.js", + "dicomwebserver": "bin/dicomwebserver.mjs", "mkdicomweb": "bin/mkdicomweb.js", "mkdicomwebdeduplicated": "bin/mkdicomwebdeduplicated.js", "mkdicomwebdeduplicatedgroup": "bin/mkdicomwebdeduplicatedgroup.js", diff --git a/src/webserver/index.mjs b/src/webserver/index.mjs index da7c179..ec5ba30 100644 --- a/src/webserver/index.mjs +++ b/src/webserver/index.mjs @@ -16,6 +16,7 @@ const otherJsonMap = (req,res,next) => { const missingMap = (req,res,next) => { console.log('Not found', req.path) res.status(404).send(`Couldn't find ${req.path} in studyUID ${req.params.studyUID} - TODO, query remote with params=${JSON.stringify(req.params)} and query=${JSON.stringify(req.query)}`) + next(); } const gzipHeaders = (res, path, stat) => { @@ -33,7 +34,11 @@ const methods = { const router = express.Router(); this.use(path,router); - router.get('/studies', qidoMap); + if( this.plugins.retrievePreCheck ) { + router.use('/studies/:studyUID',this.plugins.retrievePreCheck); + } + + router.get('/studies', this.plugins.studyQuery || qidoMap); router.get('/studies/:studyUID/series',qidoMap); router.get('/studies/:studyUID/series/metadata',otherJsonMap); router.get('/studies/:studyUID/series/:seriesUID/instances',qidoMap); @@ -47,7 +52,9 @@ const methods = { fallthrough: true, })); - router.use('/studies/:studyUID/', missingMap); + if( this.plugins.retrieveMissing ) { + router.use('/studies/:studyUID/', this.plugins.retrieveMissing); + } }, addClient: function(dir, params = {}) { @@ -74,6 +81,9 @@ const DicomWebServer = (params) => { app.use(logger("combined")) app.params = params || {}; + app.plugins = loadPlugins(params); + + // Iterate through params, add webservices based on params const superListen = app.listen; app.listen = (port) => {