@aehrc/smart-forms-renderer 0.23.2 → 0.25.0

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 (80) hide show
  1. package/lib/components/FormComponents/BooleanItem/BooleanField.d.ts +1 -0
  2. package/lib/components/FormComponents/BooleanItem/BooleanField.js +3 -1
  3. package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
  4. package/lib/components/FormComponents/BooleanItem/BooleanItem.js +10 -3
  5. package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
  6. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +2 -2
  7. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +4 -1
  8. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
  9. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +2 -2
  10. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +4 -1
  11. package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
  12. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +1 -1
  13. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +10 -5
  14. package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
  15. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.d.ts +3 -1
  16. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js +9 -3
  17. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
  18. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -2
  19. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +39 -17
  20. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
  21. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.d.ts +13 -0
  22. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js +31 -0
  23. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js.map +1 -0
  24. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.d.ts +3 -1
  25. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +11 -5
  26. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
  27. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -2
  28. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +16 -9
  29. package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
  30. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +1 -0
  31. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +3 -2
  32. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
  33. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +18 -21
  34. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
  35. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.d.ts +13 -0
  36. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js +31 -0
  37. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js.map +1 -0
  38. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +1 -0
  39. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +3 -1
  40. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
  41. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +17 -3
  42. package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
  43. package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
  44. package/lib/hooks/useBooleanCalculatedExpression.d.ts +11 -0
  45. package/lib/hooks/useBooleanCalculatedExpression.js +47 -0
  46. package/lib/hooks/useBooleanCalculatedExpression.js.map +1 -0
  47. package/lib/hooks/useCodingCalculatedExpression.d.ts +11 -0
  48. package/lib/hooks/useCodingCalculatedExpression.js +51 -0
  49. package/lib/hooks/useCodingCalculatedExpression.js.map +1 -0
  50. package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
  51. package/lib/utils/choice.d.ts +8 -2
  52. package/lib/utils/choice.js +20 -14
  53. package/lib/utils/choice.js.map +1 -1
  54. package/lib/utils/enableWhen.js +11 -10
  55. package/lib/utils/enableWhen.js.map +1 -1
  56. package/lib/utils/initialise.js +6 -0
  57. package/lib/utils/initialise.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/components/FormComponents/BooleanItem/BooleanField.tsx +5 -1
  60. package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +11 -0
  61. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +7 -0
  62. package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +7 -0
  63. package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +10 -1
  64. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +25 -11
  65. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +65 -32
  66. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.tsx +83 -0
  67. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +41 -19
  68. package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +24 -10
  69. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +5 -2
  70. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +30 -39
  71. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.tsx +83 -0
  72. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +13 -2
  73. package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +20 -0
  74. package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +1 -0
  75. package/src/hooks/useBooleanCalculatedExpression.ts +75 -0
  76. package/src/hooks/useCodingCalculatedExpression.ts +80 -0
  77. package/src/interfaces/calculatedExpression.interface.ts +1 -1
  78. package/src/utils/choice.ts +23 -13
  79. package/src/utils/enableWhen.ts +32 -10
  80. package/src/utils/initialise.ts +7 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceRadioAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAMnE,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAChF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAUxD,SAAS,6BAA6B,CAAC,KAAyC;;IAC9E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9E,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,aAAa,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAEzD,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,aAAa,CAAC,MAAM,EAAE;QACxB,UAAU,GAAG,MAAA,MAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,0CAAE,IAAI,mCAAI,IAAI,CAAC;KAChE;IAED,oCAAoC;IACpC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhE,SAAS,YAAY,CAAC,QAAgB;QACpC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,QAAQ,EAAE;gBACZ,cAAc,iCACT,iBAAiB,CAAC,KAAK,CAAC,KAC3B,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IACnC,CAAC;aACJ;SACF;IACH,CAAC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,+BAA+B,IAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,YAAY,GAC7B,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,0CAA0C,iBACvC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,+BAA+B,IAC9B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,EAClC,eAAe,EAAE,YAAY,GAC7B,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,6BAA6B,CAAC"}
