@aehrc/smart-forms-renderer 0.23.1 → 0.24.1

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 (65) hide show
  1. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.d.ts +13 -0
  2. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js +31 -0
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js.map +1 -0
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.d.ts +13 -0
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js +31 -0
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js.map +1 -0
  7. package/lib/components/FormComponents/GroupItem/GroupItem.styles.d.ts +1 -1
  8. package/lib/components/FormComponents/ItemParts/ItemLabelText.js +7 -1
  9. package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +1 -1
  10. package/lib/hooks/useBooleanCalculatedExpression.d.ts +11 -0
  11. package/lib/hooks/useBooleanCalculatedExpression.js +47 -0
  12. package/lib/hooks/useBooleanCalculatedExpression.js.map +1 -0
  13. package/lib/hooks/useCodingCalculatedExpression.d.ts +11 -0
  14. package/lib/hooks/useCodingCalculatedExpression.js +51 -0
  15. package/lib/hooks/useCodingCalculatedExpression.js.map +1 -0
  16. package/lib/hooks/useDecimalCalculatedExpression.js +6 -2
  17. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  18. package/lib/hooks/useDisplayCalculatedExpression.d.ts +3 -0
  19. package/lib/hooks/useDisplayCalculatedExpression.js +33 -0
  20. package/lib/hooks/useDisplayCalculatedExpression.js.map +1 -0
  21. package/lib/hooks/useIntegerCalculatedExpression.js +6 -2
  22. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  23. package/lib/hooks/useStringCalculatedExpression.js +13 -5
  24. package/lib/hooks/useStringCalculatedExpression.js.map +1 -1
  25. package/lib/hooks/useValueSetCodings.js +1 -1
  26. package/lib/hooks/useValueSetCodings.js.map +1 -1
  27. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -0
  28. package/lib/interfaces/questionnaireStore.interface.d.ts +1 -1
  29. package/lib/stores/questionnaireStore.d.ts +2 -2
  30. package/lib/utils/calculatedExpression.d.ts +5 -5
  31. package/lib/utils/calculatedExpression.js +43 -29
  32. package/lib/utils/calculatedExpression.js.map +1 -1
  33. package/lib/utils/enableWhen.js +11 -10
  34. package/lib/utils/enableWhen.js.map +1 -1
  35. package/lib/utils/fhirpath.d.ts +2 -2
  36. package/lib/utils/getExpressionsFromItem.d.ts +20 -0
  37. package/lib/utils/getExpressionsFromItem.js +90 -0
  38. package/lib/utils/getExpressionsFromItem.js.map +1 -0
  39. package/lib/utils/initialise.d.ts +2 -2
  40. package/lib/utils/itemControl.d.ts +1 -7
  41. package/lib/utils/itemControl.js +0 -20
  42. package/lib/utils/itemControl.js.map +1 -1
  43. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +2 -14
  44. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +6 -46
  45. package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
  46. package/lib/utils/removeEmptyAnswers.js +3 -0
  47. package/lib/utils/removeEmptyAnswers.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/components/FormComponents/ItemParts/ItemLabelText.tsx +12 -1
  50. package/src/hooks/useDecimalCalculatedExpression.ts +8 -2
  51. package/src/hooks/useDisplayCalculatedExpression.ts +40 -0
  52. package/src/hooks/useIntegerCalculatedExpression.ts +8 -2
  53. package/src/hooks/useStringCalculatedExpression.ts +19 -5
  54. package/src/hooks/useValueSetCodings.ts +1 -1
  55. package/src/interfaces/calculatedExpression.interface.ts +1 -0
  56. package/src/interfaces/questionnaireStore.interface.ts +1 -1
  57. package/src/stores/questionnaireStore.ts +1 -1
  58. package/src/utils/calculatedExpression.ts +76 -60
  59. package/src/utils/enableWhen.ts +32 -10
  60. package/src/utils/fhirpath.ts +2 -2
  61. package/src/utils/getExpressionsFromItem.ts +96 -0
  62. package/src/utils/initialise.ts +2 -2
  63. package/src/utils/itemControl.ts +1 -21
  64. package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +13 -50
  65. package/src/utils/removeEmptyAnswers.ts +4 -0
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
3
+ import type { QuestionnaireItem } from 'fhir/r4';
4
+ interface ChoiceRadioAnswerOptionViewProps extends PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute {
5
+ qItem: QuestionnaireItem;
6
+ valueChoice: string | null;
7
+ readOnly: boolean;
8
+ calcExpUpdated: boolean;
9
+ onCheckedChange: (linkId: string) => void;
10
+ onFocusLinkId: () => void;
11
+ }
12
+ declare function ChoiceRadioAnswerOptionView(props: ChoiceRadioAnswerOptionViewProps): React.JSX.Element;
13
+ export default ChoiceRadioAnswerOptionView;
@@ -0,0 +1,31 @@
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 React from 'react';
18
+ import ChoiceRadioAnswerOptionFields from './ChoiceRadioAnswerOptionFields';
19
+ import { FullWidthFormComponentBox } from '../../Box.styles';
20
+ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
21
+ function ChoiceRadioAnswerOptionView(props) {
22
+ const { qItem, valueChoice, isRepeated, isTabled, readOnly, calcExpUpdated, onFocusLinkId, onCheckedChange } = props;
23
+ if (isRepeated) {
24
+ return (React.createElement(ChoiceRadioAnswerOptionFields, { qItem: qItem, valueRadio: valueChoice, isTabled: isTabled, readOnly: readOnly, calcExpUpdated: calcExpUpdated, onCheckedChange: onCheckedChange }));
25
+ }
26
+ return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-choice-radio-answer-option-box", "data-linkid": qItem.linkId, onClick: onFocusLinkId },
27
+ React.createElement(ItemFieldGrid, { qItem: qItem, readOnly: readOnly },
28
+ React.createElement(ChoiceRadioAnswerOptionFields, { qItem: qItem, valueRadio: valueChoice, readOnly: readOnly, isTabled: isTabled, calcExpUpdated: calcExpUpdated, onCheckedChange: onCheckedChange }))));
29
+ }
30
+ export default ChoiceRadioAnswerOptionView;
31
+ //# sourceMappingURL=ChoiceRadioAnswerOptionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChoiceRadioAnswerOptionView.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,6BAA6B,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAkBvD,SAAS,2BAA2B,CAAC,KAAuC;IAC1E,MAAM,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EAChB,GAAG,KAAK,CAAC;IAEV,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,6BAA6B,IAC5B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,GAChC,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,uCAAuC,iBACpC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,aAAa;QACtB,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,6BAA6B,IAC5B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,WAAW,EACvB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,GAChC,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,2BAA2B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
3
+ import type { QuestionnaireItem } from 'fhir/r4';
4
+ interface ChoiceSelectAnswerOptionViewProps extends PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute {
5
+ qItem: QuestionnaireItem;
6
+ valueChoice: string | null;
7
+ readOnly: boolean;
8
+ calcExpUpdated: boolean;
9
+ onSelectChange: (linkId: string) => void;
10
+ onFocusLinkId: () => void;
11
+ }
12
+ declare function ChoiceSelectAnswerOptionView(props: ChoiceSelectAnswerOptionViewProps): React.JSX.Element;
13
+ export default ChoiceSelectAnswerOptionView;
@@ -0,0 +1,31 @@
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 React from 'react';
18
+ import { FullWidthFormComponentBox } from '../../Box.styles';
19
+ import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
20
+ import ChoiceSelectAnswerOptionFields from './ChoiceSelectAnswerOptionFields';
21
+ function ChoiceSelectAnswerOptionView(props) {
22
+ const { qItem, valueChoice, isRepeated, isTabled, readOnly, calcExpUpdated, onFocusLinkId, onSelectChange } = props;
23
+ if (isRepeated) {
24
+ return (React.createElement(ChoiceSelectAnswerOptionFields, { qItem: qItem, valueSelect: valueChoice !== null && valueChoice !== void 0 ? valueChoice : '', readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onSelectChange: onSelectChange }));
25
+ }
26
+ return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-choice-select-answer-option-box", "data-linkid": qItem.linkId, onClick: onFocusLinkId },
27
+ React.createElement(ItemFieldGrid, { qItem: qItem, readOnly: readOnly },
28
+ React.createElement(ChoiceSelectAnswerOptionFields, { qItem: qItem, valueSelect: valueChoice !== null && valueChoice !== void 0 ? valueChoice : '', readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onSelectChange: onSelectChange }))));
29
+ }
30
+ export default ChoiceSelectAnswerOptionView;
31
+ //# sourceMappingURL=ChoiceSelectAnswerOptionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChoiceSelectAnswerOptionView.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AAMvD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAa9E,SAAS,4BAA4B,CAAC,KAAwC;IAC5E,MAAM,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,aAAa,EACb,cAAc,EACf,GAAG,KAAK,CAAC;IAEV,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,EAC9B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,wCAAwC,iBACrC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,aAAa;QACtB,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE,EAC9B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,GAC9B,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,4BAA4B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  export declare const GroupCard: import("@emotion/styled").StyledComponent<import("@mui/material/Card").CardOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
3
3
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
4
- }, "style" | "children" | "className" | "sx" | "classes" | "elevation" | "variant" | "square" | "raised"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
4
+ }, "style" | "children" | "className" | "sx" | "classes" | "variant" | "elevation" | "square" | "raised"> & import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
5
5
  elevation: number;
