- Return modalities attribute by merging modality and modalitiesInStudy attributes to be able to filter if only modality tag exists

- Remove modality tag in filter object and filter modalities of studies returned from WorklistSearch method
This commit is contained in:
Aysel Afsar 2016-03-16 21:23:48 -04:00
parent a5d4c6d0eb
commit a2c0dbefc3
5 changed files with 49 additions and 8 deletions

View File

@ -13,6 +13,7 @@ Package.onUse(function(api) {
api.addFiles('server/getName.js', 'server');
api.addFiles('server/getNumber.js', 'server');
api.addFiles('server/getString.js', 'server');
api.addFiles('server/getModalities.js', 'server');
api.export('DICOMWeb', ['client', 'server']);
});

View File

@ -0,0 +1,21 @@
DICOMWeb.getModalities = function(modality, modalitiesInStudy) {
var modalities = {};
if (modality) {
modalities = modality;
}
if (modalitiesInStudy) {
// Find vr in modalities
if (modalities.vr && modalities.vr === modalitiesInStudy.vr) {
for (var i = 0; i < modalitiesInStudy.Value.length; i++) {
var value = modalitiesInStudy.Value[i];
if (modalities.Value.indexOf(value) === -1) {
modalities.Value.push(value);
}
}
} else {
modalities = modalitiesInStudy;
}
}
return modalities;
};

View File

@ -40,7 +40,7 @@ Services.DIMSE.Studies = function(filter) {
0x00081030: filter.studyDescription,
0x00100040: "",
0x00201208: "",
0x00080061: filter.modality
0x00080061: ""
};
var results = DIMSE.retrieveStudies(parameters);

View File

@ -8,7 +8,8 @@
*/
function filterToQIDOURL(server, filter) {
var commaSeparatedFields = [
'00081030' // Study Description
'00081030', // Study Description
'00080060' //Modality
// Add more fields here if you want them in the Study List
].join(',');
@ -17,7 +18,6 @@ function filterToQIDOURL(server, filter) {
PatientID: filter.patientId,
AccessionNumber: filter.accessionNumber,
StudyDescription: filter.studyDescription,
ModalitiesInStudy: filter.modality,
limit: filter.limit || 20,
includefield: server.qidoSupportsIncludeField ? 'all' : commaSeparatedFields
};
@ -50,7 +50,9 @@ function resultDataToStudies(resultData) {
numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),
numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),
studyDescription: DICOMWeb.getString(study['00081030']),
modalities: DICOMWeb.getString(study['00080061'])
// modality: DICOMWeb.getString(study['00080060']),
// modalitiesInStudy: DICOMWeb.getString(study['00080061']),
modalities: DICOMWeb.getString(DICOMWeb.getModalities(study['00080060'], study['00080061']))
});
});
return studies;

View File

@ -71,6 +71,20 @@ function isIndexOf(mainVal, searchVal) {
return false;
}
/**
* Replace object if undefined
*/
function replaceUndefinedColumnValue(text) {
if (text === undefined || text === 'undefined') {
return '';
} else {
return text.toUpperCase();
}
}
/**
/**
* Convert string to study date
*/
@ -98,10 +112,13 @@ function search() {
patientName: getFilter($('input#patientName').val()),
patientId: getFilter($('input#patientId').val()),
accessionNumber: getFilter($('input#accessionNumber').val()),
studyDescription: getFilter($('input#studyDescription').val()),
modality: getFilter($('input#modality').val())
studyDescription: getFilter($('input#studyDescription').val())
};
// Make sure that modality has a reasonable value, since it is occasionally
// returned as 'undefined'
var modality = replaceUndefinedColumnValue($('input#modality').val());
// Clear all current studies
WorklistStudies.remove({});
@ -121,9 +138,9 @@ function search() {
// Loop through all identified studies
studies.forEach(function(study) {
// Search the rest of the parameters that aren't done via the server call
if ((new Date(studyDateFrom).setHours(0, 0, 0, 0) <= convertStringToStudyDate(study.studyDate) || !studyDateFrom || studyDateFrom === "") &&
if (isIndexOf(study.modalities, modality) &&
(new Date(studyDateFrom).setHours(0, 0, 0, 0) <= convertStringToStudyDate(study.studyDate) || !studyDateFrom || studyDateFrom === "") &&
(convertStringToStudyDate(study.studyDate) <= new Date(studyDateTo).setHours(0, 0, 0, 0) || !studyDateTo || studyDateTo === "")) {
// Convert numberOfStudyRelatedInstance string into integer