added wado uri proxy
This commit is contained in:
parent
a810aeceda
commit
0835c31ba0
23
Packages/wadoproxy/package.js
Executable file
23
Packages/wadoproxy/package.js
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
Package.describe({
|
||||||
|
name: 'wadoproxy',
|
||||||
|
summary: 'WADO-URI Proxy',
|
||||||
|
version: '0.0.1'
|
||||||
|
});
|
||||||
|
|
||||||
|
Package.onUse(function(api) {
|
||||||
|
api.versionsFrom('1.4');
|
||||||
|
|
||||||
|
api.use('ecmascript');
|
||||||
|
api.use('standard-app-packages');
|
||||||
|
api.use('clinical:router');
|
||||||
|
|
||||||
|
|
||||||
|
api.addFiles('server/namespace.js');
|
||||||
|
|
||||||
|
// Server-only
|
||||||
|
api.addFiles('server/initialize.js', 'server');
|
||||||
|
api.addFiles('server/routes.js', 'server');
|
||||||
|
|
||||||
|
// Global exports
|
||||||
|
api.export('WADOProxy');
|
||||||
|
});
|
||||||
9
Packages/wadoproxy/server/initialize.js
Executable file
9
Packages/wadoproxy/server/initialize.js
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
Settings = Object.assign((Meteor.settings && Meteor.settings.proxy) ? Meteor.settings.proxy : {}, {
|
||||||
|
uri : "/__wado_proxy",
|
||||||
|
enabled: true
|
||||||
|
})
|
||||||
|
|
||||||
|
http = require("http");
|
||||||
|
url = require("url");
|
||||||
|
querystring = require("querystring");
|
||||||
8
Packages/wadoproxy/server/namespace.js
Executable file
8
Packages/wadoproxy/server/namespace.js
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
WADOProxy = {};
|
||||||
|
|
||||||
|
WADOProxy.convertURL = function(wadoURL) {
|
||||||
|
if (!Settings.enabled) {
|
||||||
|
return wadoURL;
|
||||||
|
}
|
||||||
|
return Settings.uri + '?' + querystring.stringify({url: wadoURL});
|
||||||
|
}
|
||||||
33
Packages/wadoproxy/server/routes.js
Executable file
33
Packages/wadoproxy/server/routes.js
Executable file
@ -0,0 +1,33 @@
|
|||||||
|
Router.route(Settings.uri, function () {
|
||||||
|
let response = this.response;
|
||||||
|
if (!this.params.query.url) {
|
||||||
|
response.writeHead(500);
|
||||||
|
response.end('No wado url provided');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let proxyRequest,
|
||||||
|
wadoUrl = url.parse(this.params.query.url, false);
|
||||||
|
|
||||||
|
var options = {
|
||||||
|
headers: {}
|
||||||
|
};
|
||||||
|
//options.headers = this.request.headers;
|
||||||
|
if (this.request.headers['referer']) {
|
||||||
|
options.headers.referer = this.request.headers['referer'];
|
||||||
|
}
|
||||||
|
if (this.request.headers['user-agent']) {
|
||||||
|
options.headers['user-agent'] = this.request.headers['user-agent'];
|
||||||
|
}
|
||||||
|
|
||||||
|
options.method = this.request.method;
|
||||||
|
options.host = wadoUrl.hostname;
|
||||||
|
options.port = wadoUrl.port ? wadoUrl.port : 80;
|
||||||
|
options.path = wadoUrl.path;
|
||||||
|
|
||||||
|
proxyRequest = http.request(options, function (proxyResponse) {
|
||||||
|
proxyResponse.pipe(response, {end: true});
|
||||||
|
});
|
||||||
|
//proxyRequest.end();
|
||||||
|
this.request.pipe(proxyRequest, {end: true});
|
||||||
|
}, {where: 'server'});
|
||||||
@ -29,6 +29,7 @@ Package.onUse(function (api) {
|
|||||||
api.use('dimseservice');
|
api.use('dimseservice');
|
||||||
api.use('orthanc-remote');
|
api.use('orthanc-remote');
|
||||||
api.use('viewerbase');
|
api.use('viewerbase');
|
||||||
|
api.use('wadoproxy');
|
||||||
|
|
||||||
// TODO: Replace with NPM dependency
|
// TODO: Replace with NPM dependency
|
||||||
api.use('cornerstone'); // Only for HammerJS
|
api.use('cornerstone'); // Only for HammerJS
|
||||||
|
|||||||
@ -111,7 +111,7 @@ function resultDataToStudyMetadata(studyInstanceUid, resultData) {
|
|||||||
|
|
||||||
// Retrieve the actual data over WADO-URI
|
// Retrieve the actual data over WADO-URI
|
||||||
var server = Meteor.settings.servers.dicomWeb[0];
|
var server = Meteor.settings.servers.dicomWeb[0];
|
||||||
instanceSummary.wadouri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + "&contentType=application%2Fdicom";
|
instanceSummary.wadouri = WADOProxy.convertURL(server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + "&contentType=application%2Fdicom");
|
||||||
|
|
||||||
series.instances.push(instanceSummary);
|
series.instances.push(instanceSummary);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -116,7 +116,7 @@ function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if (server.imageRendering === 'wadouri') {
|
if (server.imageRendering === 'wadouri') {
|
||||||
instanceSummary.wadouri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom';
|
instanceSummary.wadouri = WADOProxy.convertURL(server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + '&contentType=application%2Fdicom');
|
||||||
} else {
|
} else {
|
||||||
instanceSummary.wadorsuri = server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid + '/frames/1';
|
instanceSummary.wadorsuri = server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid + '/frames/1';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,20 +15,26 @@
|
|||||||
"logTiming": true
|
"logTiming": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"dimse" : [{
|
||||||
|
"name": "ORTHANC_DIMSE",
|
||||||
|
"peers": [
|
||||||
|
{
|
||||||
|
"host": "208.100.41.100",
|
||||||
|
"port": 4242,
|
||||||
|
"aeTitle": "MKORTHANC",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"host": "0.0.0.0",
|
||||||
|
"port": 11112,
|
||||||
|
"aeTitle": "OHIFDCM",
|
||||||
|
"default": true,
|
||||||
|
"server": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}]
|
||||||
},
|
},
|
||||||
"dimse" : [{
|
|
||||||
"host" : "208.100.41.100",
|
|
||||||
"port" : 4242,
|
|
||||||
"aeTitle" : "MKORTHANC",
|
|
||||||
"default": true
|
|
||||||
},{
|
|
||||||
"host" : "0.0.0.0",
|
|
||||||
"port" : 11112,
|
|
||||||
"aeTitle" : "OHIFDCM",
|
|
||||||
"default" : true,
|
|
||||||
"server" : true
|
|
||||||
}],
|
|
||||||
"defaultServiceType": "dimse",
|
"defaultServiceType": "dimse",
|
||||||
"medkenpanel" : {
|
"medkenpanel" : {
|
||||||
"prefix" : "admin"
|
"prefix" : "admin"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user