Cleanup around viewerbase and worklist

This commit is contained in:
Erik Ziegler committed 2015-11-06 15:29:09 +01:00
1 parent 0365e9963d
commit 5363880e40
19 files changed
+132 -115

No files matched your search

@@ -199,7 +199,7 @@ Template.thumbnailEntry.events({
// Touch drag/drop events
'touchstart .thumbnailEntry, mousedown .thumbnailEntry': function(e) {
var data = Template.parentData(2);
data.studyInstanceUid = this.stack.instances[0].studyInstanceUid;
data.studyInstanceUid = this.stack.studyInstanceUid;
data.seriesInstanceUid = this.stack.seriesInstanceUid;
thumbnailDragStartHandler(e, data);
},
@@ -10,6 +10,7 @@
color: #ffffff
background-color: #424242
border-color: #424242
outline: none
&.active, &:active
background-color: #3B678E
@@ -1,13 +1,13 @@
<template name="viewportOverlay">
<div class="imageViewerViewportOverlay noselect">
<div class="topleft dicomTag">
<div>{{patientName}}</div>
<div>{{formatPN patientName}}</div>
<div>{{patientId}}</div>
<div></div>
</div>
<div class="topright dicomTag">
<div>{{studyDescription}}</div>
<div>{{studyDate}} {{studyTime}}</div>
<div>{{formatDA studyDate}} {{formatTM studyTime}}</div>
</div>
<div class="bottomright dicomTag">
<div>Zoom: {{formatNumberPrecision zoom 2}}%</div>
+2
View File
@@ -12,6 +12,8 @@ createStacks = function(study) {
if (!anInstance || !anInstance.rows) {
return;
}
series.studyInstanceUid = study.studyInstanceUid;
stacks.push(series);
});
return stacks;
+1 -5
View File
@@ -2,12 +2,8 @@ UI.registerHelper('formatDA', function (context, format, options) {
if (!context) {
return undefined;
}
/*var date = DICOMUtilities.toDate(context, '', false);
if(!date) {
return context;
}*/
var date = context;
var dateAsMoment = moment(date);
var dateAsMoment = moment(date, "YYYYMMDD");
var strFormat = "MMM D, YYYY";
if (options) {
strFormat = format;
@@ -1,5 +1,5 @@
UI.registerHelper('formatNumberPrecision', function(context, precision, options) {
if(context) {
if (context) {
return parseFloat(context).toFixed(precision);
}
});
+3 -16
View File
@@ -1,20 +1,7 @@
UI.registerHelper('formatDA', function (context, format, options) {
UI.registerHelper('formatPN', function (context, format, options) {
if (!context) {
return undefined;
}
var pn = context;
var str = '';
if(pn.prefix) {
str = pn.prefix + ' ';
}
str += (pn.familyName || '') + ', ';
str += (pn.givenName || '');
if(pn.middleName) {
str += ' ' + pn.middleName;
}
if(pn.suffix) {
str += ' ' + pn.suffix;
}
return str;
var patientName = context.replace('^', ', ');
return patientName;
});
+6 -5
View File
@@ -10,9 +10,10 @@ addMetaData = function(imageId, data) {
var metaData = {};
metaData.study = {
date: instanceMetaData.studyDate,
time: instanceMetaData.studyTime,
description: instanceMetaData.studyDescription
instanceUid: studyMetaData.studyInstanceUid,
date: studyMetaData.studyDate,
time: studyMetaData.studyTime,
description: studyMetaData.studyDescription
};
metaData.series = {
@@ -29,8 +30,8 @@ addMetaData = function(imageId, data) {
};
metaData.patient = {
name: instanceMetaData.patientName,
id: instanceMetaData.patientId
name: studyMetaData.patientName,
id: studyMetaData.patientId
};
// If there is sufficient information, populate
+1 -1
View File
@@ -18,7 +18,7 @@ Package.onUse(function (api) {
// Our custom package
api.use('cornerstone');
api.addFiles('log.js', 'client');
api.addFiles('log.js', ['client', 'server']);
// ---------- Components ----------
@@ -1,6 +1,6 @@
Meteor.methods({
'GetStudyMetadata' : function(studyInstanceUid) {
console.log('GetStudyMetadata(%s)', studyInstanceUid);
log.info('GetStudyMetadata(%s)', studyInstanceUid);
var server = Meteor.settings.dicomWeb.endpoints[0];
@@ -14,14 +14,21 @@ function resultDataToStudies(resultData) {
var studies = [];
resultData.forEach(function(study) {
studies.push({
studyInstanceUid: DICOMWeb.getString(study['0020000D']),
// 00080005 = SpecificCharacterSet
studyDate: DICOMWeb.getString(study['00080020']),
studyTime: DICOMWeb.getString(study['00080030']),
accessionNumber: DICOMWeb.getString(study['00080050']),
referringPhysicianName: DICOMWeb.getString(study['00080090']),
// 00081190 = URL
patientName: DICOMWeb.getName(study['00100010']),
patientId: DICOMWeb.getString(study['00100020']),
accessionNumber : DICOMWeb.getString(study['00080050']),
studyDate: DICOMWeb.getString(study['00080020']),
modalities: DICOMWeb.getString(study['00080061']),
studyDescription: DICOMWeb.getString(study['00081030']),
patientBirthdate: DICOMWeb.getString(study['00100030']),
patientSex: DICOMWeb.getString(study['00100040']),
imageCount: DICOMWeb.getString(study['00201208']),
studyInstanceUid: DICOMWeb.getString(study['0020000D'])
studyId: DICOMWeb.getString(study['00200010']),
studyDescription: DICOMWeb.getString(study['00081030']),
modalities: DICOMWeb.getString(study['00080061'])
//url : server.wadoRoot + '/studies/' + DICOMWeb.getString(study['0020000D']) + '/metadata'
});
});
@@ -1,88 +1,100 @@
function buildUrl(server, studyInstanceUid) {
var url = server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata';
var url = server.wadoRoot + '/studies/' + studyInstanceUid + '/metadata';
return url;
return url;
}
function resultDataToStudyMetadata(server, studyInstanceUid, resultData) {
var seriesMap = {};
var seriesList = [];
resultData.forEach(function(instance) {
var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);
var series = seriesMap[seriesInstanceUid];
if(!series) {
series = {
seriesDescription: DICOMWeb.getString(instance['0008103E']),
modality: DICOMWeb.getString(instance['00080060']),
seriesInstanceUid : seriesInstanceUid,
seriesNumber : DICOMWeb.getNumber(instance['00200011']),
instances: []
};
seriesMap[seriesInstanceUid] = series;
seriesList.push(series);
var seriesMap = {};
var seriesList = [];
if (!resultData.length) {
return;
}
var sopInstanceUid = DICOMWeb.getString(instance['00080018']);
var anInstance = resultData[0];
if (!anInstance) {
return;
}
var instanceSummary = {
// -----------
// TODO = Fix this
// This doesn't seem like the best place to put this, but otherwise we have no study info
patientName: DICOMWeb.getName(instance['00100010']),
patientId: DICOMWeb.getString(instance['00100020']),
accessionNumber : DICOMWeb.getString(instance['00080050']),
studyDate: DICOMWeb.getString(instance['00080020']),
modalities: DICOMWeb.getString(instance['00080061']),
studyDescription: DICOMWeb.getString(instance['00081030']),
imageCount: DICOMWeb.getString(instance['00201208']),
studyInstanceUid: DICOMWeb.getString(instance['0020000D']),
// -----------
imageType: DICOMWeb.getString(instance['00080008']),
sopClassUid: DICOMWeb.getString(instance['00080016']),
sopInstanceUid: sopInstanceUid,
instanceNumber: DICOMWeb.getNumber(instance['00200013']),
imagePositionPatient: DICOMWeb.getString(instance['00200032']),
imageOrientationPatient: DICOMWeb.getString(instance['00200037']),
frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),
sliceLocation: DICOMWeb.getNumber(instance['00201041']),
samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),
photometricInterpretation: DICOMWeb.getString(instance['00280004']),
rows: DICOMWeb.getNumber(instance['00280010']),
columns: DICOMWeb.getNumber(instance['00280011']),
pixelSpacing: DICOMWeb.getString(instance['00280030']),
bitsAllocated: DICOMWeb.getNumber(instance['00280100']),
bitsStored: DICOMWeb.getNumber(instance['00280101']),
highBit: DICOMWeb.getNumber(instance['00280102']),
pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),
windowCenter: DICOMWeb.getString(instance['00281050']),
windowWidth: DICOMWeb.getString(instance['00281051']),
rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),
rescaleSlope: DICOMWeb.getNumber(instance['00281053']),
var studyData = {
seriesList: seriesList,
patientName: DICOMWeb.getName(anInstance['00100010']),
patientId: DICOMWeb.getString(anInstance['00100020']),
accessionNumber: DICOMWeb.getString(anInstance['00080050']),
studyDate: DICOMWeb.getString(anInstance['00080020']),
modalities: DICOMWeb.getString(anInstance['00080061']),
studyDescription: DICOMWeb.getString(anInstance['00081030']),
imageCount: DICOMWeb.getString(anInstance['00201208']),
studyInstanceUid: DICOMWeb.getString(anInstance['0020000D']),
};
if(server.imageRendering === 'wadouri') {
instanceSummary.wadouri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + "&contentType=application%2Fdicom";
} else {
instanceSummary.wadorsuri = server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid + '/frames/1';
}
resultData.forEach(function(instance) {
var seriesInstanceUid = DICOMWeb.getString(instance['0020000E']);
var series = seriesMap[seriesInstanceUid];
if (!series) {
series = {
seriesDescription: DICOMWeb.getString(instance['0008103E']),
modality: DICOMWeb.getString(instance['00080060']),
seriesInstanceUid: seriesInstanceUid,
seriesNumber: DICOMWeb.getNumber(instance['00200011']),
instances: []
};
seriesMap[seriesInstanceUid] = series;
seriesList.push(series);
}
series.instances.push(instanceSummary);
});
return seriesList;
var sopInstanceUid = DICOMWeb.getString(instance['00080018']);
var instanceSummary = {
imageType: DICOMWeb.getString(instance['00080008']),
sopClassUid: DICOMWeb.getString(instance['00080016']),
sopInstanceUid: sopInstanceUid,
instanceNumber: DICOMWeb.getNumber(instance['00200013']),
imagePositionPatient: DICOMWeb.getString(instance['00200032']),
imageOrientationPatient: DICOMWeb.getString(instance['00200037']),
frameOfReferenceUID: DICOMWeb.getString(instance['00200052']),
sliceLocation: DICOMWeb.getNumber(instance['00201041']),
samplesPerPixel: DICOMWeb.getNumber(instance['00280002']),
photometricInterpretation: DICOMWeb.getString(instance['00280004']),
rows: DICOMWeb.getNumber(instance['00280010']),
columns: DICOMWeb.getNumber(instance['00280011']),
pixelSpacing: DICOMWeb.getString(instance['00280030']),
bitsAllocated: DICOMWeb.getNumber(instance['00280100']),
bitsStored: DICOMWeb.getNumber(instance['00280101']),
highBit: DICOMWeb.getNumber(instance['00280102']),
pixelRepresentation: DICOMWeb.getNumber(instance['00280103']),
windowCenter: DICOMWeb.getString(instance['00281050']),
windowWidth: DICOMWeb.getString(instance['00281051']),
rescaleIntercept: DICOMWeb.getNumber(instance['00281052']),
rescaleSlope: DICOMWeb.getNumber(instance['00281053']),
};
if (server.imageRendering === 'wadouri') {
instanceSummary.wadouri = server.wadoUriRoot + '?requestType=WADO&studyUID=' + studyInstanceUid + '&seriesUID=' + seriesInstanceUid + '&objectUID=' + sopInstanceUid + "&contentType=application%2Fdicom";
} else {
instanceSummary.wadorsuri = server.wadoRoot + '/studies/' + studyInstanceUid + '/series/' + seriesInstanceUid + '/instances/' + sopInstanceUid + '/frames/1';
}
series.instances.push(instanceSummary);
});
return studyData;
}
Services.WADO.RetrieveMetadata = function(server, studyInstanceUid) {
var url = buildUrl(server, studyInstanceUid);
var url = buildUrl(server, studyInstanceUid);
var result = DICOMWeb.getJSON(url, server.requestOptions);
var result = DICOMWeb.getJSON(url, server.requestOptions);
var study = resultDataToStudyMetadata(server, studyInstanceUid, result.data);
if (!study) {
study = {};
}
var study = {
wadoUriRoot: server.wadoUriRoot,
studyInstanceUid: studyInstanceUid,
seriesList: resultDataToStudyMetadata(server, studyInstanceUid, result.data)
};
study.wadoUriRoot = server.wadoUriRoot;
study.studyInstanceUid = studyInstanceUid;
return study;
return study;
};