@aehrc/smart-forms-renderer 1.0.0-alpha.50 → 1.0.0-alpha.52
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.
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.js +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +11 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +10 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
- package/lib/hooks/useCqfAnswerValueSet.d.ts +4 -0
- package/lib/hooks/useCqfAnswerValueSet.js +86 -0
- package/lib/hooks/useCqfAnswerValueSet.js.map +1 -0
- package/lib/hooks/useCqfAnswerValueSetEffect.d.ts +3 -0
- package/lib/hooks/useCqfAnswerValueSetEffect.js +97 -0
- package/lib/hooks/useCqfAnswerValueSetEffect.js.map +1 -0
- package/lib/hooks/useDynamicValueSetEffect.d.ts +4 -0
- package/lib/hooks/useDynamicValueSetEffect.js +77 -0
- package/lib/hooks/useDynamicValueSetEffect.js.map +1 -0
- package/lib/utils/updateCodingsDynamic.d.ts +1 -0
- package/lib/utils/updateCodingsDynamic.js +54 -0
- package/lib/utils/updateCodingsDynamic.js.map +1 -0
- package/package.json +2 -2
- package/src/components/FormComponents/AttachmentItem/AttachmentField.tsx +1 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +11 -6
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +10 -6
- package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.d.ts +0 -16
- package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.js +0 -24
- package/lib/components/FormComponents/ChoiceItems/CheckboxFormGroup.js.map +0 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.d.ts +0 -16
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.js +0 -24
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxFormGroup.js.map +0 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.d.ts +0 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxGroup.js.map +0 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.d.ts +0 -0
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js +0 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxList.js.map +0 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.d.ts +0 -16
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js +0 -29
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioGroup.js.map +0 -1
- package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.d.ts +0 -16
- package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.js +0 -29
- package/lib/components/FormComponents/ChoiceItems/RadioFormGroup.js.map +0 -1
- package/lib/stores/extractOperationStore.d.ts +0 -26
- package/lib/stores/extractOperationStore.js +0 -20
- package/lib/stores/extractOperationStore.js.map +0 -1
- package/lib/templates/bloodPressureTemplate.d.ts +0 -23
- package/lib/templates/bloodPressureTemplate.js +0 -80
- package/lib/templates/bloodPressureTemplate.js.map +0 -1
- package/lib/tests/test-data/bloodPressureSample.d.ts +0 -3
- package/lib/tests/test-data/bloodPressureSample.js +0 -250
- package/lib/tests/test-data/bloodPressureSample.js.map +0 -1
- package/lib/tests/test-data/complexTemplateSample.d.ts +0 -3
- package/lib/tests/test-data/complexTemplateSample.js +0 -578
- package/lib/tests/test-data/complexTemplateSample.js.map +0 -1
- package/lib/utils/extractTemplate.d.ts +0 -44
- package/lib/utils/extractTemplate.js +0 -809
- package/lib/utils/extractTemplate.js.map +0 -1
- package/lib/utils/templateMatching.d.ts +0 -15
- package/lib/utils/templateMatching.js +0 -62
- package/lib/utils/templateMatching.js.map +0 -1
|
@@ -13,7 +13,7 @@ function AttachmentField(props) {
|
|
|
13
13
|
const textFieldWidth = useRendererStylingStore.use.textFieldWidth();
|
|
14
14
|
const readOnlyTextColor = readOnlyVisualStyle === 'disabled' ? 'text.disabled' : 'text.secondary';
|
|
15
15
|
const { uploadedFile, url, fileName } = attachmentValues;
|
|
16
|
-
// TODO: Consider accessible items for attachment fields too if #1096 is fixed.
|
|
16
|
+
// TODO: Consider accessible items for attachment fields too if #1096 is fixed.
|
|
17
17
|
return (_jsxs(_Fragment, { children: [_jsxs(Stack, Object.assign({ rowGap: 1, id: itemType + '-' + linkId }, { children: [_jsx(Typography, Object.assign({ component: "div", color: readOnly ? readOnlyTextColor : 'text.primary' }, { children: "An attachment must either have a file or a URL, or both." })), _jsx(Box, { children: _jsx(AttachmentFileCollector, { uploadedFile: uploadedFile, readOnly: readOnly, isTabled: isTabled, onUploadFile: onUploadFile }) }), _jsx(AttachmentUrlField, { linkId: linkId, url: url, readOnly: readOnly, isTabled: isTabled, onUrlChange: onUrlChange }), _jsxs(Box, { children: [_jsx(Typography, Object.assign({ component: "div", variant: "body2", color: readOnly ? readOnlyTextColor : 'text.primary' }, { children: "File name (optional)" })), _jsx(StandardTextField, { fullWidth: true, textFieldWidth: textFieldWidth, isTabled: isTabled, id: linkId, value: fileName, onChange: (event) => onFileNameChange(event.target.value), disabled: readOnly && readOnlyVisualStyle === 'disabled', size: "small", "data-test": "q-item-attachment-field", slotProps: {
|
|
18
18
|
input: {
|
|
19
19
|
readOnly: readOnly && readOnlyVisualStyle === 'readonly'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttachmentField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/AttachmentItem/AttachmentField.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAExC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAa1D,SAAS,eAAe,CAAC,KAA2B;IAClD,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,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,iBAAiB,GAAG,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAElG,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AttachmentField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/AttachmentItem/AttachmentField.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,KAAK,MAAM,qBAAqB,CAAC;AAExC,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAa1D,SAAS,eAAe,CAAC,KAA2B;IAClD,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,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,iBAAiB,GAAG,mBAAmB,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAElG,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC;IAEzD,+EAA+E;IAE/E,OAAO,CACL,8BACE,MAAC,KAAK,kBAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,GAAG,GAAG,GAAG,MAAM,iBAC3C,KAAC,UAAU,kBAAC,SAAS,EAAC,KAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,8EAEnE,EACb,KAAC,GAAG,cACF,KAAC,uBAAuB,IACtB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,GAC1B,GACE,EAEN,KAAC,kBAAkB,IACjB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,GACxB,EAEF,MAAC,GAAG,eACF,KAAC,UAAU,kBACT,SAAS,EAAC,KAAK,EACf,OAAO,EAAC,OAAO,EACf,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,0CAEzC,EACb,KAAC,iBAAiB,IAChB,SAAS,QACT,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACzD,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU,EACxD,IAAI,EAAC,OAAO,eACF,yBAAyB,EACnC,SAAS,EAAE;oCACT,KAAK,EAAE;wCACL,QAAQ,EAAE,QAAQ,IAAI,mBAAmB,KAAK,UAAU;qCACzD;iCACF,GACD,IACE,EAEL,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,CACrB,KAAC,UAAU,kBAAC,SAAS,EAAC,KAAK,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,iFAEnE,CACd,CAAC,CAAC,CAAC,IAAI,KACF,EAEP,QAAQ,CAAC,CAAC,CAAC,KAAC,wBAAwB,cAAE,QAAQ,GAA4B,CAAC,CAAC,CAAC,IAAI,IACjF,CACJ,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -4,7 +4,12 @@ import CircularProgress from '@mui/material/CircularProgress';
|
|
|
4
4
|
import Fade from '@mui/material/Fade';
|
|
5
5
|
import Tooltip from '@mui/material/Tooltip';
|
|
6
6
|
import { StandardTextField } from '../Textfield.styles';
|
|
7
|
-
import
|
|
7
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
8
|
+
import InfoIcon from '@mui/icons-material/Info';
|
|
9
|
+
// @ts-ignore: Module has no declaration file. Not sure why WarningAmber.d.ts is not present in MUI icons 7.0.2
|
|
10
|
+
import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
11
|
+
import DoneIcon from '@mui/icons-material/Done';
|
|
12
|
+
import ErrorIcon from '@mui/icons-material/Error';
|
|
8
13
|
import { useRendererStylingStore } from '../../../stores';
|
|
9
14
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
10
15
|
function ChoiceAutocompleteField(props) {
|
|
@@ -13,11 +18,11 @@ function ChoiceAutocompleteField(props) {
|
|
|
13
18
|
const textFieldWidth = useRendererStylingStore.use.textFieldWidth();
|
|
14
19
|
const { displayUnit, displayPrompt, entryFormat } = renderingExtensions;
|
|
15
20
|
return (_jsx(Autocomplete, { id: qItem.type + '-' + qItem.linkId, value: valueCoding !== null && valueCoding !== void 0 ? valueCoding : null, options: options, getOptionLabel: (option) => { var _a; return (_a = option.display) !== null && _a !== void 0 ? _a : `${option.code}`; }, isOptionEqualToValue: (option, value) => option.id === value.id, disabled: readOnly && readOnlyVisualStyle === 'disabled', readOnly: readOnly && readOnlyVisualStyle === 'readonly', loading: loading, loadingText: 'Fetching results...', clearOnEscape: true, autoHighlight: true, onChange: (_, newValue) => onValueChange(newValue), sx: { maxWidth: !isTabled ? textFieldWidth : 3000, minWidth: 160, flexGrow: 1 }, filterOptions: (x) => x, renderInput: (params) => (_jsx(StandardTextField, Object.assign({}, params, { onChange: (e) => onInputChange(e.target.value), textFieldWidth: textFieldWidth, isTabled: isTabled, label: displayPrompt, size: "small", placeholder: entryFormat, slotProps: {
|
|
16
|
-
input: Object.assign(Object.assign({}, params.InputProps), { readOnly: readOnly && readOnlyVisualStyle === 'readonly', startAdornment: (_jsxs(_Fragment, { children: [!valueCoding ? _jsx(
|
|
17
|
-
info: _jsx(
|
|
18
|
-
warning: _jsx(
|
|
19
|
-
success: _jsx(
|
|
20
|
-
error: _jsx(
|
|
21
|
+
input: Object.assign(Object.assign({}, params.InputProps), { readOnly: readOnly && readOnlyVisualStyle === 'readonly', startAdornment: (_jsxs(_Fragment, { children: [!valueCoding ? _jsx(SearchIcon, { fontSize: "small", sx: { ml: 0.5 } }) : null, params.InputProps.startAdornment] })), endAdornment: (_jsxs(_Fragment, { children: [loading ? (_jsx(CircularProgress, { color: "inherit", size: 16 })) : feedback ? (_jsx(Fade, Object.assign({ in: !!feedback, timeout: 300 }, { children: _jsx(Tooltip, Object.assign({ title: feedback.message, arrow: true, sx: { ml: 1 } }, { children: {
|
|
22
|
+
info: _jsx(InfoIcon, { fontSize: "small", color: "info" }),
|
|
23
|
+
warning: _jsx(WarningAmberIcon, { fontSize: "small", color: "warning" }),
|
|
24
|
+
success: _jsx(DoneIcon, { fontSize: "small", color: "success" }),
|
|
25
|
+
error: _jsx(ErrorIcon, { fontSize: "small", color: "error" })
|
|
21
26
|
}[feedback.color] })) }))) : null, params.InputProps.endAdornment, _jsx(DisplayUnitText, Object.assign({ readOnly: readOnly }, { children: displayUnit }))] })) })
|
|
22
27
|
} }))) }));
|
|
23
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx"],"names":[],"mappings":";AAkBA,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,gBAAgB,MAAM,gCAAgC,CAAC;AAC9D,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"ChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,11 +2,15 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import Box from '@mui/material/Box';
|
|
3
3
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
4
4
|
import { StandardTextField } from '../Textfield.styles';
|
|
5
|
-
import SearchIcon from '@mui/icons-material/Search';
|
|
6
5
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
7
6
|
import Fade from '@mui/material/Fade';
|
|
8
7
|
import Tooltip from '@mui/material/Tooltip';
|
|
9
|
-
import
|
|
8
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
9
|
+
import InfoIcon from '@mui/icons-material/Info';
|
|
10
|
+
// @ts-ignore: Module has no declaration file. Not sure why WarningAmber.d.ts is not present in MUI icons 7.0.2
|
|
11
|
+
import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
12
|
+
import DoneIcon from '@mui/icons-material/Done';
|
|
13
|
+
import ErrorIcon from '@mui/icons-material/Error';
|
|
10
14
|
import { useRendererStylingStore } from '../../../stores';
|
|
11
15
|
import DisplayUnitText from '../ItemParts/DisplayUnitText';
|
|
12
16
|
function OpenChoiceAutocompleteField(props) {
|
|
@@ -18,10 +22,10 @@ function OpenChoiceAutocompleteField(props) {
|
|
|
18
22
|
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] })),
|
|
19
23
|
// Warning indicator should not show up in open-choice autocomplete
|
|
20
24
|
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: {
|
|
21
|
-
info: _jsx(
|
|
22
|
-
warning: _jsx(
|
|
23
|
-
success: _jsx(
|
|
24
|
-
error: _jsx(
|
|
25
|
+
info: _jsx(InfoIcon, { fontSize: "small", color: "info" }),
|
|
26
|
+
warning: _jsx(WarningAmberIcon, { fontSize: "small", color: "warning" }),
|
|
27
|
+
success: _jsx(DoneIcon, { fontSize: "small", color: "success" }),
|
|
28
|
+
error: _jsx(ErrorIcon, { fontSize: "small", color: "error" })
|
|
25
29
|
}[feedback.color] })) }))) : null, params.InputProps.endAdornment, _jsx(DisplayUnitText, Object.assign({ readOnly: readOnly }, { children: displayUnit }))] })) })
|
|
26
30
|
}, "data-test": "q-item-open-choice-autocomplete-field" }))) }) })));
|
|
27
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx"],"names":[],"mappings":";AAkBA,OAAO,GAAG,MAAM,mBAAmB,CAAC;AAEpC,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"OpenChoiceAutocompleteField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
import type { ProcessedValueSet } from '../interfaces/valueSet.interface';
|
|
3
|
+
declare function useCqfAnswerValueSet(qItem: QuestionnaireItem, answerValueSetUrl: string | undefined, terminologyServerUrl: string, processedValueSets: Record<string, ProcessedValueSet>, cachedValueSetCodings: Record<string, Coding[]>, onSetCodings: (codings: Coding[]) => void, onSetDynamicCodingsUpdated: (updated: boolean) => void, onSetServerError: (error: Error) => void): void;
|
|
4
|
+
export default useCqfAnswerValueSet;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { useQuestionnaireStore } from '../stores';
|
|
18
|
+
import { useEffect } from 'react';
|
|
19
|
+
function useCqfAnswerValueSet(qItem, answerValueSetUrl, terminologyServerUrl, processedValueSets, cachedValueSetCodings, onSetCodings, onSetDynamicCodingsUpdated, onSetServerError) {
|
|
20
|
+
var _a;
|
|
21
|
+
const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
|
|
22
|
+
const addCodingToCache = useQuestionnaireStore.use.addCodingToCache();
|
|
23
|
+
const cqfAnswerValueSetCqfExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item._answerValueSet');
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (!qItem.answerValueSet || !qItem._answerValueSet) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!cqfAnswerValueSetCqfExpression) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// console.log(cqfAnswerValueSetCqfExpression.value);
|
|
32
|
+
let updatableValueSetUrl = qItem.answerValueSet;
|
|
33
|
+
// if the cqf-expression value is a valid string, use it as the answerValueSet URL
|
|
34
|
+
if (typeof cqfAnswerValueSetCqfExpression.value === 'string' &&
|
|
35
|
+
cqfAnswerValueSetCqfExpression.value !== '') {
|
|
36
|
+
updatableValueSetUrl = cqfAnswerValueSetCqfExpression.value;
|
|
37
|
+
}
|
|
38
|
+
console.log(updatableValueSetUrl);
|
|
39
|
+
// // attempt to get codings from cached queried value sets
|
|
40
|
+
// if (cachedValueSetCodings[updatableValueSetUrl]) {
|
|
41
|
+
// onSetCodings(cachedValueSetCodings[updatableValueSetUrl]);
|
|
42
|
+
//
|
|
43
|
+
// // Update ui to show calculated value changes
|
|
44
|
+
// onSetDynamicCodingsUpdated(true);
|
|
45
|
+
// const timeoutId = setTimeout(() => {
|
|
46
|
+
// onSetDynamicCodingsUpdated(false);
|
|
47
|
+
// }, 500);
|
|
48
|
+
//
|
|
49
|
+
// return () => clearTimeout(timeoutId);
|
|
50
|
+
// }
|
|
51
|
+
//
|
|
52
|
+
// const promise = getValueSetPromise(updatableValueSetUrl, terminologyServerUrl);
|
|
53
|
+
// if (promise) {
|
|
54
|
+
// promise
|
|
55
|
+
// .then(async (valueSet: ValueSet) => {
|
|
56
|
+
// const newCodings = getValueSetCodings(valueSet);
|
|
57
|
+
// addDisplayToCodingArray(newCodings, terminologyServerUrl)
|
|
58
|
+
// .then((codingsWithDisplay) => {
|
|
59
|
+
// if (codingsWithDisplay.length > 0) {
|
|
60
|
+
// addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
61
|
+
// onSetCodings(newCodings);
|
|
62
|
+
// } else {
|
|
63
|
+
// addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
64
|
+
// onSetCodings([]);
|
|
65
|
+
// }
|
|
66
|
+
//
|
|
67
|
+
// // Update ui to show calculated value changes
|
|
68
|
+
// onSetDynamicCodingsUpdated(true);
|
|
69
|
+
// const timeoutId = setTimeout(() => {
|
|
70
|
+
// onSetDynamicCodingsUpdated(false);
|
|
71
|
+
// }, 500);
|
|
72
|
+
//
|
|
73
|
+
// return () => clearTimeout(timeoutId);
|
|
74
|
+
// })
|
|
75
|
+
// .catch((error: Error) => {
|
|
76
|
+
// onSetServerError(error);
|
|
77
|
+
// });
|
|
78
|
+
// })
|
|
79
|
+
// .catch((error: Error) => {
|
|
80
|
+
// onSetServerError(error);
|
|
81
|
+
// });
|
|
82
|
+
// }
|
|
83
|
+
}, [calculatedExpressions]);
|
|
84
|
+
}
|
|
85
|
+
export default useCqfAnswerValueSet;
|
|
86
|
+
//# sourceMappingURL=useCqfAnswerValueSet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCqfAnswerValueSet.js","sourceRoot":"","sources":["../../src/hooks/useCqfAnswerValueSet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,SAAS,oBAAoB,CAC3B,KAAwB,EACxB,iBAAqC,EACrC,oBAA4B,EAC5B,kBAAqD,EACrD,qBAA+C,EAC/C,YAAyC,EACzC,0BAAsD,EACtD,gBAAwC;;IAExC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAChF,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAEtE,MAAM,8BAA8B,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9E,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAC7C,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YACnD,OAAO;SACR;QAED,IAAI,CAAC,8BAA8B,EAAE;YACnC,OAAO;SACR;QAED,qDAAqD;QAErD,IAAI,oBAAoB,GAAG,KAAK,CAAC,cAAc,CAAC;QAChD,kFAAkF;QAClF,IACE,OAAO,8BAA8B,CAAC,KAAK,KAAK,QAAQ;YACxD,8BAA8B,CAAC,KAAK,KAAK,EAAE,EAC3C;YACA,oBAAoB,GAAG,8BAA8B,CAAC,KAAK,CAAC;SAC7D;QAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAElC,2DAA2D;QAC3D,qDAAqD;QACrD,+DAA+D;QAC/D,EAAE;QACF,kDAAkD;QAClD,sCAAsC;QACtC,yCAAyC;QACzC,yCAAyC;QACzC,aAAa;QACb,EAAE;QACF,0CAA0C;QAC1C,IAAI;QACJ,EAAE;QACF,kFAAkF;QAClF,iBAAiB;QACjB,YAAY;QACZ,4CAA4C;QAC5C,yDAAyD;QACzD,kEAAkE;QAClE,0CAA0C;QAC1C,iDAAiD;QACjD,0EAA0E;QAC1E,wCAAwC;QACxC,qBAAqB;QACrB,0EAA0E;QAC1E,gCAAgC;QAChC,cAAc;QACd,EAAE;QACF,0DAA0D;QAC1D,8CAA8C;QAC9C,iDAAiD;QACjD,iDAAiD;QACjD,qBAAqB;QACrB,EAAE;QACF,kDAAkD;QAClD,aAAa;QACb,qCAAqC;QACrC,qCAAqC;QACrC,cAAc;QACd,SAAS;QACT,iCAAiC;QACjC,iCAAiC;QACjC,UAAU;QACV,IAAI;IACN,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
declare function useCqfAnswerValueSetEffect(qItem: QuestionnaireItem, terminologyServerUrl: string, cachedValueSetCodings: Record<string, Coding[]>, onSetCodings: (codings: Coding[]) => void, onSetDynamicCodingsUpdated: (updated: boolean) => void, onSetServerError: (error: Error) => void): void;
|
|
3
|
+
export default useCqfAnswerValueSetEffect;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
import { useQuestionnaireStore } from '../stores';
|
|
27
|
+
import { useEffect } from 'react';
|
|
28
|
+
import { getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
|
|
29
|
+
import { addDisplayToCodingArray } from '../utils/questionnaireStoreUtils/addDisplayToCodings';
|
|
30
|
+
function useCqfAnswerValueSetEffect(qItem, terminologyServerUrl, cachedValueSetCodings, onSetCodings, onSetDynamicCodingsUpdated, onSetServerError) {
|
|
31
|
+
var _a;
|
|
32
|
+
const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
|
|
33
|
+
const addCodingToCache = useQuestionnaireStore.use.addCodingToCache();
|
|
34
|
+
const cqfAnswerValueSetCqfExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item._answerValueSet');
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!qItem.answerValueSet || !qItem._answerValueSet) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
if (!cqfAnswerValueSetCqfExpression) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
// console.log(cqfAnswerValueSetCqfExpression.value);
|
|
43
|
+
let updatableValueSetUrl = qItem.answerValueSet;
|
|
44
|
+
// if the cqf-expression value is a valid string, use it as the answerValueSet URL
|
|
45
|
+
if (typeof cqfAnswerValueSetCqfExpression.value === 'string' &&
|
|
46
|
+
cqfAnswerValueSetCqfExpression.value !== '') {
|
|
47
|
+
updatableValueSetUrl = cqfAnswerValueSetCqfExpression.value;
|
|
48
|
+
}
|
|
49
|
+
console.log(updatableValueSetUrl);
|
|
50
|
+
// attempt to get codings from cached queried value sets
|
|
51
|
+
if (cachedValueSetCodings[updatableValueSetUrl]) {
|
|
52
|
+
onSetCodings(cachedValueSetCodings[updatableValueSetUrl]);
|
|
53
|
+
// Update ui to show calculated value changes
|
|
54
|
+
onSetDynamicCodingsUpdated(true);
|
|
55
|
+
const timeoutId = setTimeout(() => {
|
|
56
|
+
onSetDynamicCodingsUpdated(false);
|
|
57
|
+
}, 500);
|
|
58
|
+
return () => clearTimeout(timeoutId);
|
|
59
|
+
}
|
|
60
|
+
const promise = getValueSetPromise(updatableValueSetUrl, terminologyServerUrl);
|
|
61
|
+
if (!promise) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
promise
|
|
65
|
+
.then((valueSet) => __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const newCodings = getValueSetCodings(valueSet);
|
|
67
|
+
try {
|
|
68
|
+
const codingsWithDisplay = yield addDisplayToCodingArray(newCodings, terminologyServerUrl);
|
|
69
|
+
addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
70
|
+
onSetCodings(codingsWithDisplay.length > 0 ? newCodings : []);
|
|
71
|
+
// Update UI to show calculated value changes
|
|
72
|
+
onSetDynamicCodingsUpdated(true);
|
|
73
|
+
const timeoutId = setTimeout(() => {
|
|
74
|
+
onSetDynamicCodingsUpdated(false);
|
|
75
|
+
}, 500);
|
|
76
|
+
return () => clearTimeout(timeoutId);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
onSetServerError(error);
|
|
80
|
+
}
|
|
81
|
+
}))
|
|
82
|
+
.catch((error) => {
|
|
83
|
+
onSetServerError(error);
|
|
84
|
+
});
|
|
85
|
+
}, [
|
|
86
|
+
addCodingToCache,
|
|
87
|
+
cachedValueSetCodings,
|
|
88
|
+
calculatedExpressions,
|
|
89
|
+
onSetCodings,
|
|
90
|
+
onSetDynamicCodingsUpdated,
|
|
91
|
+
onSetServerError,
|
|
92
|
+
qItem,
|
|
93
|
+
terminologyServerUrl
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
export default useCqfAnswerValueSetEffect;
|
|
97
|
+
//# sourceMappingURL=useCqfAnswerValueSetEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCqfAnswerValueSetEffect.js","sourceRoot":"","sources":["../../src/hooks/useCqfAnswerValueSetEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
import type { ProcessedValueSet } from '../interfaces/valueSet.interface';
|
|
3
|
+
declare function useDynamicValueSetEffect(qItem: QuestionnaireItem, answerValueSetUrl: string | undefined, terminologyServerUrl: string, processedValueSets: Record<string, ProcessedValueSet>, cachedValueSetCodings: Record<string, Coding[]>, onSetCodings: (codings: Coding[]) => void, onSetDynamicCodingsUpdated: (updated: boolean) => void, onSetServerError: (error: Error) => void): void;
|
|
4
|
+
export default useDynamicValueSetEffect;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { useEffect } from 'react';
|
|
11
|
+
import { getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
|
|
12
|
+
import { addDisplayToCodingArray } from '../utils/questionnaireStoreUtils/addDisplayToCodings';
|
|
13
|
+
import { useQuestionnaireStore } from '../stores';
|
|
14
|
+
function useDynamicValueSetEffect(qItem, answerValueSetUrl, terminologyServerUrl, processedValueSets, cachedValueSetCodings, onSetCodings, onSetDynamicCodingsUpdated, onSetServerError) {
|
|
15
|
+
var _a;
|
|
16
|
+
const addCodingToCache = useQuestionnaireStore.use.addCodingToCache();
|
|
17
|
+
const updatableValueSetUrl = (_a = processedValueSets[answerValueSetUrl !== null && answerValueSetUrl !== void 0 ? answerValueSetUrl : '']) === null || _a === void 0 ? void 0 : _a.updatableValueSetUrl;
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!qItem.answerValueSet || !qItem._answerValueSet) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (!updatableValueSetUrl) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// attempt to get codings from cached queried value sets
|
|
26
|
+
if (cachedValueSetCodings[updatableValueSetUrl]) {
|
|
27
|
+
onSetCodings(cachedValueSetCodings[updatableValueSetUrl]);
|
|
28
|
+
// Update ui to show calculated value changes
|
|
29
|
+
onSetDynamicCodingsUpdated(true);
|
|
30
|
+
const timeoutId = setTimeout(() => {
|
|
31
|
+
onSetDynamicCodingsUpdated(false);
|
|
32
|
+
}, 500);
|
|
33
|
+
return () => clearTimeout(timeoutId);
|
|
34
|
+
}
|
|
35
|
+
const promise = getValueSetPromise(updatableValueSetUrl, terminologyServerUrl);
|
|
36
|
+
if (promise) {
|
|
37
|
+
promise
|
|
38
|
+
.then((valueSet) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const newCodings = getValueSetCodings(valueSet);
|
|
40
|
+
addDisplayToCodingArray(newCodings, terminologyServerUrl)
|
|
41
|
+
.then((codingsWithDisplay) => {
|
|
42
|
+
if (codingsWithDisplay.length > 0) {
|
|
43
|
+
addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
44
|
+
onSetCodings(newCodings);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
48
|
+
onSetCodings([]);
|
|
49
|
+
}
|
|
50
|
+
// Update ui to show calculated value changes
|
|
51
|
+
onSetDynamicCodingsUpdated(true);
|
|
52
|
+
const timeoutId = setTimeout(() => {
|
|
53
|
+
onSetDynamicCodingsUpdated(false);
|
|
54
|
+
}, 500);
|
|
55
|
+
return () => clearTimeout(timeoutId);
|
|
56
|
+
})
|
|
57
|
+
.catch((error) => {
|
|
58
|
+
onSetServerError(error);
|
|
59
|
+
});
|
|
60
|
+
}))
|
|
61
|
+
.catch((error) => {
|
|
62
|
+
onSetServerError(error);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}, [
|
|
66
|
+
addCodingToCache,
|
|
67
|
+
cachedValueSetCodings,
|
|
68
|
+
onSetCodings,
|
|
69
|
+
onSetDynamicCodingsUpdated,
|
|
70
|
+
onSetServerError,
|
|
71
|
+
qItem,
|
|
72
|
+
terminologyServerUrl,
|
|
73
|
+
updatableValueSetUrl
|
|
74
|
+
]);
|
|
75
|
+
}
|
|
76
|
+
export default useDynamicValueSetEffect;
|
|
77
|
+
//# sourceMappingURL=useDynamicValueSetEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDynamicValueSetEffect.js","sourceRoot":"","sources":["../../src/hooks/useDynamicValueSetEffect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
import { getValueSetCodings } from './valueSet';
|
|
27
|
+
import { addDisplayToCodingArray } from './questionnaireStoreUtils/addDisplayToCodings';
|
|
28
|
+
function updateCodingsDynamically({ promise, updatableValueSetUrl, terminologyServerUrl, onSetCodings, onSetDynamicCodingsUpdated, onSetServerError, addCodingToCache }) {
|
|
29
|
+
if (!promise) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
promise
|
|
33
|
+
.then((valueSet) => __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
const newCodings = getValueSetCodings(valueSet);
|
|
35
|
+
try {
|
|
36
|
+
const codingsWithDisplay = yield addDisplayToCodingArray(newCodings, terminologyServerUrl);
|
|
37
|
+
addCodingToCache(updatableValueSetUrl, codingsWithDisplay);
|
|
38
|
+
onSetCodings(codingsWithDisplay.length > 0 ? newCodings : []);
|
|
39
|
+
// Update UI to show calculated value changes
|
|
40
|
+
onSetDynamicCodingsUpdated(true);
|
|
41
|
+
const timeoutId = setTimeout(() => {
|
|
42
|
+
onSetDynamicCodingsUpdated(false);
|
|
43
|
+
}, 500);
|
|
44
|
+
return () => clearTimeout(timeoutId);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
onSetServerError(error);
|
|
48
|
+
}
|
|
49
|
+
}))
|
|
50
|
+
.catch((error) => {
|
|
51
|
+
onSetServerError(error);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=updateCodingsDynamic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCodingsDynamic.js","sourceRoot":"","sources":["../../src/utils/updateCodingsDynamic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,SAAS,wBAAwB,CAAC,EAChC,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,EAC1B,gBAAgB,EAChB,gBAAgB,EASjB;IACC,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;KACR;IAED,OAAO;SACJ,IAAI,CAAC,CAAO,QAAkB,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI;YACF,MAAM,kBAAkB,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;YAE3F,gBAAgB,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;YAC3D,YAAY,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAE9D,6CAA6C;YAC7C,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACtC;QAAC,OAAO,KAAK,EAAE;YACd,gBAAgB,CAAC,KAAc,CAAC,CAAC;SAClC;IACH,CAAC,CAAA,CAAC;SACD,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;QACtB,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aehrc/smart-forms-renderer",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.52",
|
|
4
4
|
"description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"@types/react": "^19.1.0",
|
|
89
89
|
"@types/react-beautiful-dnd": "^13.1.8",
|
|
90
90
|
"@types/react-dom": "^19.1.1",
|
|
91
|
-
"chokidar": "^
|
|
91
|
+
"chokidar": "^4.0.3",
|
|
92
92
|
"concurrently": "^9.1.2",
|
|
93
93
|
"jest": "^29.7.0",
|
|
94
94
|
"jest-environment-jsdom": "^29.7.0",
|
|
@@ -58,8 +58,7 @@ function AttachmentField(props: AttachmentFieldProps) {
|
|
|
58
58
|
|
|
59
59
|
const { uploadedFile, url, fileName } = attachmentValues;
|
|
60
60
|
|
|
61
|
-
// TODO: Consider accessible items for attachment fields too if #1096 is fixed.
|
|
62
|
-
|
|
61
|
+
// TODO: Consider accessible items for attachment fields too if #1096 is fixed.
|
|
63
62
|
|
|
64
63
|
return (
|
|
65
64
|
<>
|
|
@@ -22,7 +22,12 @@ import Fade from '@mui/material/Fade';
|
|
|
22
22
|
import Tooltip from '@mui/material/Tooltip';
|
|
23
23
|
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
24
24
|
import { StandardTextField } from '../Textfield.styles';
|
|
25
|
-
import
|
|
25
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
26
|
+
import InfoIcon from '@mui/icons-material/Info';
|
|
27
|
+
// @ts-ignore: Module has no declaration file. Not sure why WarningAmber.d.ts is not present in MUI icons 7.0.2
|
|
28
|
+
import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
29
|
+
import DoneIcon from '@mui/icons-material/Done';
|
|
30
|
+
import ErrorIcon from '@mui/icons-material/Error';
|
|
26
31
|
import type {
|
|
27
32
|
PropsWithIsTabledRequiredAttribute,
|
|
28
33
|
PropsWithParentIsReadOnlyAttribute,
|
|
@@ -96,7 +101,7 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
|
|
|
96
101
|
readOnly: readOnly && readOnlyVisualStyle === 'readonly',
|
|
97
102
|
startAdornment: (
|
|
98
103
|
<>
|
|
99
|
-
{!valueCoding ? <
|
|
104
|
+
{!valueCoding ? <SearchIcon fontSize="small" sx={{ ml: 0.5 }} /> : null}
|
|
100
105
|
{params.InputProps.startAdornment}
|
|
101
106
|
</>
|
|
102
107
|
),
|
|
@@ -109,10 +114,10 @@ function ChoiceAutocompleteField(props: ChoiceAutocompleteFieldsProps) {
|
|
|
109
114
|
<Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
|
|
110
115
|
{
|
|
111
116
|
{
|
|
112
|
-
info: <
|
|
113
|
-
warning: <
|
|
114
|
-
success: <
|
|
115
|
-
error: <
|
|
117
|
+
info: <InfoIcon fontSize="small" color="info" />,
|
|
118
|
+
warning: <WarningAmberIcon fontSize="small" color="warning" />,
|
|
119
|
+
success: <DoneIcon fontSize="small" color="success" />,
|
|
120
|
+
error: <ErrorIcon fontSize="small" color="error" />
|
|
116
121
|
}[feedback.color]
|
|
117
122
|
}
|
|
118
123
|
</Tooltip>
|
|
@@ -20,11 +20,15 @@ import Box from '@mui/material/Box';
|
|
|
20
20
|
import type { AutocompleteChangeReason } from '@mui/material/Autocomplete';
|
|
21
21
|
import Autocomplete from '@mui/material/Autocomplete';
|
|
22
22
|
import { StandardTextField } from '../Textfield.styles';
|
|
23
|
-
import SearchIcon from '@mui/icons-material/Search';
|
|
24
23
|
import CircularProgress from '@mui/material/CircularProgress';
|
|
25
24
|
import Fade from '@mui/material/Fade';
|
|
26
25
|
import Tooltip from '@mui/material/Tooltip';
|
|
27
|
-
import
|
|
26
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
27
|
+
import InfoIcon from '@mui/icons-material/Info';
|
|
28
|
+
// @ts-ignore: Module has no declaration file. Not sure why WarningAmber.d.ts is not present in MUI icons 7.0.2
|
|
29
|
+
import WarningAmberIcon from '@mui/icons-material/WarningAmber';
|
|
30
|
+
import DoneIcon from '@mui/icons-material/Done';
|
|
31
|
+
import ErrorIcon from '@mui/icons-material/Error';
|
|
28
32
|
import type { Coding, QuestionnaireItem } from 'fhir/r4';
|
|
29
33
|
import type {
|
|
30
34
|
PropsWithIsTabledRequiredAttribute,
|
|
@@ -121,10 +125,10 @@ function OpenChoiceAutocompleteField(props: OpenChoiceAutocompleteFieldProps) {
|
|
|
121
125
|
<Tooltip title={feedback.message} arrow sx={{ ml: 1 }}>
|
|
122
126
|
{
|
|
123
127
|
{
|
|
124
|
-
info: <
|
|
125
|
-
warning: <
|
|
126
|
-
success: <
|
|
127
|
-
error: <
|
|
128
|
+
info: <InfoIcon fontSize="small" color="info" />,
|
|
129
|
+
warning: <WarningAmberIcon fontSize="small" color="warning" />,
|
|
130
|
+
success: <DoneIcon fontSize="small" color="success" />,
|
|
131
|
+
error: <ErrorIcon fontSize="small" color="error" />
|
|
128
132
|
}[feedback.color]
|
|
129
133
|
}
|
|
130
134
|
</Tooltip>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
import type { QuestionnaireItem, QuestionnaireItemAnswerOption, QuestionnaireResponseItemAnswer } from 'fhir/r4';
|
|
3
|
-
interface ChoiceCheckboxFormGroupProps {
|
|
4
|
-
qItem: QuestionnaireItem;
|
|
5
|
-
options: QuestionnaireItemAnswerOption[];
|
|
6
|
-
answers: QuestionnaireResponseItemAnswer[];
|
|
7
|
-
feedback: string;
|
|
8
|
-
readOnly: boolean;
|
|
9
|
-
expressionUpdated: boolean;
|
|
10
|
-
answerOptionsToggleExpressionsMap: Map<string, boolean>;
|
|
11
|
-
onCheckedChange: (newValue: string) => void;
|
|
12
|
-
onClear: () => void;
|
|
13
|
-
children?: ReactNode;
|
|
14
|
-
}
|
|
15
|
-
declare function ChoiceCheckboxFormGroup(props: ChoiceCheckboxFormGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export default ChoiceCheckboxFormGroup;
|