@aehrc/smart-forms-renderer 0.25.2 → 0.26.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 (87) hide show
  1. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +6 -1
  2. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  3. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +5 -2
  4. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  5. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +5 -2
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +5 -2
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +5 -2
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  11. package/lib/components/FormComponents/DecimalItem/DecimalItem.js +9 -3
  12. package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
  13. package/lib/components/FormComponents/IntegerItem/IntegerItem.js +7 -3
  14. package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
  15. package/lib/components/FormComponents/StringItem/StringItem.js +7 -3
  16. package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
  17. package/lib/components/FormComponents/TextItem/TextItem.js +7 -3
  18. package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
  19. package/lib/components/Renderer/BaseRenderer.js +3 -3
  20. package/lib/components/Renderer/BaseRenderer.js.map +1 -1
  21. package/lib/hooks/useBooleanCalculatedExpression.d.ts +5 -4
  22. package/lib/hooks/useBooleanCalculatedExpression.js +12 -7
  23. package/lib/hooks/useBooleanCalculatedExpression.js.map +1 -1
  24. package/lib/hooks/useCodingCalculatedExpression.d.ts +4 -3
  25. package/lib/hooks/useCodingCalculatedExpression.js +14 -7
  26. package/lib/hooks/useCodingCalculatedExpression.js.map +1 -1
  27. package/lib/hooks/useDecimalCalculatedExpression.d.ts +3 -3
  28. package/lib/hooks/useDecimalCalculatedExpression.js +11 -7
  29. package/lib/hooks/useDecimalCalculatedExpression.js.map +1 -1
  30. package/lib/hooks/useDisplayCalculatedExpression.js +8 -1
  31. package/lib/hooks/useDisplayCalculatedExpression.js.map +1 -1
  32. package/lib/hooks/useIntegerCalculatedExpression.d.ts +3 -3
  33. package/lib/hooks/useIntegerCalculatedExpression.js +11 -7
  34. package/lib/hooks/useIntegerCalculatedExpression.js.map +1 -1
  35. package/lib/hooks/useStringCalculatedExpression.d.ts +3 -3
  36. package/lib/hooks/useStringCalculatedExpression.js +12 -7
  37. package/lib/hooks/useStringCalculatedExpression.js.map +1 -1
  38. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  39. package/lib/stores/questionnaireResponseStore.d.ts +3 -1
  40. package/lib/stores/questionnaireResponseStore.js +9 -1
  41. package/lib/stores/questionnaireResponseStore.js.map +1 -1
  42. package/lib/stores/questionnaireStore.d.ts +6 -2
  43. package/lib/stores/questionnaireStore.js +13 -2
  44. package/lib/stores/questionnaireStore.js.map +1 -1
  45. package/lib/utils/calculatedExpression.d.ts +2 -1
  46. package/lib/utils/calculatedExpression.js +14 -8
  47. package/lib/utils/calculatedExpression.js.map +1 -1
  48. package/lib/utils/enableWhenExpression.d.ts +3 -2
  49. package/lib/utils/enableWhenExpression.js +15 -5
  50. package/lib/utils/enableWhenExpression.js.map +1 -1
  51. package/lib/utils/fhirpath.d.ts +5 -4
  52. package/lib/utils/fhirpath.js +45 -33
  53. package/lib/utils/fhirpath.js.map +1 -1
  54. package/lib/utils/index.d.ts +1 -0
  55. package/lib/utils/index.js +1 -0
  56. package/lib/utils/index.js.map +1 -1
  57. package/lib/utils/initialise.js +5 -2
  58. package/lib/utils/initialise.js.map +1 -1
  59. package/lib/utils/parseInputs.js +1 -1
  60. package/lib/utils/parseInputs.js.map +1 -1
  61. package/package.json +2 -1
  62. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +9 -1
  63. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +5 -2
  64. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +5 -2
  65. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +5 -2
  66. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +5 -2
  67. package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +14 -3
  68. package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +10 -3
  69. package/src/components/FormComponents/StringItem/StringItem.tsx +10 -3
  70. package/src/components/FormComponents/TextItem/TextItem.tsx +10 -3
  71. package/src/components/Renderer/BaseRenderer.tsx +3 -3
  72. package/src/hooks/useBooleanCalculatedExpression.ts +19 -12
  73. package/src/hooks/useCodingCalculatedExpression.ts +18 -8
  74. package/src/hooks/useDecimalCalculatedExpression.ts +26 -17
  75. package/src/hooks/useDisplayCalculatedExpression.ts +12 -1
  76. package/src/hooks/useIntegerCalculatedExpression.ts +18 -13
  77. package/src/hooks/useStringCalculatedExpression.ts +16 -13
  78. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  79. package/src/stores/questionnaireResponseStore.ts +16 -2
  80. package/src/stores/questionnaireStore.ts +22 -2
  81. package/src/utils/calculatedExpression.ts +24 -10
  82. package/src/utils/enableWhenExpression.ts +22 -9
  83. package/src/utils/fhirpath.ts +62 -41
  84. package/src/utils/index.ts +1 -0
  85. package/src/utils/initialise.ts +5 -2
  86. package/src/utils/parseInputs.ts +1 -1
  87. package/src/utils/questionnaireResponseStoreUtils/updatableResponseItems.ts +62 -0