1
+ {"version":3,"file":"ChoiceRadioAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ interface ChoiceSelectAnswerOptionFieldsProps extends PropsWithIsTabledAttribute
5
5
  qItem: QuestionnaireItem;
6
6
  valueSelect: string;
7
7
  readOnly: boolean;
8
+ calcExpUpdated: boolean;
8
9
  onSelectChange: (newValue: string) => void;
9
10
  }
10
11
  declare function ChoiceSelectAnswerOptionFields(props: ChoiceSelectAnswerOptionFieldsProps): React.JSX.Element;
@@ -22,9 +22,10 @@ import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
22
22
  import { TEXT_FIELD_WIDTH } from '../Textfield.styles';
23
23
  function ChoiceSelectAnswerOptionFields(props) {
24
24
  var _a;
25
- const { qItem, valueSelect, readOnly, isTabled, onSelectChange } = props;
25
+ const { qItem, valueSelect, readOnly, calcExpUpdated, isTabled, onSelectChange } = props;
26
26
  const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
27
- return (React.createElement(Select, { id: qItem.id, name: qItem.text, value: valueSelect, disabled: readOnly, fullWidth: true, placeholder: entryFormat, label: displayPrompt, endAdornment: React.createElement(InputAdornment, { position: 'end' }, displayUnit), sx: { maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160 }, size: "small", onChange: (e) => onSelectChange(e.target.value) }, (_a = qItem.answerOption) === null || _a === void 0 ? void 0 : _a.map((option, index) => {
27
+ // TODO use calcExpUpdated as updated feedback
28
+ return (React.createElement(Select, { id: qItem.id, name: qItem.text, value: valueSelect, disabled: readOnly, fullWidth: true, placeholder: entryFormat, label: displayPrompt, endAdornment: React.createElement(InputAdornment, { position: "end" }, displayUnit), sx: { maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160 }, size: "small", onChange: (e) => onSelectChange(e.target.value) }, (_a = qItem.answerOption) === null || _a === void 0 ? void 0 : _a.map((option, index) => {
28
29
  var _a;
29
30
  if (option['valueCoding']) {
30
31
  return (React.createElement(MenuItem, { key: option.valueCoding.code, value: option.valueCoding.code }, (_a = option.valueCoding.display) !== null && _a !== void 0 ? _a : option.valueCoding.code));
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceSelectAnswerOptionFields.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,SAAS,8BAA8B,CAAC,KAA0C;;IAChF,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEzE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAElF,OAAO,CACL,oBAAC,MAAM,IACL,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,QACT,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,oBAAC,cAAc,IAAC,QAAQ,EAAE,KAAK,IAAG,WAAW,CAAkB,EAC7E,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EACpE,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAC9C,MAAA,KAAK,CAAC,YAAY,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;QACzC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;YACzB,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,IACnE,MAAA,MAAM,CAAC,WAAW,CAAC,OAAO,mCAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAC7C,CACZ,CAAC;SACH;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;YACzB,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,IACzD,MAAM,CAAC,WAAW,CACV,CACZ,CAAC;SACH;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE;YAC1B,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IACtE,MAAM,CAAC,YAAY,CACX,CACZ,CAAC;SACH;QAED,OAAO,oBAAC,QAAQ,IAAC,GAAG,EAAE,KAAK,GAAI,CAAC;IAClC,CAAC,CAAC,CACK,CACV,CAAC;AACJ,CAAC;AAED,eAAe,8BAA8B,CAAC"}
1
+ {"version":3,"file":"ChoiceSelectAnswerOptionFields.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,MAAM,MAAM,sBAAsB,CAAC;AAE1C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,SAAS,8BAA8B,CAAC,KAA0C;;IAChF,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEzF,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAElF,8CAA8C;IAE9C,OAAO,CACL,oBAAC,MAAM,IACL,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,QACT,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,oBAAC,cAAc,IAAC,QAAQ,EAAC,KAAK,IAAE,WAAW,CAAkB,EAC3E,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,EACpE,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAC9C,MAAA,KAAK,CAAC,YAAY,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;QACzC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;YACzB,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,IACnE,MAAA,MAAM,CAAC,WAAW,CAAC,OAAO,mCAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAC7C,CACZ,CAAC;SACH;QAED,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;YACzB,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,IACzD,MAAM,CAAC,WAAW,CACV,CACZ,CAAC;SACH;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE;YAC1B,OAAO,CACL,oBAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,IACtE,MAAM,CAAC,YAAY,CACX,CACZ,CAAC;SACH;QAED,OAAO,oBAAC,QAAQ,IAAC,GAAG,EAAE,KAAK,GAAI,CAAC;IAClC,CAAC,CAAC,CACK,CACV,CAAC;AACJ,CAAC;AAED,eAAe,8BAA8B,CAAC"}
@@ -17,38 +17,35 @@
17
17
  import React from 'react';
18
18
  import { findInAnswerOptions, getQrChoiceValue } from '../../../utils/choice';
19
19
  import { createEmptyQrItem } from '../../../utils/qrItem';
20
- import { FullWidthFormComponentBox } from '../../Box.styles';
21
- import ChoiceSelectAnswerOptionFields from './ChoiceSelectAnswerOptionFields';
22
20
  import useReadOnly from '../../../hooks/useReadOnly';
23
- import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
24
21
  import { useQuestionnaireStore } from '../../../stores';
22
+ import useCodingCalculatedExpression from '../../../hooks/useCodingCalculatedExpression';
23
+ import ChoiceSelectAnswerOptionView from './ChoiceSelectAnswerOptionView';
25
24
  function ChoiceSelectAnswerOptionItem(props) {
26
25
  const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
27
26
  const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
28
27
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
29
28
  // Init input value
30
- const qrChoiceSelect = qrItem !== null && qrItem !== void 0 ? qrItem : createEmptyQrItem(qItem);
31
- let valueSelect = getQrChoiceValue(qrChoiceSelect);
32
- if (!valueSelect) {
33
- valueSelect = '';
34
- }
29
+ const qrChoice = qrItem !== null && qrItem !== void 0 ? qrItem : createEmptyQrItem(qItem);
30
+ const valueChoice = getQrChoiceValue(qrChoice);
31
+ // Process calculated expressions
32
+ const { calcExpUpdated } = useCodingCalculatedExpression({
33
+ qItem: qItem,
34
+ valueInString: valueChoice !== null && valueChoice !== void 0 ? valueChoice : '',
35
+ onChangeByCalcExpression: (newValueInString) => {
36
+ handleChange(newValueInString);
37
+ }
38
+ });
35
39
  // Event handlers
36
40
  function handleChange(newValue) {
37
- if (qItem.answerOption) {
38
- const qrAnswer = findInAnswerOptions(qItem.answerOption, newValue);
39
- if (qrAnswer) {
40
- onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [qrAnswer] }));
41
- return;
42
- }
41
+ if (!qItem.answerOption) {
42
+ onQrItemChange(createEmptyQrItem(qItem));
43
+ return;
43
44
  }
44
- onQrItemChange(createEmptyQrItem(qItem));
45
- }
46
- if (isRepeated) {
47
- return (React.createElement(ChoiceSelectAnswerOptionFields, { qItem: qItem, valueSelect: valueSelect, readOnly: readOnly, isTabled: isTabled, onSelectChange: handleChange }));
45
+ const qrAnswer = findInAnswerOptions(qItem.answerOption, newValue);
46
+ onQrItemChange(qrAnswer ? Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [qrAnswer] }) : createEmptyQrItem(qItem));
48
47
  }
49
- return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-choice-select-answer-option-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) },
50
- React.createElement(ItemFieldGrid, { qItem: qItem, readOnly: readOnly },
51
- React.createElement(ChoiceSelectAnswerOptionFields, { qItem: qItem, valueSelect: valueSelect, readOnly: readOnly, isTabled: isTabled, onSelectChange: handleChange }))));
48
+ return (React.createElement(ChoiceSelectAnswerOptionView, { qItem: qItem, valueChoice: valueChoice, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isRepeated: isRepeated, isTabled: isTabled, onFocusLinkId: () => onFocusLinkId(qItem.linkId), onSelectChange: handleChange }));
52
49
  }
53
50
  export default ChoiceSelectAnswerOptionItem;
54
51
  //# sourceMappingURL=ChoiceSelectAnswerOptionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceSelectAnswerOptionItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAO7D,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,SAAS,4BAA4B,CAAC,KAAwC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,cAAc,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC1D,IAAI,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,EAAE,CAAC;KAClB;IAED,iBAAiB;IACjB,SAAS,YAAY,CAAC,QAAgB;QACpC,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACnE,IAAI,QAAQ,EAAE;gBACZ,cAAc,iCAAM,iBAAiB,CAAC,KAAK,CAAC,KAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAG,CAAC;gBACpE,OAAO;aACR;SACF;QACD,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,YAAY,GAC5B,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,wCAAwC,iBACrC,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,YAAY,GAC5B,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,4BAA4B,CAAC"}
1
+ {"version":3,"file":"ChoiceSelectAnswerOptionItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAO1D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,6BAA6B,MAAM,8CAA8C,CAAC;AACzF,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAY1E,SAAS,4BAA4B,CAAC,KAAwC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE/C,iCAAiC;IACjC,MAAM,EAAE,cAAc,EAAE,GAAG,6BAA6B,CAAC;QACvD,KAAK,EAAE,KAAK;QACZ,aAAa,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,EAAE;QAChC,wBAAwB,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC7C,YAAY,CAAC,gBAAgB,CAAC,CAAC;QACjC,CAAC;KACF,CAAC,CAAC;IAEH,iBAAiB;IACjB,SAAS,YAAY,CAAC,QAAgB;QACpC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACvB,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,OAAO;SACR;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACnE,cAAc,CACZ,QAAQ,CAAC,CAAC,iCAAM,iBAAiB,CAAC,KAAK,CAAC,KAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,4BAA4B,IAC3B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAChD,cAAc,EAAE,YAAY,GAC5B,CACH,CAAC;AACJ,CAAC;AAED,eAAe,4BAA4B,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"}
@@ -8,6 +8,7 @@ interface ChoiceSelectAnswerValueSetFieldsProps extends PropsWithIsTabledAttribu
8
8
  valueCoding: Coding | null;
9
9
  terminologyError: TerminologyError;
10
10
  readOnly: boolean;
11
+ calcExpUpdated: boolean;
11
12
  onSelectChange: (newValue: Coding | null) => void;
12
13
  }
13
14
  declare function ChoiceSelectAnswerValueSetFields(props: ChoiceSelectAnswerValueSetFieldsProps): React.JSX.Element;
@@ -21,12 +21,14 @@ import { StyledAlert } from '../../Alert.styles';
21
21
  import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';
22
22
  import Typography from '@mui/material/Typography';
23
23
  import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
24
+ import FadingCheckIcon from '../ItemParts/FadingCheckIcon';
24
25
  function ChoiceSelectAnswerValueSetFields(props) {
25
- const { qItem, codings, valueCoding, terminologyError, readOnly, isTabled, onSelectChange } = props;
26
+ const { qItem, codings, valueCoding, terminologyError, readOnly, calcExpUpdated, isTabled, onSelectChange } = props;
26
27
  const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
27
28
  if (codings.length > 0) {
28
29
  return (React.createElement(Autocomplete, { id: qItem.id, options: codings, getOptionLabel: (option) => `${option.display}`, value: valueCoding !== null && valueCoding !== void 0 ? valueCoding : null, onChange: (_, newValue) => onSelectChange(newValue), openOnFocus: true, autoHighlight: true, sx: { maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160, flexGrow: 1 }, size: "small", disabled: readOnly, renderInput: (params) => (React.createElement(StandardTextField, Object.assign({ isTabled: isTabled, label: displayPrompt, placeholder: entryFormat }, params, { InputProps: Object.assign(Object.assign({}, params.InputProps), { endAdornment: (React.createElement(React.Fragment, null,
29
30
  params.InputProps.endAdornment,
31
+ React.createElement(FadingCheckIcon, { fadeIn: calcExpUpdated }),
30
32
  displayUnit)) }), "data-test": "q-item-choice-dropdown-answer-value-set-field" }))) }));
31
33
  }
32
34
  if (terminologyError.error) {
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceSelectAnswerValueSetFields.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAa3E,SAAS,gCAAgC,CAAC,KAA4C;IACpF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,GACzF,KAAK,CAAC;IAER,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAElF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO,CACL,oBAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,EAC/C,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EACnD,WAAW,QACX,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EACjF,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,oBAAC,iBAAiB,kBAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,UAAU,kCACL,MAAM,CAAC,UAAU,KACpB,YAAY,EAAE,CACZ;wBACG,MAAM,CAAC,UAAU,CAAC,YAAY;wBAC9B,WAAW,CACX,CACJ,kBAEO,+CAA+C,IACzD,CACH,GACD,CACH,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC,KAAK,EAAE;QAC1B,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,OAAO;YACxB,oBAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAI;YACpD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW;;gBACuC,GAAG;gBACtE,gBAAgB,CAAC,cAAc,CACrB,CACD,CACf,CAAC;KACH;IAED,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,OAAO;QACxB,oBAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAI;QACpD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW,uEAElB,CACD,CACf,CAAC;AACJ,CAAC;AAED,eAAe,gCAAgC,CAAC"}
1
+ {"version":3,"file":"ChoiceSelectAnswerValueSetFields.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,gBAAgB,MAAM,kCAAkC,CAAC;AAChE,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAElD,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAG3E,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAY3D,SAAS,gCAAgC,CAAC,KAA4C;IACpF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,cAAc,EACf,GAAG,KAAK,CAAC;IAEV,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAElF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACtB,OAAO,CACL,oBAAC,YAAY,IACX,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,EAC/C,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,EACnD,WAAW,QACX,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EACjF,IAAI,EAAC,OAAO,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,oBAAC,iBAAiB,kBAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,IACpB,MAAM,IACV,UAAU,kCACL,MAAM,CAAC,UAAU,KACpB,YAAY,EAAE,CACZ;wBACG,MAAM,CAAC,UAAU,CAAC,YAAY;wBAC/B,oBAAC,eAAe,IAAC,MAAM,EAAE,cAAc,GAAI;wBAC1C,WAAW,CACX,CACJ,kBAEO,+CAA+C,IACzD,CACH,GACD,CACH,CAAC;KACH;IAED,IAAI,gBAAgB,CAAC,KAAK,EAAE;QAC1B,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,OAAO;YACxB,oBAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAI;YACpD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW;;gBACuC,GAAG;gBACtE,gBAAgB,CAAC,cAAc,CACrB,CACD,CACf,CAAC;KACH;IAED,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,OAAO;QACxB,oBAAC,gBAAgB,IAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAI;QACpD,oBAAC,UAAU,IAAC,OAAO,EAAC,WAAW,uEAElB,CACD,CACf,CAAC;AACJ,CAAC;AAED,eAAe,gCAAgC,CAAC"}
@@ -22,8 +22,10 @@ import ChoiceSelectAnswerValueSetFields from './ChoiceSelectAnswerValueSetFields
22
22
  import useReadOnly from '../../../hooks/useReadOnly';
23
23
  import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
24
24
  import { useQuestionnaireStore } from '../../../stores';
25
+ import useCodingCalculatedExpression from '../../../hooks/useCodingCalculatedExpression';
26
+ import { convertCodingsToAnswerOptions, findInAnswerOptions } from '../../../utils/choice';
25
27
  function ChoiceSelectAnswerValueSetItem(props) {
26
- var _a;
28
+ var _a, _b;
27
29
  const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
28
30
  const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
29
31
  const readOnly = useReadOnly(qItem, parentIsReadOnly);
@@ -50,6 +52,18 @@ function ChoiceSelectAnswerValueSetItem(props) {
50
52
  // Only run effect once - on populate
51
53
  // eslint-disable-next-line react-hooks/exhaustive-deps
52
54
  []);
55
+ const answerOptions = useMemo(() => convertCodingsToAnswerOptions(codings), [codings]);
56
+ // Process calculated expressions
57
+ const { calcExpUpdated } = useCodingCalculatedExpression({
58
+ qItem: qItem,
59
+ valueInString: (_b = valueCoding === null || valueCoding === void 0 ? void 0 : valueCoding.code) !== null && _b !== void 0 ? _b : '',
60
+ onChangeByCalcExpression: (newValueInString) => {
61
+ if (codings.length > 0) {
62
+ const qrAnswer = findInAnswerOptions(answerOptions, newValueInString);
63
+ onQrItemChange(qrAnswer ? Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [qrAnswer] }) : createEmptyQrItem(qItem));
64
+ }
65
+ }
66
+ });
53
67
  // Event handlers
54
68
  function handleChange(newValue) {
55
69
  if (newValue) {
@@ -59,11 +73,11 @@ function ChoiceSelectAnswerValueSetItem(props) {
59
73
  onQrItemChange(createEmptyQrItem(qItem));
60
74
  }
61
75
  if (isRepeated) {
62
- return (React.createElement(ChoiceSelectAnswerValueSetFields, { qItem: qItem, codings: codings, valueCoding: valueCoding, terminologyError: terminologyError, readOnly: readOnly, isTabled: isTabled, onSelectChange: handleChange }));
76
+ return (React.createElement(ChoiceSelectAnswerValueSetFields, { qItem: qItem, codings: codings, valueCoding: valueCoding, terminologyError: terminologyError, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onSelectChange: handleChange }));
63
77
  }
64
78
  return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-choice-dropdown-answer-value-set-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) },
65
79
  React.createElement(ItemFieldGrid, { qItem: qItem, readOnly: readOnly },
66
- React.createElement(ChoiceSelectAnswerValueSetFields, { qItem: qItem, codings: codings, valueCoding: valueCoding, terminologyError: terminologyError, readOnly: readOnly, isTabled: isTabled, onSelectChange: handleChange }))));
80
+ React.createElement(ChoiceSelectAnswerValueSetFields, { qItem: qItem, codings: codings, valueCoding: valueCoding, terminologyError: terminologyError, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onSelectChange: handleChange }))));
67
81
  }
