- 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:
parent
a5d4c6d0eb
commit
a2c0dbefc3
@ -13,6 +13,7 @@ Package.onUse(function(api) {
|
|||||||
api.addFiles('server/getName.js', 'server');
|
api.addFiles('server/getName.js', 'server');
|
||||||
api.addFiles('server/getNumber.js', 'server');
|
api.addFiles('server/getNumber.js', 'server');
|
||||||
api.addFiles('server/getString.js', 'server');
|
api.addFiles('server/getString.js', 'server');
|
||||||
|
api.addFiles('server/getModalities.js', 'server');
|
||||||
|
|
||||||
api.export('DICOMWeb', ['client', 'server']);
|
api.export('DICOMWeb', ['client', 'server']);
|
||||||
});
|
});
|
||||||
|
|||||||
21
Packages/dicomweb/server/getModalities.js
Normal file
21
Packages/dicomweb/server/getModalities.js
Normal 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;
|
||||||
|
};
|
||||||
@ -40,7 +40,7 @@ Services.DIMSE.Studies = function(filter) {
|
|||||||
0x00081030: filter.studyDescription,
|
0x00081030: filter.studyDescription,
|
||||||
0x00100040: "",
|
0x00100040: "",
|
||||||
0x00201208: "",
|
0x00201208: "",
|
||||||
0x00080061: filter.modality
|
0x00080061: ""
|
||||||
};
|
};
|
||||||
|
|
||||||
var results = DIMSE.retrieveStudies(parameters);
|
var results = DIMSE.retrieveStudies(parameters);
|
||||||
|
|||||||
@ -8,7 +8,8 @@
|
|||||||
*/
|
*/
|
||||||
function filterToQIDOURL(server, filter) {
|
function filterToQIDOURL(server, filter) {
|
||||||
var commaSeparatedFields = [
|
var commaSeparatedFields = [
|
||||||
'00081030' // Study Description
|
'00081030', // Study Description
|
||||||
|
'00080060' //Modality
|
||||||
// Add more fields here if you want them in the Study List
|
// Add more fields here if you want them in the Study List
|
||||||
].join(',');
|
].join(',');
|
||||||
|
|
||||||
@ -17,7 +18,6 @@ function filterToQIDOURL(server, filter) {
|
|||||||
PatientID: filter.patientId,
|
PatientID: filter.patientId,
|
||||||
AccessionNumber: filter.accessionNumber,
|
AccessionNumber: filter.accessionNumber,
|
||||||
StudyDescription: filter.studyDescription,
|
StudyDescription: filter.studyDescription,
|
||||||
ModalitiesInStudy: filter.modality,
|
|
||||||
limit: filter.limit || 20,
|
limit: filter.limit || 20,
|
||||||
includefield: server.qidoSupportsIncludeField ? 'all' : commaSeparatedFields
|
includefield: server.qidoSupportsIncludeField ? 'all' : commaSeparatedFields
|
||||||
};
|
};
|
||||||
@ -50,7 +50,9 @@ function resultDataToStudies(resultData) {
|
|||||||
numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),
|
numberOfStudyRelatedSeries: DICOMWeb.getString(study['00201206']),
|
||||||
numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),
|
numberOfStudyRelatedInstances: DICOMWeb.getString(study['00201208']),
|
||||||
studyDescription: DICOMWeb.getString(study['00081030']),
|
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;
|
return studies;
|
||||||
|
|||||||
@ -71,6 +71,20 @@ function isIndexOf(mainVal, searchVal) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace object if undefined
|
||||||
|
*/
|
||||||
|
function replaceUndefinedColumnValue(text) {
|
||||||
|
if (text === undefined || text === 'undefined') {
|
||||||
|
return '';
|
||||||
|
} else {
|
||||||
|
return text.toUpperCase();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert string to study date
|
* Convert string to study date
|
||||||
*/
|
*/
|
||||||
@ -98,10 +112,13 @@ function search() {
|
|||||||
patientName: getFilter($('input#patientName').val()),
|
patientName: getFilter($('input#patientName').val()),
|
||||||
patientId: getFilter($('input#patientId').val()),
|
patientId: getFilter($('input#patientId').val()),
|
||||||
accessionNumber: getFilter($('input#accessionNumber').val()),
|
accessionNumber: getFilter($('input#accessionNumber').val()),
|
||||||
studyDescription: getFilter($('input#studyDescription').val()),
|
studyDescription: getFilter($('input#studyDescription').val())
|
||||||
modality: getFilter($('input#modality').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
|
// Clear all current studies
|
||||||
WorklistStudies.remove({});
|
WorklistStudies.remove({});
|
||||||
|
|
||||||
@ -121,9 +138,9 @@ function search() {
|
|||||||
|
|
||||||
// Loop through all identified studies
|
// Loop through all identified studies
|
||||||
studies.forEach(function(study) {
|
studies.forEach(function(study) {
|
||||||
|
|
||||||
// Search the rest of the parameters that aren't done via the server call
|
// 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 === "")) {
|
(convertStringToStudyDate(study.studyDate) <= new Date(studyDateTo).setHours(0, 0, 0, 0) || !studyDateTo || studyDateTo === "")) {
|
||||||
|
|
||||||
// Convert numberOfStudyRelatedInstance string into integer
|
// Convert numberOfStudyRelatedInstance string into integer
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user