Skip to content

Commit

Permalink
OpenConceptLab/ocl_issues#1424 | OpenMRS Cascade option while adding …
Browse files Browse the repository at this point in the history
…to collection
  • Loading branch information
snyaggarwal committed Nov 8, 2022
1 parent 54b0eaf commit 7a51fdf
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 12 deletions.
4 changes: 3 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,9 @@
"xxxxxxxx",
"xxxxxxxxxxxx",
"forground",
"eng"
"eng",
"sourcetoconcepts",
"sourcemappings"
],
"skipIfMatch": [
"http://[^s]*",
Expand Down
13 changes: 8 additions & 5 deletions src/components/collections/ReferenceForm.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class ReferenceForm extends React.Component {
byResource: false,
cascadeMappings: false,
cascadeToConcepts: false,
cascadeMethod: false,
fields: {
expressions: [cloneDeep(EXPRESSION_MODEL)],
},
Expand Down Expand Up @@ -132,17 +133,19 @@ class ReferenceForm extends React.Component {

submitReferences = () => {
this.setState({isSubmitting: true}, () => {
const { cascadeMappings, cascadeToConcepts } = this.state
const { cascadeMappings, cascadeToConcepts, cascadeMethod } = this.state
const { parentURL } = this.props
let queryParams = {}
if(cascadeToConcepts)
queryParams = {cascade: 'sourceToConcepts'}
queryParams = {cascade: 'sourcetoconcepts'}
else if(cascadeMappings)
queryParams = {cascade: 'sourceMappings'}
queryParams = {cascade: 'sourcemappings'}
else if(cascadeMethod)
queryParams = {cascade: {method: 'sourcetoconcepts', cascade_levels: '*', map_types: 'Q-AND-A,CONCEPT-SET', return_map_types: '*'}}


APIService.new().overrideURL(parentURL).appendToUrl('references/').put(
{data: this.getExpressionsToSubmit()}, null, null, queryParams
{data: this.getExpressionsToSubmit(), cascade: queryParams.cascade}, null, null, queryParams
).then(response => this.setState(
{cascadeDialog: false, isSubmitting: false}, () => this.handleSubmitResponse(response))
)
Expand Down Expand Up @@ -324,7 +327,7 @@ class ReferenceForm extends React.Component {
open={cascadeDialog}
references={fields.expressions}
onCascadeChange={states => this.setState({
cascadeToConcepts: states.cascadeToConcepts, cascadeMappings: states.cascadeMappings
cascadeToConcepts: states.cascadeToConcepts, cascadeMappings: states.cascadeMappings, cascadeMethod: states.cascadeMethod
})}
collectionName={`${collection.owner}/${collection.short_code}`}
onClose={() => this.setState({cascadeDialog: false})}
Expand Down
13 changes: 8 additions & 5 deletions src/components/common/AddToCollection.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class AddToCollection extends React.Component {
collections: [],
cascadeMappings: false,
cascadeToConcepts: false,
cascadeMethod: false,
result: false,
collectionForm: false,
addMappings: true,
Expand Down Expand Up @@ -81,7 +82,7 @@ class AddToCollection extends React.Component {
}

handleAdd = () => {
const { selectedCollection, cascadeMappings, cascadeToConcepts, addMappings, addToConcepts, addFromConcepts } = this.state
const { selectedCollection, cascadeMappings, cascadeToConcepts, cascadeMethod, addMappings, addToConcepts, addFromConcepts } = this.state
const { references } = this.props
const isMapping = Boolean(get(references, '0.map_type'))
let expressions = [];
Expand All @@ -97,9 +98,11 @@ class AddToCollection extends React.Component {
} else {
expressions = map(references, 'url')
if(cascadeToConcepts)
queryParams = {cascade: 'sourceToConcepts'}
queryParams = {cascade: 'sourcetoconcepts'}
else if(cascadeMappings)
queryParams = {cascade: 'sourceMappings'}
queryParams = {cascade: 'sourcemappings'}
else if(cascadeMethod)
queryParams = {cascade: {method: 'sourcetoconcepts', cascade_levels: '*', map_types: 'Q-AND-A,CONCEPT-SET', return_map_types: '*'}}
}
if(isEmpty(expressions)) {
alertifyjs.error('No expressions to add')
Expand All @@ -108,7 +111,7 @@ class AddToCollection extends React.Component {
this._collectionName = this.getCollectionName()
APIService.new().overrideURL(selectedCollection.url)
.appendToUrl('references/')
.put({data: {expressions: expressions}}, null, null, queryParams)
.put({data: {expressions: expressions}, cascade: queryParams.cascade}, null, null, queryParams)
.then(response => {
this.setState({isAdding: false}, () => {
if(response.status === 200) {
Expand Down Expand Up @@ -259,7 +262,7 @@ class AddToCollection extends React.Component {
(
isMappingReferences ?
<MappingReferenceAddOptionsDialog references={references} onChange={states => this.setState({addMappings: states.addMappings, addToConcepts: states.addToConcepts, addFromConcepts: states.addFromConcepts})} collectionName={collectionName} /> :
<ReferenceCascadeDialog references={references} onCascadeChange={states => this.setState({cascadeToConcepts: states.cascadeToConcepts, cascadeMappings: states.cascadeMappings})} collectionName={collectionName} />
<ReferenceCascadeDialog references={references} onCascadeChange={states => this.setState({cascadeToConcepts: states.cascadeToConcepts, cascadeMappings: states.cascadeMappings, cascadeMethod: states.cascadeMethod})} collectionName={collectionName} />
)
}
<DialogActions>
Expand Down
16 changes: 15 additions & 1 deletion src/components/common/ReferenceCascadeDialog.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const ReferenceCascadeDialog = ({ references, collectionName, onCascadeChange, o
const onChange = event => {
const newValue = event.target.value
setCascadeMethod(newValue)
onCascadeChange({cascadeMappings: newValue === 'cascadeMappings', cascadeToConcepts: newValue === 'cascadeToConcepts'})
onCascadeChange({cascadeMappings: newValue === 'cascadeMappings', cascadeToConcepts: newValue === 'cascadeToConcepts', cascadeMethod: newValue})
}

const getContent = () => (
Expand Down Expand Up @@ -73,6 +73,20 @@ const ReferenceCascadeDialog = ({ references, collectionName, onCascadeChange, o
</span>
}
/>
<FormControlLabel
value="OpenMRSCascade"
control={<Radio />}
label={
<span className='flex-vertical-center'>
<span style={{marginRight: '5px', fontSize: '14px'}}>
OpenMRS Cascade
</span>
<Tooltip arrow title='A specialized cascade option for OpenMRS that, for each selected concept, adds the concept AND all its mappings and any concepts that are answers or set members (i.e. concepts that are associated by a "Q-AND-A" or "CONCEPT-SET" map type) if they are in the same source as the selected concept(s).'>
<HelpIcon fontSize='small' style={{fontSize: '14px'}}/>
</Tooltip>
</span>
}
/>
</RadioGroup>
</FormControl>
</React.Fragment>
Expand Down

0 comments on commit 7a51fdf

Please sign in to comment.