68
82
  export default ChoiceSelectAnswerValueSetItem;
69
83
  //# sourceMappingURL=ChoiceSelectAnswerValueSetItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"OpenChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAOnE,OAAO,mCAAmC,MAAM,uCAAuC,CAAC;AACxF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,SAAS,kCAAkC,CAAC,KAA8C;;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,WAAW,GAAG,MAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,mCAAI,IAAI,CAAC;KAC7D;IAED,oCAAoC;IACpC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhE,iBAAiB;IACjB,SAAS,iBAAiB,CAAC,QAAgC;QACzD,IAAI,QAAQ,EAAE;YACZ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBAChC,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IACnC,CAAC;aACJ;iBAAM;gBACL,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IACnC,CAAC;aACJ;YACD,OAAO;SACR;QACD,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,gDAAgD,iBAC7C,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,kCAAkC,CAAC"}
1
+ {"version":3,"file":"OpenChoiceSelectAnswerValueSetItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAOnE,OAAO,mCAAmC,MAAM,uCAAuC,CAAC;AACxF,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,SAAS,kCAAkC,CAAC,KAA8C;;IACxF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAEtD,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE;QAC1B,WAAW,GAAG,MAAA,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,mCAAI,IAAI,CAAC;KAC7D;IAED,oCAAoC;IACpC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhE,iBAAiB;IACjB,SAAS,iBAAiB,CAAC,QAAgC;QACzD,IAAI,QAAQ,EAAE;YACZ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;gBAChC,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IACnC,CAAC;aACJ;iBAAM;gBACL,cAAc,iCACT,YAAY,KACf,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,IACnC,CAAC;aACJ;YACD,OAAO;SACR;QAED,cAAc,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,EAAE;QACd,OAAO,CACL,oBAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,CACH,CAAC;KACH;IAED,OAAO,CACL,oBAAC,yBAAyB,iBACd,gDAAgD,iBAC7C,KAAK,CAAC,MAAM,EACzB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1C,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;YAC7C,oBAAC,mCAAmC,IAClC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,iBAAiB,GAChC,CACY,CACU,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,kCAAkC,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"}
@@ -1,5 +1,5 @@
1
1
  export interface CalculatedExpression {
2
2
  expression: string;
3
3
  from: 'item' | 'item._text';
4
- value?: number | string | object;
4
+ value?: number | string | boolean | object;
5
5
  }
