191 lines
5.3 KiB
JavaScript
Executable File
191 lines
5.3 KiB
JavaScript
Executable File
var Future = Npm.require('fibers/future');
|
|
|
|
DIMSE = {};
|
|
|
|
var conn = new Connection({
|
|
vr: {
|
|
split: false
|
|
}
|
|
});
|
|
|
|
Meteor.startup(function(){
|
|
var peers = Meteor.settings.dimse;
|
|
console.log('Adding DIMSE peers');
|
|
if (peers && peers.length) {
|
|
peers.forEach(function(peer){
|
|
conn.addPeer(peer);
|
|
});
|
|
}
|
|
});
|
|
|
|
DIMSE.associate = function(contexts, callback, options) {
|
|
var defaults = {
|
|
contexts: contexts
|
|
};
|
|
options = Object.assign(defaults, options);
|
|
|
|
conn.associate(options, function(pdu) {
|
|
// associated
|
|
console.log('==Associated');
|
|
callback.call(this, pdu);
|
|
});
|
|
};
|
|
|
|
DIMSE.retrievePatients = function(params, options) {
|
|
//var start = new Date();
|
|
var future = new Future;
|
|
DIMSE.associate([C.SOP_PATIENT_ROOT_FIND], function(pdu) {
|
|
var defaultParams = {
|
|
0x00100010: "",
|
|
0x00100020: "",
|
|
0x00100030: "",
|
|
0x00100040: "",
|
|
0x00101010: "",
|
|
0x00101040: ""
|
|
};
|
|
|
|
var result = this.findPatients(Object.assign(defaultParams, params)),
|
|
o = this;
|
|
|
|
var patients = [];
|
|
result.on('result', function(msg) {
|
|
patients.push(msg);
|
|
});
|
|
|
|
result.on('end', function() {
|
|
o.release();
|
|
});
|
|
|
|
this.on('close', function() {
|
|
//var time = new Date() - start;console.log(time + 'ms taken');
|
|
future.return(patients);
|
|
});
|
|
}, options);
|
|
return future.wait();
|
|
};
|
|
|
|
DIMSE.retrieveStudies = function(params, options) {
|
|
//var start = new Date();
|
|
var future = new Future;
|
|
DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(pdu) {
|
|
var defaultParams = {
|
|
0x0020000D: "",
|
|
0x00080060: "",
|
|
0x00080005: "",
|
|
0x00080020: "",
|
|
0x00080030: "",
|
|
0x00080090: "",
|
|
0x00100010: "",
|
|
0x00100020: "",
|
|
0x00200010: "",
|
|
0x00100030: ""
|
|
};
|
|
|
|
var result = this.findStudies(Object.assign(defaultParams, params)),
|
|
o = this;
|
|
|
|
var studies = [];
|
|
result.on('result', function(msg) {
|
|
studies.push(msg);
|
|
});
|
|
|
|
result.on('end', function() {
|
|
o.release();
|
|
});
|
|
|
|
this.on('close', function() {
|
|
//var time = new Date() - start;console.log(time + 'ms taken');
|
|
future.return(studies);
|
|
});
|
|
}, options);
|
|
return future.wait();
|
|
};
|
|
|
|
DIMSE.retrieveSeries = function(studyInstanceUID, params, options) {
|
|
var future = new Future;
|
|
DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(pdu) {
|
|
var defaultParams = {
|
|
0x0020000D: studyInstanceUID ? studyInstanceUID : "",
|
|
0x00080005: "",
|
|
0x00080020: "",
|
|
0x00080030: "",
|
|
0x00080090: "",
|
|
0x00100010: "",
|
|
0x00100020: "",
|
|
0x00200010: "",
|
|
0x0008103E: "",
|
|
0x0020000E: "",
|
|
0x00200011: ""
|
|
};
|
|
|
|
var result = this.findSeries(Object.assign(defaultParams, params)),
|
|
o = this;
|
|
|
|
var series = [];
|
|
result.on('result', function(msg) {
|
|
series.push(msg);
|
|
});
|
|
|
|
result.on('end', function() {
|
|
o.release();
|
|
});
|
|
|
|
this.on('close', function() {
|
|
future.return(series);
|
|
});
|
|
}, options);
|
|
return future.wait();
|
|
};
|
|
|
|
DIMSE.retrieveInstances = function(studyInstanceUID, seriesInstanceUID, params, options) {
|
|
var future = new Future;
|
|
DIMSE.associate([C.SOP_STUDY_ROOT_FIND], function(pdu) {
|
|
var defaultParams = {
|
|
0x0020000D: studyInstanceUID ? studyInstanceUID : "",
|
|
0x0020000E: (studyInstanceUID && seriesInstanceUID) ? seriesInstanceUID : "",
|
|
0x00080005: "",
|
|
0x00080020: "",
|
|
0x00080030: "",
|
|
0x00080090: "",
|
|
0x00100010: "",
|
|
0x00100020: "",
|
|
0x00200010: "",
|
|
0x0008103E: "",
|
|
0x00200011: "",
|
|
0x00080016: "",
|
|
0x00080018: "",
|
|
0x00200013: "",
|
|
0x00280010: "",
|
|
0x00280011: "",
|
|
0x00280100: "",
|
|
0x00280103: ""
|
|
};
|
|
var result = this.findInstances(Object.assign(defaultParams, params)),
|
|
o = this;
|
|
|
|
var instances = [];
|
|
result.on('result', function(msg) {
|
|
instances.push(msg);
|
|
});
|
|
|
|
result.on('end', function() {
|
|
o.release();
|
|
});
|
|
|
|
this.on('close', function() {
|
|
future.return(instances);
|
|
});
|
|
}, options);
|
|
return future.wait();
|
|
};
|
|
|
|
DIMSE.moveInstances = function(studyInstanceUID, seriesInstanceUID, sopInstanceUID, sopClassUID, params) {
|
|
DIMSE.associate([C.SOP_STUDY_ROOT_MOVE, sopClassUID], function() {
|
|
var defaultParams = {
|
|
0x0020000D: studyInstanceUID ? studyInstanceUID : "",
|
|
0x0020000E: seriesInstanceUID ? seriesInstanceUID : "",
|
|
0x00080018: sopInstanceUID ? sopInstanceUID : ""
|
|
}
|
|
this.moveInstances("OHIFDCM", Object.assign(defaultParams, params));
|
|
});
|
|
} |