@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
@@ -1 +1 @@
1
- {"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,9 @@ function answerIsEmpty(qItem, qrItem, enableWhenIsActivated, enableWhenItems, en
112
112
  if (!qrItem.answer) {
113
113
  return true;
114
114
  }
115
+ if (qrItem.answer.length === 0) {
116
+ return true;
117
+ }
115
118
  if (((_a = qrItem.answer[0]) === null || _a === void 0 ? void 0 : _a.valueString) === '') {
116
119
  return true;
117
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"removeEmptyAnswers.js","sourceRoot":"","sources":["../../src/utils/removeEmptyAnswers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"removeEmptyAnswers.js","sourceRoot":"","sources":["../../src/utils/removeEmptyAnswers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "0.23.1",
3
+ "version": "0.24.1",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -22,6 +22,7 @@ import parse from 'html-react-parser';
22
22
  import Box from '@mui/material/Box';
23
23
  import ReactMarkdown from 'react-markdown';
24
24
  import Typography from '@mui/material/Typography';
25
+ import useDisplayCalculatedExpression from '../../../hooks/useDisplayCalculatedExpression';
25
26
 
26
27
  interface ItemLabelTextProps {
27
28
  qItem: QuestionnaireItem;
@@ -31,6 +32,16 @@ interface ItemLabelTextProps {
31
32
  const ItemLabelText = memo(function ItemLabelText(props: ItemLabelTextProps) {
32
33
  const { qItem, readOnly } = props;
33
34
 
35
+ // Use calculatedExpressionString if available
36
+ const calculatedExpressionString = useDisplayCalculatedExpression(qItem);
37
+ if (calculatedExpressionString) {
38
+ return (
39
+ <Typography color={readOnly ? 'text.disabled' : 'text.primary'} sx={{ mt: 0.25 }}>
40
+ {calculatedExpressionString}
41
+ </Typography>
42
+ );
43
+ }
44
+
34
45
  // parse xHTML if found
35
46
  const xHtmlString = getXHtmlString(qItem);
36
47
 
@@ -38,7 +49,7 @@ const ItemLabelText = memo(function ItemLabelText(props: ItemLabelTextProps) {
38
49
  return <Box>{parse(xHtmlString)}</Box>;
39
50
  }
40
51
 
41
- // parse xHTML if found
52
+ // parse markdown if found
42
53
  const markdownString = getMarkdownString(qItem);
43
54
  if (markdownString) {
44
55
  return (
@@ -43,10 +43,16 @@ function useDecimalCalculatedExpression(
43
43
 
44
44
  useEffect(
45
45
  () => {
46
- const calcExpression = calculatedExpressions[qItem.linkId];
46
+ const calcExpression = calculatedExpressions[qItem.linkId]?.find(
47
+ (exp) => exp.from === 'item'
48
+ );
49
+
50
+ if (!calcExpression) {
51
+ return;
52
+ }
47
53
 
48
54
  // only update if calculated value is different from current value
49
- if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'number') {
55
+ if (calcExpression.value !== inputValue && typeof calcExpression.value === 'number') {
50
56
  const value = precision
51
57
  ? parseFloat(calcExpression.value.toFixed(precision))
52
58
  : calcExpression.value;
@@ -0,0 +1,40 @@
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
+
18
+ import { useQuestionnaireStore } from '../stores';
19
+ import type { QuestionnaireItem } from 'fhir/r4';
20
+
21
+ function useDisplayCalculatedExpression(qItem: QuestionnaireItem): string | null {
22
+ const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
23
+
24
+ const calcExpression = calculatedExpressions[qItem.linkId]?.find(
25
+ (exp) => exp.from === 'item._text'
26
+ );
27
+ if (!calcExpression) {
28
+ return null;
29
+ }
30
+
31
+ if (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number') {
32
+ return typeof calcExpression.value === 'string'
33
+ ? calcExpression.value
34
+ : calcExpression.value.toString();
35
+ }
36
+
37
+ return null;
38
+ }
39
+
40
+ export default useDisplayCalculatedExpression;
@@ -42,10 +42,16 @@ function useIntegerCalculatedExpression(
42
42
 
43
43
  useEffect(
44
44
  () => {
45
- const calcExpression = calculatedExpressions[qItem.linkId];
45
+ const calcExpression = calculatedExpressions[qItem.linkId]?.find(
46
+ (exp) => exp.from === 'item'
47
+ );
48
+
49
+ if (!calcExpression) {
50
+ return;
51
+ }
46
52
 
47
53
  // only update if calculated value is different from current value
48
- if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'number') {
54
+ if (calcExpression.value !== inputValue && typeof calcExpression.value === 'number') {
49
55
  // update ui to show calculated value changes
50
56
  setCalcExpUpdated(true);
51
57
  setTimeout(() => {
@@ -18,7 +18,7 @@
18
18
  import { useEffect, useState } from 'react';
19
19
  import { createEmptyQrItem } from '../utils/qrItem';
20
20
  import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
21
- import { useQuestionnaireStore } from '../stores/questionnaireStore';
21
+ import { useQuestionnaireStore } from '../stores';
22
22
 
23
23
  interface UseStringCalculatedExpression {
24
24
  calcExpUpdated: boolean;
@@ -42,21 +42,35 @@ function useStringCalculatedExpression(
42
42
 
43
43
  useEffect(
44
44
  () => {
45
- const calcExpression = calculatedExpressions[qItem.linkId];
45
+ const calcExpression = calculatedExpressions[qItem.linkId]?.find(
46
+ (exp) => exp.from === 'item'
47
+ );
48
+
49
+ if (!calcExpression) {
50
+ return;
51
+ }
46
52
 
47
53
  // only update if calculated value is different from current value
48
- if (calcExpression?.value !== inputValue && typeof calcExpression?.value === 'string') {
54
+ if (
55
+ calcExpression.value !== inputValue &&
56
+ (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number')
57
+ ) {
49
58
  // update ui to show calculated value changes
50
59
  setCalcExpUpdated(true);
51
60
  setTimeout(() => {
52
61
  setCalcExpUpdated(false);
53
62
  }, 500);
54
63
 
64
+ const updatedInputValue =
65
+ typeof calcExpression.value === 'string'
66
+ ? calcExpression.value
67
+ : calcExpression.value.toString();
68
+
55
69
  // update questionnaireResponse
56
- setInputValue(calcExpression.value);
70
+ setInputValue(updatedInputValue);
57
71
  onQrItemChange({
58
72
  ...createEmptyQrItem(qItem),
59
- answer: [{ valueString: calcExpression.value }]
73
+ answer: [{ valueString: updatedInputValue }]
60
74
  });
61
75
  }
62
76
  },
@@ -23,7 +23,7 @@ import {
23
23
  getValueSetCodings,
24
24
  getValueSetPromise
25
25
  } from '../utils/valueSet';
26
- import { getAnswerExpression } from '../utils/itemControl';
26
+ import { getAnswerExpression } from '../utils/getExpressionsFromItem';
27
27
  import fhirpath from 'fhirpath';
28
28
  import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
29
29
  import { useQuestionnaireStore, useSmartConfigStore, useTerminologyServerStore } from '../stores';
@@ -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
  }
@@ -30,7 +30,7 @@ export interface QuestionnaireModel {
30
30
  launchContexts: Record<string, LaunchContext>;
31
31
  enableWhenItems: EnableWhenItems;
32
32
  enableWhenExpressions: EnableWhenExpressions;
33
- calculatedExpressions: Record<string, CalculatedExpression>;
33
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
34
34
  answerExpressions: Record<string, AnswerExpression>;
35
35
  processedValueSetCodings: Record<string, Coding[]>;
36
36
  processedValueSetUrls: Record<string, string>;
@@ -57,7 +57,7 @@ interface QuestionnaireStoreType {
57
57
  enableWhenLinkedQuestions: Record<string, string[]>;
58
58
  enableWhenIsActivated: boolean;
59
59
  enableWhenExpressions: EnableWhenExpressions;
60
- calculatedExpressions: Record<string, CalculatedExpression>;
60
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
61
61
  answerExpressions: Record<string, AnswerExpression>;
62
62
  processedValueSetCodings: Record<string, Coding[]>;
63
63
  processedValueSetUrls: Record<string, string>;
@@ -37,7 +37,7 @@ import dayjs from 'dayjs';
37
37
 
38
38
  interface EvaluateInitialCalculatedExpressionsParams {
39
39
  initialResponse: QuestionnaireResponse;
40
- calculatedExpressions: Record<string, CalculatedExpression>;
40
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
41
41
  variablesFhirPath: Record<string, Expression[]>;
42
42
  existingFhirPathContext: Record<string, any>;
43
43
  }
@@ -45,7 +45,7 @@ interface EvaluateInitialCalculatedExpressionsParams {
45
45
  export function evaluateInitialCalculatedExpressions(
46
46
  params: EvaluateInitialCalculatedExpressionsParams
47
47
  ): {
48
- initialCalculatedExpressions: Record<string, CalculatedExpression>;
48
+ initialCalculatedExpressions: Record<string, CalculatedExpression[]>;
49
49
  updatedFhirPathContext: Record<string, any>;
50
50
  } {
51
51
  const { initialResponse, calculatedExpressions, variablesFhirPath, existingFhirPathContext } =
@@ -62,7 +62,7 @@ export function evaluateInitialCalculatedExpressions(
62
62
  };
63
63
  }
64
64
 
65
- const initialCalculatedExpressions: Record<string, CalculatedExpression> = {
65
+ const initialCalculatedExpressions: Record<string, CalculatedExpression[]> = {
66
66
  ...calculatedExpressions
67
67
  };
68
68
  const updatedFhirPathContext = createFhirPathContext(
@@ -72,23 +72,26 @@ export function evaluateInitialCalculatedExpressions(
72
72
  );
73
73
 
74
74
  for (const linkId in initialCalculatedExpressions) {
75
- try {
76
- const result = fhirpath.evaluate(
77
- initialResponse,
78
- calculatedExpressions[linkId].expression,
79
- updatedFhirPathContext,
80
- fhirpath_r4_model
81
- );
75
+ const itemCalcExpressions = calculatedExpressions[linkId];
76
+
77
+ for (const calcExpression of itemCalcExpressions) {
78
+ try {
79
+ const result = fhirpath.evaluate(
80
+ {},
81
+ calcExpression.expression,
82
+ updatedFhirPathContext,
83
+ fhirpath_r4_model
84
+ );
82
85
 
83
- if (!_isEqual(calculatedExpressions[linkId].value, result[0])) {
84
- initialCalculatedExpressions[linkId].value = result[0];
86
+ if (!_isEqual(calcExpression.value, result[0])) {
87
+ calcExpression.value = result[0];
88
+ }
89
+ } catch (e) {
90
+ console.warn(e.message, `LinkId: ${linkId}\nExpression: ${calcExpression.expression}`);
85
91
  }
86
- } catch (e) {
87
- console.warn(
88
- e.message,
89
- `LinkId: ${linkId}\nExpression: ${calculatedExpressions[linkId].expression}`
90
- );
91
92
  }
93
+
94
+ initialCalculatedExpressions[linkId] = itemCalcExpressions;
92
95
  }
93
96
 
94
97
  return {
@@ -99,37 +102,40 @@ export function evaluateInitialCalculatedExpressions(
99
102
 
100
103
  export function evaluateCalculatedExpressions(
101
104
  fhirPathContext: Record<string, any>,
102
- calculatedExpressions: Record<string, CalculatedExpression>
105
+ calculatedExpressions: Record<string, CalculatedExpression[]>
103
106
  ): {
104
107
  calculatedExpsIsUpdated: boolean;
105
- updatedCalculatedExpressions: Record<string, CalculatedExpression>;
108
+ updatedCalculatedExpressions: Record<string, CalculatedExpression[]>;
106
109
  } {
107
- const updatedCalculatedExpressions: Record<string, CalculatedExpression> = {
110
+ const updatedCalculatedExpressions: Record<string, CalculatedExpression[]> = {
108
111
  ...calculatedExpressions
109
112
  };
110
113
 
111
114
  let isUpdated = false;
112
115
  for (const linkId in calculatedExpressions) {
113
- try {
114
- const result = fhirpath.evaluate(
115
- '',
116
- calculatedExpressions[linkId].expression,
117
- fhirPathContext,
118
- fhirpath_r4_model
119
- );
116
+ const itemCalcExpressions = calculatedExpressions[linkId];
117
+
118
+ for (const calcExpression of itemCalcExpressions) {
119
+ try {
120
+ const result = fhirpath.evaluate(
121
+ {},
122
+ calcExpression.expression,
123
+ fhirPathContext,
124
+ fhirpath_r4_model
125
+ );
120
126
 
121
- if (result.length > 0) {
122
- if (!_isEqual(calculatedExpressions[linkId].value, result[0])) {
123
- isUpdated = true;
124
- updatedCalculatedExpressions[linkId].value = result[0];
127
+ if (result.length > 0) {
128
+ if (!_isEqual(calcExpression.value, result[0])) {
129
+ isUpdated = true;
130
+ calcExpression.value = result[0];
131
+ }
125
132
  }
133
+ } catch (e) {
134
+ console.warn(e.message, `LinkId: ${linkId}\nExpression: ${calcExpression.expression}`);
126
135
  }
127
- } catch (e) {
128
- console.warn(
129
- e.message,
130
- `LinkId: ${linkId}\nExpression: ${calculatedExpressions[linkId].expression}`
131
- );
132
136
  }
137
+
138
+ updatedCalculatedExpressions[linkId] = itemCalcExpressions;
133
139
  }
134
140
 
135
141
  return {
@@ -141,17 +147,8 @@ export function evaluateCalculatedExpressions(
141
147
  export function initialiseCalculatedExpressionValues(
142
148
  questionnaire: Questionnaire,
143
149
  populatedResponse: QuestionnaireResponse,
144
- calculatedExpressions: Record<string, CalculatedExpression>
150
+ calculatedExpressions: Record<string, CalculatedExpression[]>
145
151
  ): QuestionnaireResponse {
146
- const calculatedExpressionsWithValues = Object.keys(calculatedExpressions)
147
- .filter((key) => calculatedExpressions[key].value !== undefined)
148
- .reduce(
149
- (mapping: Record<string, CalculatedExpression>, key: string) => (
150
- (mapping[key] = calculatedExpressions[key]), mapping
151
- ),
152
- {}
153
- );
154
-
155
152
  if (
156
153
  !questionnaire.item ||
157
154
  questionnaire.item.length === 0 ||
@@ -161,6 +158,19 @@ export function initialiseCalculatedExpressionValues(
161
158
  return populatedResponse;
162
159
  }
163
160
 
161
+ // Filter calculated expressions, only preserve key-value pairs with values
162
+ const calculatedExpressionsWithValues: Record<string, CalculatedExpression[]> = {};
163
+ for (const linkId in calculatedExpressions) {
164
+ const itemCalcExpressionsWithValues = calculatedExpressions[linkId].filter(
165
+ (calcExpression) => calcExpression.value !== undefined
166
+ );
167
+
168
+ if (itemCalcExpressionsWithValues.length > 0) {
169
+ calculatedExpressionsWithValues[linkId] = itemCalcExpressionsWithValues;
170
+ }
171
+ }
172
+
173
+ // Populate calculated expression values into QR
164
174
  const topLevelQrItems: QuestionnaireResponseItem[] = [];
165
175
  for (const [index, topLevelQItem] of questionnaire.item.entries()) {
166
176
  const populatedTopLevelQrItem = populatedResponse.item[index] ?? {
@@ -193,7 +203,7 @@ export function initialiseCalculatedExpressionValues(
193
203
  function initialiseItemCalculatedExpressionValueRecursive(
194
204
  qItem: QuestionnaireItem,
195
205
  qrItem: QuestionnaireResponseItem | undefined,
196
- calculatedExpressions: Record<string, CalculatedExpression>
206
+ calculatedExpressions: Record<string, CalculatedExpression[]>
197
207
  ): QuestionnaireResponseItem[] | QuestionnaireResponseItem | null {
198
208
  const childQItems = qItem.item;
199
209
  if (childQItems && childQItems.length > 0) {
@@ -245,16 +255,27 @@ function initialiseItemCalculatedExpressionValueRecursive(
245
255
  return constructSingleItem(qItem, calculatedExpressions);
246
256
  }
247
257
 
258
+ function getCalculatedExpressionAnswer(
259
+ qItem: QuestionnaireItem,
260
+ calculatedExpressions: Record<string, CalculatedExpression[]>
261
+ ): QuestionnaireResponseItemAnswer | undefined {
262
+ const calcExpressionFromItem = calculatedExpressions[qItem.linkId]?.find(
263
+ (calcExpression) => calcExpression.from === 'item'
264
+ );
265
+
266
+ if (calcExpressionFromItem && calcExpressionFromItem.value) {
267
+ return parseValueToAnswer(qItem, calcExpressionFromItem.value);
268
+ }
269
+
270
+ return;
271
+ }
272
+
248
273
  function constructGroupItem(
249
274
  qItem: QuestionnaireItem,
250
275
  qrItem: QuestionnaireResponseItem | undefined,
251
- calculatedExpressions: Record<string, CalculatedExpression>
276
+ calculatedExpressions: Record<string, CalculatedExpression[]>
252
277
  ): QuestionnaireResponseItem | null {
253
- const itemCalculatedExpression = calculatedExpressions[qItem.linkId];
254
- let calculatedExpressionAnswer: QuestionnaireResponseItemAnswer | undefined;
255
- if (itemCalculatedExpression && itemCalculatedExpression.value) {
256
- calculatedExpressionAnswer = parseValueToAnswer(qItem, itemCalculatedExpression.value);
257
- }
278
+ const calculatedExpressionAnswer = getCalculatedExpressionAnswer(qItem, calculatedExpressions);
258
279
 
259
280
  // If group item has an existing answer, do not overwrite it with calculated expression value
260
281
  if (qrItem?.answer && qrItem?.answer.length > 0) {
@@ -281,14 +302,9 @@ function constructGroupItem(
281
302
 
282
303
  function constructSingleItem(
283
304
  qItem: QuestionnaireItem,
284
- calculatedExpressions: Record<string, CalculatedExpression>
305
+ calculatedExpressions: Record<string, CalculatedExpression[]>
285
306
  ): QuestionnaireResponseItem | null {
286
- const itemCalculatedExpression = calculatedExpressions[qItem.linkId];
287
- let calculatedExpressionAnswer: QuestionnaireResponseItemAnswer | undefined;
288
- if (itemCalculatedExpression && itemCalculatedExpression.value) {
289
- calculatedExpressionAnswer = parseValueToAnswer(qItem, itemCalculatedExpression.value);
290
- }
291
-
307
+ const calculatedExpressionAnswer = getCalculatedExpressionAnswer(qItem, calculatedExpressions);
292
308
  if (!calculatedExpressionAnswer) {
293
309
  return null;
294
310
  }
@@ -68,51 +68,73 @@ export function isEnabledAnswerTypeSwitcher(
68
68
  enableWhen: QuestionnaireItemEnableWhen,
69
69
  answer: QuestionnaireResponseItemAnswer
70
70
  ): boolean {
71
- if (enableWhen['answerBoolean'] !== undefined && enableWhen.operator === 'exists') {
71
+ if (typeof enableWhen.answerBoolean === 'boolean' && enableWhen.operator === 'exists') {
72
72
  return answerOperatorSwitcher(enableWhen.answerBoolean, answer, enableWhen.operator);
73
- } else if (enableWhen['answerBoolean'] !== undefined && answer.valueBoolean !== undefined) {
73
+ }
74
+
75
+ if (typeof enableWhen.answerBoolean === 'boolean' && typeof answer.valueBoolean === 'boolean') {
74
76
  return answerOperatorSwitcher(
75
77
  enableWhen.answerBoolean,
76
78
  answer.valueBoolean,
77
79
  enableWhen.operator
78
80
  );
79
- } else if (enableWhen['answerDecimal'] && answer.valueDecimal) {
81
+ }
82
+
83
+ if (typeof enableWhen.answerDecimal === 'number' && typeof answer.valueDecimal === 'number') {
80
84
  return answerOperatorSwitcher(
81
85
  enableWhen.answerDecimal,
82
86
  answer.valueDecimal,
83
87
  enableWhen.operator
84
88
  );
85
- } else if (enableWhen['answerInteger'] !== undefined && answer.valueInteger !== undefined) {
89
+ }
90
+
91
+ if (typeof enableWhen.answerInteger === 'number' && typeof answer.valueInteger === 'number') {
86
92
  return answerOperatorSwitcher(
87
93
  enableWhen.answerInteger,
88
94
  answer.valueInteger,
89
95
  enableWhen.operator
90
96
  );
91
- } else if (enableWhen['answerDate'] && answer.valueDate) {
97
+ }
98
+
99
+ if (typeof enableWhen.answerDate === 'string' && typeof answer.valueDate === 'string') {
92
100
  return answerOperatorSwitcher(enableWhen.answerDate, answer.valueDate, enableWhen.operator);
93
- } else if (enableWhen['answerDateTime'] && answer.valueDateTime) {
101
+ }
102
+
103
+ if (typeof enableWhen.answerDateTime === 'string' && typeof answer.valueDateTime === 'string') {
94
104
  return answerOperatorSwitcher(
95
105
  enableWhen.answerDateTime,
96
106
  answer.valueDateTime,
97
107
  enableWhen.operator
98
108
  );
99
- } else if (enableWhen['answerTime'] && answer.valueTime) {
109
+ }
110
+
111
+ if (typeof enableWhen.answerTime === 'string' && typeof answer.valueTime === 'string') {
100
112
  return answerOperatorSwitcher(enableWhen.answerTime, answer.valueTime, enableWhen.operator);
101
- } else if (enableWhen['answerString'] && answer.valueString) {
113
+ }
114
+
115
+ if (typeof enableWhen.answerString === 'string' && typeof answer.valueString === 'string') {
102
116
  return answerOperatorSwitcher(enableWhen.answerString, answer.valueString, enableWhen.operator);
103
- } else if (enableWhen['answerCoding']?.code && answer.valueCoding?.code) {
117
+ }
118
+
119
+ if (
120
+ typeof enableWhen.answerCoding?.code === 'string' &&
121
+ typeof answer.valueCoding?.code === 'string'
122
+ ) {
104
123
  return answerOperatorSwitcher(
105
124
  enableWhen.answerCoding.code,
106
125
  answer.valueCoding.code,
107
126
  enableWhen.operator
108
127
  );
109
- } else if (enableWhen['answerQuantity'] && answer.valueQuantity) {
128
+ }
129
+
130
+ if (enableWhen.answerQuantity && answer.valueQuantity) {
110
131
  return answerOperatorSwitcher(
111
132
  enableWhen.answerQuantity,
112
133
  answer.valueQuantity,
113
134
  enableWhen.operator
114
135
  );
115
136
  }
137
+
116
138
  return false;
117
139
  }
118
140
 
@@ -25,7 +25,7 @@ import { evaluateCalculatedExpressions } from './calculatedExpression';
25
25
 
26
26
  interface EvaluateUpdatedExpressionsParams {
27
27
  updatedResponse: QuestionnaireResponse;
28
- calculatedExpressions: Record<string, CalculatedExpression>;
28
+ calculatedExpressions: Record<string, CalculatedExpression[]>;
29
29
  enableWhenExpressions: EnableWhenExpressions;
30
30
  variablesFhirPath: Record<string, Expression[]>;
31
31
  existingFhirPathContext: Record<string, any>;
@@ -34,7 +34,7 @@ interface EvaluateUpdatedExpressionsParams {
34
34
  export function evaluateUpdatedExpressions(params: EvaluateUpdatedExpressionsParams): {
35
35
  isUpdated: boolean;
36
36
  updatedEnableWhenExpressions: EnableWhenExpressions;
37
- updatedCalculatedExpressions: Record<string, CalculatedExpression>;
37
+ updatedCalculatedExpressions: Record<string, CalculatedExpression[]>;
38
38
  updatedFhirPathContext: Record<string, any>;
39
39
  } {
40
40
  const {