6
6
  isRepeated: boolean;
7
7
  }, {}, {}>;
@@ -20,14 +20,20 @@ import parse from 'html-react-parser';
20
20
  import Box from '@mui/material/Box';
21
21
  import ReactMarkdown from 'react-markdown';
22
22
  import Typography from '@mui/material/Typography';
23
+ import useDisplayCalculatedExpression from '../../../hooks/useDisplayCalculatedExpression';
23
24
  const ItemLabelText = memo(function ItemLabelText(props) {
24
25
  const { qItem, readOnly } = props;
26
+ // Use calculatedExpressionString if available
27
+ const calculatedExpressionString = useDisplayCalculatedExpression(qItem);
28
+ if (calculatedExpressionString) {
29
+ return (React.createElement(Typography, { color: readOnly ? 'text.disabled' : 'text.primary', sx: { mt: 0.25 } }, calculatedExpressionString));
30
+ }
25
31
  // parse xHTML if found
26
32
  const xHtmlString = getXHtmlString(qItem);
27
33
  if (xHtmlString) {
28
34
  return React.createElement(Box, null, parse(xHtmlString));
29
35
  }
30
- // parse xHTML if found
36
+ // parse markdown if found
31
37
  const markdownString = getMarkdownString(qItem);
32
38
  if (markdownString) {
33
39
  return (React.createElement(Box, null,
@@ -1 +1 @@
1
- {"version":3,"file":"ItemLabelText.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemLabelText.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAOlD,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,aAAa,CAAC,KAAyB;IACzE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAElC,uBAAuB;IACvB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,WAAW,EAAE;QACf,OAAO,oBAAC,GAAG,QAAE,KAAK,CAAC,WAAW,CAAC,CAAO,CAAC;KACxC;IAED,uBAAuB;IACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE;QAClB,OAAO,CACL,oBAAC,GAAG;YACF,oBAAC,aAAa,QAAE,cAAc,CAAiB,CAC3C,CACP,CAAC;KACH;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,OAAO,0CAAG,KAAK,CAAC,IAAI,CAAI,CAAC;KAC1B;IAED,qBAAqB;IACrB,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAC7E,KAAK,CAAC,IAAI,CACA,CACd,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ItemLabelText.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ItemParts/ItemLabelText.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,MAAM,mBAAmB,CAAC;AACtC,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,8BAA8B,MAAM,+CAA+C,CAAC;AAO3F,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,aAAa,CAAC,KAAyB;IACzE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAElC,8CAA8C;IAC9C,MAAM,0BAA0B,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,0BAA0B,EAAE;QAC9B,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAC7E,0BAA0B,CAChB,CACd,CAAC;KACH;IAED,uBAAuB;IACvB,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE1C,IAAI,WAAW,EAAE;QACf,OAAO,oBAAC,GAAG,QAAE,KAAK,CAAC,WAAW,CAAC,CAAO,CAAC;KACxC;IAED,0BAA0B;IAC1B,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE;QAClB,OAAO,CACL,oBAAC,GAAG;YACF,oBAAC,aAAa,QAAE,cAAc,CAAiB,CAC3C,CACP,CAAC;KACH;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC1B,OAAO,0CAAG,KAAK,CAAC,IAAI,CAAI,CAAC;KAC1B;IAED,qBAAqB;IACrB,OAAO,CACL,oBAAC,UAAU,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAC7E,KAAK,CAAC,IAAI,CACA,CACd,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
2
+ interface UseBooleanCalculatedExpression {
3
+ calcExpUpdated: boolean;
4
+ }
5
+ interface UseBooleanCalculatedExpressionProps {
6
+ qItem: QuestionnaireItem;
7
+ booleanValue: boolean | undefined;
8
+ onQrItemChange: (qrItem: QuestionnaireResponseItem) => void;
9
+ }
10
+ declare function UseBooleanCalculatedExpression(props: UseBooleanCalculatedExpressionProps): UseBooleanCalculatedExpression;
11
+ export default UseBooleanCalculatedExpression;
@@ -0,0 +1,47 @@
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 { useEffect, useState } from 'react';
18
+ import { createEmptyQrItem } from '../utils/qrItem';
19
+ import { useQuestionnaireStore } from '../stores';
20
+ function UseBooleanCalculatedExpression(props) {
21
+ const { qItem, booleanValue, onQrItemChange } = props;
22
+ const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
+ const [calcExpUpdated, setCalcExpUpdated] = useState(false);
24
+ useEffect(() => {
25
+ var _a;
26
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
27
+ if (!calcExpression) {
28
+ return;
29
+ }
30
+ // only update if calculated value is different from current value
31
+ if (calcExpression.value !== booleanValue && typeof calcExpression.value === 'boolean') {
32
+ // update ui to show calculated value changes
33
+ setCalcExpUpdated(true);
34
+ setTimeout(() => {
35
+ setCalcExpUpdated(false);
36
+ }, 500);
37
+ // update questionnaireResponse
38
+ onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [{ valueBoolean: calcExpression.value }] }));
39
+ }
40
+ },
41
+ // Only trigger this effect if calculatedExpression of item changes
42
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
+ [calculatedExpressions]);
44
+ return { calcExpUpdated: calcExpUpdated };
45
+ }
46
+ export default UseBooleanCalculatedExpression;
47
+ //# sourceMappingURL=useBooleanCalculatedExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useBooleanCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useBooleanCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAYlD,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEtD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;;QACH,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC7B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,kEAAkE;QAClE,IAAI,cAAc,CAAC,KAAK,KAAK,YAAY,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE;YACtF,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,+BAA+B;YAC/B,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAChD,CAAC;SACJ;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,8BAA8B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { QuestionnaireItem } from 'fhir/r4';
2
+ interface UseCodingCalculatedExpression {
3
+ calcExpUpdated: boolean;
4
+ }
5
+ interface UseCodingCalculatedExpressionProps {
6
+ qItem: QuestionnaireItem;
7
+ valueInString: string;
8
+ onChangeByCalcExpression: (newValueInString: string) => void;
9
+ }
10
+ declare function UseCodingCalculatedExpression(props: UseCodingCalculatedExpressionProps): UseCodingCalculatedExpression;
11
+ export default UseCodingCalculatedExpression;
@@ -0,0 +1,51 @@
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 { useEffect, useState } from 'react';
18
+ import { useQuestionnaireStore } from '../stores';
19
+ // TODO use this in all choice and open choice items if possible
20
+ function UseCodingCalculatedExpression(props) {
21
+ const { qItem, valueInString, onChangeByCalcExpression } = props;
22
+ const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
+ const [calcExpUpdated, setCalcExpUpdated] = useState(false);
24
+ useEffect(() => {
25
+ var _a;
26
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
27
+ if (!calcExpression) {
28
+ return;
29
+ }
30
+ // only update if calculated value is different from current value
31
+ if (calcExpression.value !== valueInString &&
32
+ (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number')) {
33
+ // update ui to show calculated value changes
34
+ setCalcExpUpdated(true);
35
+ setTimeout(() => {
36
+ setCalcExpUpdated(false);
37
+ }, 500);
38
+ const updatedValueInString = typeof calcExpression.value === 'string'
39
+ ? calcExpression.value
40
+ : calcExpression.value.toString();
41
+ // update questionnaireResponse
42
+ onChangeByCalcExpression(updatedValueInString);
43
+ }
44
+ },
45
+ // Only trigger this effect if calculatedExpression of item changes
46
+ // eslint-disable-next-line react-hooks/exhaustive-deps
47
+ [calculatedExpressions]);
48
+ return { calcExpUpdated: calcExpUpdated };
49
+ }
50
+ export default UseCodingCalculatedExpression;
51
+ //# sourceMappingURL=useCodingCalculatedExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCodingCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useCodingCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAYlD,gEAAgE;AAChE,SAAS,6BAA6B,CACpC,KAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,GAAG,KAAK,CAAC;IAEjE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;;QACH,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC7B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,kEAAkE;QAClE,IACE,cAAc,CAAC,KAAK,KAAK,aAAa;YACtC,CAAC,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,CAAC,EACtF;YACA,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,oBAAoB,GACxB,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ;gBACtC,CAAC,CAAC,cAAc,CAAC,KAAK;gBACtB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEtC,+BAA+B;YAC/B,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;SAChD;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,6BAA6B,CAAC"}
@@ -22,9 +22,13 @@ function useDecimalCalculatedExpression(props) {
22
22
  const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
23
  const [calcExpUpdated, setCalcExpUpdated] = useState(false);
24
24
  useEffect(() => {
25
- const calcExpression = calculatedExpressions[qItem.linkId];
25
+ var _a;
26
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
27
+ if (!calcExpression) {
28
+ return;
29
+ }
26
30
  // only update if calculated value is different from current value
27
- if ((calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) !== inputValue && typeof (calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) === 'number') {
31
+ if (calcExpression.value !== inputValue && typeof calcExpression.value === 'number') {
28
32
  const value = precision
29
33
  ? parseFloat(calcExpression.value.toFixed(precision))
30
34
  : calcExpression.value;
@@ -1 +1 @@
1
- {"version":3,"file":"useDecimalCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useDecimalCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAclD,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9E,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;QACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3D,kEAAkE;QAClE,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,MAAK,UAAU,IAAI,OAAO,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;YACrF,MAAM,KAAK,GAAG,SAAS;gBACrB,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;YAEzB,kEAAkE;YAClE,IAAI,KAAK,KAAK,UAAU,CAAC,UAAU,CAAC,EAAE;gBACpC,6CAA6C;gBAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACxB,UAAU,CAAC,GAAG,EAAE;oBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;gBAER,+BAA+B;gBAC/B,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvE,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,IACjC,CAAC;aACJ;SACF;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"useDecimalCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useDecimalCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAclD,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9E,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;;QACH,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC7B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,kEAAkE;QAClE,IAAI,cAAc,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;YACnF,MAAM,KAAK,GAAG,SAAS;gBACrB,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC;YAEzB,kEAAkE;YAClE,IAAI,KAAK,KAAK,UAAU,CAAC,UAAU,CAAC,EAAE;gBACpC,6CAA6C;gBAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBACxB,UAAU,CAAC,GAAG,EAAE;oBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;gBAER,+BAA+B;gBAC/B,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACvE,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,IACjC,CAAC;aACJ;SACF;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,8BAA8B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { QuestionnaireItem } from 'fhir/r4';
2
+ declare function useDisplayCalculatedExpression(qItem: QuestionnaireItem): string | null;
3
+ export default useDisplayCalculatedExpression;
@@ -0,0 +1,33 @@
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
+ function useDisplayCalculatedExpression(qItem) {
19
+ var _a;
20
+ const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
21
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item._text');
22
+ if (!calcExpression) {
23
+ return null;
24
+ }
25
+ if (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number') {
26
+ return typeof calcExpression.value === 'string'
27
+ ? calcExpression.value
28
+ : calcExpression.value.toString();
29
+ }
30
+ return null;
31
+ }
32
+ export default useDisplayCalculatedExpression;
33
+ //# sourceMappingURL=useDisplayCalculatedExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDisplayCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useDisplayCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGlD,SAAS,8BAA8B,CAAC,KAAwB;;IAC9D,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,CACnC,CAAC;IACF,IAAI,CAAC,cAAc,EAAE;QACnB,OAAO,IAAI,CAAC;KACb;IAED,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;QACxF,OAAO,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ;YAC7C,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KACrC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,eAAe,8BAA8B,CAAC"}
@@ -22,9 +22,13 @@ function useIntegerCalculatedExpression(props) {
22
22
  const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
23
  const [calcExpUpdated, setCalcExpUpdated] = useState(false);
24
24
  useEffect(() => {
25
- const calcExpression = calculatedExpressions[qItem.linkId];
25
+ var _a;
26
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
27
+ if (!calcExpression) {
28
+ return;
29
+ }
26
30
  // only update if calculated value is different from current value
27
- if ((calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) !== inputValue && typeof (calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) === 'number') {
31
+ if (calcExpression.value !== inputValue && typeof calcExpression.value === 'number') {
28
32
  // update ui to show calculated value changes
29
33
  setCalcExpUpdated(true);
30
34
  setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useIntegerCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useIntegerCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAarE,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;QACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3D,kEAAkE;QAClE,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,MAAK,UAAU,IAAI,OAAO,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;YACrF,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,+BAA+B;YAC/B,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAChD,CAAC;SACJ;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"useIntegerCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useIntegerCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAarE,SAAS,8BAA8B,CACrC,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;;QACH,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC7B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,kEAAkE;QAClE,IAAI,cAAc,CAAC,KAAK,KAAK,UAAU,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE;YACnF,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,+BAA+B;YAC/B,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAChD,CAAC;SACJ;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,8BAA8B,CAAC"}
@@ -16,23 +16,31 @@
16
16
  */
17
17
  import { useEffect, useState } from 'react';
18
18
  import { createEmptyQrItem } from '../utils/qrItem';
19
- import { useQuestionnaireStore } from '../stores/questionnaireStore';
19
+ import { useQuestionnaireStore } from '../stores';
20
20
  function useStringCalculatedExpression(props) {
21
21
  const { qItem, inputValue, setInputValue, onQrItemChange } = props;
22
22
  const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
23
  const [calcExpUpdated, setCalcExpUpdated] = useState(false);
24
24
  useEffect(() => {
25
- const calcExpression = calculatedExpressions[qItem.linkId];
25
+ var _a;
26
+ const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
27
+ if (!calcExpression) {
28
+ return;
29
+ }
26
30
  // only update if calculated value is different from current value
27
- if ((calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) !== inputValue && typeof (calcExpression === null || calcExpression === void 0 ? void 0 : calcExpression.value) === 'string') {
31
+ if (calcExpression.value !== inputValue &&
32
+ (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number')) {
28
33
  // update ui to show calculated value changes
29
34
  setCalcExpUpdated(true);
30
35
  setTimeout(() => {
31
36
  setCalcExpUpdated(false);
32
37
  }, 500);
38
+ const updatedInputValue = typeof calcExpression.value === 'string'
39
+ ? calcExpression.value
40
+ : calcExpression.value.toString();
33
41
  // update questionnaireResponse
34
- setInputValue(calcExpression.value);
35
- onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [{ valueString: calcExpression.value }] }));
42
+ setInputValue(updatedInputValue);
43
+ onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [{ valueString: updatedInputValue }] }));
36
44
  }
37
45
  },
38
46
  // Only trigger this effect if calculatedExpression of item changes
@@ -1 +1 @@
1
- {"version":3,"file":"useStringCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useStringCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAarE,SAAS,6BAA6B,CACpC,KAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;QACH,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE3D,kEAAkE;QAClE,IAAI,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,MAAK,UAAU,IAAI,OAAO,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;YACrF,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,+BAA+B;YAC/B,aAAa,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpC,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,cAAc,CAAC,KAAK,EAAE,CAAC,IAC/C,CAAC;SACJ;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,6BAA6B,CAAC"}
1
+ {"version":3,"file":"useStringCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useStringCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAalD,SAAS,6BAA6B,CACpC,KAAyC;IAEzC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEnE,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;IAEhF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,SAAS,CACP,GAAG,EAAE;;QACH,MAAM,cAAc,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CAC9D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAC7B,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE;YACnB,OAAO;SACR;QAED,kEAAkE;QAClE,IACE,cAAc,CAAC,KAAK,KAAK,UAAU;YACnC,CAAC,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ,CAAC,EACtF;YACA,6CAA6C;YAC7C,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,UAAU,CAAC,GAAG,EAAE;gBACd,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,iBAAiB,GACrB,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ;gBACtC,CAAC,CAAC,cAAc,CAAC,KAAK;gBACtB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAEtC,+BAA+B;YAC/B,aAAa,CAAC,iBAAiB,CAAC,CAAC;YACjC,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,IAC5C,CAAC;SACJ;IACH,CAAC;IACD,mEAAmE;IACnE,uDAAuD;IACvD,CAAC,qBAAqB,CAAC,CACxB,CAAC;IAEF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;AAC5C,CAAC;AAED,eAAe,6BAA6B,CAAC"}
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { useEffect, useMemo, useState } from 'react';
18
18
  import { getResourceFromLaunchContext, getTerminologyServerUrl, getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
19
- import { getAnswerExpression } from '../utils/itemControl';
19
+ import { getAnswerExpression } from '../utils/getExpressionsFromItem';
20
20
  import fhirpath from 'fhirpath';
21
21
  import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
22
22
  import { useQuestionnaireStore, useSmartConfigStore, useTerminologyServerStore } from '../stores';
@@ -1 +1 @@
1
- {"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export interface CalculatedExpression {
2
2
  expression: string;
3
+ from: 'item' | 'item._text';
3
4
  value?: number | string | object;
4
5
  }
@@ -12,7 +12,7 @@ export interface QuestionnaireModel {
12
12
  launchContexts: Record<string, LaunchContext>;
13
13
  enableWhenItems: EnableWhenItems;
14
14
  enableWhenExpressions: EnableWhenExpressions;
15
- calculatedExpressions: Record<string, CalculatedExpression>;
15
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
16
16
  answerExpressions: Record<string, AnswerExpression>;
17
17
  processedValueSetCodings: Record<string, Coding[]>;
18
18
  processedValueSetUrls: Record<string, string>;
@@ -16,7 +16,7 @@ interface QuestionnaireStoreType {
16
16
  enableWhenLinkedQuestions: Record<string, string[]>;
17
17
  enableWhenIsActivated: boolean;
18
18
  enableWhenExpressions: EnableWhenExpressions;
19
- calculatedExpressions: Record<string, CalculatedExpression>;
19
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
20
20
  answerExpressions: Record<string, AnswerExpression>;
21
21
  processedValueSetCodings: Record<string, Coding[]>;
22
22
  processedValueSetUrls: Record<string, string>;
@@ -49,7 +49,7 @@ export declare const useQuestionnaireStore: import("zustand/vanilla").StoreApi<Q
49
49
  enableWhenLinkedQuestions: () => Record<string, string[]>;
50
50
  enableWhenIsActivated: () => boolean;
51
51
  enableWhenExpressions: () => EnableWhenExpressions;
52
- calculatedExpressions: () => Record<string, CalculatedExpression>;
52
+ calculatedExpressions: () => Record<string, CalculatedExpression[]>;
53
53
  answerExpressions: () => Record<string, AnswerExpression>;
54
54
  processedValueSetCodings: () => Record<string, Coding[]>;
55
55
  processedValueSetUrls: () => Record<string, string>;
@@ -2,19 +2,19 @@ import type { CalculatedExpression } from '../interfaces/calculatedExpression.in
2
2
  import type { Expression, Questionnaire, QuestionnaireResponse } from 'fhir/r4';
3
3
  interface EvaluateInitialCalculatedExpressionsParams {
4
4
  initialResponse: QuestionnaireResponse;
5
- calculatedExpressions: Record<string, CalculatedExpression>;
5
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
6
6
  variablesFhirPath: Record<string, Expression[]>;
7
7
  existingFhirPathContext: Record<string, any>;
8
8
  }
9
9
  export declare function evaluateInitialCalculatedExpressions(params: EvaluateInitialCalculatedExpressionsParams): {
10
- initialCalculatedExpressions: Record<string, CalculatedExpression>;
10
+ initialCalculatedExpressions: Record<string, CalculatedExpression[]>;
11
11
  updatedFhirPathContext: Record<string, any>;
12
12
  };
13
- export declare function evaluateCalculatedExpressions(fhirPathContext: Record<string, any>, calculatedExpressions: Record<string, CalculatedExpression>): {
13
+ export declare function evaluateCalculatedExpressions(fhirPathContext: Record<string, any>, calculatedExpressions: Record<string, CalculatedExpression[]>): {
14
14
  calculatedExpsIsUpdated: boolean;
15
- updatedCalculatedExpressions: Record<string, CalculatedExpression>;
15
+ updatedCalculatedExpressions: Record<string, CalculatedExpression[]>;
16
16
  };
17
- export declare function initialiseCalculatedExpressionValues(questionnaire: Questionnaire, populatedResponse: QuestionnaireResponse, calculatedExpressions: Record<string, CalculatedExpression>): QuestionnaireResponse;
17
+ export declare function initialiseCalculatedExpressionValues(questionnaire: Questionnaire, populatedResponse: QuestionnaireResponse, calculatedExpressions: Record<string, CalculatedExpression[]>): QuestionnaireResponse;
18
18
  /**
19
19
  * Check if an answer is a datetime in the format YYYY, YYYY-MM, YYYY-MM-DD, YYYY-MM-DDThh:mm:ss+zz:zz
20
20
  *