@aehrc/smart-forms-renderer 1.0.0-alpha.45 → 1.0.0-alpha.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +2 -3
  2. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +2 -2
  3. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
  4. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +27 -10
  5. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
  6. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +2 -1
  7. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +2 -2
  8. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
  9. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +11 -3
  10. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
  11. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +3 -2
  12. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +1 -1
  13. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
  14. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +33 -5
  15. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  16. package/lib/hooks/useRendererQueryClient.d.ts +2 -2
  17. package/lib/hooks/useRendererQueryClient.js +5 -4
  18. package/lib/hooks/useRendererQueryClient.js.map +1 -1
  19. package/lib/theme/typography.d.ts +1 -1
  20. package/package.json +1 -1
  21. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +8 -9
  22. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +35 -18
  23. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +8 -3
  24. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +16 -5
  25. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +8 -4
  26. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +45 -7
  27. package/src/components/Renderer/FormBodyTabbed.tsx +1 -1
  28. package/src/hooks/useRendererQueryClient.ts +5 -4
  29. package/src/theme/typography.ts +1 -1
  30. package/lib/components/Renderer/FormBodyPage.d.ts +0 -8
  31. package/lib/components/Renderer/FormBodyPage.js +0 -41
  32. package/lib/components/Renderer/FormBodyPage.js.map +0 -1
  33. package/lib/components/Renderer/FormBodySinglePage.d.ts +0 -8
  34. package/lib/components/Renderer/FormBodySinglePage.js +0 -42
  35. package/lib/components/Renderer/FormBodySinglePage.js.map +0 -1
  36. package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -8
  37. package/lib/components/Renderer/FormTopLevelPage.js +0 -26
  38. package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
  39. package/lib/interfaces/computedChanges.interface.d.ts +0 -5
  40. package/lib/interfaces/computedChanges.interface.js +0 -2
  41. package/lib/interfaces/computedChanges.interface.js.map +0 -1
  42. package/lib/interfaces/parameterisedValueSets.interface.d.ts +0 -13
  43. package/lib/interfaces/parameterisedValueSets.interface.js +0 -2
  44. package/lib/interfaces/parameterisedValueSets.interface.js.map +0 -1
@@ -1,3 +1,4 @@
1
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
1
2
  import type { Coding, QuestionnaireItem } from 'fhir/r4';
2
3
  import type { PropsWithIsTabledRequiredAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithRenderingExtensionsAttribute } from '../../../interfaces/renderProps.interface';
3
4
  import type { AlertColor } from '@mui/material/Alert';
@@ -12,9 +13,7 @@ interface OpenChoiceAutocompleteFieldProps extends PropsWithIsTabledRequiredAttr
12
13
  color: AlertColor;
13
14
  } | null;
14
15
  readOnly: boolean;
15
- onInputChange: (newInput: string) => void;
16
- onValueChange: (newValue: Coding | string | null) => void;
17
- onUnfocus: () => void;
16
+ onValueChange: (newValue: Coding | string | null, reason: AutocompleteChangeReason | string) => void;
18
17
  }
19
18
  declare function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps): import("react/jsx-runtime").JSX.Element;
20
19
  export default OpenChoiceAutocompleteField;
@@ -13,11 +13,11 @@ import ErrorIcon from '@mui/icons-material/Error';
13
13
  import { useRendererStylingStore } from '../../../stores';
14
14
  import DisplayUnitText from '../ItemParts/DisplayUnitText';
