From 8a6fd211594fb26f41a99eb24a979a5fe4098b5a Mon Sep 17 00:00:00 2001 From: petershale21 Date: Tue, 14 Jul 2026 12:42:34 +0200 Subject: [PATCH] Fix: Use short names instead of fully specified names in form builder --- .../components/ControlPropertiesContainer.jsx | 39 +++++++++++++++++-- src/form-builder/constants.js | 2 +- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/form-builder/components/ControlPropertiesContainer.jsx b/src/form-builder/components/ControlPropertiesContainer.jsx index ca34983d..ae98cb62 100644 --- a/src/form-builder/components/ControlPropertiesContainer.jsx +++ b/src/form-builder/components/ControlPropertiesContainer.jsx @@ -19,16 +19,47 @@ export class ControlPropertiesContainer extends Component { onSelect(concept) { const conceptName = concept.name.name; + httpInterceptor .get(new UrlHelper().getFullConceptRepresentation(conceptName)) .then((data) => { const result = data.results[0]; - result.display = result.name.name; - this.props.dispatch(selectSource(result, this.props.selectedControl.id)); + + // Recursively replace fully specified names with short names + const setShortNames = (concept) => { + if (!concept) return concept; + + // Find and apply short name if it exists + const shortName = concept.names && + concept.names.find(name => name.conceptNameType === 'SHORT'); + if (shortName) { + concept.display = shortName.name; + if (concept.name) { + concept.name = Object.assign({}, concept.name, { + name: shortName.name, + display: shortName.name + }); + } + if (concept.displayString) { + concept.displayString = shortName.name; + } + } + + // Recursively process nested answers and set members + if (concept.answers && concept.answers.length) { + concept.answers = concept.answers.map(setShortNames); + } + if (concept.setMembers && concept.setMembers.length) { + concept.setMembers = concept.setMembers.map(setShortNames); + } + + return concept; + }; + + this.props.dispatch(selectSource(setShortNames(result), this.props.selectedControl.id)); }) .catch((error) => this.setErrorMessage(error)); - } - +} onPropertyUpdate(properties, id) { this.props.dispatch(setChangedProperty(properties, id)); } diff --git a/src/form-builder/constants.js b/src/form-builder/constants.js index e7570e5a..8650c268 100644 --- a/src/form-builder/constants.js +++ b/src/form-builder/constants.js @@ -1,6 +1,6 @@ export const formBuilderConstants = { conceptUrl: '/openmrs/ws/rest/v1/concept', - conceptRepresentation: 'custom:(uuid,set,display,allowDecimal,name:(uuid,name),' + + conceptRepresentation: 'custom:(uuid,set,display,allowDecimal,name:(uuid,name),names:(uuid,name,conceptNameType),' + 'conceptClass:(uuid,name),datatype:(uuid,name),answers,handler,hiNormal,lowNormal,' + 'hiAbsolute,lowAbsolute,units,setMembers:(uuid,set,display,allowDecimal,name:(uuid,name),' + 'conceptClass:(uuid,name),datatype:(uuid,name),' +