@@ -1,11 +1,17 @@
1
1
  import type { Coding, QuestionnaireItem, QuestionnaireItemAnswerOption, QuestionnaireResponseItem, QuestionnaireResponseItemAnswer } from 'fhir/r4';
2
2
  import { ChoiceItemControl, ChoiceItemOrientation } from '../interfaces/choice.enum';
3
+ /**
4
+ * Convert codings to Questionnaire answer options
5
+ *
6
+ * @author Sean Fong
7
+ */
8
+ export declare function convertCodingsToAnswerOptions(codings: Coding[]): QuestionnaireItemAnswerOption[];
3
9
  /**
4
10
  * Find and return corresponding answerOption based on selected answer in form
5
11
  *
6
12
  * @author Sean Fong
7
13
  */
8
- export declare function findInAnswerOptions(options: QuestionnaireItemAnswerOption[], str: string): QuestionnaireResponseItemAnswer | undefined;
14
+ export declare function findInAnswerOptions(options: QuestionnaireItemAnswerOption[], valueInString: string): QuestionnaireResponseItemAnswer | undefined;
9
15
  /**
10
16
  * Get choice control type based on certain criteria in choice items
11
17
  *
@@ -13,7 +19,7 @@ export declare function findInAnswerOptions(options: QuestionnaireItemAnswerOpti
13
19
  */
