full circle ModalitiesInStudy filtering
This commit is contained in:
parent
3ce4b886ac
commit
053ed36e8f
@ -61,24 +61,15 @@ InputMultiSelect.propTypes = {
|
|||||||
onLabelClick: PropTypes.func.isRequired,
|
onLabelClick: PropTypes.func.isRequired,
|
||||||
onChange: PropTypes.func.isRequired,
|
onChange: PropTypes.func.isRequired,
|
||||||
placeholder: PropTypes.string,
|
placeholder: PropTypes.string,
|
||||||
|
/** Array of options to list as options */
|
||||||
options: PropTypes.arrayOf(
|
options: PropTypes.arrayOf(
|
||||||
PropTypes.shape({
|
PropTypes.shape({
|
||||||
value: PropTypes.string,
|
value: PropTypes.string,
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
value: PropTypes.oneOfType([
|
/** Array of string values that exist in our list of options */
|
||||||
PropTypes.arrayOf(
|
value: PropTypes.arrayOf(PropTypes.string),
|
||||||
PropTypes.shape({
|
|
||||||
value: PropTypes.string,
|
|
||||||
label: PropTypes.string,
|
|
||||||
})
|
|
||||||
),
|
|
||||||
PropTypes.shape({
|
|
||||||
value: PropTypes.string,
|
|
||||||
label: PropTypes.string,
|
|
||||||
}),
|
|
||||||
]),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default InputMultiSelect;
|
export default InputMultiSelect;
|
||||||
|
|||||||
@ -104,13 +104,18 @@ const StudyListFilter = ({
|
|||||||
StudyListFilter.propTypes = {
|
StudyListFilter.propTypes = {
|
||||||
filtersMeta: PropTypes.arrayOf(
|
filtersMeta: PropTypes.arrayOf(
|
||||||
PropTypes.shape({
|
PropTypes.shape({
|
||||||
|
/** Identifier used to map a field to it's value in `filterValues` */
|
||||||
name: PropTypes.string.isRequired,
|
name: PropTypes.string.isRequired,
|
||||||
|
/** Friendly label for filter field */
|
||||||
displayName: PropTypes.string.isRequired,
|
displayName: PropTypes.string.isRequired,
|
||||||
|
/** One of the supported filter field input types */
|
||||||
inputType: PropTypes.oneOf(['Text', 'MultiSelect', 'DateRange', 'None'])
|
inputType: PropTypes.oneOf(['Text', 'MultiSelect', 'DateRange', 'None'])
|
||||||
.isRequired,
|
.isRequired,
|
||||||
isSortable: PropTypes.bool.isRequired,
|
isSortable: PropTypes.bool.isRequired,
|
||||||
|
/** Size of filter field in a 12-grid system */
|
||||||
gridCol: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
|
gridCol: PropTypes.oneOf([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
|
||||||
.isRequired,
|
.isRequired,
|
||||||
|
/** Options for a "MultiSelect" inputType */
|
||||||
option: PropTypes.arrayOf(
|
option: PropTypes.arrayOf(
|
||||||
PropTypes.shape({
|
PropTypes.shape({
|
||||||
value: PropTypes.string,
|
value: PropTypes.string,
|
||||||
|
|||||||
@ -91,17 +91,22 @@ function _getQueryFilterValues(query) {
|
|||||||
query = new URLSearchParams(query);
|
query = new URLSearchParams(query);
|
||||||
|
|
||||||
const queryFilterValues = {
|
const queryFilterValues = {
|
||||||
|
// DCM
|
||||||
patientName: query.get('patientName'),
|
patientName: query.get('patientName'),
|
||||||
// mrn: query.get('mrn'), patientId?
|
// mrn: query.get('mrn'), patientId?
|
||||||
|
studyDescription: query.get('description'),
|
||||||
|
modalitiesInStudy: query.get('modalities')
|
||||||
|
? query.get('modalities').split(',')
|
||||||
|
: [],
|
||||||
|
accessionNumber: query.get('accession'),
|
||||||
|
//
|
||||||
startDate: query.get('startDate'),
|
startDate: query.get('startDate'),
|
||||||
endDate: query.get('endDate'),
|
endDate: query.get('endDate'),
|
||||||
studyDescription: query.get('description'),
|
|
||||||
//modalitiesInStudy: _tryParseJson(query.get('modality'), undefined),
|
|
||||||
accessionNumber: query.get('accession'),
|
|
||||||
sortBy: query.get('soryBy'),
|
|
||||||
sortDirection: query.get('sortDirection'),
|
|
||||||
page: _tryParseInt(query.get('page'), undefined),
|
page: _tryParseInt(query.get('page'), undefined),
|
||||||
resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined),
|
resultsPerPage: _tryParseInt(query.get('resultsPerPage'), undefined),
|
||||||
|
// Rarely supported server-side
|
||||||
|
sortBy: query.get('sortBy'),
|
||||||
|
sortDirection: query.get('sortDirection'),
|
||||||
};
|
};
|
||||||
|
|
||||||
// patientName: good
|
// patientName: good
|
||||||
|
|||||||
@ -54,7 +54,6 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
const currValue = debouncedFilterValues[key];
|
const currValue = debouncedFilterValues[key];
|
||||||
|
|
||||||
// TODO: nesting/recursion?
|
// TODO: nesting/recursion?
|
||||||
// TODO: modalities array
|
|
||||||
if (key === 'studyDate') {
|
if (key === 'studyDate') {
|
||||||
if (
|
if (
|
||||||
currValue.startDate &&
|
currValue.startDate &&
|
||||||
@ -65,6 +64,8 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
if (currValue.endDate && defaultValue.endDate !== currValue.endDate) {
|
if (currValue.endDate && defaultValue.endDate !== currValue.endDate) {
|
||||||
queryString.endDate = currValue.endDate;
|
queryString.endDate = currValue.endDate;
|
||||||
}
|
}
|
||||||
|
} else if (key === 'modalities' && currValue.length) {
|
||||||
|
queryString.modalities = currValue.join(',');
|
||||||
} else if (currValue !== defaultValue) {
|
} else if (currValue !== defaultValue) {
|
||||||
queryString[key] = currValue;
|
queryString[key] = currValue;
|
||||||
}
|
}
|
||||||
@ -110,7 +111,7 @@ function StudyListContainer({ history, data: studies }) {
|
|||||||
gridCol: 4,
|
gridCol: 4,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'modality',
|
name: 'modalities',
|
||||||
displayName: 'Modality',
|
displayName: 'Modality',
|
||||||
inputType: 'MultiSelect',
|
inputType: 'MultiSelect',
|
||||||
inputProps: {
|
inputProps: {
|
||||||
@ -383,7 +384,7 @@ const defaultFilterValues = {
|
|||||||
endDate: undefined,
|
endDate: undefined,
|
||||||
},
|
},
|
||||||
description: '',
|
description: '',
|
||||||
modality: [],
|
modalities: [],
|
||||||
accession: '',
|
accession: '',
|
||||||
sortBy: '',
|
sortBy: '',
|
||||||
sortDirection: 'none',
|
sortDirection: 'none',
|
||||||
@ -400,7 +401,9 @@ function _getQueryFilterValues(query) {
|
|||||||
endDate: query.get('endDate'),
|
endDate: query.get('endDate'),
|
||||||
},
|
},
|
||||||
description: query.get('description'),
|
description: query.get('description'),
|
||||||
// modality: _tryParseJson(query.get('modality'), undefined),
|
modalities: query.get('modalities')
|
||||||
|
? query.get('modalities').split(',')
|
||||||
|
: [],
|
||||||
accession: query.get('accession'),
|
accession: query.get('accession'),
|
||||||
sortBy: query.get('soryBy'),
|
sortBy: query.get('soryBy'),
|
||||||
sortDirection: query.get('sortDirection'),
|
sortDirection: query.get('sortDirection'),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user