15
15
  function OpenChoiceAutocompleteField(props) {
16
- const { qItem, options, valueAutocomplete, input, loading, feedback, readOnly, isTabled, renderingExtensions, onInputChange, onValueChange, onUnfocus } = props;
16
+ const { qItem, options, valueAutocomplete, input, loading, feedback, readOnly, isTabled, renderingExtensions, onValueChange } = props;
17
17
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
18
18
  const textFieldWidth = useRendererStylingStore.use.textFieldWidth();
19
19
  const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
20
- return (_jsx(Box, Object.assign({ display: "flex" }, { children: _jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueAutocomplete, options: options, getOptionLabel: (option) => { var _a; return typeof option === 'string' ? option : ((_a = option.display) !== null && _a !== void 0 ? _a : `${option.code}`); }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', loading: loading, loadingText: 'Fetching results...', clearOnEscape: true, freeSolo: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 220, flexGrow: 1 }, onChange: (_, newValue) => onValueChange(newValue), filterOptions: (x) => x, renderInput: (params) => (_jsx(StandardTextField, Object.assign({}, params, { value: input, onBlur: onUnfocus, onChange: (e) => onInputChange(e.target.value), textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, size: "small", placeholder: entryFormat, slotProps: {
20
+ return (_jsx(Box, Object.assign({ display: "flex" }, { children: _jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueAutocomplete, options: options, getOptionLabel: (option) => { var _a; return typeof option === 'string' ? option : ((_a = option.display) !== null && _a !== void 0 ? _a : `${option.code}`); }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', loading: loading, loadingText: 'Fetching results...', clearOnEscape: true, freeSolo: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 220, flexGrow: 1 }, onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), filterOptions: (x) => x, renderInput: (params) => (_jsx(StandardTextField, Object.assign({}, params, { value: input, textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, size: "small", placeholder: entryFormat, slotProps: {
21
21
  input: Object.assign(Object.assign({}, params.InputProps), { readOnly: readOnly && readOnlyVisualStyle === 'readonly', startAdornment: (_jsxs(_Fragment, { children: [!valueAutocomplete || valueAutocomplete === '' ? (_jsx(SearchIcon, { fontSize: "small", sx: { ml: 0.5 } })) : null, params.InputProps.startAdornment] })),
22
22
  // Warning indicator should not show up in open-choice autocomplete
23
23
  endAdornment: (_jsxs(_Fragment, { children: [loading ? (_jsx(CircularProgress, { color: "inherit", size: 16 })) : feedback && feedback.color !== 'warning' ? (_jsx(Fade, Object.assign({ in: !!feedback, timeout: 300 }, { children: _jsx(Tooltip, Object.assign({ title: feedback.message, arrow: true, sx: { ml: 1 } }, { children: {
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx"],"names":[],"mappings":"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"}
@@ -60,14 +60,37 @@ function OpenChoiceAutocompleteItem(props) {
60
60
  return null;
61
61
  }
62
62
  // Event handlers
63
- function handleValueChange(newValue) {
63
+ // Handler function which handles both input change and selection change
64
+ function handleValueChange(newValue, reason) {
65
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
66
+ if (reason === 'reset') {
67
+ return;
68
+ }
69
+ //if the text input is changed, and only if hte input is a string the set the state.
70
+ if (newValue && typeof newValue === 'string' && reason === 'input') {
71
+ setInput(newValue);
72
+ // return;
73
+ }
64
74
  if (newValue === null) {
65
75
  setInput('');
66
76
  newValue = '';
67
77
  }
68
78
  if (typeof newValue === 'string') {
69
79
  if (newValue !== '') {
70
- onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, answerKey)), { answer: [{ id: answerKey, valueString: newValue }] }));
80
+ // Check if the newValue in in the options, first check options.display, then check options.code
81
+ const foundOption = options.find((option) => {
82
+ if (option.display) {
83
+ return option.display === newValue;
84
+ }
85
+ return option.code === newValue;
86
+ });
87
+ if (foundOption) {
88
+ newValue = foundOption;
89
+ onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueCoding: newValue }] }));
90
+ } //if newValue is not in the options list, treat it as a string
91
+ else {
92
+ onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, answerKey)), { answer: [{ id: answerKey, valueString: newValue }] }));
93
+ }
71
94
  }
72
95
  else {
73
96
  onQrItemChange(createEmptyQrItem(qItem, answerKey));
@@ -77,16 +100,10 @@ function OpenChoiceAutocompleteItem(props) {
77
100
  onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, answerKey)), { answer: [{ id: answerKey, valueCoding: newValue }] }));
78
101
  }
79
102
  }
80
- function handleUnfocus() {
81
- // set answer to current input when text field is unfocused
82
- if (!valueAutocomplete && input !== '') {
83
- onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem, answerKey)), { answer: [{ id: answerKey, valueString: input }] }));
84
- }
85
- }
86
103
  if (isRepeated) {
87
- return (_jsx(OpenChoiceAutocompleteField, { qItem: qItem, options: options, valueAutocomplete: valueAutocomplete, input: input, loading: loading, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onInputChange: (newValue) => setInput(newValue), onValueChange: handleValueChange, onUnfocus: handleUnfocus }));
104
+ return (_jsx(OpenChoiceAutocompleteField, { qItem: qItem, options: options, valueAutocomplete: valueAutocomplete, input: input, loading: loading, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onValueChange: handleValueChange }));
88
105
  }
89
- return (_jsx(FullWidthFormComponentBox, Object.assign({ "data-test": "q-item-open-choice-autocomplete-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) }, { children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsx(OpenChoiceAutocompleteField, { qItem: qItem, options: options, valueAutocomplete: valueAutocomplete, input: input, loading: loading, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onInputChange: (newValue) => setInput(newValue), onValueChange: handleValueChange, onUnfocus: handleUnfocus }) }) })));
106
+ return (_jsx(FullWidthFormComponentBox, Object.assign({ "data-test": "q-item-open-choice-autocomplete-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) }, { children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsx(OpenChoiceAutocompleteField, { qItem: qItem, options: options, valueAutocomplete: valueAutocomplete, input: input, loading: loading, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onValueChange: handleValueChange }) }) })));
90
107
  }
91
108
  export default OpenChoiceAutocompleteItem;
92
109
  //# sourceMappingURL=OpenChoiceAutocompleteItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceAutocompleteItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenChoiceAutocompleteItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
1
2
  import type { QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
2
3
  import type { PropsWithIsTabledRequiredAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithRenderingExtensionsAttribute } from '../../../interfaces/renderProps.interface';
3
4
  interface OpenChoiceSelectAnswerOptionFieldProps extends PropsWithIsTabledRequiredAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithRenderingExtensionsAttribute {
@@ -6,7 +7,7 @@ interface OpenChoiceSelectAnswerOptionFieldProps extends PropsWithIsTabledRequir
6
7
  valueSelect: QuestionnaireItemAnswerOption | null;
7
8
  feedback: string;
8
9
  readOnly: boolean;
9
- onChange: (newValue: QuestionnaireItemAnswerOption | string | null) => void;
10
+ onValueChange: (newValue: QuestionnaireItemAnswerOption | string | null, reason: AutocompleteChangeReason | string) => void;
10
11
  }
11
12
  declare function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFieldProps): import("react/jsx-runtime").JSX.Element;
12
13
  export default OpenChoiceSelectAnswerOptionField;
@@ -6,11 +6,11 @@ import { useRendererStylingStore } from '../../../stores';
6
6
  import { StyledRequiredTypography } from '../Item.styles';
7
7
  import DisplayUnitText from '../ItemParts/DisplayUnitText';
8
8
  function OpenChoiceSelectAnswerOptionField(props) {
9
- const { qItem, options, valueSelect, feedback, readOnly, isTabled, renderingExtensions, onChange } = props;
9
+ const { qItem, options, valueSelect, feedback, readOnly, isTabled, renderingExtensions, onValueChange } = props;
10
10
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
11
11
  const textFieldWidth = useRendererStylingStore.use.textFieldWidth();
12
12
  const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
13
- return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, options: options, getOptionLabel: (option) => getAnswerOptionLabel(option), onChange: (_, newValue) => onChange(newValue), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, Object.assign({ textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, placeholder: entryFormat }, params, { slotProps: {
13
+ return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, options: options, getOptionLabel: (option) => getAnswerOptionLabel(option), onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, Object.assign({ textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, placeholder: entryFormat }, params, { slotProps: {
14
14
  input: Object.assign(Object.assign({}, params.InputProps), { readOnly: readOnly && readOnlyVisualStyle === 'readonly', endAdornment: (_jsxs(_Fragment, { children: [params.InputProps.endAdornment, _jsx(DisplayUnitText, Object.assign({ readOnly: readOnly }, { children: displayUnit }))] })) })
15
15
  } }))) }), feedback ? _jsx(StyledRequiredTypography, { children: feedback }) : null] }));
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceSelectAnswerOptionField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAc3D,SAAS,iCAAiC,CAAC,KAA6C;IACtF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,QAAQ,EACT,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,8BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EACxD,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC7C,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,kBAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,SAAS,EAAE;wBACT,KAAK,kCACA,MAAM,CAAC,UAAU,KACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,kBAAC,QAAQ,EAAE,QAAQ,gBAAG,WAAW,IAAmB,IACnE,CACJ,GACF;qBACF,IACD,CACH,GACD,EAED,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,iCAAiC,CAAC"}
1
+ {"version":3,"file":"OpenChoiceSelectAnswerOptionField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAiB3D,SAAS,iCAAiC,CAAC,KAA6C;IACtF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,8BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EACxD,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClE,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EACvE,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,kBAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,SAAS,EAAE;wBACT,KAAK,kCACA,MAAM,CAAC,UAAU,KACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,kBAAC,QAAQ,EAAE,QAAQ,gBAAG,WAAW,IAAmB,IACnE,CACJ,GACF;qBACF,IACD,CACH,GACD,EAED,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,iCAAiC,CAAC"}
@@ -25,12 +25,20 @@ function OpenChoiceSelectAnswerOptionItem(props) {
25
25
  valueSelect = (_b = qrOpenChoice.answer[0]) !== null && _b !== void 0 ? _b : null;
26
26
  }
27
27
  // Event handlers
28
- function handleChange(newValue) {
28
+ // Handler function which handles both input change and selection change
29
+ function handleValueChange(newValue, reason) {
30
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
31
+ if (reason === 'reset') {
32
+ // console.log("Reason: ", reason)
33
+ return;
34
+ }
29
35
  if (newValue) {
36
+ //If the value is a string (i.e from freeSolo input)
30
37
  if (typeof newValue === 'string') {
31
38
  onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueString: newValue }] }));
32
39
  return;
33
40
  }
41
+ //If the value is not a string, then it is a coding.
34
42
  const option = newValue;
35
43
  if (option['valueCoding']) {
36
44
  onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueCoding: option.valueCoding }] }));
@@ -46,9 +54,9 @@ function OpenChoiceSelectAnswerOptionItem(props) {
46
54
  onQrItemChange(createEmptyQrItem(qItem, answerKey));
47
55
  }
48
56
  if (isRepeated) {
49
- return (_jsx(OpenChoiceSelectAnswerOptionField, { qItem: qItem, options: answerOptions, valueSelect: valueSelect, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onChange: handleChange }));
57
+ return (_jsx(OpenChoiceSelectAnswerOptionField, { qItem: qItem, options: answerOptions, valueSelect: valueSelect, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onValueChange: handleValueChange }));
50
58
  }
51
- return (_jsx(FullWidthFormComponentBox, Object.assign({ "data-test": "q-item-open-choice-select-answer-option-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) }, { children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsx(OpenChoiceSelectAnswerOptionField, { qItem: qItem, options: answerOptions, valueSelect: valueSelect, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onChange: handleChange }) }) })));
59
+ return (_jsx(FullWidthFormComponentBox, Object.assign({ "data-test": "q-item-open-choice-select-answer-option-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) }, { children: _jsx(ItemFieldGrid, { qItem: qItem, readOnly: readOnly, labelChildren: _jsx(ItemLabel, { qItem: qItem, readOnly: readOnly }), fieldChildren: _jsx(OpenChoiceSelectAnswerOptionField, { qItem: qItem, options: answerOptions, valueSelect: valueSelect, feedback: feedback, readOnly: readOnly, isTabled: isTabled, renderingExtensions: renderingExtensions, onValueChange: handleValueChange }) }) })));
52
60
  }
53
61
  export default OpenChoiceSelectAnswerOptionItem;
54
62
  //# sourceMappingURL=OpenChoiceSelectAnswerOptionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceSelectAnswerOptionItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenChoiceSelectAnswerOptionItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
1
2
  import type { PropsWithIsTabledRequiredAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithRenderingExtensionsAttribute } from '../../../interfaces/renderProps.interface';
2
3
  import type { Coding, QuestionnaireItem } from 'fhir/r4';
3
4
  import type { TerminologyError } from '../../../hooks/useValueSetCodings';
4
5
  interface OpenChoiceSelectAnswerValueSetFieldProps extends PropsWithIsTabledRequiredAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithRenderingExtensionsAttribute {
5
6
  qItem: QuestionnaireItem;
6
7
  options: Coding[];
7
- valueSelect: Coding | null;
8
+ valueSelect: Coding | string | null;
8
9
  terminologyError: TerminologyError;
9
10
  feedback: string;
10
11
  readOnly: boolean;
11
- onValueChange: (newValue: Coding | string | null) => void;
12
+ onValueChange: (newValue: Coding | string | null, reason: AutocompleteChangeReason | string) => void;
12
13
  }
13
14
  declare function OpenChoiceSelectAnswerValueSetField(props: OpenChoiceSelectAnswerValueSetFieldProps): import("react/jsx-runtime").JSX.Element;
14
15
  export default OpenChoiceSelectAnswerValueSetField;
@@ -10,7 +10,7 @@ function OpenChoiceSelectAnswerValueSetField(props) {
10
10
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
11
11
  const textFieldWidth = useRendererStylingStore.use.textFieldWidth();
12
12
  const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
13
- return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, options: options, getOptionLabel: (option) => { var _a; return typeof option === 'string' ? option : ((_a = option.display) !== null && _a !== void 0 ? _a : `${option.code}`); }, onChange: (_, newValue) => onValueChange(newValue), onInputChange: (_, newValue) => onValueChange(newValue), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, Object.assign({ textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, placeholder: entryFormat }, params, { slotProps: {
13
+ return (_jsxs(_Fragment, { children: [_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, options: options, getOptionLabel: (option) => { var _a; return typeof option === 'string' ? option : ((_a = option.display) !== null && _a !== void 0 ? _a : `${option.code}`); }, onChange: (_, newValue, reason) => onValueChange(newValue, reason), onInputChange: (_, newValue, reason) => onValueChange(newValue, reason), freeSolo: true, autoHighlight: true, sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', size: "small", renderInput: (params) => (_jsx(StandardTextField, Object.assign({ textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, placeholder: entryFormat }, params, { slotProps: {
14
14
  input: Object.assign(Object.assign({}, params.InputProps), { readOnly: readOnly && readOnlyVisualStyle === 'readonly', endAdornment: (_jsxs(_Fragment, { children: [params.InputProps.endAdornment, _jsx(DisplayUnitText, Object.assign({ readOnly: readOnly }, { children: displayUnit }))] })) })
15
15
  } }))) }), terminologyError.error ? (_jsxs(Typography, { children: ["There was an error fetching options from the terminology server for", ' ', terminologyError.answerValueSet] })) : null, feedback ? _jsx(StyledRequiredTypography, { children: feedback }) : null] }));
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceSelectAnswerValueSetField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAQlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAe3D,SAAS,mCAAmC,CAAC,KAA+C;IAC1F,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,8BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,WACzB,OAAA,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA,EAAA,EAE5E,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAClD,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EACvD,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,kBAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,SAAS,EAAE;wBACT,KAAK,kCACA,MAAM,CAAC,UAAU,KACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,kBAAC,QAAQ,EAAE,QAAQ,gBAAG,WAAW,IAAmB,IACnE,CACJ,GACF;qBACF,IACD,CACH,GACD,EACD,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CACxB,MAAC,UAAU,sFAC2D,GAAG,EACtE,gBAAgB,CAAC,cAAc,IACrB,CACd,CAAC,CAAC,CAAC,IAAI,EAEP,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,mCAAmC,CAAC"}
1
+ {"version":3,"file":"OpenChoiceSelectAnswerValueSetField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx"],"names":[],"mappings":";AAEA,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAQlD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAkB3D,SAAS,mCAAmC,CAAC,KAA+C;IAC1F,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;IAEpE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,mBAAmB,CAAC;IAExE,OAAO,CACL,8BACE,KAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,EACnC,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,WACzB,OAAA,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAA,MAAM,CAAC,OAAO,mCAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA,EAAA,EAE5E,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EAClE,aAAa,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,EACvE,QAAQ,QACR,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC/E,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,KAAC,iBAAiB,kBAChB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,SAAS,EAAE;wBACT,KAAK,kCACA,MAAM,CAAC,UAAU,KACpB,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,YAAY,EAAE,CACZ,8BACG,MAAM,CAAC,UAAU,CAAC,YAAY,EAC/B,KAAC,eAAe,kBAAC,QAAQ,EAAE,QAAQ,gBAAG,WAAW,IAAmB,IACnE,CACJ,GACF;qBACF,IACD,CACH,GACD,EACD,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CACxB,MAAC,UAAU,sFAC2D,GAAG,EACtE,gBAAgB,CAAC,cAAc,IACrB,CACd,CAAC,CAAC,CAAC,IAAI,EAEP,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,mCAAmC,CAAC"}
@@ -9,7 +9,7 @@ import { useQuestionnaireStore } from '../../../stores';
9
9
  import useValidationFeedback from '../../../hooks/useValidationFeedback';
10
10
  import ItemLabel from '../ItemParts/ItemLabel';
11
11
  function OpenChoiceSelectAnswerValueSetItem(props) {
12
- var _a, _b;
12
+ var _a;
13
13
  const { qItem, qrItem, isRepeated, isTabled, renderingExtensions, parentIsReadOnly, feedbackFromParent, onQrItemChange } = props;
14
14
  const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
15
15
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
@@ -20,17 +20,45 @@ function OpenChoiceSelectAnswerValueSetItem(props) {
20
20
  const qrOpenChoice = qrItem !== null && qrItem !== void 0 ? qrItem : createEmptyQrItem(qItem, answerKey);
21
21
  let valueSelect = null;
22
22
  if (qrOpenChoice['answer']) {
23
- valueSelect = (_b = qrOpenChoice['answer'][0].valueCoding) !== null && _b !== void 0 ? _b : null;
23
+ //check if answer has valueCoding or valueString and assign it to valueSelect and null if not present
24
+ if (qrOpenChoice['answer'][0].valueString) {
25
+ valueSelect = qrOpenChoice['answer'][0].valueString;
26
+ }
27
+ else if (qrOpenChoice['answer'][0].valueCoding) {
28
+ valueSelect = qrOpenChoice['answer'][0].valueCoding;
29
+ }
30
+ else {
31
+ valueSelect = null;
32
+ }
24
33
  }
25
34
  // Get codings/options from valueSet
26
35
  // TODO use dynamicCodingsUpdated to trigger a "refresh" icon when codings are dynamically updated
27
36
  const { codings, terminologyError } = useValueSetCodings(qItem);
28
37
  // Event handlers
29
- function handleValueChange(newValue) {
38
+ // Handler function which handles both input change and selection change
39
+ function handleValueChange(newValue, reason) {
40
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
41
+ if (reason === 'reset') {
42
+ return;
43
+ }
30
44
  if (newValue) {
31
45
  if (typeof newValue === 'string') {
32
- onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueString: newValue }] }));
33
- }
46
+ // Check if the newValue in in the options, first check options.display, then check options.code
47
+ const foundOption = codings.find((option) => {
48
+ if (option.display) {
49
+ return option.display === newValue;
50
+ }
51
+ return option.code === newValue;
52
+ });
53
+ //if the option.display is not present, then compare to code.
54
+ if (foundOption) {
55
+ newValue = foundOption;
56
+ onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueCoding: newValue }] }));
57
+ } //if newValue is not in the options list, treat it as a string
58
+ else {
59
+ onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueString: newValue }] }));
60
+ }
61
+ } //if the newValue is not a string, then it is coding
34
62
  else {
35
63
  onQrItemChange(Object.assign(Object.assign({}, qrOpenChoice), { answer: [{ id: answerKey, valueCoding: newValue }] }));
36
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AASnE,OAAO,mCAAmC,MAAM,uCAAuC,CAAC;AACxF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAc/C,SAAS,kCAAkC,CAAC,KAA8C;;IACxF,MAAM,EACJ,KAAK,EACL,MAAM,EACN,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACf,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAEtE,mBAAmB;IACnB,MAAM,SAAS,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAG,CAAC,EAAE,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,WAAW,GAA2B,IAAI,CAAC;IAC/C,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,qGAAqG;QACrG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YACzC,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACrD;aAAM,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;YAChD,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;SACrD;aAAM;YACL,WAAW,GAAG,IAAI,CAAC;SACpB;KACF;IAED,oCAAoC;IACpC,kGAAkG;IAClG,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhE,iBAAiB;IACjB,wEAAwE;IACxE,SAAS,iBAAiB,CACxB,QAAgC,EAChC,MAAyC;QAEzC,8GAA8G;QAE9G,IAAI,MAAM,KAAK,OAAO,EAAE;YACtB,OAAO;SACR;QAED,IAAI,QAAQ,EAAE;YACZ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBAChC,gGAAgG;gBAChG,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBAC1C,IAAI,MAAM,CAAC,OAAO,EAAE;wBAClB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC;qBACpC;oBACD,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAClC,CAAC,CAAC,CAAC;gBAEH,6DAA6D;gBAE7D,IAAI,WAAW,EAAE;oBACf,QAAQ,GAAG,WAAW,CAAC;oBACvB,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAClD,CAAC;iBACJ,CAAC,8DAA8D;qBAC3D;oBACH,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAClD,CAAC;iBACJ;aACF,CAAC,oDAAoD;iBACjD;gBACH,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IAClD,CAAC;aACJ;YACD,OAAO;SACR;QAED,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,KAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,EAAE,mBAAmB,EACxC,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,CACH,CAAC;KACH;IAED,OAAO,CACL,KAAC,yBAAyB,+BACd,gDAAgD,iBAC7C,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,gBAC1C,KAAC,aAAa,IACZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,KAAC,SAAS,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC9D,aAAa,EACX,KAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,mBAAmB,EAAE,mBAAmB,EACxC,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,GAEJ,IACwB,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,kCAAkC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { QueryClient } from '@tanstack/react-query';
2
2
  /**
3
3
  * Default QueryClient used by the renderer.
4
- * You can customise your own QueryClient with your own options, use v4 of @tanstack/react-query.
5
- * @see {@link https://tanstack.com/query/v4/docs/reference/QueryClient}
4
+ * You can customise your own QueryClient with your own options, use v5 of @tanstack/react-query.
5
+ * @see {@link https://tanstack.com/query/v5/docs/reference/QueryClient}
6
6
  *
7
7
  * @author Sean Fong
8
8
  */
@@ -14,11 +14,11 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { QueryClient } from '@tanstack/react-query';
17
+ import { keepPreviousData, QueryClient } from '@tanstack/react-query';
18
18
  /**
19
19
  * Default QueryClient used by the renderer.
20
- * You can customise your own QueryClient with your own options, use v4 of @tanstack/react-query.
21
- * @see {@link https://tanstack.com/query/v4/docs/reference/QueryClient}
20
+ * You can customise your own QueryClient with your own options, use v5 of @tanstack/react-query.
21
+ * @see {@link https://tanstack.com/query/v5/docs/reference/QueryClient}
22
22
  *
23
23
  * @author Sean Fong
24
24
  */
@@ -26,7 +26,8 @@ function useRendererQueryClient() {
26
26
  return new QueryClient({
27
27
  defaultOptions: {
28
28
  queries: {
29
- refetchOnWindowFocus: false
29
+ refetchOnWindowFocus: false,
30
+ placeholderData: keepPreviousData
30
31
  }
31
32
  }
32
33
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useRendererQueryClient.js","sourceRoot":"","sources":["../../src/hooks/useRendererQueryClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;;;;;GAMG;AACH,SAAS,sBAAsB;IAC7B,OAAO,IAAI,WAAW,CAAC;QACrB,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"useRendererQueryClient.js","sourceRoot":"","sources":["../../src/hooks/useRendererQueryClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;;;GAMG;AACH,SAAS,sBAAsB;IAC7B,OAAO,IAAI,WAAW,CAAC;QACrB,cAAc,EAAE;YACd,OAAO,EAAE;gBACP,oBAAoB,EAAE,KAAK;gBAC3B,eAAe,EAAE,gBAAgB;aAClC;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,eAAe,sBAAsB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { TypographyVariantsOptions } from '@mui/material';
1
+ import type { TypographyVariantsOptions } from '@mui/material';
2
2
  import type { CSSProperties } from 'react';
3
3
  declare module '@mui/material/styles' {
4
4
  interface TypographyVariants {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "1.0.0-alpha.45",
3
+ "version": "1.0.0-alpha.46",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -17,6 +17,7 @@
17
17
 
18
18
  import React from 'react';
19
19
  import Box from '@mui/material/Box';
20
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
20
21
  import Autocomplete from '@mui/material/Autocomplete';
21
22
  import { StandardTextField } from '../Textfield.styles';
22
23
  import SearchIcon from '@mui/icons-material/Search';
@@ -48,9 +49,10 @@ interface OpenChoiceAutocompleteFieldProps
48
49
  loading: boolean;
49
50
  feedback: { message: string; color: AlertColor } | null;
50
51
  readOnly: boolean;
51
- onInputChange: (newInput: string) => void;
52
- onValueChange: (newValue: Coding | string | null) => void;
53
- onUnfocus: () => void;
52
+ onValueChange: (
53
+ newValue: Coding | string | null,
54
+ reason: AutocompleteChangeReason | string
55
+ ) => void;
54
56
  }
55
57
 
56
58
  function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
@@ -64,9 +66,7 @@ function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
64
66
  readOnly,
65
67
  isTabled,
66
68
  renderingExtensions,
67
- onInputChange,
68
- onValueChange,
69
- onUnfocus
69
+ onValueChange
70
70
  } = props;
71
71
 
72
72
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
@@ -90,14 +90,13 @@ function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
90
90
  clearOnEscape
91
91
  freeSolo
92
92
  sx={{ maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 220, flexGrow: 1 }}
93
- onChange={(_, newValue) => onValueChange(newValue)}
93
+ onChange={(_, newValue, reason) => onValueChange(newValue, reason)}
94
+ onInputChange={(_, newValue, reason) => onValueChange(newValue, reason)}
94
95
  filterOptions={(x) => x}
95
96
  renderInput={(params) => (
96
97
  <StandardTextField
97
98
  {...params}
98
99
  value={input}
99
- onBlur={onUnfocus}
100
- onChange={(e) => onInputChange(e.target.value)}
101
100
  textFieldWidth={textFieldWidth}
102
101
  isTabled={isTabled}
103
102
  label={displayPrompt}
@@ -39,6 +39,7 @@ import { useQuestionnaireStore } from '../../../stores';
39
39
  import useValidationFeedback from '../../../hooks/useValidationFeedback';
40
40
  import type { AlertColor } from '@mui/material/Alert';
41
41
  import ItemLabel from '../ItemParts/ItemLabel';
42
+ import type { AutocompleteChangeReason } from '@mui/material';
42
43
 
43
44
  interface OpenChoiceAutocompleteItemProps
44
45
  extends PropsWithQrItemChangeHandler,
@@ -107,7 +108,21 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
107
108
  }
108
109
 
109
110
  // Event handlers
110
- function handleValueChange(newValue: Coding | string | null) {
111
+ // Handler function which handles both input change and selection change
112
+ function handleValueChange(
113
+ newValue: Coding | string | null,
114
+ reason: AutocompleteChangeReason | string
115
+ ) {
116
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
117
+ if (reason === 'reset') {
118
+ return;
119
+ }
120
+ //if the text input is changed, and only if hte input is a string the set the state.
121
+ if (newValue && typeof newValue === 'string' && reason === 'input') {
122
+ setInput(newValue);
123
+ // return;
124
+ }
125
+
111
126
  if (newValue === null) {
112
127
  setInput('');
113
128
  newValue = '';
@@ -115,10 +130,26 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
115
130
 
116
131
  if (typeof newValue === 'string') {
117
132
  if (newValue !== '') {
118
- onQrItemChange({
119
- ...createEmptyQrItem(qItem, answerKey),
120
- answer: [{ id: answerKey, valueString: newValue }]
133
+ // Check if the newValue in in the options, first check options.display, then check options.code
134
+ const foundOption = options.find((option) => {
135
+ if (option.display) {
136
+ return option.display === newValue;
137
+ }
138
+ return option.code === newValue;
121
139
  });
140
+ if (foundOption) {
141
+ newValue = foundOption;
142
+ onQrItemChange({
143
+ ...qrOpenChoice,
144
+ answer: [{ id: answerKey, valueCoding: newValue }]
145
+ });
146
+ } //if newValue is not in the options list, treat it as a string
147
+ else {
148
+ onQrItemChange({
149
+ ...createEmptyQrItem(qItem, answerKey),
150
+ answer: [{ id: answerKey, valueString: newValue }]
151
+ });
152
+ }
122
153
  } else {
123
154
  onQrItemChange(createEmptyQrItem(qItem, answerKey));
124
155
  }
@@ -130,16 +161,6 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
130
161
  }
131
162
  }
132
163
 
133
- function handleUnfocus() {
134
- // set answer to current input when text field is unfocused
135
- if (!valueAutocomplete && input !== '') {
136
- onQrItemChange({
137
- ...createEmptyQrItem(qItem, answerKey),
138
- answer: [{ id: answerKey, valueString: input }]
139
- });
140
- }
141
- }
142
-
143
164
  if (isRepeated) {
144
165
  return (
145
166
  <OpenChoiceAutocompleteField
@@ -152,9 +173,7 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
152
173
  readOnly={readOnly}
153
174
  isTabled={isTabled}
154
175
  renderingExtensions={renderingExtensions}
155
- onInputChange={(newValue) => setInput(newValue)}
156
176
  onValueChange={handleValueChange}
157
- onUnfocus={handleUnfocus}
158
177
  />
159
178
  );
160
179
  }
@@ -179,9 +198,7 @@ function OpenChoiceAutocompleteItem(props: OpenChoiceAutocompleteItemProps) {
179
198
  readOnly={readOnly}
180
199
  isTabled={isTabled}
181
200
  renderingExtensions={renderingExtensions}
182
- onInputChange={(newValue) => setInput(newValue)}
183
201
  onValueChange={handleValueChange}
184
- onUnfocus={handleUnfocus}
185
202
  />
186
203
  }
187
204
  />
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import { getAnswerOptionLabel } from '../../../utils/openChoice';
3
3
  import { StandardTextField } from '../Textfield.styles';
4
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
4
5
  import Autocomplete from '@mui/material/Autocomplete';
5
6
  import type { QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
6
7
  import type {
@@ -21,7 +22,10 @@ interface OpenChoiceSelectAnswerOptionFieldProps
21
22
  valueSelect: QuestionnaireItemAnswerOption | null;
22
23
  feedback: string;
23
24
  readOnly: boolean;
24
- onChange: (newValue: QuestionnaireItemAnswerOption | string | null) => void;
25
+ onValueChange: (
26
+ newValue: QuestionnaireItemAnswerOption | string | null,
27
+ reason: AutocompleteChangeReason | string
28
+ ) => void;
25
29
  }
26
30
 
27
31
  function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFieldProps) {
@@ -33,7 +37,7 @@ function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFi
33
37
  readOnly,
34
38
  isTabled,
35
39
  renderingExtensions,
36
- onChange
40
+ onValueChange
37
41
  } = props;
38
42
 
39
43
  const readOnlyVisualStyle = useRendererStylingStore.use.readOnlyVisualStyle();
@@ -48,7 +52,8 @@ function OpenChoiceSelectAnswerOptionField(props: OpenChoiceSelectAnswerOptionFi
48
52
  value={valueSelect ?? null}
49
53
  options={options}
50
54
  getOptionLabel={(option) => getAnswerOptionLabel(option)}
51
- onChange={(_, newValue) => onChange(newValue)}
55
+ onChange={(_, newValue, reason) => onValueChange(newValue, reason)}
56
+ onInputChange={(_, newValue, reason) => onValueChange(newValue, reason)}
52
57
  freeSolo
53
58
  autoHighlight
54
59
  sx={{ maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }}
@@ -37,6 +37,7 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
37
37
  import { useQuestionnaireStore } from '../../../stores';
38
38
  import useValidationFeedback from '../../../hooks/useValidationFeedback';
39
39
  import ItemLabel from '../ItemParts/ItemLabel';
40
+ import type { AutocompleteChangeReason } from '@mui/material';
40
41
 
41
42
  interface OpenChoiceSelectAnswerOptionItemProps
42
43
  extends PropsWithQrItemChangeHandler,
@@ -74,14 +75,24 @@ function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionIte
74
75
  if (!answerOptions) return null;
75
76
 
76
77
  const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem, answerKey);
77
- let valueSelect: QuestionnaireItemAnswerOption | null = null;
78
+ let valueSelect: QuestionnaireItemAnswerOption | string | null = null;
78
79
  if (qrOpenChoice.answer) {
79
80
  valueSelect = qrOpenChoice.answer[0] ?? null;
80
81
  }
81
82
 
82
83
  // Event handlers
83
- function handleChange(newValue: QuestionnaireItemAnswerOption | string | null) {
84
+ // Handler function which handles both input change and selection change
85
+ function handleValueChange(
86
+ newValue: QuestionnaireItemAnswerOption | string | null,
87
+ reason: AutocompleteChangeReason | string
88
+ ) {
89
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
90
+ if (reason === 'reset') {
91
+ // console.log("Reason: ", reason)
92
+ return;
93
+ }
84
94
  if (newValue) {
95
+ //If the value is a string (i.e from freeSolo input)
85
96
  if (typeof newValue === 'string') {
86
97
  onQrItemChange({
87
98
  ...qrOpenChoice,
@@ -89,7 +100,7 @@ function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionIte
89
100
  });
90
101
  return;
91
102
  }
92
-
103
+ //If the value is not a string, then it is a coding.
93
104
  const option = newValue;
94
105
  if (option['valueCoding']) {
95
106
  onQrItemChange({
@@ -122,7 +133,7 @@ function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionIte
122
133
  readOnly={readOnly}
123
134
  isTabled={isTabled}
124
135
  renderingExtensions={renderingExtensions}
125
- onChange={handleChange}
136
+ onValueChange={handleValueChange}
126
137
  />
127
138
  );
128
139
  }
@@ -145,7 +156,7 @@ function OpenChoiceSelectAnswerOptionItem(props: OpenChoiceSelectAnswerOptionIte
145
156
  readOnly={readOnly}
146
157
  isTabled={isTabled}
147
158
  renderingExtensions={renderingExtensions}
148
- onChange={handleChange}
159
+ onValueChange={handleValueChange}
149
160
  />
150
161
  }
151
162
  />
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
2
3
  import Autocomplete from '@mui/material/Autocomplete';
3
4
  import { StandardTextField } from '../Textfield.styles';
4
5
  import Typography from '@mui/material/Typography';
@@ -19,11 +20,14 @@ interface OpenChoiceSelectAnswerValueSetFieldProps
19
20
  PropsWithRenderingExtensionsAttribute {
20
21
  qItem: QuestionnaireItem;
21
22
  options: Coding[];
22
- valueSelect: Coding | null;
23
+ valueSelect: Coding | string | null;
23
24
  terminologyError: TerminologyError;
24
25
  feedback: string;
25
26
  readOnly: boolean;
26
- onValueChange: (newValue: Coding | string | null) => void;
27
+ onValueChange: (
28
+ newValue: Coding | string | null,
29
+ reason: AutocompleteChangeReason | string
30
+ ) => void;
27
31
  }
28
32
 
29
33
  function OpenChoiceSelectAnswerValueSetField(props: OpenChoiceSelectAnswerValueSetFieldProps) {
@@ -53,8 +57,8 @@ function OpenChoiceSelectAnswerValueSetField(props: OpenChoiceSelectAnswerValueS
53
57
  getOptionLabel={(option) =>
54
58
  typeof option === 'string' ? option : (option.display ?? `${option.code}`)
55
59
  }
56
- onChange={(_, newValue) => onValueChange(newValue)}
57
- onInputChange={(_, newValue) => onValueChange(newValue)}
60
+ onChange={(_, newValue, reason) => onValueChange(newValue, reason)}
61
+ onInputChange={(_, newValue, reason) => onValueChange(newValue, reason)}
58
62
  freeSolo
59
63
  autoHighlight
60
64
  sx={{ maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }}
@@ -34,6 +34,7 @@ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
34
34
  import { useQuestionnaireStore } from '../../../stores';
35
35
  import useValidationFeedback from '../../../hooks/useValidationFeedback';
36
36
  import ItemLabel from '../ItemParts/ItemLabel';
37
+ import type { AutocompleteChangeReason } from '@mui/material';
37
38
 
38
39
  interface OpenChoiceSelectAnswerValueSetItemProps
39
40
  extends PropsWithQrItemChangeHandler,
@@ -69,9 +70,16 @@ function OpenChoiceSelectAnswerValueSetItem(props: OpenChoiceSelectAnswerValueSe
69
70
  const answerKey = qrItem?.answer?.[0].id;
70
71
  const qrOpenChoice = qrItem ?? createEmptyQrItem(qItem, answerKey);
71
72
 
72
- let valueSelect: Coding | null = null;
73
+ let valueSelect: Coding | string | null = null;
73
74
  if (qrOpenChoice['answer']) {
74
- valueSelect = qrOpenChoice['answer'][0].valueCoding ?? null;
75
+ //check if answer has valueCoding or valueString and assign it to valueSelect and null if not present
76
+ if (qrOpenChoice['answer'][0].valueString) {
77
+ valueSelect = qrOpenChoice['answer'][0].valueString;
78
+ } else if (qrOpenChoice['answer'][0].valueCoding) {
79
+ valueSelect = qrOpenChoice['answer'][0].valueCoding;
80
+ } else {
81
+ valueSelect = null;
82
+ }
75
83
  }
76
84
 
77
85
  // Get codings/options from valueSet
@@ -79,14 +87,44 @@ function OpenChoiceSelectAnswerValueSetItem(props: OpenChoiceSelectAnswerValueSe
79
87
  const { codings, terminologyError } = useValueSetCodings(qItem);
80
88
 
81
89
  // Event handlers
82
- function handleValueChange(newValue: Coding | string | null) {
90
+ // Handler function which handles both input change and selection change
91
+ function handleValueChange(
92
+ newValue: Coding | string | null,
93
+ reason: AutocompleteChangeReason | string
94
+ ) {
95
+ //if the reason is reset, then we don't change the value, otherwise you will end up with looped setState calls
96
+
97
+ if (reason === 'reset') {
98
+ return;
99
+ }
100
+
83
101
  if (newValue) {
84
102
  if (typeof newValue === 'string') {
85
- onQrItemChange({
86
- ...qrOpenChoice,
87
- answer: [{ id: answerKey, valueString: newValue }]
103
+ // Check if the newValue in in the options, first check options.display, then check options.code
104
+ const foundOption = codings.find((option) => {
105
+ if (option.display) {
106
+ return option.display === newValue;
107
+ }
108
+ return option.code === newValue;
88
109
  });
89
- } else {
110
+
111
+ //if the option.display is not present, then compare to code.
112
+
113
+ if (foundOption) {
114
+ newValue = foundOption;
115
+ onQrItemChange({
116
+ ...qrOpenChoice,
117
+ answer: [{ id: answerKey, valueCoding: newValue }]
118
+ });
119
+ } //if newValue is not in the options list, treat it as a string
120
+ else {
121
+ onQrItemChange({
122
+ ...qrOpenChoice,
123
+ answer: [{ id: answerKey, valueString: newValue }]
124
+ });
125
+ }
126
+ } //if the newValue is not a string, then it is coding
127
+ else {
90
128
  onQrItemChange({
91
129
  ...qrOpenChoice,
92
130
  answer: [{ id: answerKey, valueCoding: newValue }]
@@ -29,7 +29,7 @@ import type {
29
29
  PropsWithQrItemChangeHandler
30
30
  } from '../../interfaces/renderProps.interface';
31
31
  import { useQuestionnaireStore, useRendererStylingStore } from '../../stores';
32
- import { GridProps } from '@mui/material/Grid';
32
+ import type { GridProps } from '@mui/material/Grid';
33
33
 
34
34
  interface FormBodyTabbedProps
35
35
  extends PropsWithQrItemChangeHandler,
@@ -15,12 +15,12 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import { QueryClient } from '@tanstack/react-query';
18
+ import { keepPreviousData, QueryClient } from '@tanstack/react-query';
19
19
 
20
20
  /**
21
21
  * Default QueryClient used by the renderer.
22
- * You can customise your own QueryClient with your own options, use v4 of @tanstack/react-query.
23
- * @see {@link https://tanstack.com/query/v4/docs/reference/QueryClient}
22
+ * You can customise your own QueryClient with your own options, use v5 of @tanstack/react-query.
23
+ * @see {@link https://tanstack.com/query/v5/docs/reference/QueryClient}
24
24
  *
25
25
  * @author Sean Fong
26
26
  */
@@ -28,7 +28,8 @@ function useRendererQueryClient() {
28
28
  return new QueryClient({
29
29
  defaultOptions: {
30
30
  queries: {
31
- refetchOnWindowFocus: false
31
+ refetchOnWindowFocus: false,
32
+ placeholderData: keepPreviousData
32
33
  }
33
34
  }
34
35
  });
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
- import { TypographyVariantsOptions } from '@mui/material';
18
+ import type { TypographyVariantsOptions } from '@mui/material';
19
19
  import type { CSSProperties } from 'react';
20
20
 
21
21
  declare module '@mui/material/styles' {
@@ -1,8 +0,0 @@
1
- import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
2
- import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
3
- interface FormBodyPageProps extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
4
- topLevelQItem: QuestionnaireItem;
5
- topLevelQRItem: QuestionnaireResponseItem | null;
6
- }
7
- declare function FormBodyPage(props: FormBodyPageProps): import("react/jsx-runtime").JSX.Element;
8
- export default FormBodyPage;
@@ -1,41 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import Grid from '@mui/material/Grid';
4
- import TabContext from '@mui/lab/TabContext';
5
- import TabPanel from '@mui/lab/TabPanel';
6
- import GroupItem from '../FormComponents/GroupItem/GroupItem';
7
- import { useQuestionnaireStore } from '../../stores';
8
- import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
9
- import { createEmptyQrGroup, updateQrItemsInGroup } from '../../utils/qrItem';
10
- function FormBodyPage(props) {
11
- const { topLevelQItem, topLevelQRItem, parentIsReadOnly, onQrItemChange } = props;
12
- const pages = useQuestionnaireStore.use.pages();
13
- const currentPage = useQuestionnaireStore.use.currentPageIndex();
14
- const indexMap = useMemo(() => mapQItemsIndex(topLevelQItem), [topLevelQItem]);
15
- const nonNullTopLevelQRItem = topLevelQRItem !== null && topLevelQRItem !== void 0 ? topLevelQRItem : createEmptyQrGroup(topLevelQItem);
16
- const qItems = topLevelQItem.item;
17
- const qrItems = nonNullTopLevelQRItem.item;
18
- function handleQrGroupChange(qrItem) {
19
- updateQrItemsInGroup(qrItem, null, nonNullTopLevelQRItem, indexMap);
20
- onQrItemChange(nonNullTopLevelQRItem);
21
- }
22
- if (!qItems || !qrItems) {
23
- return _jsx(_Fragment, { children: "Unable to load form" });
24
- }
25
- const qrItemsByIndex = getQrItemsIndex(qItems, qrItems, indexMap);
26
- return (_jsx(Grid, Object.assign({ container: true, spacing: 1.5 }, { children: _jsx(TabContext, Object.assign({ value: currentPage.toString() }, { children: _jsx(Grid, Object.assign({ item: true, xs: 12, md: 12, lg: 12 }, { children: qItems.map((qItem, i) => {
27
- var _a, _b;
28
- const qrItem = qrItemsByIndex[i];
29
- const isNotRepeatGroup = !Array.isArray(qrItem);
30
- const isPage = !!pages[qItem.linkId];
31
- if (!isPage || !isNotRepeatGroup) {
32
- // Something has gone horribly wrong
33
- return null;
34
- }
35
- const isRepeated = (_a = qItem.repeats) !== null && _a !== void 0 ? _a : false;
36
- const pageIsMarkedAsComplete = (_b = pages[qItem.linkId].isComplete) !== null && _b !== void 0 ? _b : false;
37
- return (_jsx(TabPanel, Object.assign({ sx: { p: 0 }, value: i.toString(), "data-test": "renderer-page-panel" }, { children: _jsx(GroupItem, { qItem: qItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: isRepeated, groupCardElevation: 1, pageIsMarkedAsComplete: pageIsMarkedAsComplete, pages: pages, currentPageIndex: currentPage, parentIsReadOnly: parentIsReadOnly, onQrItemChange: handleQrGroupChange }) }), qItem.linkId));
38
- }) })) })) })));
39
- }
40
- export default FormBodyPage;
41
- //# sourceMappingURL=FormBodyPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormBodyPage.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormBodyPage.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
2
- import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
3
- interface FormBodySinglePageProps extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
4
- topLevelQItem: QuestionnaireItem;
5
- topLevelQRItem: QuestionnaireResponseItem | null;
6
- }
7
- declare function FormBodySinglePage(props: FormBodySinglePageProps): import("react/jsx-runtime").JSX.Element;
8
- export default FormBodySinglePage;
@@ -1,42 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from 'react';
3
- import Grid from '@mui/material/Grid';
4
- import TabContext from '@mui/lab/TabContext';
5
- import TabPanel from '@mui/lab/TabPanel';
6
- import GroupItem from '../FormComponents/GroupItem/GroupItem';
7
- import { useQuestionnaireStore } from '../../stores';
8
- import { getQrItemsIndex, mapQItemsIndex } from '../../utils/mapItem';
9
- import { createEmptyQrGroup, updateQrItemsInGroup } from '../../utils/qrItem';
10
- function FormBodySinglePage(props) {
11
- const { topLevelQItem, topLevelQRItem, parentIsReadOnly, onQrItemChange } = props;
12
- const pages = useQuestionnaireStore.use.pages();
13
- console.log(pages);
14
- const currentPage = useQuestionnaireStore.use.currentPageIndex();
15
- const indexMap = useMemo(() => mapQItemsIndex(topLevelQItem), [topLevelQItem]);
16
- const nonNullTopLevelQRItem = topLevelQRItem !== null && topLevelQRItem !== void 0 ? topLevelQRItem : createEmptyQrGroup(topLevelQItem);
17
- const qItems = topLevelQItem.item;
18
- const qrItems = nonNullTopLevelQRItem.item;
19
- function handleQrGroupChange(qrItem) {
20
- updateQrItemsInGroup(qrItem, null, nonNullTopLevelQRItem, indexMap);
21
- onQrItemChange(nonNullTopLevelQRItem);
22
- }
23
- if (!qItems || !qrItems) {
24
- return _jsx(_Fragment, { children: "Unable to load form" });
25
- }
26
- const qrItemsByIndex = getQrItemsIndex(qItems, qrItems, indexMap);
27
- return (_jsx(Grid, Object.assign({ container: true, spacing: 1.5 }, { children: _jsx(TabContext, Object.assign({ value: currentPage.toString() }, { children: _jsx(Grid, Object.assign({ item: true, xs: 12, md: 12, lg: 12 }, { children: qItems.map((qItem, i) => {
28
- var _a, _b;
29
- const qrItem = qrItemsByIndex[i];
30
- const isNotRepeatGroup = !Array.isArray(qrItem);
31
- const isPage = !!pages[qItem.linkId];
32
- if (!isPage || !isNotRepeatGroup) {
33
- // Something has gone horribly wrong
34
- return null;
35
- }
36
- const isRepeated = (_a = qItem.repeats) !== null && _a !== void 0 ? _a : false;
37
- const pageIsMarkedAsComplete = (_b = pages[qItem.linkId].isComplete) !== null && _b !== void 0 ? _b : false;
38
- return (_jsx(TabPanel, Object.assign({ sx: { p: 0 }, value: i.toString(), "data-test": "renderer-page-panel" }, { children: _jsx(GroupItem, { qItem: qItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: isRepeated, groupCardElevation: 1, pageIsMarkedAsComplete: pageIsMarkedAsComplete, pages: pages, currentPageIndex: currentPage, parentIsReadOnly: parentIsReadOnly, onQrItemChange: handleQrGroupChange }) }), qItem.linkId));
39
- }) })) })) })));
40
- }
41
- export default FormBodySinglePage;
42
- //# sourceMappingURL=FormBodySinglePage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormBodySinglePage.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormBodySinglePage.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
2
- import type { PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../interfaces/renderProps.interface';
3
- interface FormTopLevelPageProps extends PropsWithQrItemChangeHandler, PropsWithParentIsReadOnlyAttribute {
4
- topLevelQItems: QuestionnaireItem[];
5
- topLevelQRItems: (QuestionnaireResponseItem | QuestionnaireResponseItem[] | undefined)[];
6
- }
7
- declare function FormTopLevelPage(props: FormTopLevelPageProps): import("react/jsx-runtime").JSX.Element;
8
- export default FormTopLevelPage;
@@ -1,26 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import Grid from '@mui/material/Grid';
3
- import TabContext from '@mui/lab/TabContext';
4
- import TabPanel from '@mui/lab/TabPanel';
5
- import GroupItem from '../FormComponents/GroupItem/GroupItem';
6
- import { useQuestionnaireStore } from '../../stores';
7
- function FormTopLevelPage(props) {
8
- const { topLevelQItems, topLevelQRItems, parentIsReadOnly, onQrItemChange } = props;
9
- const pages = useQuestionnaireStore.use.pages();
10
- const currentPage = useQuestionnaireStore.use.currentPageIndex();
11
- return (_jsx(Grid, Object.assign({ container: true, spacing: 1.5 }, { children: _jsx(TabContext, Object.assign({ value: currentPage.toString() }, { children: _jsx(Grid, Object.assign({ item: true, xs: 12, md: 12, lg: 12 }, { children: topLevelQItems.map((qItem, i) => {
12
- var _a, _b;
13
- const qrItem = topLevelQRItems[i];
14
- const isNotRepeatGroup = !Array.isArray(qrItem);
15
- const isPage = !!pages[qItem.linkId];
16
- if (!isPage || !isNotRepeatGroup) {
17
- // Something has gone horribly wrong
18
- return null;
19
- }
20
- const isRepeated = (_a = qItem.repeats) !== null && _a !== void 0 ? _a : false;
21
- const pageIsMarkedAsComplete = (_b = pages[qItem.linkId].isComplete) !== null && _b !== void 0 ? _b : false;
22
- return (_jsx(TabPanel, Object.assign({ sx: { p: 0 }, value: i.toString(), "data-test": "renderer-page-panel" }, { children: _jsx(GroupItem, { qItem: qItem, qrItem: qrItem !== null && qrItem !== void 0 ? qrItem : null, isRepeated: isRepeated, groupCardElevation: 1, pageIsMarkedAsComplete: pageIsMarkedAsComplete, pages: pages, currentPageIndex: currentPage, parentIsReadOnly: parentIsReadOnly, onQrItemChange: onQrItemChange }) }), qItem.linkId));
23
- }) })) })) })));
24
- }
25
- export default FormTopLevelPage;
26
- //# sourceMappingURL=FormTopLevelPage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormTopLevelPage.js","sourceRoot":"","sources":["../../../src/components/Renderer/FormTopLevelPage.tsx"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,SAAS,MAAM,uCAAuC,CAAC;AAK9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AASrD,SAAS,gBAAgB,CAAC,KAA4B;IACpD,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEpF,MAAM,KAAK,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAEjE,OAAO,CACL,KAAC,IAAI,kBAAC,SAAS,QAAC,OAAO,EAAE,GAAG,gBAC1B,KAAC,UAAU,kBAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,gBACvC,KAAC,IAAI,kBAAC,IAAI,QAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,gBAC9B,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;;oBAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;oBAElC,MAAM,gBAAgB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAErC,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE;wBAChC,oCAAoC;wBACpC,OAAO,IAAI,CAAC;qBACb;oBAED,MAAM,UAAU,GAAG,MAAA,KAAK,CAAC,OAAO,mCAAI,KAAK,CAAC;oBAC1C,MAAM,sBAAsB,GAAG,MAAA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,mCAAI,KAAK,CAAC;oBAEvE,OAAO,CACL,KAAC,QAAQ,kBAEP,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,eACT,qBAAqB,gBAC/B,KAAC,SAAS,IACR,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,EACtB,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,CAAC,EACrB,sBAAsB,EAAE,sBAAsB,EAC9C,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,WAAW,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,GAC9B,KAdG,KAAK,CAAC,MAAM,CAeR,CACZ,CAAC;gBACJ,CAAC,CAAC,IACG,IACI,IACR,CACR,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { QuestionnaireResponseItem } from 'fhir/r4';
2
- export type ComputedQRItemUpdates = Record<string, [
3
- QuestionnaireResponseItem | null,
4
- QuestionnaireResponseItem | null
5
- ]>;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=computedChanges.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"computedChanges.interface.js","sourceRoot":"","sources":["../../src/interfaces/computedChanges.interface.ts"],"names":[],"mappings":""}
@@ -1,13 +0,0 @@
1
- import type { Expression, Extension } from 'fhir/r4';
2
- export interface ParameterisedValueSet {
3
- valueSetUrl: string;
4
- bindingParameters: BindingParameter[];
5
- }
6
- export interface BindingParameter {
7
- name: string;
8
- expression: BindingParameterExpression;
9
- }
10
- export interface BindingParameterExpression extends Extension {
11
- valueExpression?: Expression;
12
- valueString?: string;
13
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=parameterisedValueSets.interface.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parameterisedValueSets.interface.js","sourceRoot":"","sources":["../../src/interfaces/parameterisedValueSets.interface.ts"],"names":[],"mappings":""}