diff --git a/extensions/default/src/DicomWebDataSource/index.js b/extensions/default/src/DicomWebDataSource/index.js index e1b1a5f3a..bfd4a8ffd 100644 --- a/extensions/default/src/DicomWebDataSource/index.js +++ b/extensions/default/src/DicomWebDataSource/index.js @@ -37,7 +37,13 @@ const EXPLICIT_VR_LITTLE_ENDIAN = '1.2.840.10008.1.2.1'; * @param {bool} lazyLoadStudy - "enableStudyLazyLoad"; Request series meta async instead of blocking */ function createDicomWebApi(dicomWebConfig) { - const { qidoRoot, wadoRoot, enableStudyLazyLoad } = dicomWebConfig; + const { + qidoRoot, + wadoRoot, + enableStudyLazyLoad, + supportsFuzzyMatching, + supportsWildcard + } = dicomWebConfig; const qidoConfig = { url: qidoRoot, @@ -57,9 +63,9 @@ function createDicomWebApi(dicomWebConfig) { query: { studies: { mapParams: mapParams.bind(), - search: async function(origParams) { + search: async function (origParams) { const { studyInstanceUid, seriesInstanceUid, ...mappedParams } = - mapParams(origParams) || {}; + mapParams(origParams, { supportsFuzzyMatching, supportsWildcard }) || {}; const results = await qidoSearch( qidoDicomWebClient, @@ -74,7 +80,7 @@ function createDicomWebApi(dicomWebConfig) { }, series: { // mapParams: mapParams.bind(), - search: async function(studyInstanceUid) { + search: async function (studyInstanceUid) { const results = await seriesInStudy( qidoDicomWebClient, studyInstanceUid diff --git a/extensions/default/src/DicomWebDataSource/qido.js b/extensions/default/src/DicomWebDataSource/qido.js index c6fddf307..1c188de66 100644 --- a/extensions/default/src/DicomWebDataSource/qido.js +++ b/extensions/default/src/DicomWebDataSource/qido.js @@ -151,7 +151,7 @@ export default function searchStudies(server, filter) { * @param serverSupportsQIDOIncludeField * @returns {string} The URL with encoded filter query data */ -function mapParams(params) { +function mapParams(params, options = {}) { if (!params) { return; } @@ -161,17 +161,22 @@ function mapParams(params) { // Add more fields here if you want them in the result ].join(','); + const { supportsWildcard } = options; + const withWildcard = value => { + return supportsWildcard && value ? `*${value}*` : value; + }; + const parameters = { // Named - PatientName: params.patientName, - PatientID: params.patientId, - AccessionNumber: params.accessionNumber, - StudyDescription: params.studyDescription, + PatientName: withWildcard(params.patientName), + PatientID: withWildcard(params.patientId), + AccessionNumber: withWildcard(params.accessionNumber), + StudyDescription: withWildcard(params.studyDescription), ModalitiesInStudy: params.modalitiesInStudy, // Other limit: params.limit || 101, offset: params.offset || 0, - fuzzymatching: params.fuzzymatching === undefined ? false : true, + fuzzymatching: options.supportsFuzzyMatching === true, includefield: commaSeparatedFields, // serverSupportsQIDOIncludeField ? commaSeparatedFields : 'all', }; diff --git a/platform/viewer/public/config/default.js b/platform/viewer/public/config/default.js index 4aa619bd2..ac5bcd8d1 100644 --- a/platform/viewer/public/config/default.js +++ b/platform/viewer/public/config/default.js @@ -20,6 +20,7 @@ window.config = { thumbnailRendering: 'wadors', enableStudyLazyLoad: true, supportsFuzzyMatching: true, + supportsWildcard: true }, }, ], diff --git a/platform/viewer/public/config/netlify.js b/platform/viewer/public/config/netlify.js index 6861a50ed..7b6f0a7a0 100644 --- a/platform/viewer/public/config/netlify.js +++ b/platform/viewer/public/config/netlify.js @@ -20,6 +20,7 @@ window.config = { thumbnailRendering: 'wadors', enableStudyLazyLoad: true, supportsFuzzyMatching: true, + supportsWildcard: true }, }, ],