14
20
  export declare function getChoiceControlType(qItem: QuestionnaireItem): ChoiceItemControl;
15
21
  /**
16
- * Find and return corresponding coding from AnswerValyeSet based on selected answer in form
22
+ * Find and return corresponding coding from AnswerValueSet based on selected answer in form
17
23
  *
18
24
  * @author Sean Fong
19
25
  */
@@ -1,28 +1,42 @@
1
1
  import { ChoiceItemControl, ChoiceItemOrientation } from '../interfaces/choice.enum';
2
2
  import { isSpecificItemControl } from './itemControl';
3
+ /**
4
+ * Convert codings to Questionnaire answer options
5
+ *
6
+ * @author Sean Fong
7
+ */
8
+ export function convertCodingsToAnswerOptions(codings) {
9
+ return codings.map((coding) => ({
10
+ valueCoding: {
11
+ system: coding.system,
12
+ code: coding.code,
13
+ display: coding.display
14
+ }
15
+ }));
16
+ }
3
17
  /**
4
18
  * Find and return corresponding answerOption based on selected answer in form
5
19
  *
6
20
  * @author Sean Fong
7
21
  */
8
- export function findInAnswerOptions(options, str) {
22
+ export function findInAnswerOptions(options, valueInString) {
9
23
  for (const option of options) {
10
24
  if (option.valueCoding) {
11
- if (str === option.valueCoding.code) {
25
+ if (valueInString === option.valueCoding.code) {
12
26
  return {
13
27
  valueCoding: option.valueCoding
14
28
  };
15
29
  }
16
30
  }
17
31
  if (option.valueString) {
18
- if (str === option.valueString) {
32
+ if (valueInString === option.valueString) {
19
33
  return {
20
34
  valueString: option.valueString
21
35
  };
22
36
  }
23
37
  }
24
38
  if (option.valueInteger) {
25
- if (str === option.valueInteger.toString()) {
39
+ if (valueInString === option.valueInteger.toString()) {
26
40
  return {
27
41
  valueInteger: option.valueInteger
28
42
  };
@@ -37,7 +51,6 @@ export function findInAnswerOptions(options, str) {
37
51
  * @author Sean Fong
38
52
  */
39
53
  export function getChoiceControlType(qItem) {
40
- const dropdownOptionsCount = 5;
41
54
  if (isSpecificItemControl(qItem, 'autocomplete')) {
42
55
  return ChoiceItemControl.Autocomplete;
43
56
  }
@@ -50,17 +63,10 @@ export function getChoiceControlType(qItem) {
50
63
  if (isSpecificItemControl(qItem, 'drop-down')) {
51
64
  return ChoiceItemControl.Select;
52
65
  }
53
- if (qItem.answerOption) {
54
- return qItem.answerOption.length > 0 && qItem.answerOption.length < dropdownOptionsCount
55
- ? ChoiceItemControl.Radio
56
- : ChoiceItemControl.Select;
57
- }
58
- else {
59
- return ChoiceItemControl.Select;
60
- }
66
+ return ChoiceItemControl.Select;
61
67
  }
62
68
  /**
63
- * Find and return corresponding coding from AnswerValyeSet based on selected answer in form
69
+ * Find and return corresponding coding from AnswerValueSet based on selected answer in form
64
70
  *
65
71
  * @author Sean Fong
66
72
  */
@@ -1 +1 @@
1
- {"version":3,"file":"choice.js","sourceRoot":"","sources":["../../src/utils/choice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"choice.js","sourceRoot":"","sources":["../../src/utils/choice.ts"],"names":[],"mappings":"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"}
@@ -47,34 +47,35 @@ export function createEnableWhenLinkedQuestions(enableWhenItems) {
47
47
  */
48
48
  export function isEnabledAnswerTypeSwitcher(enableWhen, answer) {
49
49
  var _a, _b;
50
- if (enableWhen['answerBoolean'] !== undefined && enableWhen.operator === 'exists') {
50
+ if (typeof enableWhen.answerBoolean === 'boolean' && enableWhen.operator === 'exists') {
51
51
  return answerOperatorSwitcher(enableWhen.answerBoolean, answer, enableWhen.operator);
52
52
  }
53
- else if (enableWhen['answerBoolean'] !== undefined && answer.valueBoolean !== undefined) {
53
+ if (typeof enableWhen.answerBoolean === 'boolean' && typeof answer.valueBoolean === 'boolean') {
54
54
  return answerOperatorSwitcher(enableWhen.answerBoolean, answer.valueBoolean, enableWhen.operator);
55
55
  }
56
- else if (enableWhen['answerDecimal'] && answer.valueDecimal) {
56
+ if (typeof enableWhen.answerDecimal === 'number' && typeof answer.valueDecimal === 'number') {
57
57
  return answerOperatorSwitcher(enableWhen.answerDecimal, answer.valueDecimal, enableWhen.operator);
58
58
  }
59
- else if (enableWhen['answerInteger'] !== undefined && answer.valueInteger !== undefined) {
59
+ if (typeof enableWhen.answerInteger === 'number' && typeof answer.valueInteger === 'number') {
60
60
  return answerOperatorSwitcher(enableWhen.answerInteger, answer.valueInteger, enableWhen.operator);
61
61
  }
62
- else if (enableWhen['answerDate'] && answer.valueDate) {
62
+ if (typeof enableWhen.answerDate === 'string' && typeof answer.valueDate === 'string') {
63
63
  return answerOperatorSwitcher(enableWhen.answerDate, answer.valueDate, enableWhen.operator);
64
64
  }
65
- else if (enableWhen['answerDateTime'] && answer.valueDateTime) {
65
+ if (typeof enableWhen.answerDateTime === 'string' && typeof answer.valueDateTime === 'string') {
66
66
  return answerOperatorSwitcher(enableWhen.answerDateTime, answer.valueDateTime, enableWhen.operator);
67
67
  }
68
- else if (enableWhen['answerTime'] && answer.valueTime) {
68
+ if (typeof enableWhen.answerTime === 'string' && typeof answer.valueTime === 'string') {
69
69
  return answerOperatorSwitcher(enableWhen.answerTime, answer.valueTime, enableWhen.operator);
70
70
  }
71
- else if (enableWhen['answerString'] && answer.valueString) {
71
+ if (typeof enableWhen.answerString === 'string' && typeof answer.valueString === 'string') {
72
72
  return answerOperatorSwitcher(enableWhen.answerString, answer.valueString, enableWhen.operator);
73
73
  }
74
- else if (((_a = enableWhen['answerCoding']) === null || _a === void 0 ? void 0 : _a.code) && ((_b = answer.valueCoding) === null || _b === void 0 ? void 0 : _b.code)) {
74
+ if (typeof ((_a = enableWhen.answerCoding) === null || _a === void 0 ? void 0 : _a.code) === 'string' &&
75
+ typeof ((_b = answer.valueCoding) === null || _b === void 0 ? void 0 : _b.code) === 'string') {
75
76
  return answerOperatorSwitcher(enableWhen.answerCoding.code, answer.valueCoding.code, enableWhen.operator);
76
77
  }
77
- else if (enableWhen['answerQuantity'] && answer.valueQuantity) {
78
+ if (enableWhen.answerQuantity && answer.valueQuantity) {
78
79
  return answerOperatorSwitcher(enableWhen.answerQuantity, answer.valueQuantity, enableWhen.operator);
79
80
  }
80
81
  return false;