@@ -19,7 +19,7 @@ import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
19
19
  import { evaluateEnableWhenExpressions } from './enableWhenExpression';
20
20
  import { evaluateCalculatedExpressions } from './calculatedExpression';
21
21
  export function evaluateUpdatedExpressions(params) {
22
- const { updatedResponse, enableWhenExpressions, calculatedExpressions, variablesFhirPath, existingFhirPathContext } = params;
22
+ const { updatedResponse, updatedResponseItemMap, enableWhenExpressions, calculatedExpressions, variablesFhirPath, existingFhirPathContext } = params;
23
23
  const noExpressionsToBeUpdated = Object.keys(enableWhenExpressions).length === 0 &&
24
24
  Object.keys(calculatedExpressions).length === 0;
25
25
  if (noExpressionsToBeUpdated || !updatedResponse.item) {
@@ -30,7 +30,7 @@ export function evaluateUpdatedExpressions(params) {
30
30
  updatedFhirPathContext: existingFhirPathContext
31
31
  };
32
32
  }
33
- const updatedFhirPathContext = createFhirPathContext(updatedResponse, variablesFhirPath, existingFhirPathContext);
33
+ const updatedFhirPathContext = createFhirPathContext(updatedResponse, updatedResponseItemMap, variablesFhirPath);
34
34
  // Update enableWhenExpressions
35
35
  const { enableWhenExpsIsUpdated, updatedEnableWhenExpressions } = evaluateEnableWhenExpressions(updatedFhirPathContext, enableWhenExpressions);
36
36
  // Update calculatedExpressions
@@ -43,39 +43,35 @@ export function evaluateUpdatedExpressions(params) {
43
43
  updatedFhirPathContext
44
44
  };
45
45
  }
