@aehrc/smart-forms-renderer 0.35.4 → 0.35.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.
- package/lib/interfaces/questionnaireStore.interface.d.ts +2 -1
- package/lib/stores/questionnaireStore.js +4 -0
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.d.ts +2 -1
- package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js +35 -0
- package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +6 -2
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.d.ts +2 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +13 -3
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/insertAnswerOptions.d.ts +7 -0
- package/lib/utils/questionnaireStoreUtils/insertAnswerOptions.js +44 -0
- package/lib/utils/questionnaireStoreUtils/insertAnswerOptions.js.map +1 -0
- package/package.json +1 -1
- package/src/interfaces/questionnaireStore.interface.ts +2 -1
- package/src/stores/questionnaireStore.ts +8 -0
- package/src/utils/questionnaireStoreUtils/addDisplayToCodings.ts +40 -1
- package/src/utils/questionnaireStoreUtils/createQuestionaireModel.ts +16 -3
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +15 -0
- package/src/utils/questionnaireStoreUtils/insertAnswerOptions.ts +56 -0
|
@@ -4,7 +4,7 @@ import type { LaunchContext } from './populate.interface';
|
|
|
4
4
|
import type { EnableWhenExpressions, EnableWhenItems } from './enableWhen.interface';
|
|
5
5
|
import type { CalculatedExpression } from './calculatedExpression.interface';
|
|
6
6
|
import type { AnswerExpression } from './answerExpression.interface';
|
|
7
|
-
import type { Coding } from 'fhir/r4';
|
|
7
|
+
import type { Coding, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
8
8
|
export interface QuestionnaireModel {
|
|
9
9
|
itemTypes: Record<string, string>;
|
|
10
10
|
tabs: Tabs;
|
|
@@ -14,6 +14,7 @@ export interface QuestionnaireModel {
|
|
|
14
14
|
enableWhenExpressions: EnableWhenExpressions;
|
|
15
15
|
calculatedExpressions: Record<string, CalculatedExpression[]>;
|
|
16
16
|
answerExpressions: Record<string, AnswerExpression>;
|
|
17
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
17
18
|
processedValueSetCodings: Record<string, Coding[]>;
|
|
18
19
|
processedValueSetUrls: Record<string, string>;
|
|
19
20
|
fhirPathContext: Record<string, any>;
|
|
@@ -36,6 +36,7 @@ import { createSelectors } from './selector';
|
|
|
36
36
|
import { mutateRepeatEnableWhenExpressionInstances } from '../utils/enableWhenExpression';
|
|
37
37
|
import { questionnaireResponseStore } from './questionnaireResponseStore';
|
|
38
38
|
import { createQuestionnaireResponseItemMap } from '../utils/questionnaireResponseStoreUtils/updatableResponseItems';
|
|
39
|
+
import { insertCompleteAnswerOptionsIntoQuestionnaire } from '../utils/questionnaireStoreUtils/insertAnswerOptions';
|
|
39
40
|
/**
|
|
40
41
|
* Questionnaire state management store which contains all properties and methods to manage the state of the questionnaire.
|
|
41
42
|
* This is the vanilla version of the store which can be used in non-React environments.
|
|
@@ -65,6 +66,9 @@ export const questionnaireStore = createStore()((set, get) => ({
|
|
|
65
66
|
readOnly: false,
|
|
66
67
|
buildSourceQuestionnaire: (questionnaire, questionnaireResponse = cloneDeep(emptyResponse), additionalVariables = {}, terminologyServerUrl = terminologyServerStore.getState().url, readOnly = false) => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
68
|
const questionnaireModel = yield createQuestionnaireModel(questionnaire, additionalVariables, terminologyServerUrl);
|
|
69
|
+
// Insert answerOptions with displays into questionnaire
|
|
70
|
+
questionnaire = insertCompleteAnswerOptionsIntoQuestionnaire(questionnaire, questionnaireModel.answerOptions);
|
|
71
|
+
// Initialise form with questionnaire response and properties in questionnaire model
|
|
68
72
|
const { initialEnableWhenItems, initialEnableWhenLinkedQuestions, initialEnableWhenExpressions, initialCalculatedExpressions, firstVisibleTab, updatedFhirPathContext } = initialiseFormFromResponse({
|
|
69
73
|
questionnaireResponse,
|
|
70
74
|
enableWhenItems: questionnaireModel.enableWhenItems,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questionnaireStore.js","sourceRoot":"","sources":["../../src/stores/questionnaireStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAa9C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yCAAyC,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,iEAAiE,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"questionnaireStore.js","sourceRoot":"","sources":["../../src/stores/questionnaireStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAa9C,OAAO,EACL,mCAAmC,EACnC,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,oCAAoC,EACpC,oCAAoC,EACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,yCAAyC,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,iEAAiE,CAAC;AACrH,OAAO,EAAE,4CAA4C,EAAE,MAAM,sDAAsD,CAAC;AA+FpH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,EAA0B,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrF,mBAAmB,EAAE,SAAS,CAAC,kBAAkB,CAAC;IAClD,SAAS,EAAE,EAAE;IACb,IAAI,EAAE,EAAE;IACR,eAAe,EAAE,CAAC;IAClB,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;IAC7D,cAAc,EAAE,EAAE;IAClB,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;IACvE,iBAAiB,EAAE,EAAE;IACrB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IACrD,yBAAyB,EAAE,EAAE;IAC7B,qBAAqB,EAAE,IAAI;IAC3B,wBAAwB,EAAE,EAAE;IAC5B,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE;IACzB,eAAe,EAAE,EAAE;IACnB,gBAAgB,EAAE,EAAE;IACpB,aAAa,EAAE,EAAE;IACjB,QAAQ,EAAE,KAAK;IACf,wBAAwB,EAAE,CACxB,aAAa,EACb,qBAAqB,GAAG,SAAS,CAAC,aAAa,CAAC,EAChD,mBAAmB,GAAG,EAAE,EACxB,oBAAoB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,CAAC,GAAG,EAC5D,QAAQ,GAAG,KAAK,EAChB,EAAE;QACF,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CACvD,aAAa,EACb,mBAAmB,EACnB,oBAAoB,CACrB,CAAC;QAEF,wDAAwD;QACxD,aAAa,GAAG,4CAA4C,CAC1D,aAAa,EACb,kBAAkB,CAAC,aAAa,CACjC,CAAC;QAEF,oFAAoF;QACpF,MAAM,EACJ,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,4BAA4B,EAC5B,eAAe,EACf,sBAAsB,EACvB,GAAG,0BAA0B,CAAC;YAC7B,qBAAqB;YACrB,eAAe,EAAE,kBAAkB,CAAC,eAAe;YACnD,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB;YAC/D,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB;YAC/D,iBAAiB,EAAE,kBAAkB,CAAC,SAAS,CAAC,iBAAiB;YACjE,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,eAAe,EAAE,kBAAkB,CAAC,eAAe;SACpD,CAAC,CAAC;QAEH,GAAG,CAAC;YACF,mBAAmB,EAAE,aAAa;YAClC,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,IAAI,EAAE,kBAAkB,CAAC,IAAI;YAC7B,eAAe,EAAE,eAAe;YAChC,SAAS,EAAE,kBAAkB,CAAC,SAAS;YACvC,cAAc,EAAE,kBAAkB,CAAC,cAAc;YACjD,eAAe,EAAE,sBAAsB;YACvC,yBAAyB,EAAE,gCAAgC;YAC3D,qBAAqB,EAAE,4BAA4B;YACnD,qBAAqB,EAAE,4BAA4B;YACnD,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACvD,wBAAwB,EAAE,kBAAkB,CAAC,wBAAwB;YACrE,qBAAqB,EAAE,kBAAkB,CAAC,qBAAqB;YAC/D,eAAe,EAAE,sBAAsB;YACvC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC,CAAA;IACD,0BAA0B,EAAE,GAAG,EAAE,CAC/B,GAAG,CAAC;QACF,mBAAmB,EAAE,SAAS,CAAC,kBAAkB,CAAC;QAClD,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,EAAE;QACR,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE;QAC7D,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;QACrD,yBAAyB,EAAE,EAAE;QAC7B,qBAAqB,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE;QACvE,qBAAqB,EAAE,EAAE;QACzB,iBAAiB,EAAE,EAAE;QACrB,wBAAwB,EAAE,EAAE;QAC5B,qBAAqB,EAAE,EAAE;QACzB,eAAe,EAAE,EAAE;KACpB,CAAC;IACJ,SAAS,EAAE,CAAC,WAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,iBAAiB,EAAE,CAAC,SAAiB,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;QACxB,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACT,IAAI,kCACC,IAAI,KACP,CAAC,SAAS,CAAC,kCAAO,IAAI,CAAC,SAAS,CAAC,KAAE,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,MAC3E;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IACD,oBAAoB,EAAE,CACpB,MAAc,EACd,SAAwD,EACxD,sBAAqC,EACrC,EAAE;QACF,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAAC,yBAAyB,CAAC;QAClE,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE;YACtC,OAAO;SACR;QAED,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,sBAAsB,GAAG,0BAA0B,mBAClD,eAAe,GACpB,mBAAmB,EACnB,MAAM,EACN,SAAS,EACT,sBAAsB,CACvB,CAAC;QAEF,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACT,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IACD,2BAA2B,EAAE,CAC3B,uBAA+B,EAC/B,sBAA8B,EAC9B,UAA4B,EAC5B,EAAE;QACF,MAAM,eAAe,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC;QAC9C,MAAM,qBAAqB,GAAG,GAAG,EAAE,CAAC,qBAAqB,CAAC;QAE1D,MAAM,sBAAsB,GAAG,mCAAmC,mBAE3D,eAAe,GAEpB,uBAAuB,EACvB,sBAAsB,EACtB,UAAU,CACX,CAAC;QAEF,MAAM,EAAE,4BAA4B,EAAE,SAAS,EAAE,GAAG,yCAAyC,CAAC;YAC5F,qBAAqB,EAAE,0BAA0B,CAAC,QAAQ,EAAE,CAAC,iBAAiB;YAC9E,4BAA4B,EAAE,0BAA0B,CAAC,QAAQ,EAAE,CAAC,sBAAsB;YAC1F,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB;YACpD,uBAAuB,EAAE,GAAG,EAAE,CAAC,eAAe;YAC9C,qBAAqB,EAAE,qBAAqB;YAC5C,uBAAuB;YACvB,sBAAsB;YACtB,UAAU;SACX,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE;YACb,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACT,eAAe,EAAE,sBAAsB;gBACvC,qBAAqB,EAAE,4BAA4B;aACpD,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IACD,0BAA0B,EAAE,CAAC,WAAoB,EAAE,EAAE,CACnD,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,qBAAqB,EAAE,WAAW,EAAE,CAAC,CAAC;IACrD,iBAAiB,EAAE,CAAC,eAAsC,EAAE,EAAE;QAC5D,MAAM,sBAAsB,GAAG,kCAAkC,CAAC,eAAe,CAAC,CAAC;QACnF,MAAM,EACJ,SAAS,EACT,4BAA4B,EAC5B,4BAA4B,EAC5B,sBAAsB,EACvB,GAAG,0BAA0B,CAAC;YAC7B,eAAe;YACf,sBAAsB;YACtB,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB;YAClD,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB;YAClD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB;YACpD,uBAAuB,EAAE,GAAG,EAAE,CAAC,eAAe;SAC/C,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE;YACb,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACT,qBAAqB,EAAE,4BAA4B;gBACnD,qBAAqB,EAAE,4BAA4B;gBACnD,eAAe,EAAE,sBAAsB;aACxC,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,CAAC;SACV;QAED,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACT,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAC,CAAC;IACN,CAAC;IACD,gBAAgB,EAAE,CAAC,WAAmB,EAAE,OAAiB,EAAE,EAAE,CAC3D,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACT,qBAAqB,kCAChB,GAAG,EAAE,CAAC,qBAAqB,KAC9B,CAAC,WAAW,CAAC,EAAE,OAAO,GACvB;KACF,CAAC,CAAC;IACL,yBAAyB,EAAE,CACzB,iBAAwC,EACxC,gBAAsC,EACtC,eAAyB,EACzB,EAAE;QACF,MAAM,sBAAsB,GAAG,kCAAkC,CAAC,iBAAiB,CAAC,CAAC;QAErF,MAAM,0CAA0C,GAAG,oCAAoC,CAAC;YACtF,eAAe,EAAE,iBAAiB;YAClC,sBAAsB,EAAE,sBAAsB;YAC9C,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB;YAClD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB;YACpD,uBAAuB,EAAE,GAAG,EAAE,CAAC,eAAe;SAC/C,CAAC,CAAC;QACH,MAAM,EAAE,4BAA4B,EAAE,GAAG,0CAA0C,CAAC;QACpF,IAAI,sBAAsB,GAAG,0CAA0C,CAAC,sBAAsB,CAAC;QAE/F,MAAM,eAAe,GAAG,oCAAoC,CAC1D,GAAG,EAAE,CAAC,mBAAmB,EACzB,iBAAiB,EACjB,4BAA4B,CAC7B,CAAC;QAEF,MAAM,EACJ,sBAAsB,EACtB,gCAAgC,EAChC,4BAA4B,EAC5B,eAAe,EAChB,GAAG,0BAA0B,CAAC;YAC7B,qBAAqB,EAAE,eAAe;YACtC,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe;YACtC,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB;YAClD,qBAAqB,EAAE,4BAA4B;YACnD,iBAAiB,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,iBAAiB;YACpD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;YAChB,eAAe,EAAE,sBAAsB;SACxC,CAAC,CAAC;QACH,sBAAsB,GAAG,0CAA0C,CAAC,sBAAsB,CAAC;QAE3F,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACT,eAAe,EAAE,sBAAsB;YACvC,yBAAyB,EAAE,gCAAgC;YAC3D,qBAAqB,EAAE,4BAA4B;YACnD,qBAAqB,EAAE,4BAA4B;YACnD,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe;YAC1E,eAAe,EAAE,sBAAsB;YACvC,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,GAAG,EAAE,CAAC,gBAAgB;SAC7D,CAAC,CAAC,CAAC;QAEJ,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,aAAa,EAAE,CAAC,MAAc,EAAE,EAAE,CAChC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACT,aAAa,EAAE,MAAM;KACtB,CAAC,CAAC;IACL,mBAAmB,EAAE,CAAC,mBAAwC,EAAE,EAAE,CAChE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACT,gBAAgB,EAAE,mBAAmB;KACtC,CAAC,CAAC;IACL,iBAAiB,EAAE,CAAC,QAAiB,EAAE,EAAE,CACvC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACT,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAC;CACN,CAAC,CAAC,CAAC;AAEJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { Coding } from 'fhir/r4';
|
|
1
|
+
import type { Coding, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
2
2
|
import type { CodeSystemLookupPromise } from '../../interfaces/lookup.interface';
|
|
3
3
|
export declare function addDisplayToProcessedCodings(processedCodings: Record<string, Coding[]>, terminologyServerUrl: string): Promise<Record<string, Coding[]>>;
|
|
4
|
+
export declare function addDisplayToAnswerOptions(answerOptions: Record<string, QuestionnaireItemAnswerOption[]>, terminologyServerUrl: string): Promise<Record<string, QuestionnaireItemAnswerOption[]>>;
|
|
4
5
|
export declare function addDisplayToCodingArray(codings: Coding[], terminologyServerUrl: string): Promise<Coding[]>;
|
|
5
6
|
export declare function getCodeSystemLookupPromise(query: string, terminologyServerUrl: string): Promise<any>;
|
|
6
7
|
export declare function resolveLookupPromises(codeSystemLookupPromises: Record<string, CodeSystemLookupPromise>): Promise<Record<string, CodeSystemLookupPromise>>;
|
|
@@ -57,6 +57,41 @@ export function addDisplayToProcessedCodings(processedCodings, terminologyServer
|
|
|
57
57
|
return processedCodings;
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
|
+
// Use this for a Record<linkId, answerOption[]>
|
|
61
|
+
export function addDisplayToAnswerOptions(answerOptions, terminologyServerUrl) {
|
|
62
|
+
var _a;
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
// Store code system lookup promises for codings without displays
|
|
65
|
+
const codeSystemLookupPromises = {};
|
|
66
|
+
for (const key in answerOptions) {
|
|
67
|
+
const options = answerOptions[key];
|
|
68
|
+
for (const option of options) {
|
|
69
|
+
if (option.valueCoding && !option.valueCoding.display) {
|
|
70
|
+
const query = `system=${option.valueCoding.system}&code=${option.valueCoding.code}`;
|
|
71
|
+
codeSystemLookupPromises[query] = {
|
|
72
|
+
promise: getCodeSystemLookupPromise(query, terminologyServerUrl),
|
|
73
|
+
oldCoding: option.valueCoding
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Resolves lookup promises in one go and assign newCodings to processedCodings
|
|
79
|
+
const resolvedCodeSystemLookupPromises = yield resolveLookupPromises(codeSystemLookupPromises);
|
|
80
|
+
for (const key in answerOptions) {
|
|
81
|
+
const options = answerOptions[key];
|
|
82
|
+
for (const option of options) {
|
|
83
|
+
if (option.valueCoding) {
|
|
84
|
+
const lookUpKey = `system=${option.valueCoding.system}&code=${option.valueCoding.code}`;
|
|
85
|
+
const resolvedLookup = resolvedCodeSystemLookupPromises[lookUpKey];
|
|
86
|
+
if ((_a = resolvedLookup === null || resolvedLookup === void 0 ? void 0 : resolvedLookup.newCoding) === null || _a === void 0 ? void 0 : _a.display) {
|
|
87
|
+
option.valueCoding.display = resolvedLookup.newCoding.display;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return answerOptions;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
60
95
|
// Use this for an array of codings
|
|
61
96
|
export function addDisplayToCodingArray(codings, terminologyServerUrl) {
|
|
62
97
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addDisplayToCodings.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/addDisplayToCodings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"addDisplayToCodings.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/addDisplayToCodings.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ import { extractOtherExtensions } from './extractOtherExtensions';
|
|
|
31
31
|
import { resolveValueSets } from './resolveValueSets';
|
|
32
32
|
import { addAdditionalVariables } from './addAdditionalVariables';
|
|
33
33
|
import { getLinkIdTypeTuples } from '../qItem';
|
|
34
|
-
import { addDisplayToProcessedCodings } from './addDisplayToCodings';
|
|
34
|
+
import { addDisplayToAnswerOptions, addDisplayToProcessedCodings } from './addDisplayToCodings';
|
|
35
35
|
export function createQuestionnaireModel(questionnaire, additionalVariables, terminologyServerUrl) {
|
|
36
36
|
return __awaiter(this, void 0, void 0, function* () {
|
|
37
37
|
if (!questionnaire.item) {
|
|
@@ -47,7 +47,7 @@ export function createQuestionnaireModel(questionnaire, additionalVariables, ter
|
|
|
47
47
|
let processedValueSetCodings = extractContainedValueSetsResult.processedValueSetCodings;
|
|
48
48
|
const processedValueSetUrls = extractContainedValueSetsResult.processedValueSetUrls;
|
|
49
49
|
const extractOtherExtensionsResult = extractOtherExtensions(questionnaire, variables, valueSetPromises, terminologyServerUrl);
|
|
50
|
-
const { enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions } = extractOtherExtensionsResult;
|
|
50
|
+
const { enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, answerOptions } = extractOtherExtensionsResult;
|
|
51
51
|
variables = extractOtherExtensionsResult.variables;
|
|
52
52
|
valueSetPromises = extractOtherExtensionsResult.valueSetPromises;
|
|
53
53
|
const resolveValueSetsResult = yield resolveValueSets(variables, valueSetPromises, processedValueSetCodings, terminologyServerUrl);
|
|
@@ -55,6 +55,8 @@ export function createQuestionnaireModel(questionnaire, additionalVariables, ter
|
|
|
55
55
|
processedValueSetCodings = resolveValueSetsResult.processedValueSetCodings;
|
|
56
56
|
// In processedCodings, add display values to codings lacking them
|
|
57
57
|
processedValueSetCodings = yield addDisplayToProcessedCodings(processedValueSetCodings, terminologyServerUrl);
|
|
58
|
+
// In answerOptions, add display values to codings lacking them
|
|
59
|
+
const completeAnswerOptions = yield addDisplayToAnswerOptions(answerOptions, terminologyServerUrl);
|
|
58
60
|
return {
|
|
59
61
|
itemTypes,
|
|
60
62
|
tabs,
|
|
@@ -64,6 +66,7 @@ export function createQuestionnaireModel(questionnaire, additionalVariables, ter
|
|
|
64
66
|
enableWhenExpressions,
|
|
65
67
|
calculatedExpressions,
|
|
66
68
|
answerExpressions,
|
|
69
|
+
answerOptions: completeAnswerOptions,
|
|
67
70
|
processedValueSetCodings,
|
|
68
71
|
processedValueSetUrls,
|
|
69
72
|
fhirPathContext: {}
|
|
@@ -79,6 +82,7 @@ function createEmptyModel() {
|
|
|
79
82
|
calculatedExpressions: {},
|
|
80
83
|
enableWhenExpressions: { singleExpressions: {}, repeatExpressions: {} },
|
|
81
84
|
answerExpressions: {},
|
|
85
|
+
answerOptions: {},
|
|
82
86
|
enableWhenItems: { singleItems: {}, repeatItems: {} },
|
|
83
87
|
processedValueSetCodings: {},
|
|
84
88
|
processedValueSetUrls: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAMH,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"createQuestionaireModel.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/createQuestionaireModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Questionnaire, QuestionnaireItem, QuestionnaireItemEnableWhen } from 'fhir/r4';
|
|
1
|
+
import type { Questionnaire, QuestionnaireItem, QuestionnaireItemAnswerOption, QuestionnaireItemEnableWhen } from 'fhir/r4';
|
|
2
2
|
import type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';
|
|
3
3
|
import type { EnableWhenExpressions, EnableWhenItems, EnableWhenRepeatItemProperties, EnableWhenSingleItemProperties } from '../../interfaces/enableWhen.interface';
|
|
4
4
|
import type { AnswerExpression } from '../../interfaces/answerExpression.interface';
|
|
@@ -11,6 +11,7 @@ interface ReturnParamsRecursive {
|
|
|
11
11
|
calculatedExpressions: Record<string, CalculatedExpression[]>;
|
|
12
12
|
answerExpressions: Record<string, AnswerExpression>;
|
|
13
13
|
valueSetPromises: Record<string, ValueSetPromise>;
|
|
14
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
14
15
|
}
|
|
15
16
|
export declare function extractOtherExtensions(questionnaire: Questionnaire, variables: Variables, valueSetPromises: Record<string, ValueSetPromise>, terminologyServerUrl: string): ReturnParamsRecursive;
|
|
16
17
|
/**
|
|
@@ -30,6 +30,7 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
30
30
|
};
|
|
31
31
|
const calculatedExpressions = {};
|
|
32
32
|
const answerExpressions = {};
|
|
33
|
+
const answerOptions = {};
|
|
33
34
|
if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
34
35
|
return {
|
|
35
36
|
variables: variables,
|
|
@@ -40,6 +41,7 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
40
41
|
},
|
|
41
42
|
calculatedExpressions: {},
|
|
42
43
|
answerExpressions: {},
|
|
44
|
+
answerOptions: {},
|
|
43
45
|
valueSetPromises: valueSetPromises
|
|
44
46
|
};
|
|
45
47
|
}
|
|
@@ -53,6 +55,7 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
53
55
|
enableWhenExpressions,
|
|
54
56
|
calculatedExpressions,
|
|
55
57
|
answerExpressions,
|
|
58
|
+
answerOptions,
|
|
56
59
|
valueSetPromises,
|
|
57
60
|
defaultTerminologyServerUrl: terminologyServerUrl,
|
|
58
61
|
parentRepeatGroupLinkId: isRepeatGroup ? topLevelItem.linkId : undefined
|
|
@@ -64,12 +67,13 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
64
67
|
enableWhenExpressions,
|
|
65
68
|
calculatedExpressions,
|
|
66
69
|
answerExpressions,
|
|
70
|
+
answerOptions,
|
|
67
71
|
valueSetPromises
|
|
68
72
|
};
|
|
69
73
|
}
|
|
70
74
|
function extractExtensionsFromItemRecursive(params) {
|
|
71
|
-
var _a;
|
|
72
|
-
const { questionnaire, item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, valueSetPromises, defaultTerminologyServerUrl, parentRepeatGroupLinkId } = params;
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const { questionnaire, item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, answerExpressions, answerOptions, valueSetPromises, defaultTerminologyServerUrl, parentRepeatGroupLinkId } = params;
|
|
73
77
|
const items = item.item;
|
|
74
78
|
const isRepeatGroup = !!item.repeats && item.type === 'group';
|
|
75
79
|
if (items && items.length > 0) {
|
|
@@ -115,10 +119,15 @@ function extractExtensionsFromItemRecursive(params) {
|
|
|
115
119
|
expression: `${answerExpression.expression}`
|
|
116
120
|
};
|
|
117
121
|
}
|
|
122
|
+
// Get answerOptions
|
|
123
|
+
const options = (_a = item.answerOption) !== null && _a !== void 0 ? _a : null;
|
|
124
|
+
if (options) {
|
|
125
|
+
answerOptions[item.linkId] = options;
|
|
126
|
+
}
|
|
118
127
|
const valueSetUrl = item.answerValueSet;
|
|
119
128
|
if (valueSetUrl) {
|
|
120
129
|
if (!valueSetPromises[valueSetUrl] && !valueSetUrl.startsWith('#')) {
|
|
121
|
-
const terminologyServerUrl = (
|
|
130
|
+
const terminologyServerUrl = (_b = getTerminologyServerUrl(item)) !== null && _b !== void 0 ? _b : defaultTerminologyServerUrl;
|
|
122
131
|
valueSetPromises[valueSetUrl] = {
|
|
123
132
|
promise: getValueSetPromise(valueSetUrl, terminologyServerUrl)
|
|
124
133
|
};
|
|
@@ -140,6 +149,7 @@ function extractExtensionsFromItemRecursive(params) {
|
|
|
140
149
|
enableWhenExpressions,
|
|
141
150
|
calculatedExpressions,
|
|
142
151
|
answerExpressions,
|
|
152
|
+
answerOptions,
|
|
143
153
|
valueSetPromises
|
|
144
154
|
};
|
|
145
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAsBH,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,0CAA0C,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,2BAA2B,CAAC;AAYnC,MAAM,UAAU,sBAAsB,CACpC,aAA4B,EAC5B,SAAoB,EACpB,gBAAiD,EACjD,oBAA4B;IAE5B,MAAM,eAAe,GAAoB,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC9E,MAAM,qBAAqB,GAA0B;QACnD,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,EAAE;KACtB,CAAC;IACF,MAAM,qBAAqB,GAA2C,EAAE,CAAC;IACzE,MAAM,iBAAiB,GAAqC,EAAE,CAAC;IAC/D,MAAM,aAAa,GAAoD,EAAE,CAAC;IAE1E,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1D,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,eAAe,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;YACrD,qBAAqB,EAAE;gBACrB,iBAAiB,EAAE,EAAE;gBACrB,iBAAiB,EAAE,EAAE;aACtB;YACD,qBAAqB,EAAE,EAAE;YACzB,iBAAiB,EAAE,EAAE;YACrB,aAAa,EAAE,EAAE;YACjB,gBAAgB,EAAE,gBAAgB;SACnC,CAAC;KACH;IAED,KAAK,MAAM,YAAY,IAAI,aAAa,CAAC,IAAI,EAAE;QAC7C,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK,OAAO,CAAC;QAC9E,kCAAkC,CAAC;YACjC,aAAa;YACb,IAAI,EAAE,YAAY;YAClB,SAAS;YACT,eAAe;YACf,qBAAqB;YACrB,qBAAqB;YACrB,iBAAiB;YACjB,aAAa;YACb,gBAAgB;YAChB,2BAA2B,EAAE,oBAAoB;YACjD,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC,CAAC;KACJ;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB;QACjB,aAAa;QACb,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAgBD,SAAS,kCAAkC,CACzC,MAAgD;;IAEhD,MAAM,EACJ,aAAa,EACb,IAAI,EACJ,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,2BAA2B,EAC3B,uBAAuB,EACxB,GAAG,MAAM,CAAC;IAEX,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC;IAC9D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7B,4CAA4C;QAC5C,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE;YAC7B,kCAAkC,iCAC7B,MAAM,KACT,IAAI,EAAE,SAAS,EACf,uBAAuB,EAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,IAC9E,CAAC;SACJ;KACF;IAED,uGAAuG;IACvG,MAAM,mCAAmC,GAAG,kCAAkC,CAC5E,IAAI,EACJ,aAAa,EACb,uBAAuB,CACxB,CAAC;IACF,IAAI,mCAAmC,EAAE;QACvC,MAAM,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,GAAG,mCAAmC,CAAC;QAC7F,IAAI,kBAAkB,KAAK,QAAQ,EAAE;YACnC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,wBAA0D,CAAC;SAC9D;aAAM,IAAI,kBAAkB,KAAK,QAAQ,EAAE;YAC1C,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;gBACtC,wBAA0D,CAAC;SAC9D;KACF;IAED,MAAM,gCAAgC,GAAG,8BAA8B,CACrE,IAAI,EACJ,aAAa,EACb,uBAAuB,CACxB,CAAC;IACF,IAAI,gCAAgC,EAAE;QACpC,MAAM,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,GAAG,gCAAgC,CAAC;QAE5F,IAAI,wBAAwB,KAAK,QAAQ,EAAE;YACzC,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClD,oBAAkD,CAAC;SACtD;aAAM,IAAI,wBAAwB,KAAK,QAAQ,EAAE;YAChD,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClD,oBAAkD,CAAC;SACtD;KACF;IAED,4BAA4B;IAC5B,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnE,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1C,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,2BAA2B,CAAC;KAClE;IAED,wBAAwB;IACxB,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,gBAAgB,EAAE;QACpB,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;YAC/B,UAAU,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE;SAC7C,CAAC;KACH;IAED,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAA,IAAI,CAAC,YAAY,mCAAI,IAAI,CAAC;IAC1C,IAAI,OAAO,EAAE;QACX,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;KACtC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;IACxC,IAAI,WAAW,EAAE;QACf,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAClE,MAAM,oBAAoB,GAAG,MAAA,uBAAuB,CAAC,IAAI,CAAC,mCAAI,2BAA2B,CAAC;YAC1F,gBAAgB,CAAC,WAAW,CAAC,GAAG;gBAC9B,OAAO,EAAE,kBAAkB,CAAC,WAAW,EAAE,oBAAoB,CAAC;aAC/D,CAAC;SACH;KACF;IAED,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhF,KAAK,MAAM,UAAU,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC/D,IAAI,UAAU,CAAC,IAAI,EAAE;gBACnB,SAAS,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG;oBAC/C,eAAe,EAAE,UAAU;iBAC5B,CAAC;aACH;SACF;KACF;IAED,OAAO;QACL,SAAS;QACT,eAAe;QACf,qBAAqB;QACrB,qBAAqB;QACrB,iBAAiB;QACjB,aAAa;QACb,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kCAAkC,CAChD,KAAwB,EACxB,aAA4B,EAC5B,YAAqB;IAKrB,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IAED,0FAA0F;IAC1F,IAAI,YAAY,EAAE;QAChB,MAAM,8BAA8B,GAAG,wCAAwC,CAC7E,KAAK,EACL,UAAU,EACV,aAAa,EACb,YAAY,CACb,CAAC;QAEF,IAAI,8BAA8B,EAAE;YAClC,OAAO;gBACL,kBAAkB,EAAE,QAAQ;gBAC5B,wBAAwB,EAAE,8BAA8B;aACzD,CAAC;SACH;KACF;IAED,oIAAoI;IACpI,MAAM,8BAA8B,GAAG,wCAAwC,CAC7E,KAAK,EACL,UAAU,CACX,CAAC;IACF,OAAO;QACL,kBAAkB,EAAE,QAAQ;QAC5B,wBAAwB,EAAE,8BAA8B;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wCAAwC,CACtD,KAAwB,EACxB,UAAyC,EACzC,aAA4B,EAC5B,YAAoB;IAEpB,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,EAAqC,EAAE;QAC3F,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,aAAa,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACtF,8DAA8D;QAC9D,IAAI,YAAY,MAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,CAAA,EAAE;YAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;SACvF;QAED,2EAA2E;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,8CAA8C;IAC9C,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE;QACjE,OAAO,IAAI,CAAC;KACb;IAED,MAAM,WAAW,GAAG,mBAAmD,CAAC;IACxE,MAAM,8BAA8B,GAAG;QACrC,MAAM,EAAE,WAA2C;QACnD,YAAY,EAAE,YAAY;QAC1B,cAAc,EAAE,CAAC,KAAK,CAAC;QACvB,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;IAEF,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,wBAAwB,CACzE,8BAA8B,EAC9B,CAAC,CACF,CAAC;IAEF,OAAO,8BAA8B,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wCAAwC,CACtD,KAAwB,EACxB,UAAyC;IAEzC,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,UAAU,EAA8B,EAAE;YAChE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;QACpC,CAAC,CAAC;QACF,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAC3C,oBAAgC,EAChC,aAA4B,EAC5B,YAAoB;IAEpB,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,IAAI,CAAC;KACb;IAED,wCAAwC;IACxC,MAAM,YAAY,GAAG,yBAAyB,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAChE,CAAC;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEhE,wFAAwF;IACxF,4FAA4F;IAC5F,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IAClF,IAAI,YAAY,MAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,CAAA,EAAE;QAC7C,OAAO,oBAAoB,CAAC;KAC7B;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,8BAA8B,CACrC,KAAwB,EACxB,aAA4B,EAC5B,YAAqB;IAKrB,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC,oBAAoB,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAED,0FAA0F;IAC1F,IAAI,YAAY,EAAE;QAChB,MAAM,gBAAgB,GAAG,oCAAoC,CAC3D,oBAAoB,EACpB,aAAa,EACb,YAAY,CACb,CAAC;QAEF,IAAI,gBAAgB,EAAE;YACpB,MAAM,0BAA0B,GAAG;gBACjC,UAAU,EAAE,GAAG,gBAAgB,CAAC,UAAU,EAAE;gBAC5C,YAAY,EAAE,YAAY;gBAC1B,cAAc,EAAE,CAAC,KAAK,CAAC;aACxB,CAAC;YAEF,MAAM,EAAE,SAAS,EAAE,GAAG,0CAA0C,CAC9D,KAAK,CAAC,MAAM,EACZ,EAAE,QAAQ,EAAE,SAAS,CAAC,aAAa,CAAC,EAAE,EACtC,0BAA0B,EAC1B,0BAA0B,CAAC,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,EAClE,CAAC,CACF,CAAC;YAEF,IAAI,OAAO,SAAS,KAAK,SAAS,EAAE;gBAClC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;aAC1D;YAED,OAAO;gBACL,wBAAwB,EAAE,QAAQ;gBAClC,oBAAoB,EAAE,0BAA0B;aACjD,CAAC;SACH;KACF;IAED,OAAO;QACL,wBAAwB,EAAE,QAAQ;QAClC,oBAAoB,EAAE;YACpB,UAAU,EAAE,GAAG,oBAAoB,CAAC,UAAU,EAAE;SACjD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Questionnaire, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
2
|
+
/**
|
|
3
|
+
* Filter x-fhir-query variables from questionnaire's extensions needed for population
|
|
4
|
+
*
|
|
5
|
+
* @author Sean Fong
|
|
6
|
+
*/
|
|
7
|
+
export declare function insertCompleteAnswerOptionsIntoQuestionnaire(questionnaire: Questionnaire, completeAnswerOptions: Record<string, QuestionnaireItemAnswerOption[]>): Questionnaire;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Filter x-fhir-query variables from questionnaire's extensions needed for population
|
|
19
|
+
*
|
|
20
|
+
* @author Sean Fong
|
|
21
|
+
*/
|
|
22
|
+
export function insertCompleteAnswerOptionsIntoQuestionnaire(questionnaire, completeAnswerOptions) {
|
|
23
|
+
if (questionnaire.item && questionnaire.item.length > 0) {
|
|
24
|
+
for (const qItem of questionnaire.item) {
|
|
25
|
+
insertCompleteAnswerOptionsRecursive(qItem, completeAnswerOptions);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return questionnaire;
|
|
29
|
+
}
|
|
30
|
+
function insertCompleteAnswerOptionsRecursive(qItem, completeAnswerOptions) {
|
|
31
|
+
if (qItem.item) {
|
|
32
|
+
for (const childItem of qItem.item) {
|
|
33
|
+
insertCompleteAnswerOptionsRecursive(childItem, completeAnswerOptions);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (qItem.answerOption) {
|
|
37
|
+
const options = completeAnswerOptions[qItem.linkId];
|
|
38
|
+
if (options) {
|
|
39
|
+
qItem.answerOption = options;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=insertAnswerOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertAnswerOptions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/insertAnswerOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH;;;;GAIG;AACH,MAAM,UAAU,4CAA4C,CAC1D,aAA4B,EAC5B,qBAAsE;IAEtE,IAAI,aAAa,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACvD,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,IAAI,EAAE;YACtC,oCAAoC,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;SACpE;KACF;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAwB,EACxB,qBAAsE;IAEtE,IAAI,KAAK,CAAC,IAAI,EAAE;QACd,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE;YAClC,oCAAoC,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;SACxE;KACF;IAED,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,OAAO,EAAE;YACX,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC;SAC9B;KACF;IAED,OAAO;AACT,CAAC"}
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@ import type { LaunchContext } from './populate.interface';
|
|
|
21
21
|
import type { EnableWhenExpressions, EnableWhenItems } from './enableWhen.interface';
|
|
22
22
|
import type { CalculatedExpression } from './calculatedExpression.interface';
|
|
23
23
|
import type { AnswerExpression } from './answerExpression.interface';
|
|
24
|
-
import type { Coding } from 'fhir/r4';
|
|
24
|
+
import type { Coding, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
25
25
|
|
|
26
26
|
export interface QuestionnaireModel {
|
|
27
27
|
itemTypes: Record<string, string>;
|
|
@@ -32,6 +32,7 @@ export interface QuestionnaireModel {
|
|
|
32
32
|
enableWhenExpressions: EnableWhenExpressions;
|
|
33
33
|
calculatedExpressions: Record<string, CalculatedExpression[]>;
|
|
34
34
|
answerExpressions: Record<string, AnswerExpression>;
|
|
35
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
35
36
|
processedValueSetCodings: Record<string, Coding[]>;
|
|
36
37
|
processedValueSetUrls: Record<string, string>;
|
|
37
38
|
fhirPathContext: Record<string, any>;
|
|
@@ -46,6 +46,7 @@ import { createSelectors } from './selector';
|
|
|
46
46
|
import { mutateRepeatEnableWhenExpressionInstances } from '../utils/enableWhenExpression';
|
|
47
47
|
import { questionnaireResponseStore } from './questionnaireResponseStore';
|
|
48
48
|
import { createQuestionnaireResponseItemMap } from '../utils/questionnaireResponseStoreUtils/updatableResponseItems';
|
|
49
|
+
import { insertCompleteAnswerOptionsIntoQuestionnaire } from '../utils/questionnaireStoreUtils/insertAnswerOptions';
|
|
49
50
|
|
|
50
51
|
/**
|
|
51
52
|
* QuestionnaireStore properties and methods
|
|
@@ -180,6 +181,13 @@ export const questionnaireStore = createStore<QuestionnaireStoreType>()((set, ge
|
|
|
180
181
|
terminologyServerUrl
|
|
181
182
|
);
|
|
182
183
|
|
|
184
|
+
// Insert answerOptions with displays into questionnaire
|
|
185
|
+
questionnaire = insertCompleteAnswerOptionsIntoQuestionnaire(
|
|
186
|
+
questionnaire,
|
|
187
|
+
questionnaireModel.answerOptions
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
// Initialise form with questionnaire response and properties in questionnaire model
|
|
183
191
|
const {
|
|
184
192
|
initialEnableWhenItems,
|
|
185
193
|
initialEnableWhenLinkedQuestions,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import type { Coding } from 'fhir/r4';
|
|
18
|
+
import type { Coding, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
19
19
|
import type { CodeSystemLookupPromise } from '../../interfaces/lookup.interface';
|
|
20
20
|
import * as FHIR from 'fhirclient';
|
|
21
21
|
|
|
@@ -56,6 +56,45 @@ export async function addDisplayToProcessedCodings(
|
|
|
56
56
|
return processedCodings;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
+
// Use this for a Record<linkId, answerOption[]>
|
|
60
|
+
export async function addDisplayToAnswerOptions(
|
|
61
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>,
|
|
62
|
+
terminologyServerUrl: string
|
|
63
|
+
): Promise<Record<string, QuestionnaireItemAnswerOption[]>> {
|
|
64
|
+
// Store code system lookup promises for codings without displays
|
|
65
|
+
const codeSystemLookupPromises: Record<string, CodeSystemLookupPromise> = {};
|
|
66
|
+
for (const key in answerOptions) {
|
|
67
|
+
const options = answerOptions[key];
|
|
68
|
+
for (const option of options) {
|
|
69
|
+
if (option.valueCoding && !option.valueCoding.display) {
|
|
70
|
+
const query = `system=${option.valueCoding.system}&code=${option.valueCoding.code}`;
|
|
71
|
+
codeSystemLookupPromises[query] = {
|
|
72
|
+
promise: getCodeSystemLookupPromise(query, terminologyServerUrl),
|
|
73
|
+
oldCoding: option.valueCoding
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Resolves lookup promises in one go and assign newCodings to processedCodings
|
|
80
|
+
const resolvedCodeSystemLookupPromises = await resolveLookupPromises(codeSystemLookupPromises);
|
|
81
|
+
for (const key in answerOptions) {
|
|
82
|
+
const options = answerOptions[key];
|
|
83
|
+
|
|
84
|
+
for (const option of options) {
|
|
85
|
+
if (option.valueCoding) {
|
|
86
|
+
const lookUpKey = `system=${option.valueCoding.system}&code=${option.valueCoding.code}`;
|
|
87
|
+
const resolvedLookup = resolvedCodeSystemLookupPromises[lookUpKey];
|
|
88
|
+
if (resolvedLookup?.newCoding?.display) {
|
|
89
|
+
option.valueCoding.display = resolvedLookup.newCoding.display;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return answerOptions;
|
|
96
|
+
}
|
|
97
|
+
|
|
59
98
|
// Use this for an array of codings
|
|
60
99
|
export async function addDisplayToCodingArray(
|
|
61
100
|
codings: Coding[],
|
|
@@ -28,7 +28,7 @@ import type { Variables } from '../../interfaces/variables.interface';
|
|
|
28
28
|
import { resolveValueSets } from './resolveValueSets';
|
|
29
29
|
import { addAdditionalVariables } from './addAdditionalVariables';
|
|
30
30
|
import { getLinkIdTypeTuples } from '../qItem';
|
|
31
|
-
import { addDisplayToProcessedCodings } from './addDisplayToCodings';
|
|
31
|
+
import { addDisplayToAnswerOptions, addDisplayToProcessedCodings } from './addDisplayToCodings';
|
|
32
32
|
|
|
33
33
|
export async function createQuestionnaireModel(
|
|
34
34
|
questionnaire: Questionnaire,
|
|
@@ -62,8 +62,13 @@ export async function createQuestionnaireModel(
|
|
|
62
62
|
terminologyServerUrl
|
|
63
63
|
);
|
|
64
64
|
|
|
65
|
-
const {
|
|
66
|
-
|
|
65
|
+
const {
|
|
66
|
+
enableWhenItems,
|
|
67
|
+
enableWhenExpressions,
|
|
68
|
+
calculatedExpressions,
|
|
69
|
+
answerExpressions,
|
|
70
|
+
answerOptions
|
|
71
|
+
} = extractOtherExtensionsResult;
|
|
67
72
|
variables = extractOtherExtensionsResult.variables;
|
|
68
73
|
valueSetPromises = extractOtherExtensionsResult.valueSetPromises;
|
|
69
74
|
|
|
@@ -83,6 +88,12 @@ export async function createQuestionnaireModel(
|
|
|
83
88
|
terminologyServerUrl
|
|
84
89
|
);
|
|
85
90
|
|
|
91
|
+
// In answerOptions, add display values to codings lacking them
|
|
92
|
+
const completeAnswerOptions = await addDisplayToAnswerOptions(
|
|
93
|
+
answerOptions,
|
|
94
|
+
terminologyServerUrl
|
|
95
|
+
);
|
|
96
|
+
|
|
86
97
|
return {
|
|
87
98
|
itemTypes,
|
|
88
99
|
tabs,
|
|
@@ -92,6 +103,7 @@ export async function createQuestionnaireModel(
|
|
|
92
103
|
enableWhenExpressions,
|
|
93
104
|
calculatedExpressions,
|
|
94
105
|
answerExpressions,
|
|
106
|
+
answerOptions: completeAnswerOptions,
|
|
95
107
|
processedValueSetCodings,
|
|
96
108
|
processedValueSetUrls,
|
|
97
109
|
fhirPathContext: {}
|
|
@@ -107,6 +119,7 @@ function createEmptyModel(): QuestionnaireModel {
|
|
|
107
119
|
calculatedExpressions: {},
|
|
108
120
|
enableWhenExpressions: { singleExpressions: {}, repeatExpressions: {} },
|
|
109
121
|
answerExpressions: {},
|
|
122
|
+
answerOptions: {},
|
|
110
123
|
enableWhenItems: { singleItems: {}, repeatItems: {} },
|
|
111
124
|
processedValueSetCodings: {},
|
|
112
125
|
processedValueSetUrls: {},
|
|
@@ -19,6 +19,7 @@ import type {
|
|
|
19
19
|
Expression,
|
|
20
20
|
Questionnaire,
|
|
21
21
|
QuestionnaireItem,
|
|
22
|
+
QuestionnaireItemAnswerOption,
|
|
22
23
|
QuestionnaireItemEnableWhen
|
|
23
24
|
} from 'fhir/r4';
|
|
24
25
|
import type { CalculatedExpression } from '../../interfaces/calculatedExpression.interface';
|
|
@@ -55,6 +56,7 @@ interface ReturnParamsRecursive {
|
|
|
55
56
|
calculatedExpressions: Record<string, CalculatedExpression[]>;
|
|
56
57
|
answerExpressions: Record<string, AnswerExpression>;
|
|
57
58
|
valueSetPromises: Record<string, ValueSetPromise>;
|
|
59
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
58
60
|
}
|
|
59
61
|
|
|
60
62
|
export function extractOtherExtensions(
|
|
@@ -70,6 +72,7 @@ export function extractOtherExtensions(
|
|
|
70
72
|
};
|
|
71
73
|
const calculatedExpressions: Record<string, CalculatedExpression[]> = {};
|
|
72
74
|
const answerExpressions: Record<string, AnswerExpression> = {};
|
|
75
|
+
const answerOptions: Record<string, QuestionnaireItemAnswerOption[]> = {};
|
|
73
76
|
|
|
74
77
|
if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
75
78
|
return {
|
|
@@ -81,6 +84,7 @@ export function extractOtherExtensions(
|
|
|
81
84
|
},
|
|
82
85
|
calculatedExpressions: {},
|
|
83
86
|
answerExpressions: {},
|
|
87
|
+
answerOptions: {},
|
|
84
88
|
valueSetPromises: valueSetPromises
|
|
85
89
|
};
|
|
86
90
|
}
|
|
@@ -95,6 +99,7 @@ export function extractOtherExtensions(
|
|
|
95
99
|
enableWhenExpressions,
|
|
96
100
|
calculatedExpressions,
|
|
97
101
|
answerExpressions,
|
|
102
|
+
answerOptions,
|
|
98
103
|
valueSetPromises,
|
|
99
104
|
defaultTerminologyServerUrl: terminologyServerUrl,
|
|
100
105
|
parentRepeatGroupLinkId: isRepeatGroup ? topLevelItem.linkId : undefined
|
|
@@ -107,6 +112,7 @@ export function extractOtherExtensions(
|
|
|
107
112
|
enableWhenExpressions,
|
|
108
113
|
calculatedExpressions,
|
|
109
114
|
answerExpressions,
|
|
115
|
+
answerOptions,
|
|
110
116
|
valueSetPromises
|
|
111
117
|
};
|
|
112
118
|
}
|
|
@@ -119,6 +125,7 @@ interface extractExtensionsFromItemRecursiveParams {
|
|
|
119
125
|
enableWhenExpressions: EnableWhenExpressions;
|
|
120
126
|
calculatedExpressions: Record<string, CalculatedExpression[]>;
|
|
121
127
|
answerExpressions: Record<string, AnswerExpression>;
|
|
128
|
+
answerOptions: Record<string, QuestionnaireItemAnswerOption[]>;
|
|
122
129
|
valueSetPromises: Record<string, ValueSetPromise>;
|
|
123
130
|
defaultTerminologyServerUrl: string;
|
|
124
131
|
parentRepeatGroupLinkId?: string;
|
|
@@ -135,6 +142,7 @@ function extractExtensionsFromItemRecursive(
|
|
|
135
142
|
enableWhenExpressions,
|
|
136
143
|
calculatedExpressions,
|
|
137
144
|
answerExpressions,
|
|
145
|
+
answerOptions,
|
|
138
146
|
valueSetPromises,
|
|
139
147
|
defaultTerminologyServerUrl,
|
|
140
148
|
parentRepeatGroupLinkId
|
|
@@ -201,6 +209,12 @@ function extractExtensionsFromItemRecursive(
|
|
|
201
209
|
};
|
|
202
210
|
}
|
|
203
211
|
|
|
212
|
+
// Get answerOptions
|
|
213
|
+
const options = item.answerOption ?? null;
|
|
214
|
+
if (options) {
|
|
215
|
+
answerOptions[item.linkId] = options;
|
|
216
|
+
}
|
|
217
|
+
|
|
204
218
|
const valueSetUrl = item.answerValueSet;
|
|
205
219
|
if (valueSetUrl) {
|
|
206
220
|
if (!valueSetPromises[valueSetUrl] && !valueSetUrl.startsWith('#')) {
|
|
@@ -229,6 +243,7 @@ function extractExtensionsFromItemRecursive(
|
|
|
229
243
|
enableWhenExpressions,
|
|
230
244
|
calculatedExpressions,
|
|
231
245
|
answerExpressions,
|
|
246
|
+
answerOptions,
|
|
232
247
|
valueSetPromises
|
|
233
248
|
};
|
|
234
249
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { Questionnaire, QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Filter x-fhir-query variables from questionnaire's extensions needed for population
|
|
22
|
+
*
|
|
23
|
+
* @author Sean Fong
|
|
24
|
+
*/
|
|
25
|
+
export function insertCompleteAnswerOptionsIntoQuestionnaire(
|
|
26
|
+
questionnaire: Questionnaire,
|
|
27
|
+
completeAnswerOptions: Record<string, QuestionnaireItemAnswerOption[]>
|
|
28
|
+
): Questionnaire {
|
|
29
|
+
if (questionnaire.item && questionnaire.item.length > 0) {
|
|
30
|
+
for (const qItem of questionnaire.item) {
|
|
31
|
+
insertCompleteAnswerOptionsRecursive(qItem, completeAnswerOptions);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return questionnaire;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function insertCompleteAnswerOptionsRecursive(
|
|
39
|
+
qItem: QuestionnaireItem,
|
|
40
|
+
completeAnswerOptions: Record<string, QuestionnaireItemAnswerOption[]>
|
|
41
|
+
) {
|
|
42
|
+
if (qItem.item) {
|
|
43
|
+
for (const childItem of qItem.item) {
|
|
44
|
+
insertCompleteAnswerOptionsRecursive(childItem, completeAnswerOptions);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (qItem.answerOption) {
|
|
49
|
+
const options = completeAnswerOptions[qItem.linkId];
|
|
50
|
+
if (options) {
|
|
51
|
+
qItem.answerOption = options;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return;
|
|
56
|
+
}
|