@aehrc/smart-forms-renderer 0.10.3 → 0.10.5

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.
@@ -31,7 +31,7 @@ function ChoiceSelectAnswerOptionItem(props) {
31
31
  // Init input value
32
32
  const qrChoiceSelect = qrItem !== null && qrItem !== void 0 ? qrItem : createEmptyQrItem(qItem);
33
33
  let valueSelect = getQrChoiceValue(qrChoiceSelect);
34
- if (valueSelect === null) {
34
+ if (!valueSelect) {
35
35
  valueSelect = '';
36
36
  }
37
37
  // Event handlers
@@ -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;AAC1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAGtC,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;AAC7D,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAO3E,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAWrD,SAAS,4BAA4B,CAAC,KAAwC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE9D,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,WAAW,KAAK,IAAI,EAAE;QACxB,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,iBAAW,wCAAwC;QAC3E,oBAAC,IAAI,IAAC,SAAS,QAAC,aAAa,EAAE,CAAC;YAC9B,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC;gBACd,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC7C;YACP,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC;gBACd,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,YAAY,GAC5B;gBACF,oBAAC,mBAAmB,IAAC,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChF,CACF,CACmB,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;AAC1B,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAGtC,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;AAC7D,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAO3E,OAAO,mBAAmB,MAAM,oCAAoC,CAAC;AACrE,OAAO,YAAY,MAAM,+BAA+B,CAAC;AACzD,OAAO,8BAA8B,MAAM,kCAAkC,CAAC;AAC9E,OAAO,WAAW,MAAM,4BAA4B,CAAC;AAWrD,SAAS,4BAA4B,CAAC,KAAwC;IAC5E,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,mBAAmB,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE9D,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,iBAAW,wCAAwC;QAC3E,oBAAC,IAAI,IAAC,SAAS,QAAC,aAAa,EAAE,CAAC;YAC9B,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC;gBACd,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAC7C;YACP,oBAAC,IAAI,IAAC,IAAI,QAAC,EAAE,EAAE,CAAC;gBACd,oBAAC,8BAA8B,IAC7B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,YAAY,GAC5B;gBACF,oBAAC,mBAAmB,IAAC,mBAAmB,EAAE,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,GAAI,CAChF,CACF,CACmB,CAC7B,CAAC;AACJ,CAAC;AAED,eAAe,4BAA4B,CAAC"}
@@ -28,9 +28,10 @@ const FormBodyTabListWrapper = memo(function FormBodyTabListWrapper(props) {
28
28
  const { allContextDisplayItems, completedDisplayItemExists } = useContextDisplayItems(topLevelItems);
29
29
  return (React.createElement(Card, { sx: { p: 0.75, mb: 2 } },
30
30
  React.createElement(Box, { sx: { flexGrow: 1 } },
31
- React.createElement(PrimarySelectableList, { dense: true, disablePadding: true, sx: { mb: 1 }, "data-test": "renderer-tab-list" },
32
- completedDisplayItemExists ? (React.createElement(ShowCompletedTabsSection, { completedTabsExpanded: completedTabsExpanded, setCompletedTabsExpanded: setCompletedTabsExpanded })) : null,
33
- React.createElement(Divider, { sx: { mx: 1 }, light: true }),
31
+ React.createElement(PrimarySelectableList, { dense: true, disablePadding: true, sx: { mb: 0.5, mt: completedDisplayItemExists ? 0 : 0.5 }, "data-test": "renderer-tab-list" },
32
+ completedDisplayItemExists ? (React.createElement(React.Fragment, null,
33
+ React.createElement(ShowCompletedTabsSection, { completedTabsExpanded: completedTabsExpanded, setCompletedTabsExpanded: setCompletedTabsExpanded }),
34
+ React.createElement(Divider, { sx: { mx: 1 }, light: true }))) : null,
34
35
  React.createElement(FormBodyTabList, { topLevelItems: topLevelItems, currentTabIndex: currentTabIndex, tabs: tabs, completedTabsCollapsed: !completedTabsExpanded, allContextDisplayItems: allContextDisplayItems })))));
35
36
  });
36
37
  export default FormBodyTabListWrapper;
@@ -1 +1 @@
1
- {"version":3,"file":"FormBodyTabListWrapper.js","sourceRoot":"","sources":["../../../src/components/Tabs/FormBodyTabListWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AAQxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,sBAAsB,CACjE,KAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzE,MAAM,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,GAC1D,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAExC,OAAO,CACL,oBAAC,IAAI,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;QAC1B,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtB,oBAAC,qBAAqB,IAAC,KAAK,QAAC,cAAc,QAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,eAAY,mBAAmB;gBACrF,0BAA0B,CAAC,CAAC,CAAC,CAC5B,oBAAC,wBAAwB,IACvB,qBAAqB,EAAE,qBAAqB,EAC5C,wBAAwB,EAAE,wBAAwB,GAClD,CACH,CAAC,CAAC,CAAC,IAAI;gBACR,oBAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,SAAG;gBAChC,oBAAC,eAAe,IACd,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,sBAAsB,EAAE,CAAC,qBAAqB,EAC9C,sBAAsB,EAAE,sBAAsB,GAC9C,CACoB,CACpB,CACD,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"FormBodyTabListWrapper.js","sourceRoot":"","sources":["../../../src/components/Tabs/FormBodyTabListWrapper.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,IAAI,MAAM,oBAAoB,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGxD,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,sBAAsB,MAAM,oCAAoC,CAAC;AAQxE,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,sBAAsB,CACjE,KAAkC;IAElC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAEvD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEzE,MAAM,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,GAC1D,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAExC,OAAO,CACL,oBAAC,IAAI,IAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE;QAC1B,oBAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;YACtB,oBAAC,qBAAqB,IACpB,KAAK,QACL,cAAc,QACd,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,eAC/C,mBAAmB;gBAC5B,0BAA0B,CAAC,CAAC,CAAC,CAC5B;oBACE,oBAAC,wBAAwB,IACvB,qBAAqB,EAAE,qBAAqB,EAC5C,wBAAwB,EAAE,wBAAwB,GAClD;oBACF,oBAAC,OAAO,IAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,SAAG,CAC/B,CACJ,CAAC,CAAC,CAAC,IAAI;gBACR,oBAAC,eAAe,IACd,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,sBAAsB,EAAE,CAAC,qBAAqB,EAC9C,sBAAsB,EAAE,sBAAsB,GAC9C,CACoB,CACpB,CACD,CACR,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  import { useLayoutEffect, useState } from 'react';
18
- import { createEmptyQuestionnaireResponse } from '../utils/qrItem';
18
+ import { initialiseQuestionnaireResponse } from '../utils/qrItem';
19
19
  import { readEncounter, readPatient, readUser } from '../api/smartClient';
20
20
  import { useQuestionnaireResponseStore, useQuestionnaireStore, useSmartConfigStore, useTerminologyServerStore } from '../stores';
21
21
  function useInitialiseRenderer(questionnaire, questionnaireResponse, additionalVariables, terminologyServerUrl, fhirClient) {
@@ -54,7 +54,7 @@ function useInitialiseRenderer(questionnaire, questionnaireResponse, additionalV
54
54
  }
55
55
  // initialise form including enableWhen, enableWhenExpressions, calculatedExpressions, initialExpressions, answerExpressions, cache answerValueSets
56
56
  buildSourceQuestionnaire(questionnaire, questionnaireResponse, additionalVariables, terminologyServerUrl).then(() => {
57
- buildSourceResponse(createEmptyQuestionnaireResponse(questionnaire));
57
+ buildSourceResponse(initialiseQuestionnaireResponse(questionnaire));
58
58
  if (questionnaireResponse) {
59
59
  const updatedResponse = updatePopulatedProperties(questionnaireResponse);
60
60
  setUpdatableResponseAsPopulated(updatedResponse);
@@ -1 +1 @@
1
- {"version":3,"file":"useInitialiseRenderer.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInitialiseRenderer.js","sourceRoot":"","sources":["../../src/hooks/useInitialiseRenderer.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts CHANGED
@@ -31,7 +31,7 @@ export declare function getResponse(): QuestionnaireResponse;
31
31
  *
32
32
  * @author Sean Fong
33
33
  */
34
- export declare function removeHiddenAnswersFromResponse(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse): QuestionnaireResponse;
34
+ export declare function removeEmptyAnswersFromResponse(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse): QuestionnaireResponse;
35
35
  /**
36
36
  * Compare latest data from the server with the current QuestionnaireResponse and decide items to re-populate.
37
37
  *
package/lib/index.js CHANGED
@@ -8,8 +8,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { questionnaireResponseStore, questionnaireStore } from './stores';
11
- import { createEmptyQuestionnaireResponse } from './utils/qrItem';
12
- import { removeHiddenAnswers } from './utils/removeHidden';
11
+ import { initialiseQuestionnaireResponse } from './utils/qrItem';
12
+ import { removeEmptyAnswers } from './utils/removeEmptyAnswers';
13
13
  import { getItemsToRepopulate } from './utils/repopulateItems';
14
14
  import { repopulateItemsIntoResponse } from './utils/repopulateIntoResponse';
15
15
  export * from './components';
@@ -26,12 +26,12 @@ export function buildForm(questionnaire, questionnaireResponse) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
27
  yield questionnaireStore.getState().buildSourceQuestionnaire(questionnaire);
28
28
  if (!questionnaireResponse) {
29
- questionnaireResponseStore
30
- .getState()
31
- .buildSourceResponse(createEmptyQuestionnaireResponse(questionnaire));
29
+ const initialisedQuestionnaireResponse = initialiseQuestionnaireResponse(questionnaire);
30
+ questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
32
31
  return;
33
32
  }
34
- questionnaireResponseStore.getState().buildSourceResponse(questionnaireResponse);
33
+ const initialisedQuestionnaireResponse = initialiseQuestionnaireResponse(questionnaire, questionnaireResponse);
34
+ questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
35
35
  questionnaireStore.getState().updatePopulatedProperties(questionnaireResponse);
36
36
  });
37
37
  }
@@ -59,11 +59,11 @@ export function getResponse() {
59
59
  *
60
60
  * @author Sean Fong
61
61
  */
62
- export function removeHiddenAnswersFromResponse(questionnaire, questionnaireResponse) {
62
+ export function removeEmptyAnswersFromResponse(questionnaire, questionnaireResponse) {
63
63
  const enableWhenIsActivated = questionnaireStore.getState().enableWhenIsActivated;
64
64
  const enableWhenItems = questionnaireStore.getState().enableWhenItems;
65
65
  const enableWhenExpressions = questionnaireStore.getState().enableWhenExpressions;
66
- return removeHiddenAnswers({
66
+ return removeEmptyAnswers({
67
67
  questionnaire,
68
68
  questionnaireResponse,
69
69
  enableWhenIsActivated,
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,7 @@ export function findInAnswerValueSetCodings(codings, selected) {
86
86
  * @author Sean Fong
87
87
  */
88
88
  export function getQrChoiceValue(qrChoice, returnNull) {
89
- if (qrChoice['answer']) {
89
+ if (qrChoice.answer && qrChoice.answer.length > 0) {
90
90
  const answer = qrChoice['answer'][0];
91
91
  if (answer['valueCoding']) {
92
92
  return answer.valueCoding.code ? answer.valueCoding.code : '';
@@ -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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"}
@@ -0,0 +1,29 @@
1
+ import type { Expression, QuestionnaireResponse } from 'fhir/r4';
2
+ import { Questionnaire } from 'fhir/r4';
3
+ import type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';
4
+ import type { Tabs } from '../interfaces/tab.interface';
5
+ import type { CalculatedExpression } from '../interfaces/calculatedExpression.interface';
6
+ /**
7
+ * Initialise a conformant questionnaireResponse from a given questionnaire
8
+ * optionally takes in an existing questionnaireResponse to be initialised
9
+ *
10
+ * @author Sean Fong
11
+ */
12
+ export declare function initialiseQuestionnaireResponse(questionnaire: Questionnaire, questionnaireResponse?: QuestionnaireResponse): QuestionnaireResponse;
13
+ export interface initialFormFromResponseParams {
14
+ questionnaireResponse: QuestionnaireResponse;
15
+ enableWhenItems: EnableWhenItems;
16
+ enableWhenExpressions: Record<string, EnableWhenExpression>;
17
+ calculatedExpressions: Record<string, CalculatedExpression>;
18
+ variablesFhirPath: Record<string, Expression[]>;
19
+ tabs: Tabs;
20
+ fhirPathContext: Record<string, any>;
21
+ }
22
+ export declare function initialiseFormFromResponse(params: initialFormFromResponseParams): {
23
+ initialEnableWhenItems: EnableWhenItems;
24
+ initialEnableWhenLinkedQuestions: Record<string, string[]>;
25
+ initialEnableWhenExpressions: Record<string, EnableWhenExpression>;
26
+ initialCalculatedExpressions: Record<string, CalculatedExpression>;
27
+ firstVisibleTab: number;
28
+ updatedFhirPathContext: Record<string, any>;
29
+ };
@@ -0,0 +1,211 @@
1
+ /*
2
+ * Copyright 2023 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 { evaluateInitialEnableWhenExpressions } from './enableWhenExpression';
18
+ import { getFirstVisibleTab } from './tabs';
19
+ import { assignPopulatedAnswersToEnableWhen } from './enableWhen';
20
+ import { evaluateInitialCalculatedExpressions } from './calculatedExpression';
21
+ /**
22
+ * Initialise a conformant questionnaireResponse from a given questionnaire
23
+ * optionally takes in an existing questionnaireResponse to be initialised
24
+ *
25
+ * @author Sean Fong
26
+ */
27
+ export function initialiseQuestionnaireResponse(questionnaire, questionnaireResponse) {
28
+ var _a;
29
+ if (!questionnaireResponse) {
30
+ questionnaireResponse = {
31
+ resourceType: 'QuestionnaireResponse',
32
+ status: 'in-progress'
33
+ };
34
+ }
35
+ if (!questionnaireResponse.status) {
36
+ questionnaireResponse.status = 'in-progress';
37
+ }
38
+ const firstTopLevelItem = (_a = questionnaire === null || questionnaire === void 0 ? void 0 : questionnaire.item) === null || _a === void 0 ? void 0 : _a[0];
39
+ if (firstTopLevelItem && !questionnaireResponse.item) {
40
+ questionnaireResponse.item = [
41
+ {
42
+ linkId: firstTopLevelItem.linkId,
43
+ text: firstTopLevelItem.text,
44
+ item: []
45
+ }
46
+ ];
47
+ }
48
+ if (!questionnaireResponse.questionnaire) {
49
+ questionnaireResponse.questionnaire = setQuestionnaireReference(questionnaire);
50
+ }
51
+ return questionnaireResponse;
52
+ }
53
+ function setQuestionnaireReference(questionnaire) {
54
+ // Use {url}|{version} - the ideal way
55
+ if (questionnaire.url) {
56
+ let questionnaireReference = questionnaire.url;
57
+ if (questionnaire.version) {
58
+ questionnaireReference += '|' + questionnaire.version;
59
+ }
60
+ return questionnaireReference;
61
+ }
62
+ // If no url exists, use Questionnaire/{id}
63
+ if (questionnaire.id) {
64
+ return `Questionnaire/${questionnaire.id}`;
65
+ }
66
+ return '';
67
+ }
68
+ function readItemInitialValues(questionnaire, questionnaireResponse) {
69
+ if (!questionnaire.item || questionnaire.item.length === 0) {
70
+ return questionnaireResponse;
71
+ }
72
+ // const topLevelQrItems: QuestionnaireResponseItem[] = [];
73
+ // for (const topLevelQItem of questionnaire.item) {
74
+ // const updatedTopLevelQRItem = initialiseItemCalculatedExpressionValueRecursive(topLevelQItem);
75
+ //
76
+ // if (Array.isArray(updatedTopLevelQRItem)) {
77
+ // if (updatedTopLevelQRItem.length > 0) {
78
+ // topLevelQrItems.push(...updatedTopLevelQRItem);
79
+ // }
80
+ // continue;
81
+ // }
82
+ //
83
+ // if (updatedTopLevelQRItem) {
84
+ // topLevelQrItems.push(updatedTopLevelQRItem);
85
+ // }
86
+ // }
87
+ return questionnaireResponse;
88
+ }
89
+ function readItemInitialValueRecursive(qItem) {
90
+ const childQItems = qItem.item;
91
+ if (childQItems && childQItems.length > 0) {
92
+ if (qItem.type === 'group' && qItem.repeats) {
93
+ // TODO handle repeat group
94
+ }
95
+ const initialQRItems = [];
96
+ for (const childQItem of childQItems) {
97
+ const initialChildQRItemOrItems = readItemInitialValueRecursive(childQItem);
98
+ if (Array.isArray(initialChildQRItemOrItems)) {
99
+ if (initialChildQRItemOrItems.length > 0) {
100
+ initialQRItems.push(...initialChildQRItemOrItems);
101
+ }
102
+ continue;
103
+ }
104
+ if (initialChildQRItemOrItems) {
105
+ initialQRItems.push(initialChildQRItemOrItems);
106
+ }
107
+ }
108
+ const qrItem = createQuestionnaireResponseItemFromInitialValue(qItem);
109
+ if (qrItem && initialQRItems.length > 0) {
110
+ qrItem.item = initialQRItems;
111
+ }
112
+ return qrItem;
113
+ }
114
+ return createQuestionnaireResponseItemFromInitialValue(qItem);
115
+ }
116
+ function createQuestionnaireResponseItemFromInitialValue(qItem) {
117
+ const initialValues = qItem.initial;
118
+ if (!initialValues) {
119
+ return null;
120
+ }
121
+ const initialValueAnswers = initialValues
122
+ .map((initialValue) => initialValueSwitcher(initialValue))
123
+ .filter((item) => item !== null);
124
+ return createNewQuestionnaireResponseItem(qItem, initialValueAnswers);
125
+ }
126
+ function initialValueSwitcher(initialValue) {
127
+ if (initialValue.valueBoolean) {
128
+ return { valueBoolean: initialValue.valueBoolean };
129
+ }
130
+ if (initialValue.valueDecimal) {
131
+ return { valueDecimal: initialValue.valueDecimal };
132
+ }
133
+ if (initialValue.valueInteger) {
134
+ return { valueInteger: initialValue.valueInteger };
135
+ }
136
+ if (initialValue.valueDate) {
137
+ return { valueDate: initialValue.valueDate };
138
+ }
139
+ if (initialValue.valueDateTime) {
140
+ return { valueDateTime: initialValue.valueDateTime };
141
+ }
142
+ if (initialValue.valueTime) {
143
+ return { valueTime: initialValue.valueTime };
144
+ }
145
+ if (initialValue.valueString) {
146
+ return { valueString: initialValue.valueString };
147
+ }
148
+ if (initialValue.valueUri) {
149
+ return { valueUri: initialValue.valueUri };
150
+ }
151
+ if (initialValue.valueAttachment) {
152
+ return { valueAttachment: initialValue.valueAttachment };
153
+ }
154
+ if (initialValue.valueCoding) {
155
+ return { valueCoding: initialValue.valueCoding };
156
+ }
157
+ if (initialValue.valueQuantity) {
158
+ return { valueQuantity: initialValue.valueQuantity };
159
+ }
160
+ if (initialValue.valueReference) {
161
+ return { valueReference: initialValue.valueReference };
162
+ }
163
+ return null;
164
+ }
165
+ function createNewQuestionnaireResponseItem(qItem, initialValueAnswers) {
166
+ if (initialValueAnswers.length === 0) {
167
+ return null;
168
+ }
169
+ // If item is non-repeating, only take the first initial value
170
+ if (!qItem.repeats) {
171
+ initialValueAnswers = [initialValueAnswers[0]];
172
+ }
173
+ return {
174
+ linkId: qItem.linkId,
175
+ text: qItem.text,
176
+ answer: initialValueAnswers
177
+ };
178
+ }
179
+ export function initialiseFormFromResponse(params) {
180
+ const { questionnaireResponse, enableWhenItems, enableWhenExpressions, calculatedExpressions, variablesFhirPath, tabs } = params;
181
+ let updatedFhirPathContext = params.fhirPathContext;
182
+ const { initialisedItems, linkedQuestions } = assignPopulatedAnswersToEnableWhen(enableWhenItems, questionnaireResponse);
183
+ const evaluateInitialEnableWhenExpressionsResult = evaluateInitialEnableWhenExpressions({
184
+ initialResponse: questionnaireResponse,
185
+ enableWhenExpressions: enableWhenExpressions,
186
+ variablesFhirPath: variablesFhirPath,
187
+ existingFhirPathContext: updatedFhirPathContext
188
+ });
189
+ const { initialEnableWhenExpressions } = evaluateInitialEnableWhenExpressionsResult;
190
+ updatedFhirPathContext = evaluateInitialEnableWhenExpressionsResult.updatedFhirPathContext;
191
+ const evaluateInitialCalculatedExpressionsResult = evaluateInitialCalculatedExpressions({
192
+ initialResponse: questionnaireResponse,
193
+ calculatedExpressions: calculatedExpressions,
194
+ variablesFhirPath: variablesFhirPath,
195
+ existingFhirPathContext: updatedFhirPathContext
196
+ });
197
+ const { initialCalculatedExpressions } = evaluateInitialCalculatedExpressionsResult;
198
+ updatedFhirPathContext = evaluateInitialEnableWhenExpressionsResult.updatedFhirPathContext;
199
+ const firstVisibleTab = Object.keys(tabs).length > 0
200
+ ? getFirstVisibleTab(tabs, initialisedItems, initialEnableWhenExpressions)
201
+ : 0;
202
+ return {
203
+ initialEnableWhenItems: initialisedItems,
204
+ initialEnableWhenLinkedQuestions: linkedQuestions,
205
+ initialEnableWhenExpressions,
206
+ initialCalculatedExpressions,
207
+ firstVisibleTab,
208
+ updatedFhirPathContext
209
+ };
210
+ }
211
+ //# sourceMappingURL=initialise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialise.js","sourceRoot":"","sources":["../../src/utils/initialise.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,13 @@
1
1
  import type { Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
2
2
  import type { QrRepeatGroup } from '../interfaces/repeatGroup.interface';
3
3
  /**
4
- * Create an empty questionnaireResponse from a given questionnaire
4
+ * Initialise a conformant questionnaireResponse from a given questionnaire
5
+ * optionally takes in an existing questionnaireResponse to be initialised
5
6
  *
6
7
  * @author Sean Fong
7
8
  */
8
- export declare function createEmptyQuestionnaireResponse(questionnaire: Questionnaire): QuestionnaireResponse;
9
+ export declare function initialiseQuestionnaireResponse(questionnaire: Questionnaire, questionnaireResponse?: QuestionnaireResponse): QuestionnaireResponse;
10
+ export declare function setQuestionnaireReference(questionnaire: Questionnaire): string;
9
11
  /**
10
12
  * Remove items with no answers from a given questionnaireResponse
11
13
  * Also remove any starting or trailing whitespace from valueStrings
@@ -15,18 +15,24 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  /**
18
- * Create an empty questionnaireResponse from a given questionnaire
18
+ * Initialise a conformant questionnaireResponse from a given questionnaire
19
+ * optionally takes in an existing questionnaireResponse to be initialised
19
20
  *
20
21
  * @author Sean Fong
21
22
  */
22
- export function createEmptyQuestionnaireResponse(questionnaire) {
23
+ export function initialiseQuestionnaireResponse(questionnaire, questionnaireResponse) {
23
24
  var _a;
24
- const questionnaireResponse = {
25
- resourceType: 'QuestionnaireResponse',
26
- status: 'in-progress'
27
- };
25
+ if (!questionnaireResponse) {
26
+ questionnaireResponse = {
27
+ resourceType: 'QuestionnaireResponse',
28
+ status: 'in-progress'
29
+ };
30
+ }
31
+ if (!questionnaireResponse.status) {
32
+ questionnaireResponse.status = 'in-progress';
33
+ }
28
34
  const firstTopLevelItem = (_a = questionnaire === null || questionnaire === void 0 ? void 0 : questionnaire.item) === null || _a === void 0 ? void 0 : _a[0];
29
- if (firstTopLevelItem) {
35
+ if (firstTopLevelItem && !questionnaireResponse.item) {
30
36
  questionnaireResponse.item = [
31
37
  {
32
38
  linkId: firstTopLevelItem.linkId,
@@ -35,11 +41,26 @@ export function createEmptyQuestionnaireResponse(questionnaire) {
35
41
  }
36
42
  ];
37
43
  }
38
- if (questionnaire.id) {
39
- questionnaireResponse.questionnaire = `Questionnaire/${questionnaire.id}`;
44
+ if (!questionnaireResponse.questionnaire) {
45
+ questionnaireResponse.questionnaire = setQuestionnaireReference(questionnaire);
40
46
  }
41
47
  return questionnaireResponse;
42
48
  }
49
+ export function setQuestionnaireReference(questionnaire) {
50
+ // Use {url}|{version} - the ideal way
51
+ if (questionnaire.url) {
52
+ let questionnaireReference = questionnaire.url;
53
+ if (questionnaire.version) {
54
+ questionnaireReference += '|' + questionnaire.version;
55
+ }
56
+ return questionnaireReference;
57
+ }
58
+ // If no url exists, use Questionnaire/{id}
59
+ if (questionnaire.id) {
60
+ return `Questionnaire/${questionnaire.id}`;
61
+ }
62
+ return '';
63
+ }
43
64
  /**
44
65
  * Remove items with no answers from a given questionnaireResponse
45
66
  * Also remove any starting or trailing whitespace from valueStrings
@@ -1 +1 @@
1
- {"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qrItem.js","sourceRoot":"","sources":["../../src/utils/qrItem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';
2
+ import type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';
3
+ interface removeEmptyAnswersParams {
4
+ questionnaire: Questionnaire;
5
+ questionnaireResponse: QuestionnaireResponse;
6
+ enableWhenIsActivated: boolean;
7
+ enableWhenItems: EnableWhenItems;
8
+ enableWhenExpressions: Record<string, EnableWhenExpression>;
9
+ }
10
+ /**
11
+ * Recursively go through the questionnaireResponse and remove qrItems whose qItems are empty in the form
12
+ *
13
+ * @author Sean Fong
14
+ */
15
+ export declare function removeEmptyAnswers(params: removeEmptyAnswersParams): QuestionnaireResponse;
16
+ export {};
@@ -0,0 +1,120 @@
1
+ /*
2
+ * Copyright 2023 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 { isHidden } from './qItem';
18
+ /**
19
+ * Recursively go through the questionnaireResponse and remove qrItems whose qItems are empty in the form
20
+ *
21
+ * @author Sean Fong
22
+ */
23
+ export function removeEmptyAnswers(params) {
24
+ const { questionnaire, questionnaireResponse, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
25
+ const topLevelQItems = questionnaire.item;
26
+ const topLevelQRItems = questionnaireResponse.item;
27
+ if (!topLevelQItems ||
28
+ topLevelQItems.length === 0 ||
29
+ !topLevelQRItems ||
30
+ topLevelQRItems.length === 0) {
31
+ return questionnaireResponse;
32
+ }
33
+ topLevelQRItems.forEach((qrItem, i) => {
34
+ const qItem = topLevelQItems[i];
35
+ const newTopLevelQRItem = removeEmptyAnswersFromItemRecursive({
36
+ qItem,
37
+ qrItem,
38
+ enableWhenIsActivated,
39
+ enableWhenItems,
40
+ enableWhenExpressions
41
+ });
42
+ if (newTopLevelQRItem && questionnaireResponse.item) {
43
+ questionnaireResponse.item[i] = Object.assign({}, newTopLevelQRItem);
44
+ }
45
+ });
46
+ return questionnaireResponse;
47
+ }
48
+ function removeEmptyAnswersFromItemRecursive(params) {
49
+ const { qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
50
+ const qItems = qItem.item;
51
+ const qrItems = qrItem.item;
52
+ // Process group items
53
+ if (qItems && qItems.length > 0) {
54
+ // Return nothing if corresponding qItem is hidden
55
+ if (isHidden({
56
+ questionnaireItem: qItem,
57
+ enableWhenIsActivated,
58
+ enableWhenItems,
59
+ enableWhenExpressions
60
+ })) {
61
+ return null;
62
+ }
63
+ if (qrItems && qrItems.length > 0) {
64
+ const newQrItems = [];
65
+ // Loop over qItems - but end loop if we either reach the end of qItems or qrItems
66
+ // Under normal circumstances we will reach the end of both arrays together
67
+ for (let qItemIndex = 0, qrItemIndex = 0; qItemIndex < qItems.length || qrItemIndex < qrItems.length; qItemIndex++) {
68
+ // Save qrItem if linkIds of current qItem and qrItem are the same
69
+ if (qrItems[qrItemIndex] && qItems[qItemIndex].linkId === qrItems[qrItemIndex].linkId) {
70
+ const newQrItem = removeEmptyAnswersFromItemRecursive({
71
+ qItem: qItems[qItemIndex],
72
+ qrItem: qrItems[qrItemIndex],
73
+ enableWhenIsActivated,
74
+ enableWhenItems,
75
+ enableWhenExpressions
76
+ });
77
+ if (newQrItem) {
78
+ newQrItems.push(newQrItem);
79
+ }
80
+ // Decrement qItem index if the next qrItem is an answer from a repeatGroup
81
+ // Essentially persisting the current qItem linked to be matched up with the next qrItem linkId
82
+ if (qrItems.length !== qrItemIndex + 1 &&
83
+ qrItems[qrItemIndex].linkId === qrItems[qrItemIndex + 1].linkId) {
84
+ qItemIndex--;
85
+ }
86
+ // Only Increment qrItem index whenever the current qrItem linkId matches up with the current qItem
87
+ qrItemIndex++;
88
+ }
89
+ }
90
+ return Object.assign(Object.assign({}, qrItem), { item: newQrItems });
91
+ }
92
+ // Also perform checks if answer exists
93
+ return answerIsEmpty(qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions)
94
+ ? null
95
+ : qrItem;
96
+ }
97
+ // Process non-group items
98
+ return answerIsEmpty(qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions)
99
+ ? null
100
+ : Object.assign({}, qrItem);
101
+ }
102
+ function answerIsEmpty(qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions) {
103
+ var _a;
104
+ if (isHidden({
105
+ questionnaireItem: qItem,
106
+ enableWhenIsActivated,
107
+ enableWhenItems,
108
+ enableWhenExpressions
109
+ })) {
110
+ return true;
111
+ }
112
+ if (!qrItem.answer) {
113
+ return true;
114
+ }
115
+ if (((_a = qrItem.answer[0]) === null || _a === void 0 ? void 0 : _a.valueString) === '') {
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+ //# sourceMappingURL=removeEmptyAnswers.js.map
@@ -0,0 +1 @@
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.10.3",
3
+ "version": "0.10.5",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -52,7 +52,7 @@ function ChoiceSelectAnswerOptionItem(props: ChoiceSelectAnswerOptionItemProps)
52
52
  // Init input value
53
53
  const qrChoiceSelect = qrItem ?? createEmptyQrItem(qItem);
54
54
  let valueSelect = getQrChoiceValue(qrChoiceSelect);
55
- if (valueSelect === null) {
55
+ if (!valueSelect) {
56
56
  valueSelect = '';
57
57
  }
58
58
 
@@ -45,14 +45,20 @@ const FormBodyTabListWrapper = memo(function FormBodyTabListWrapper(
45
45
  return (
46
46
  <Card sx={{ p: 0.75, mb: 2 }}>
47
47
  <Box sx={{ flexGrow: 1 }}>
48
- <PrimarySelectableList dense disablePadding sx={{ mb: 1 }} data-test="renderer-tab-list">
48
+ <PrimarySelectableList
49
+ dense
50
+ disablePadding
51
+ sx={{ mb: 0.5, mt: completedDisplayItemExists ? 0 : 0.5 }}
52
+ data-test="renderer-tab-list">
49
53
  {completedDisplayItemExists ? (
50
- <ShowCompletedTabsSection
51
- completedTabsExpanded={completedTabsExpanded}
52
- setCompletedTabsExpanded={setCompletedTabsExpanded}
53
- />
54
+ <>
55
+ <ShowCompletedTabsSection
56
+ completedTabsExpanded={completedTabsExpanded}
57
+ setCompletedTabsExpanded={setCompletedTabsExpanded}
58
+ />
59
+ <Divider sx={{ mx: 1 }} light />
60
+ </>
54
61
  ) : null}
55
- <Divider sx={{ mx: 1 }} light />
56
62
  <FormBodyTabList
57
63
  topLevelItems={topLevelItems}
58
64
  currentTabIndex={currentTabIndex}
@@ -17,7 +17,7 @@
17
17
 
18
18
  import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';
19
19
  import { useLayoutEffect, useState } from 'react';
20
- import { createEmptyQuestionnaireResponse } from '../utils/qrItem';
20
+ import { initialiseQuestionnaireResponse } from '../utils/qrItem';
21
21
  import type Client from 'fhirclient/lib/Client';
22
22
  import { readEncounter, readPatient, readUser } from '../api/smartClient';
23
23
  import {
@@ -79,7 +79,7 @@ function useInitialiseRenderer(
79
79
  additionalVariables,
80
80
  terminologyServerUrl
81
81
  ).then(() => {
82
- buildSourceResponse(createEmptyQuestionnaireResponse(questionnaire));
82
+ buildSourceResponse(initialiseQuestionnaireResponse(questionnaire));
83
83
 
84
84
  if (questionnaireResponse) {
85
85
  const updatedResponse = updatePopulatedProperties(questionnaireResponse);
package/src/index.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { questionnaireResponseStore, questionnaireStore } from './stores';
2
2
  import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4';
3
- import { createEmptyQuestionnaireResponse } from './utils/qrItem';
4
- import { removeHiddenAnswers } from './utils/removeHidden';
3
+ import { initialiseQuestionnaireResponse } from './utils/qrItem';
4
+ import { removeEmptyAnswers } from './utils/removeEmptyAnswers';
5
5
  import type { ItemToRepopulate } from './utils/repopulateItems';
6
6
  import { getItemsToRepopulate } from './utils/repopulateItems';
7
7
  import { repopulateItemsIntoResponse } from './utils/repopulateIntoResponse';
@@ -25,13 +25,16 @@ export async function buildForm(
25
25
  await questionnaireStore.getState().buildSourceQuestionnaire(questionnaire);
26
26
 
27
27
  if (!questionnaireResponse) {
28
- questionnaireResponseStore
29
- .getState()
30
- .buildSourceResponse(createEmptyQuestionnaireResponse(questionnaire));
28
+ const initialisedQuestionnaireResponse = initialiseQuestionnaireResponse(questionnaire);
29
+ questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
31
30
  return;
32
31
  }
33
32
 
34
- questionnaireResponseStore.getState().buildSourceResponse(questionnaireResponse);
33
+ const initialisedQuestionnaireResponse = initialiseQuestionnaireResponse(
34
+ questionnaire,
35
+ questionnaireResponse
36
+ );
37
+ questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
35
38
  questionnaireStore.getState().updatePopulatedProperties(questionnaireResponse);
36
39
  }
37
40
 
@@ -61,7 +64,7 @@ export function getResponse(): QuestionnaireResponse {
61
64
  *
62
65
  * @author Sean Fong
63
66
  */
64
- export function removeHiddenAnswersFromResponse(
67
+ export function removeEmptyAnswersFromResponse(
65
68
  questionnaire: Questionnaire,
66
69
  questionnaireResponse: QuestionnaireResponse
67
70
  ): QuestionnaireResponse {
@@ -69,7 +72,7 @@ export function removeHiddenAnswersFromResponse(
69
72
  const enableWhenItems = questionnaireStore.getState().enableWhenItems;
70
73
  const enableWhenExpressions = questionnaireStore.getState().enableWhenExpressions;
71
74
 
72
- return removeHiddenAnswers({
75
+ return removeEmptyAnswers({
73
76
  questionnaire,
74
77
  questionnaireResponse,
75
78
  enableWhenIsActivated,
@@ -109,7 +109,7 @@ export function getQrChoiceValue(
109
109
  qrChoice: QuestionnaireResponseItem,
110
110
  returnNull?: boolean
111
111
  ): string | null {
112
- if (qrChoice['answer']) {
112
+ if (qrChoice.answer && qrChoice.answer.length > 0) {
113
113
  const answer = qrChoice['answer'][0];
114
114
  if (answer['valueCoding']) {
115
115
  return answer.valueCoding.code ? answer.valueCoding.code : '';
@@ -119,6 +119,7 @@ export function getQrChoiceValue(
119
119
  return answer.valueInteger.toString();
120
120
  }
121
121
  }
122
+
122
123
  return returnNull ? null : '';
123
124
  }
124
125
 
@@ -25,20 +25,28 @@ import type {
25
25
  import type { QrRepeatGroup } from '../interfaces/repeatGroup.interface';
26
26
 
27
27
  /**
28
- * Create an empty questionnaireResponse from a given questionnaire
28
+ * Initialise a conformant questionnaireResponse from a given questionnaire
29
+ * optionally takes in an existing questionnaireResponse to be initialised
29
30
  *
30
31
  * @author Sean Fong
31
32
  */
32
- export function createEmptyQuestionnaireResponse(
33
- questionnaire: Questionnaire
34
- ): QuestionnaireResponse {
35
- const questionnaireResponse: QuestionnaireResponse = {
36
- resourceType: 'QuestionnaireResponse',
37
- status: 'in-progress'
38
- };
39
- const firstTopLevelItem = questionnaire?.item?.[0];
33
+ export function initialiseQuestionnaireResponse(
34
+ questionnaire: Questionnaire,
35
+ questionnaireResponse?: QuestionnaireResponse
36
+ ) {
37
+ if (!questionnaireResponse) {
38
+ questionnaireResponse = {
39
+ resourceType: 'QuestionnaireResponse',
40
+ status: 'in-progress'
41
+ };
42
+ }
43
+
44
+ if (!questionnaireResponse.status) {
45
+ questionnaireResponse.status = 'in-progress';
46
+ }
40
47
 
41
- if (firstTopLevelItem) {
48
+ const firstTopLevelItem = questionnaire?.item?.[0];
49
+ if (firstTopLevelItem && !questionnaireResponse.item) {
42
50
  questionnaireResponse.item = [
43
51
  {
44
52
  linkId: firstTopLevelItem.linkId,
@@ -48,13 +56,31 @@ export function createEmptyQuestionnaireResponse(
48
56
  ];
49
57
  }
50
58
 
51
- if (questionnaire.id) {
52
- questionnaireResponse.questionnaire = `Questionnaire/${questionnaire.id}`;
59
+ if (!questionnaireResponse.questionnaire) {
60
+ questionnaireResponse.questionnaire = setQuestionnaireReference(questionnaire);
53
61
  }
54
62
 
55
63
  return questionnaireResponse;
56
64
  }
57
65
 
66
+ export function setQuestionnaireReference(questionnaire: Questionnaire) {
67
+ // Use {url}|{version} - the ideal way
68
+ if (questionnaire.url) {
69
+ let questionnaireReference = questionnaire.url;
70
+ if (questionnaire.version) {
71
+ questionnaireReference += '|' + questionnaire.version;
72
+ }
73
+ return questionnaireReference;
74
+ }
75
+
76
+ // If no url exists, use Questionnaire/{id}
77
+ if (questionnaire.id) {
78
+ return `Questionnaire/${questionnaire.id}`;
79
+ }
80
+
81
+ return '';
82
+ }
83
+
58
84
  /**
59
85
  * Remove items with no answers from a given questionnaireResponse
60
86
  * Also remove any starting or trailing whitespace from valueStrings
@@ -24,7 +24,7 @@ import type {
24
24
  import type { EnableWhenExpression, EnableWhenItems } from '../interfaces/enableWhen.interface';
25
25
  import { isHidden } from './qItem';
26
26
 
27
- interface removeHiddenAnswersParams {
27
+ interface removeEmptyAnswersParams {
28
28
  questionnaire: Questionnaire;
29
29
  questionnaireResponse: QuestionnaireResponse;
30
30
  enableWhenIsActivated: boolean;
@@ -33,11 +33,11 @@ interface removeHiddenAnswersParams {
33
33
  }
34
34
 
35
35
  /**
36
- * Recursively go through the questionnaireResponse and remove qrItems whose qItems are hidden in the form
36
+ * Recursively go through the questionnaireResponse and remove qrItems whose qItems are empty in the form
37
37
  *
38
38
  * @author Sean Fong
39
39
  */
40
- export function removeHiddenAnswers(params: removeHiddenAnswersParams): QuestionnaireResponse {
40
+ export function removeEmptyAnswers(params: removeEmptyAnswersParams): QuestionnaireResponse {
41
41
  const {
42
42
  questionnaire,
43
43
  questionnaireResponse,
@@ -59,7 +59,7 @@ export function removeHiddenAnswers(params: removeHiddenAnswersParams): Question
59
59
 
60
60
  topLevelQRItems.forEach((qrItem, i) => {
61
61
  const qItem = topLevelQItems[i];
62
- const newTopLevelQRItem = readQuestionnaireResponseItemRecursive({
62
+ const newTopLevelQRItem = removeEmptyAnswersFromItemRecursive({
63
63
  qItem,
64
64
  qrItem,
65
65
  enableWhenIsActivated,
@@ -74,7 +74,7 @@ export function removeHiddenAnswers(params: removeHiddenAnswersParams): Question
74
74
  return questionnaireResponse;
75
75
  }
76
76
 
77
- interface readQuestionnaireResponseItemRecursiveParams {
77
+ interface removeEmptyAnswersFromItemRecursiveParams {
78
78
  qItem: QuestionnaireItem;
79
79
  qrItem: QuestionnaireResponseItem;
80
80
  enableWhenIsActivated: boolean;
@@ -82,8 +82,8 @@ interface readQuestionnaireResponseItemRecursiveParams {
82
82
  enableWhenExpressions: Record<string, EnableWhenExpression>;
83
83
  }
84
84
 
85
- function readQuestionnaireResponseItemRecursive(
86
- params: readQuestionnaireResponseItemRecursiveParams
85
+ function removeEmptyAnswersFromItemRecursive(
86
+ params: removeEmptyAnswersFromItemRecursiveParams
87
87
  ): QuestionnaireResponseItem | null {
88
88
  const { qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions } = params;
89
89
 
@@ -116,7 +116,7 @@ function readQuestionnaireResponseItemRecursive(
116
116
  ) {
117
117
  // Save qrItem if linkIds of current qItem and qrItem are the same
118
118
  if (qrItems[qrItemIndex] && qItems[qItemIndex].linkId === qrItems[qrItemIndex].linkId) {
119
- const newQrItem = readQuestionnaireResponseItemRecursive({
119
+ const newQrItem = removeEmptyAnswersFromItemRecursive({
120
120
  qItem: qItems[qItemIndex],
121
121
  qrItem: qrItems[qrItemIndex],
122
122
  enableWhenIsActivated,
@@ -144,17 +144,49 @@ function readQuestionnaireResponseItemRecursive(
144
144
  return { ...qrItem, item: newQrItems };
145
145
  }
146
146
 
147
- // Also perform checking if answer exists
148
- return qrItem['answer'] ? qrItem : null;
147
+ // Also perform checks if answer exists
148
+ return answerIsEmpty(
149
+ qItem,
150
+ qrItem,
151
+ enableWhenIsActivated,
152
+ enableWhenItems,
153
+ enableWhenExpressions
154
+ )
155
+ ? null
156
+ : qrItem;
149
157
  }
150
158
 
151
159
  // Process non-group items
152
- return isHidden({
153
- questionnaireItem: qItem,
154
- enableWhenIsActivated,
155
- enableWhenItems,
156
- enableWhenExpressions
157
- })
160
+ return answerIsEmpty(qItem, qrItem, enableWhenIsActivated, enableWhenItems, enableWhenExpressions)
158
161
  ? null
159
162
  : { ...qrItem };
160
163
  }
164
+
165
+ function answerIsEmpty(
166
+ qItem: QuestionnaireItem,
167
+ qrItem: QuestionnaireResponseItem,
168
+ enableWhenIsActivated: boolean,
169
+ enableWhenItems: EnableWhenItems,
170
+ enableWhenExpressions: Record<string, EnableWhenExpression>
171
+ ) {
172
+ if (
173
+ isHidden({
174
+ questionnaireItem: qItem,
175
+ enableWhenIsActivated,
176
+ enableWhenItems,
177
+ enableWhenExpressions
178
+ })
179
+ ) {
180
+ return true;
181
+ }
182
+
183
+ if (!qrItem.answer) {
184
+ return true;
185
+ }
186
+
187
+ if (qrItem.answer[0]?.valueString === '') {
188
+ return true;
189
+ }
190
+
191
+ return false;
192
+ }