46
- export function createFhirPathContext(questionnaireResponse, variablesFhirPath, existingFhirPathContext) {
47
- let fhirPathContext = {};
48
- if (Object.keys(existingFhirPathContext).length > 0) {
49
- fhirPathContext = Object.assign(Object.assign({}, fhirPathContext), existingFhirPathContext);
46
+ export function createFhirPathContext(questionnaireResponse, questionnaireResponseItemMap, variablesFhirPath) {
47
+ if (!questionnaireResponse.item) {
48
+ return {};
50
49
  }
51
50
  // Add latest resource to fhirPathContext
52
- fhirPathContext = Object.assign(Object.assign({}, fhirPathContext), { resource: questionnaireResponse });
53
- if (!questionnaireResponse.item || questionnaireResponse.item.length === 0) {
54
- return fhirPathContext;
51
+ let fhirPathContext = { resource: questionnaireResponse };
52
+ // Evaluate resource-level variables
53
+ fhirPathContext = evaluateQuestionnaireLevelVariables(questionnaireResponse, variablesFhirPath, fhirPathContext);
54
+ // Add variables of items that exist in questionnaireResponseItemMap into fhirPathContext
55
+ for (const linkId in questionnaireResponseItemMap) {
56
+ // For non-repeat groups, the same linkId will have only one item
57
+ // For repeat groups, the same linkId will have multiple items
58
+ for (const qrItem of questionnaireResponseItemMap[linkId]) {
59
+ fhirPathContext = evaluateLinkIdVariables(qrItem, variablesFhirPath, fhirPathContext);
60
+ }
55
61
  }
56
- evaluateResourceLevelFhirPath(questionnaireResponse, variablesFhirPath, fhirPathContext);
57
- for (const topLevelItem of questionnaireResponse.item) {
58
- evaluateFhirPathRecursive(topLevelItem, variablesFhirPath, fhirPathContext);
62
+ // Items don't exist in questionnaireResponseItemMap, but we still have to add them into the fhirPathContext as empty arrays
63
+ for (const linkId in variablesFhirPath) {
64
+ fhirPathContext = addEmptyLinkIdVariables(linkId, variablesFhirPath, fhirPathContext);
59
65
  }
60
66
  return fhirPathContext;
61
67
  }
62
- export function evaluateFhirPathRecursive(item, variablesFhirPath, fhirPathContext) {
63
- const items = item.item;
64
- if (items && items.length > 0) {
65
- // iterate through items of item recursively
66
- for (const childItem of items) {
67
- evaluateFhirPathRecursive(childItem, variablesFhirPath, fhirPathContext);
68
- }
69
- }
70
- evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext);
71
- }
72
- export function evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext) {
73
- const variablesOfItem = variablesFhirPath[item.linkId];
74
- if (!variablesOfItem || variablesOfItem.length === 0) {
75
- return;
68
+ export function evaluateLinkIdVariables(item, variablesFhirPath, fhirPathContext) {
69
+ const linkIdVariables = variablesFhirPath[item.linkId];
70
+ if (!linkIdVariables || linkIdVariables.length === 0) {
71
+ return fhirPathContext;
76
72
  }
77
- variablesOfItem.forEach((variable) => {
78
- if (variable.expression) {
73
+ for (const variable of linkIdVariables) {
74
+ if (variable.expression && variable.name) {
79
75
  try {
80
76
  fhirPathContext[`${variable.name}`] = fhirpath.evaluate(item, {
81
77
  base: 'QuestionnaireResponse.item',
@@ -86,14 +82,29 @@ export function evaluateItemFhirPath(item, variablesFhirPath, fhirPathContext) {
86
82
  console.warn(e.message, `LinkId: ${item.linkId}\nExpression: ${variable.expression}`);
87
83
  }
88
84
  }
89
- });
85
+ }
86
+ return fhirPathContext;
90
87
  }
91
- export function evaluateResourceLevelFhirPath(resource, variablesFhirPath, fhirPathContext) {
88
+ export function addEmptyLinkIdVariables(linkId, variablesFhirPath, fhirPathContext) {
89
+ const linkIdVariables = variablesFhirPath[linkId];
90
+ if (!linkIdVariables || linkIdVariables.length === 0) {
91
+ return fhirPathContext;
92
+ }
93
+ for (const variable of linkIdVariables) {
94
+ if (variable.expression && variable.name) {
95
+ if (fhirPathContext[`${variable.name}`] === undefined) {
96
+ fhirPathContext[`${variable.name}`] = [];
97
+ }
98
+ }
99
+ }
100
+ return fhirPathContext;
101
+ }
102
+ export function evaluateQuestionnaireLevelVariables(resource, variablesFhirPath, fhirPathContext) {
92
103
  const questionnaireLevelVariables = variablesFhirPath['QuestionnaireLevel'];
93
104
  if (!questionnaireLevelVariables || questionnaireLevelVariables.length === 0) {
94
- return;
105
+ return fhirPathContext;
95
106
  }
96
- questionnaireLevelVariables.forEach((variable) => {
107
+ for (const variable of questionnaireLevelVariables) {
97
108
  if (variable.expression) {
98
109
  try {
99
110
  fhirPathContext[`${variable.name}`] = fhirpath.evaluate(resource, {
@@ -105,6 +116,7 @@ export function evaluateResourceLevelFhirPath(resource, variablesFhirPath, fhirP
105
116
  console.warn(e.message, `Questionnaire-level\nExpression: ${variable.expression}`);
106
117
  }
107
118
  }
108
- });
119
+ }
120
+ return fhirPathContext;
109
121
  }
110
122
  //# sourceMappingURL=fhirpath.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fhirpath.js","sourceRoot":"","sources":["../../src/utils/fhirpath.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fhirpath.js","sourceRoot":"","sources":["../../src/utils/fhirpath.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { isSpecificItemControl } from './itemControl';
2
2
  export { isRepeatItemAndNotCheckbox } from './qItem';
3
3
  export { createEnableWhenLinkedQuestions, readInitialAnswers, setInitialAnswers } from './enableWhen';
4
+ export { initialiseQuestionnaireResponse } from './initialise';
@@ -17,4 +17,5 @@
17
17
  export { isSpecificItemControl } from './itemControl';
18
18
  export { isRepeatItemAndNotCheckbox } from './qItem';
19
19
  export { createEnableWhenLinkedQuestions, readInitialAnswers, setInitialAnswers } from './enableWhen';
20
+ export { initialiseQuestionnaireResponse } from './initialise';
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC"}
@@ -18,6 +18,7 @@ import { evaluateInitialEnableWhenExpressions } from './enableWhenExpression';
18
18
  import { getFirstVisibleTab } from './tabs';
19
19
  import { assignPopulatedAnswersToEnableWhen } from './enableWhen';
20
20
  import { evaluateInitialCalculatedExpressions } from './calculatedExpression';
21
+ import { createQuestionnaireResponseItemMap } from './questionnaireResponseStoreUtils/updatableResponseItems';
21
22
  /**
22
23
  * Initialise a conformant questionnaireResponse from a given questionnaire
23
24
  * optionally takes in an existing questionnaireResponse to be initialised
@@ -241,18 +242,20 @@ function createNewRepeatGroupQuestionnaireResponseItem(qItem, initialValueItems)
241
242
  }
242
243
  export function initialiseFormFromResponse(params) {
243
244
  const { questionnaireResponse, enableWhenItems, enableWhenExpressions, calculatedExpressions, variablesFhirPath, tabs } = params;
245
+ const initialResponseItemMap = createQuestionnaireResponseItemMap(questionnaireResponse);
244
246
  let updatedFhirPathContext = params.fhirPathContext;
245
247
  const { initialisedItems, linkedQuestions } = assignPopulatedAnswersToEnableWhen(enableWhenItems, questionnaireResponse);
246
248
  const evaluateInitialEnableWhenExpressionsResult = evaluateInitialEnableWhenExpressions({
247
249
  initialResponse: questionnaireResponse,
250
+ initialResponseItemMap: initialResponseItemMap,
248
251
  enableWhenExpressions: enableWhenExpressions,
249
- variablesFhirPath: variablesFhirPath,
250
- existingFhirPathContext: updatedFhirPathContext
252
+ variablesFhirPath: variablesFhirPath
251
253
  });
252
254
  const { initialEnableWhenExpressions } = evaluateInitialEnableWhenExpressionsResult;
253
255
  updatedFhirPathContext = evaluateInitialEnableWhenExpressionsResult.updatedFhirPathContext;
254
256
  const evaluateInitialCalculatedExpressionsResult = evaluateInitialCalculatedExpressions({
255
257
  initialResponse: questionnaireResponse,
258
+ initialResponseItemMap: initialResponseItemMap,
256
259
  calculatedExpressions: calculatedExpressions,
257
260
  variablesFhirPath: variablesFhirPath,
258
261
  existingFhirPathContext: updatedFhirPathContext
@@ -1 +1 @@
1
- {"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,7 @@ export function parseDecimalStringWithPrecision(input, precision) {
48
48
  }
49
49
  // truncate decimal digits based on precision
50
50
  const parsedDecimalPoint = input.indexOf('.');
51
- if (precision && parsedDecimalPoint !== -1) {
51
+ if (typeof precision === 'number' && parsedDecimalPoint !== -1) {
52
52
  parsedInput = parsedInput.substring(0, parsedDecimalPoint + precision + 1);
53
53
  }
54
54
  return parsedInput;
@@ -1 +1 @@
1
- {"version":3,"file":"parseInputs.js","sourceRoot":"","sources":["../../src/utils/parseInputs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAE1D,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAa,EAAE,SAAwB;IACrF,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE/C,sDAAsD;IACtD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,WAAW,IAAI,aAAa,CAAC;SAC9B;KACF;IAED,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,SAAS,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;QAC1C,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;KAC5E;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,SAAiB;IACxE,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"parseInputs.js","sourceRoot":"","sources":["../../src/utils/parseInputs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAE1D,OAAO,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,GAAG,CAAC;KACZ;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAAa,EAAE,SAAwB;IACrF,IAAI,KAAK,KAAK,EAAE,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,KAAK,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE/C,sDAAsD;IACtD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;QACvB,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACnC,WAAW,IAAI,aAAa,CAAC;SAC9B;KACF;IAED,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;QAC9D,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;KAC5E;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAa,EAAE,SAAiB;IACxE,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "0.25.2",
3
+ "version": "0.26.1",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -31,6 +31,7 @@
31
31
  "fhirclient": "^2.5.2",
32
32
  "fhirpath": "^3.7.1",
33
33
  "html-react-parser": "4.2.10",
34
+ "js-base64": "^3.7.7",
34
35
  "lodash.clonedeep": "^4.5.0",
35
36
  "lodash.debounce": "^4.0.8",
36
37
  "nanoid": "^5.0.1",
@@ -54,7 +54,15 @@ function BooleanItem(props: BooleanItemProps) {
54
54
  const { calcExpUpdated } = useBooleanCalculatedExpression({
55
55
  qItem: qItem,
56
56
  booleanValue: valueBoolean,
57
- onQrItemChange: onQrItemChange
57
+ onChangeByCalcExpressionBoolean: (newValueBoolean: boolean) => {
58
+ onQrItemChange({
59
+ ...createEmptyQrItem(qItem),
60
+ answer: [{ valueBoolean: newValueBoolean }]
61
+ });
62
+ },
63
+ onChangeByCalcExpressionNull: () => {
64
+ onQrItemChange(createEmptyQrItem(qItem));
65
+ }
58
66
  });
59
67
 
60
68
  // Event handlers
@@ -57,8 +57,11 @@ function ChoiceRadioAnswerOptionItem(props: ChoiceRadioAnswerOptionItemProps) {
57
57
  const { calcExpUpdated } = useCodingCalculatedExpression({
58
58
  qItem: qItem,
59
59
  valueInString: valueChoice ?? '',
60
- onChangeByCalcExpression: (newValueInString) => {
61
- handleChange(newValueInString);
60
+ onChangeByCalcExpressionString: (newValueString: string) => {
61
+ handleChange(newValueString);
62
+ },
63
+ onChangeByCalcExpressionNull: () => {
64
+ onQrItemChange(createEmptyQrItem(qItem));
62
65
  }
63
66
  });
64
67
 
@@ -65,8 +65,11 @@ function ChoiceRadioAnswerValueSetItem(props: ChoiceRadioAnswerValueSetItemProps
65
65
  const { calcExpUpdated } = useCodingCalculatedExpression({
66
66
  qItem: qItem,
67
67
  valueInString: valueRadio ?? '',
68
- onChangeByCalcExpression: (newValueInString) => {
69
- handleChange(newValueInString);
68
+ onChangeByCalcExpressionString: (newValueString: string) => {
69
+ handleChange(newValueString);
70
+ },
71
+ onChangeByCalcExpressionNull: () => {
72
+ onQrItemChange(createEmptyQrItem(qItem));
70
73
  }
71
74
  });
72
75
 
@@ -56,8 +56,11 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
56
56
  const { calcExpUpdated } = useCodingCalculatedExpression({
57
57
  qItem: qItem,
58
58
  valueInString: valueChoice ?? '',
59
- onChangeByCalcExpression: (newValueInString) => {
60
- handleChange(newValueInString);
59
+ onChangeByCalcExpressionString: (newValueString: string) => {
60
+ handleChange(newValueString);
61
+ },
62
+ onChangeByCalcExpressionNull: () => {
63
+ onQrItemChange(createEmptyQrItem(qItem));
61
64
  }
62
65
  });
63
66
 
@@ -87,13 +87,16 @@ function ChoiceSelectAnswerValueSetItem(props: ChoiceSelectAnswerValueSetItemPro
87
87
  const { calcExpUpdated } = useCodingCalculatedExpression({
88
88
  qItem: qItem,
89
89
  valueInString: valueCoding?.code ?? '',
90
- onChangeByCalcExpression: (newValueInString) => {
90
+ onChangeByCalcExpressionString: (newValueString) => {
91
91
  if (codings.length > 0) {
92
- const qrAnswer = findInAnswerOptions(answerOptions, newValueInString);
92
+ const qrAnswer = findInAnswerOptions(answerOptions, newValueString);
93
93
  onQrItemChange(
94
94
  qrAnswer ? { ...createEmptyQrItem(qItem), answer: [qrAnswer] } : createEmptyQrItem(qItem)
95
95
  );
96
96
  }
97
+ },
98
+ onChangeByCalcExpressionNull: () => {
99
+ onQrItemChange(createEmptyQrItem(qItem));
97
100
  }
98
101
  });
99
102
 
@@ -83,10 +83,21 @@ function DecimalItem(props: DecimalItemProps) {
83
83
  qItem: qItem,
84
84
  inputValue: input,
85
85
  precision: precision,
86
- setInputValue: (newInput) => {
87
- setInput(newInput);
86
+ onChangeByCalcExpressionDecimal: (newValueDecimal: number) => {
87
+ setInput(
88
+ typeof precision === 'number'
89
+ ? newValueDecimal.toFixed(precision)
90
+ : newValueDecimal.toString()
91
+ );
92
+ onQrItemChange({
93
+ ...createEmptyQrItem(qItem),
94
+ answer: [{ valueInteger: newValueDecimal }]
95
+ });
88
96
  },
89
- onQrItemChange: onQrItemChange
97
+ onChangeByCalcExpressionNull: () => {
98
+ setInput('');
99
+ onQrItemChange(createEmptyQrItem(qItem));
100
+ }
90
101
  });
91
102
 
92
103
  // Event handlers
@@ -78,10 +78,17 @@ function IntegerItem(props: IntegerItemProps) {
78
78
  const { calcExpUpdated } = useIntegerCalculatedExpression({
79
79
  qItem: qItem,
80
80
  inputValue: input,
81
- setInputValue: (newInput) => {
82
- setInput(newInput);
81
+ onChangeByCalcExpressionInteger: (newValueInteger: number) => {
82
+ setInput(newValueInteger.toString());
83
+ onQrItemChange({
84
+ ...createEmptyQrItem(qItem),
85
+ answer: [{ valueInteger: newValueInteger }]
86
+ });
83
87
  },
84
- onQrItemChange: onQrItemChange
88
+ onChangeByCalcExpressionNull: () => {
89
+ setInput('');
90
+ onQrItemChange(createEmptyQrItem(qItem));
91
+ }
85
92
  });
86
93
 
87
94
  // Event handlers
@@ -66,10 +66,17 @@ function StringItem(props: StringItemProps) {
66
66
  const { calcExpUpdated } = useStringCalculatedExpression({
67
67
  qItem: qItem,
68
68
  inputValue: input,
69
- setInputValue: (value) => {
70
- setInput(value);
69
+ onChangeByCalcExpressionString: (newValueString: string) => {
70
+ setInput(newValueString);
71
+ onQrItemChange({
72
+ ...createEmptyQrItem(qItem),
73
+ answer: [{ valueString: newValueString }]
74
+ });
71
75
  },
72
- onQrItemChange: onQrItemChange
76
+ onChangeByCalcExpressionNull: () => {
77
+ setInput('');
78
+ onQrItemChange(createEmptyQrItem(qItem));
79
+ }
73
80
  });
74
81
 
75
82
  // Event handlers
@@ -65,10 +65,17 @@ function TextItem(props: TextItemProps) {
65
65
  const { calcExpUpdated } = useStringCalculatedExpression({
66
66
  qItem: qItem,
67
67
  inputValue: input,
68
- setInputValue: (value) => {
69
- setInput(value);
68
+ onChangeByCalcExpressionString: (newValueString: string) => {
69
+ setInput(newValueString);
70
+ onQrItemChange({
71
+ ...createEmptyQrItem(qItem),
72
+ answer: [{ valueString: newValueString }]
73
+ });
70
74
  },
71
- onQrItemChange: onQrItemChange
75
+ onChangeByCalcExpressionNull: () => {
76
+ setInput('');
77
+ onQrItemChange(createEmptyQrItem(qItem));
78
+ }
72
79
  });
73
80
 
74
81
  // Event handlers
@@ -32,7 +32,7 @@ function BaseRenderer() {
32
32
  const readOnly = useQuestionnaireStore.use.readOnly();
33
33
 
34
34
  const updatableResponse = useQuestionnaireResponseStore.use.updatableResponse();
35
- const updateRequiredValidity = useQuestionnaireResponseStore.use.validateQuestionnaire();
35
+ const validateQuestionnaire = useQuestionnaireResponseStore.use.validateQuestionnaire();
36
36
  const updateResponse = useQuestionnaireResponseStore.use.updateResponse();
37
37
 
38
38
  const qItemsIndexMap = useMemo(() => mapQItemsIndex(sourceQuestionnaire), [sourceQuestionnaire]);
@@ -43,7 +43,7 @@ function BaseRenderer() {
43
43
  updateQrItemsInGroup(newTopLevelQRItem, null, updatedResponse, qItemsIndexMap);
44
44
 
45
45
  updateExpressions(updatedResponse);
46
- updateRequiredValidity(sourceQuestionnaire, updatedResponse);
46
+ validateQuestionnaire(sourceQuestionnaire, updatedResponse);
47
47
  updateResponse(updatedResponse);
48
48
  }
49
49
 
@@ -53,7 +53,7 @@ function BaseRenderer() {
53
53
  updateQrItemsInGroup(null, newTopLevelQRItems, updatedResponse, qItemsIndexMap);
54
54
 
55
55
  updateExpressions(updatedResponse);
56
- updateRequiredValidity(sourceQuestionnaire, updatedResponse);
56
+ validateQuestionnaire(sourceQuestionnaire, updatedResponse);
57
57
  updateResponse(updatedResponse);
58
58
  }
59
59
 
@@ -16,8 +16,7 @@
16
16
  */
17
17
 
18
18
  import { useEffect, useState } from 'react';
19
- import { createEmptyQrItem } from '../utils/qrItem';
20
- import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
19
+ import type { QuestionnaireItem } from 'fhir/r4';
21
20
  import { useQuestionnaireStore } from '../stores';
22
21
 
23
22
  interface UseBooleanCalculatedExpression {
@@ -27,13 +26,15 @@ interface UseBooleanCalculatedExpression {
27
26
  interface UseBooleanCalculatedExpressionProps {
28
27
  qItem: QuestionnaireItem;
29
28
  booleanValue: boolean | undefined;
30
- onQrItemChange: (qrItem: QuestionnaireResponseItem) => void;
29
+ onChangeByCalcExpressionBoolean: (newValueBoolean: boolean) => void;
30
+ onChangeByCalcExpressionNull: () => void;
31
31
  }
32
32
 
33
- function UseBooleanCalculatedExpression(
33
+ function useBooleanCalculatedExpression(
34
34
  props: UseBooleanCalculatedExpressionProps
35
35
  ): UseBooleanCalculatedExpression {
36
- const { qItem, booleanValue, onQrItemChange } = props;
36
+ const { qItem, booleanValue, onChangeByCalcExpressionBoolean, onChangeByCalcExpressionNull } =
37
+ props;
37
38
 
38
39
  const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
39
40
 
@@ -50,18 +51,24 @@ function UseBooleanCalculatedExpression(
50
51
  }
51
52
 
52
53
  // only update if calculated value is different from current value
53
- if (calcExpression.value !== booleanValue && typeof calcExpression.value === 'boolean') {
54
+ if (
55
+ calcExpression.value !== booleanValue &&
56
+ (typeof calcExpression.value === 'boolean' || calcExpression.value === null)
57
+ ) {
54
58
  // update ui to show calculated value changes
55
59
  setCalcExpUpdated(true);
56
60
  setTimeout(() => {
57
61
  setCalcExpUpdated(false);
58
62
  }, 500);
59
63
 
60
- // update questionnaireResponse
61
- onQrItemChange({
62
- ...createEmptyQrItem(qItem),
63
- answer: [{ valueBoolean: calcExpression.value }]
64
- });
64
+ // calculatedExpression value is null
65
+ if (calcExpression.value === null) {
66
+ onChangeByCalcExpressionNull();
67
+ return;
68
+ }
69
+
70
+ // calculatedExpression value is boolean
71
+ onChangeByCalcExpressionBoolean(calcExpression.value);
65
72
  }
66
73
  },
67
74
  // Only trigger this effect if calculatedExpression of item changes
@@ -72,4 +79,4 @@ function UseBooleanCalculatedExpression(
72
79
  return { calcExpUpdated: calcExpUpdated };
73
80
  }
74
81
 
75
- export default UseBooleanCalculatedExpression;
82
+ export default useBooleanCalculatedExpression;
@@ -26,14 +26,16 @@ interface UseCodingCalculatedExpression {
26
26
  interface UseCodingCalculatedExpressionProps {
27
27
  qItem: QuestionnaireItem;
28
28
  valueInString: string;
29
- onChangeByCalcExpression: (newValueInString: string) => void;
29
+ onChangeByCalcExpressionString: (newValueInString: string) => void;
30
+ onChangeByCalcExpressionNull: () => void;
30
31
  }
31
32
 
32
33
  // TODO use this in all choice and open choice items if possible
33
- function UseCodingCalculatedExpression(
34
+ function useCodingCalculatedExpression(
34
35
  props: UseCodingCalculatedExpressionProps
35
36
  ): UseCodingCalculatedExpression {
36
- const { qItem, valueInString, onChangeByCalcExpression } = props;
37
+ const { qItem, valueInString, onChangeByCalcExpressionString, onChangeByCalcExpressionNull } =
38
+ props;
37
39
 
38
40
  const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
39
41
 
@@ -52,7 +54,9 @@ function UseCodingCalculatedExpression(
52
54
  // only update if calculated value is different from current value
53
55
  if (
54
56
  calcExpression.value !== valueInString &&
55
- (typeof calcExpression.value === 'string' || typeof calcExpression.value === 'number')
57
+ (typeof calcExpression.value === 'string' ||
58
+ typeof calcExpression.value === 'number' ||
59
+ calcExpression.value === null)
56
60
  ) {
57
61
  // update ui to show calculated value changes
58
62
  setCalcExpUpdated(true);
@@ -60,13 +64,19 @@ function UseCodingCalculatedExpression(
60
64
  setCalcExpUpdated(false);
61
65
  }, 500);
62
66
 
63
- const updatedValueInString =
67
+ // calculatedExpression value is null
68
+ if (calcExpression.value === null) {
69
+ onChangeByCalcExpressionNull();
70
+ return;
71
+ }
72
+
73
+ // calculatedExpression value is a string or number
74
+ const newValueString =
64
75
  typeof calcExpression.value === 'string'
65
76
  ? calcExpression.value
66
77
  : calcExpression.value.toString();
67
78
 
68
- // update questionnaireResponse
69
- onChangeByCalcExpression(updatedValueInString);
79
+ onChangeByCalcExpressionString(newValueString);
70
80
  }
71
81
  },
72
82
  // Only trigger this effect if calculatedExpression of item changes
@@ -77,4 +87,4 @@ function UseCodingCalculatedExpression(
77
87
  return { calcExpUpdated: calcExpUpdated };
78
88
  }
79
89
 
80
- export default UseCodingCalculatedExpression;
90
+ export default useCodingCalculatedExpression;