Refactoring servers configuration structure
This commit is contained in:
parent
624d2aeaf5
commit
b33ce54188
@ -8,8 +8,8 @@ Meteor.startup(function() {
|
||||
}
|
||||
|
||||
Meteor.settings = {
|
||||
dicomWeb: {
|
||||
endpoints: [{
|
||||
servers: {
|
||||
dicomWeb: [{
|
||||
name: 'Orthanc',
|
||||
wadoUriRootNOTE: 'either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently',
|
||||
wadoUriRoot: 'http://localhost:8043/wado',
|
||||
@ -23,14 +23,15 @@ Meteor.startup(function() {
|
||||
logResponses: false,
|
||||
logTiming: true
|
||||
}
|
||||
}],
|
||||
dimse: [{
|
||||
name: "ORTHANC_DIMSE",
|
||||
host: 'localhost',
|
||||
port: 4242,
|
||||
aeTitle: 'ORTHANC',
|
||||
default: true
|
||||
}]
|
||||
},
|
||||
dimse: [{
|
||||
host: 'localhost',
|
||||
port: 4242,
|
||||
aeTitle: 'ORTHANC',
|
||||
default: true
|
||||
}],
|
||||
"defaultServiceType": 'dicomWeb',
|
||||
"public": {
|
||||
"verifyEmail": false,
|
||||
@ -49,4 +50,3 @@ Meteor.startup(function() {
|
||||
// return 'If you leave this page then any unsaved changes will be lost.';
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@ -8,8 +8,8 @@ Meteor.startup(function() {
|
||||
}
|
||||
|
||||
Meteor.settings = {
|
||||
dicomWeb: {
|
||||
endpoints: [{
|
||||
servers: {
|
||||
dicomWeb: [{
|
||||
name: 'Orthanc',
|
||||
wadoUriRootNOTE: 'either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently',
|
||||
wadoUriRoot: 'http://localhost:8043/wado',
|
||||
@ -22,20 +22,21 @@ Meteor.startup(function() {
|
||||
logRequests: true,
|
||||
logResponses: false,
|
||||
logTiming: true
|
||||
}
|
||||
}
|
||||
}],
|
||||
dimse: [{
|
||||
name: "ORTHANC_DIMSE",
|
||||
host: 'localhost',
|
||||
port: 4242,
|
||||
hostAE: 'ORTHANC'
|
||||
}]
|
||||
},
|
||||
dimse: {
|
||||
host: 'localhost',
|
||||
port: 4242,
|
||||
hostAE: 'ORTHANC'
|
||||
},
|
||||
defaultServiceType: 'dicomWeb',
|
||||
//defaultServiceType: 'dimse'
|
||||
public: {
|
||||
ui: {
|
||||
studyListFunctionsEnabled: true
|
||||
}
|
||||
}
|
||||
//defaultServiceType: 'dimse'
|
||||
};
|
||||
});
|
||||
|
||||
@ -54,7 +54,8 @@ var getInstanceRetrievalParams = function(studyInstanceUID, seriesInstanceUID) {
|
||||
};
|
||||
|
||||
Meteor.startup(function() {
|
||||
var peers = Meteor.settings.dimse;
|
||||
if (!Meteor.settings.servers.dimse) return;
|
||||
var peers = Meteor.settings.servers.dimse[0].peers;
|
||||
console.log('Adding DIMSE peers');
|
||||
if (peers && peers.length) {
|
||||
peers.forEach(function(peer) {
|
||||
@ -202,7 +203,7 @@ DIMSE.retrieveInstancesByStudyOnly = function(studyInstanceUID, params, options)
|
||||
|
||||
result.on('result', function(msg) {
|
||||
series.push(msg);
|
||||
});
|
||||
});
|
||||
result.on('end', function(){
|
||||
if (series.length > 0) {
|
||||
DIMSE._retrieveInstancesBySeries(conn, series, studyInstanceUID, function(relatedInstances, isEnd){
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
Servers = new Mongo.Collection('servers');
|
||||
Timepoints = new Meteor.Collection('timepoints');
|
||||
Studies = new Meteor.Collection('studies');
|
||||
Measurements = new Meteor.Collection('measurements');
|
||||
|
||||
@ -1 +1,2 @@
|
||||
Meteor.subscribe('reviewers');
|
||||
Meteor.subscribe('servers');
|
||||
|
||||
@ -6,12 +6,12 @@ function parseUrl(url) {
|
||||
|
||||
Template.serverInformationModal.helpers({
|
||||
serverInformation: function() {
|
||||
// TODO: change for Collections
|
||||
var defaultServiceType = Meteor.settings && Meteor.settings.defaultServiceType || 'dicomWeb';
|
||||
var serviceInfo = Meteor.settings[defaultServiceType];
|
||||
var serviceInfo = Meteor.settings.servers[defaultServiceType];
|
||||
if (defaultServiceType === 'dicomWeb') {
|
||||
var serverInformationDicom = [];
|
||||
var endpoints = serviceInfo['endpoints'];
|
||||
endpoints.forEach(function(endpoint) {
|
||||
serviceInfo.forEach(function(endpoint) {
|
||||
var parsedUrl = parseUrl(endpoint.qidoRoot);
|
||||
serverInformationDicom.push({
|
||||
host: parsedUrl.hostname,
|
||||
|
||||
@ -200,6 +200,7 @@ Package.onUse(function(api) {
|
||||
api.addFiles('server/collections.js', 'server');
|
||||
api.addFiles('server/removeCollections.js', [ 'server' ]);
|
||||
api.addFiles('server/reviewers.js', [ 'server' ]);
|
||||
api.addFiles('server/servers.js', 'server');
|
||||
|
||||
// Both client and server functions
|
||||
api.addFiles('both/collections.js', [ 'client', 'server' ]);
|
||||
@ -274,7 +275,11 @@ Package.onUse(function(api) {
|
||||
api.export('TrialCriteriaTypes', 'client');
|
||||
|
||||
// Export collections spanning both client and server
|
||||
<<<<<<< 624d2aeaf5db4d1ac2b6ade6411fa55f4788ceac
|
||||
api.export('AdditionalFindings', [ 'client', 'server' ]);
|
||||
=======
|
||||
api.export('Servers', [ 'client', 'server' ]);
|
||||
>>>>>>> Refactoring servers configuration structure
|
||||
api.export('ImageMeasurements', [ 'client', 'server' ]);
|
||||
api.export('Measurements', [ 'client', 'server' ]);
|
||||
api.export('Studies', [ 'client', 'server' ]);
|
||||
|
||||
@ -46,12 +46,15 @@ Meteor.publish('reviewers', function() {
|
||||
return Reviewers.find();
|
||||
});
|
||||
|
||||
Meteor.publish('servers', function() {
|
||||
return Servers.find();
|
||||
});
|
||||
|
||||
// Temporary fix to drop all Collections on server restart
|
||||
// http://stackoverflow.com/questions/23891631/meteor-how-can-i-drop-all-mongo-collections-and-clear-all-data-on-startup
|
||||
Meteor.startup(function() {
|
||||
var globalObject = Meteor.isClient ? window : global;
|
||||
for (var property in globalObject) {
|
||||
var object = globalObject[property];
|
||||
for (var property in global) {
|
||||
var object = global[property];
|
||||
if (object instanceof Meteor.Collection) {
|
||||
object.remove({});
|
||||
}
|
||||
|
||||
34
Packages/lesiontracker/server/servers.js
Normal file
34
Packages/lesiontracker/server/servers.js
Normal file
@ -0,0 +1,34 @@
|
||||
Meteor.startup(function() {
|
||||
|
||||
_.each(Meteor.settings.servers, function(endpoints, serverType) {
|
||||
_.each(endpoints, function(endpoint) {
|
||||
var server = _.clone(endpoint);
|
||||
server.origin = "json";
|
||||
server.type = serverType;
|
||||
Servers.insert(server);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Meteor.methods({
|
||||
addServer: function(serverSettings) {
|
||||
console.log("CHECKING PERMISSIONS");
|
||||
if (!Meteor.userId()) {
|
||||
throw new Meteor.Error('not-authorized');
|
||||
}
|
||||
console.log("WRITTING ON COLLECTION");
|
||||
Servers.update(
|
||||
{ type: serverSettings.type, name: serverSettings.name },
|
||||
serverSettings,
|
||||
{ upsert: true },
|
||||
function(error, affected) {
|
||||
console.log("CHECKING FOR ERRORS");
|
||||
if(error) throw new Meteor.Error('data-write', error);
|
||||
console.log("NO ERRORS, " + affected + " DOCUMENTS AFFECTED");
|
||||
console.log(Servers.findOne());
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
});
|
||||
@ -37,8 +37,9 @@ Meteor.methods({
|
||||
* @returns {boolean}
|
||||
*/
|
||||
importSupported: function() {
|
||||
//TODO: Support importing studies into dicomWeb
|
||||
return (Meteor.settings.dimse && Meteor.settings.defaultServiceType === 'dimse');
|
||||
if (Meteor.settings.servers.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
return true;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Imports studies from local into worklist
|
||||
@ -50,10 +51,10 @@ Meteor.methods({
|
||||
return;
|
||||
}
|
||||
|
||||
if (Meteor.settings.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
if (Meteor.settings.servers.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
//TODO: Support importing studies into dicomWeb
|
||||
console.log('Importing studies into dicomWeb is currently not supported.');
|
||||
} else if (Meteor.settings.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
} else if (Meteor.settings.servers.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
importStudiesDIMSE(studiesToImport, studyImportStatusId);
|
||||
} else {
|
||||
throw 'No properly configured server was available over DICOMWeb or DIMSE.';
|
||||
@ -140,4 +141,4 @@ function folderExists(folder) {
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,16 +6,16 @@ Meteor.methods({
|
||||
GetStudyMetadata: function(studyInstanceUid) {
|
||||
log.info('GetStudyMetadata(%s)', studyInstanceUid);
|
||||
|
||||
if (!Meteor.settings.dicomWeb) {
|
||||
if (!Meteor.settings.servers.dicomWeb) {
|
||||
throw 'No properly configured server was available over DICOMWeb';
|
||||
}
|
||||
|
||||
if (Meteor.settings.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
if (Meteor.settings.servers.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
// Get the server data. This is user-defined in the
|
||||
// config.json files used to run the Meteor server
|
||||
var server = Meteor.settings.dicomWeb.endpoints[0];
|
||||
var server = Meteor.settings.servers.dicomWeb[0];
|
||||
return Services.WADO.RetrieveMetadata(server, studyInstanceUid);
|
||||
} else if (Meteor.settings.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
} else if (Meteor.settings.servers.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
return Services.DIMSE.RetrieveMetadata(studyInstanceUid);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,13 +4,13 @@ Meteor.methods({
|
||||
* @param filter
|
||||
*/
|
||||
WorklistSearch: function(filter) {
|
||||
if (Meteor.settings.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
if (Meteor.settings.servers.dicomWeb && Meteor.settings.defaultServiceType === 'dicomWeb') {
|
||||
// Get the server data. This is user-defined in the
|
||||
// config.json files used to run the Meteor server
|
||||
var server = Meteor.settings.dicomWeb.endpoints[0];
|
||||
var server = Meteor.settings.servers.dicomWeb[0];
|
||||
|
||||
return Services.QIDO.Studies(server, filter);
|
||||
} else if (Meteor.settings.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
} else if (Meteor.settings.servers.dimse && Meteor.settings.defaultServiceType === 'dimse') {
|
||||
return Services.DIMSE.Studies(filter);
|
||||
} else {
|
||||
throw 'No properly configured server was available over DICOMWeb or DIMSE.';
|
||||
|
||||
@ -31,8 +31,8 @@ function resultDataToStudyMetadata(resultData) {
|
||||
seriesList.push(series);
|
||||
}
|
||||
|
||||
var host = Meteor.settings.dimse.host,
|
||||
port = Meteor.settings.dimse.port;
|
||||
var host = Meteor.settings.servers.dimse.host,
|
||||
port = Meteor.settings.servers.dimse.port;
|
||||
|
||||
var serverRoot = host + ':' + port;
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ function resultDataToStudyMetadata(studyInstanceUid, resultData) {
|
||||
}
|
||||
|
||||
var sopInstanceUid = instance[0x00080018];
|
||||
|
||||
|
||||
var instanceSummary = {
|
||||
imageType: instance[0x00080008],
|
||||
sopClassUid: instance[0x00080016],
|
||||
@ -98,7 +98,7 @@ function resultDataToStudyMetadata(studyInstanceUid, resultData) {
|
||||
};
|
||||
|
||||
// Retrieve the actual data over WADO-URI
|
||||
var server = Meteor.settings.dicomWeb.endpoints[0];
|
||||
var server = Meteor.settings.servers.dicomWeb[0];
|
||||
instanceSummary.wadouri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + "&contentType=application%2Fdicom";
|
||||
|
||||
series.instances.push(instanceSummary);
|
||||
|
||||
@ -1,26 +1,29 @@
|
||||
{
|
||||
"dicomWeb" : {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "DCM4CHE",
|
||||
"wadoUriRootNOTE" : "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot" : "http://192.168.99.100:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
|
||||
"wadoUriRootNOTE": "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot": "http://192.168.99.100:8080/dcm4chee-arc/aets/DCM4CHEE/wado",
|
||||
"qidoRoot": "http://192.168.99.100:8080/dcm4chee-arc/aets/DCM4CHEE/rs",
|
||||
"wadoRoot": "http://192.168.99.100:8080/dcm4chee-arc/aets/DCM4CHEE/rs/wado/DCM4CHEE",
|
||||
"qidoSupportsIncludeField": true,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"logRequests" : true,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"logRequests": true,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dimse": [
|
||||
{
|
||||
"name": "DCM4CHE_DIMSE",
|
||||
"host": "192.168.99.100",
|
||||
"port": 11112,
|
||||
"hostAE": "DCM4CHE"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dimse" : {
|
||||
"host" : "192.168.99.100",
|
||||
"port" : 11112,
|
||||
"hostAE" : "DCM4CHE"
|
||||
},
|
||||
"defaultServiceType": "dicomWeb"
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"dicomWeb" : {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "Orthanc",
|
||||
"wadoUriRootNOTE" : "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
@ -8,20 +8,23 @@
|
||||
"qidoRoot": "http://localhost:8042/dicom-web",
|
||||
"wadoRoot": "http://localhost:8042/dicom-web",
|
||||
"qidoSupportsIncludeField": false,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"auth": "orthanc:orthanc",
|
||||
"logRequests" : true,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"logRequests": true,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"dimse": [
|
||||
{
|
||||
"name": "ORTHANC_DIMSE",
|
||||
"host": "localhost",
|
||||
"port": 4242,
|
||||
"hostAE": "ORTHANC"
|
||||
}
|
||||
]
|
||||
},
|
||||
"dimse" : {
|
||||
"host" : "localhost",
|
||||
"port" : 4242,
|
||||
"hostAE" : "ORTHANC"
|
||||
},
|
||||
"defaultServiceType": "dicomWeb"
|
||||
}
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
{
|
||||
"dicomWeb" : {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "Medical Connections",
|
||||
"wadoUriRoot" : "http://www.dicomserver.co.uk/wadouri",
|
||||
"wadoUriRoot": "http://www.dicomserver.co.uk/wadouri",
|
||||
"qidoRoot": "http://dicomserver.co.uk:81/qido",
|
||||
"wadoRoot": "http://dicomserver.co.uk:81/wado",
|
||||
"qidoSupportsIncludeField": false,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"logRequests" : true,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"logRequests": true,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,18 +1,18 @@
|
||||
{
|
||||
"dicomWeb" : {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "Medken Orthanc",
|
||||
"wadoUriRootNOTE" : "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot" : "http://dicom-orthanc.medken.com/wado",
|
||||
"wadoUriRootNOTE": "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot": "http://dicom-orthanc.medken.com/wado",
|
||||
"qidoRoot": "http://dicom-orthanc.medken.com/dicom-web",
|
||||
"wadoRoot": "http://dicom-orthanc.medken.com/dicom-web",
|
||||
"qidoSupportsIncludeField": false,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"logRequests" : false,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"logRequests": false,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -37,4 +37,4 @@
|
||||
"host" : "localhost",
|
||||
"port" : 3937
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,34 +1,36 @@
|
||||
{
|
||||
"dicomWeb" : {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "Orthanc",
|
||||
"wadoUriRootNOTE" : "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot" : "http://localhost:8043/wado",
|
||||
"wadoUriRootNOTE": "either this uri is not correct for wado-uri or wado-uri is not configured on orthanc currently",
|
||||
"wadoUriRoot": "http://localhost:8043/wado",
|
||||
"qidoRoot": "http://localhost:8042/dicom-web",
|
||||
"wadoRoot": "http://localhost:8042/dicom-web",
|
||||
"qidoSupportsIncludeField": false,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"auth": "orthanc:orthanc",
|
||||
"logRequests" : true,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"logRequests": true,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"dimse": [{
|
||||
"name": "ORTHANC_DIMSE",
|
||||
"host": "localhost",
|
||||
"port": 4242,
|
||||
"aeTitle": "ORTHANC",
|
||||
"default": true
|
||||
},{
|
||||
"name": "OHIFDCM_DIMSE",
|
||||
"host": "0.0.0.0",
|
||||
"port": 11112,
|
||||
"aeTitle": "OHIFDCM",
|
||||
"default": true,
|
||||
"server": true
|
||||
}]
|
||||
},
|
||||
"dimse" : [{
|
||||
"host" : "localhost",
|
||||
"port" : 4242,
|
||||
"aeTitle" : "ORTHANC",
|
||||
"default": true
|
||||
},{
|
||||
"host" : "0.0.0.0",
|
||||
"port" : 11112,
|
||||
"aeTitle" : "OHIFDCM",
|
||||
"default" : true,
|
||||
"server" : true
|
||||
}],
|
||||
"defaultServiceType": "dimse"
|
||||
}
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
{
|
||||
"dicomWeb": {
|
||||
"endpoints": [
|
||||
"servers": {
|
||||
"dicomWeb": [
|
||||
{
|
||||
"name": "SIIM DCM4CHEE",
|
||||
"wadoUriRoot" : "http://vna.hackathon.siim.org/dcm4chee-arc/wado/DCM4CHEE",
|
||||
"wadoUriRoot": "http://vna.hackathon.siim.org/dcm4chee-arc/wado/DCM4CHEE",
|
||||
"qidoRoot": "http://vna.hackathon.siim.org/dcm4chee-arc/qido/DCM4CHEE",
|
||||
"wadoRoot": "http://vna.hackathon.siim.org/dcm4chee-arc/wado/DCM4CHEE",
|
||||
"qidoSupportsIncludeField": true,
|
||||
"imageRendering" : "wadouri",
|
||||
"requestOptions" : {
|
||||
"logRequests" : false,
|
||||
"logResponses" : false,
|
||||
"logTiming" : true
|
||||
"imageRendering": "wadouri",
|
||||
"requestOptions": {
|
||||
"logRequests": false,
|
||||
"logResponses": false,
|
||||
"logTiming": true
|
||||
}
|
||||
}
|
||||
]
|
||||
@ -36,4 +36,4 @@
|
||||
"url": "",
|
||||
"port": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user