sdc-qrf 0.3.34 → 0.3.36

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.
@@ -1 +1 @@
1
- {"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,CAiFpF"}
1
+ {"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE1F,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGhF,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,gBAAgB,GAAG,iBAAiB,CAyGpF"}
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const constants_1 = require("../../constants");
6
6
  function processExtensions(questionnaire) {
7
7
  var _a, _b, _c;
8
- const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom } = questionnaire, fhirQuestionnaire = tslib_1.__rest(questionnaire, ["launchContext", "mapping", "sourceQueries", "targetStructureMap", "assembledFrom"]);
8
+ const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom, assembleContext, itemPopulationContext } = questionnaire, fhirQuestionnaire = tslib_1.__rest(questionnaire, ["launchContext", "mapping", "sourceQueries", "targetStructureMap", "assembledFrom", "assembleContext", "itemPopulationContext"]);
9
9
  let extensions = [];
10
10
  if (launchContext) {
11
11
  for (const launchContextItem of launchContext) {
@@ -62,6 +62,18 @@ function processExtensions(questionnaire) {
62
62
  valueCanonical: assembledFrom,
63
63
  });
64
64
  }
65
+ if (assembleContext) {
66
+ extensions = extensions.concat(assembleContext.map((assembleContextItem) => ({
67
+ url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
68
+ valueString: assembleContextItem,
69
+ })));
70
+ }
71
+ if (itemPopulationContext) {
72
+ extensions.push({
73
+ url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
74
+ valueExpression: itemPopulationContext,
75
+ });
76
+ }
65
77
  if (extensions.length) {
66
78
  fhirQuestionnaire.extension = ((_c = fhirQuestionnaire.extension) !== null && _c !== void 0 ? _c : []).concat(extensions);
67
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":";;AAKA,8CAiFC;;AAnFD,+CAAgH;AAEhH,SAAgB,iBAAiB,CAAC,aAA+B;;IAC7D,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,KAC5E,aAAa,EADoE,iBAAiB,kBAClG,aAAa,EADX,oFAAkG,CACvF,CAAC;IAElB,IAAI,UAAU,GAAoB,EAAE,CAAC;IAErC,IAAI,aAAa,EAAE,CAAC;QAChB,KAAK,MAAM,iBAAiB,IAAI,aAAa,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;YACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC;YACxC,MAAM,WAAW,GAAG,iBAAiB,CAAC,WAAW,CAAC;YAClD,MAAM,sBAAsB,GAAoB;gBAC5C;oBACI,GAAG,EAAE,MAAM;oBACX,WAAW,EAAE,IAAI;iBACpB;aACJ,CAAC;YAEF,KAAK,MAAM,QAAQ,IAAI,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,EAAE,CAAC;gBACpC,sBAAsB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,sBAAsB,CAAC,IAAI,CAAC;oBACxB,GAAG,EAAE,aAAa;oBAClB,WAAW,EAAE,WAAW;iBAC3B,CAAC,CAAC;YACP,CAAC;YAED,UAAU,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,gFAAgF;gBACrF,SAAS,EAAE,sBAAsB;aACpC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,YAAY,GACd,CAAA,MAAA,MAAA,aAAa,CAAC,IAAI,0CAAE,OAAO,0CAAG,CAAC,CAAC,MAAK,yCAA6B;YAC9D,CAAC,CAAC,qCAAyB;YAC3B,CAAC,CAAC,+BAAmB,CAAC;QAC9B,UAAU,GAAG,UAAU,CAAC,MAAM,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChB,GAAG,EAAE,YAAY;YACjB,cAAc,EAAE;gBACZ,SAAS,EAAE,WAAW,CAAC,CAAC,EAAE,EAAE;aAC/B;SACJ,CAAC,CAAC,CACN,CAAC;IACN,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,UAAU,GAAG,UAAU,CAAC,MAAM,CAC1B,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,GAAG,EAAE,gFAAgF;YACrF,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;SACrD,CAAC,CAAC,CACN,CAAC;IACN,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACrB,UAAU,GAAG,UAAU,CAAC,MAAM,CAC1B,kBAAkB,CAAC,GAAG,CAAC,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,EAAE,qFAAqF;YAC1F,cAAc,EAAE,qBAAqB;SACxC,CAAC,CAAC,CACN,CAAC;IACN,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAChB,UAAU,CAAC,IAAI,CAAC;YACZ,GAAG,EAAE,gFAAgF;YACrF,cAAc,EAAE,aAAa;SAChC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACpB,iBAAiB,CAAC,SAAS,GAAG,CAAC,MAAA,iBAAiB,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,iBAAsC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processExtensions.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
1
+ import { Questionnaire as FHIRQuestionnaire, Expression as FHIRExpression } from 'fhir/r4b';
2
2
  export declare function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
3
3
  launchContext?: any[];
4
4
  mapping?: any[];
5
5
  sourceQueries?: any[];
6
6
  targetStructureMap?: any[];
7
7
  assembledFrom?: any;
8
+ assembleContext?: string[];
9
+ itemPopulationContext?: FHIRExpression;
8
10
  };
9
11
  export declare function processLaunchContext(fhirQuestionnaire: FHIRQuestionnaire): any[] | undefined;
10
12
  //# sourceMappingURL=processExtensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE9D,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG;IACrE,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,GAAG,CAAC;CACvB,CAcA;AAED,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,GAAG,EAAE,GAAG,SAAS,CA2C5F"}
1
+ {"version":3,"file":"processExtensions.d.ts","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5F,wBAAgB,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG;IACrE,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qBAAqB,CAAC,EAAE,cAAc,CAAC;CAC1C,CAkBA;AAED,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,GAAG,EAAE,GAAG,SAAS,CA2C5F"}
@@ -9,12 +9,16 @@ function processExtensions(fhirQuestionnaire) {
9
9
  const sourceQueries = processSourceQueries(fhirQuestionnaire);
10
10
  const targetStructureMap = processTargetStructureMap(fhirQuestionnaire);
11
11
  const assembledFrom = processAssembledFrom(fhirQuestionnaire);
12
+ const assembleContext = processAssembleContext(fhirQuestionnaire);
13
+ const itemPopulationContext = processItemPopulationContext(fhirQuestionnaire);
12
14
  return {
13
15
  launchContext: (launchContext === null || launchContext === void 0 ? void 0 : launchContext.length) ? launchContext : undefined,
14
16
  mapping: (mapping === null || mapping === void 0 ? void 0 : mapping.length) ? mapping : undefined,
15
17
  sourceQueries: (sourceQueries === null || sourceQueries === void 0 ? void 0 : sourceQueries.length) ? sourceQueries : undefined,
16
18
  targetStructureMap: (targetStructureMap === null || targetStructureMap === void 0 ? void 0 : targetStructureMap.length) ? targetStructureMap : undefined,
17
19
  assembledFrom: assembledFrom ? assembledFrom : undefined,
20
+ assembleContext: assembleContext.length ? assembleContext : undefined,
21
+ itemPopulationContext: itemPopulationContext ? itemPopulationContext : undefined,
18
22
  };
19
23
  }
20
24
  function processLaunchContext(fhirQuestionnaire) {
@@ -93,4 +97,17 @@ function processAssembledFrom(fhirQuestionnaire) {
93
97
  }
94
98
  return extension.valueCanonical;
95
99
  }
100
+ function processAssembleContext(fhirQuestionnaire) {
101
+ var _a;
102
+ const extensions = (_a = fhirQuestionnaire.extension) === null || _a === void 0 ? void 0 : _a.filter((ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext');
103
+ return (extensions !== null && extensions !== void 0 ? extensions : []).map((extension) => extension.valueString);
104
+ }
105
+ function processItemPopulationContext(fhirQuestionnaire) {
106
+ var _a;
107
+ const extension = (_a = fhirQuestionnaire.extension) === null || _a === void 0 ? void 0 : _a.find((ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext');
108
+ if (!extension) {
109
+ return undefined;
110
+ }
111
+ return extension.valueExpression;
112
+ }
96
113
  //# sourceMappingURL=processExtensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processExtensions.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processExtensions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sdc-qrf",
3
3
  "license": "MIT",
4
- "version": "0.3.34",
4
+ "version": "0.3.36",
5
5
  "scripts": {
6
6
  "test": "vitest --watch=false",
7
7
  "test:watch": "vitest --watch",
@@ -39,6 +39,7 @@ import fce_with_attachment_questionnaire from './resources/questionnaire_fce/wit
39
39
  import fce_mixed_fce_with_extensions from './resources/questionnaire_fce/mixed-fce-with-extensions.json';
40
40
  import fce_unknown_extensions from './resources/questionnaire_fce/unknown-extensions.json';
41
41
  import fce_occurs from './resources/questionnaire_fce/occurs.json';
42
+ import fce_assemble_context from './resources/questionnaire_fce/assemble_context.json';
42
43
  // fhir questionnaire
43
44
  import fhir_allergies from './resources/questionnaire_fhir/allergies.json';
44
45
  import fhir_beverages from './resources/questionnaire_fhir/beverages.json';
@@ -72,6 +73,7 @@ import fhir_with_attachment_questionnaire from './resources/questionnaire_fhir/w
72
73
  import fhir_mixed_fce_with_extensions from './resources/questionnaire_fhir/mixed-fce-with-extensions.json';
73
74
  import fhir_unknown_extensions from './resources/questionnaire_fhir/unknown-extensions.json';
74
75
  import fhir_occurs from './resources/questionnaire_fhir/occurs.json';
76
+ import fhir_assemble_context from './resources/questionnaire_fhir/assemble_context.json';
75
77
  // fce questionnaire response
76
78
  import fce_allergies_inprogress_qr from './resources/questionnaire_response_fce/allergies_inprogress.json';
77
79
  import fce_cardiology_qr from './resources/questionnaire_response_fce/cardiology.json';
@@ -145,6 +147,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
145
147
  // ['mixed-fce-with-extensions', fhir_mixed_fce_with_extensions, fce_mixed_fce_with_extensions],
146
148
  ['unknown-extensions', fhir_unknown_extensions, fce_unknown_extensions],
147
149
  ['occurs', fhir_occurs, fce_occurs],
150
+ ['assemble-context', fhir_assemble_context, fce_assemble_context],
148
151
  ])('Each FHIR Questionnaire should convert to FCE %s', async (_, fhir_questionnaire, fce_questionnaire) => {
149
152
  expect(toFirstClassExtension(fhir_questionnaire as FHIRQuestionnaire)).toStrictEqual(fce_questionnaire);
150
153
  });
@@ -186,6 +189,7 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
186
189
  ['mixed-fce-with-extensions', fce_mixed_fce_with_extensions, fhir_mixed_fce_with_extensions],
187
190
  ['unknown-extensions', fce_unknown_extensions, fhir_unknown_extensions],
188
191
  ['occurs', fce_occurs, fhir_occurs],
192
+ ['assemble-context', fce_assemble_context, fhir_assemble_context],
189
193
  ])('Each FCE Questionnaire should convert to FHIR %s', async (_, fce_questionnaire, fhir_questionnaire) => {
190
194
  expect(sortExtensionsList(fromFirstClassExtension(fce_questionnaire as FCEQuestionnaire))).toStrictEqual(
191
195
  sortExtensionsList(fhir_questionnaire),
@@ -0,0 +1,24 @@
1
+ {
2
+ "resourceType": "Questionnaire",
3
+ "id": "assemble_context",
4
+ "meta": {
5
+ "profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"]
6
+ },
7
+ "status": "active",
8
+ "assembledFrom": "assemble_context",
9
+ "assembleContext": ["prefix1", "prefix2"],
10
+ "itemPopulationContext": {
11
+ "language": "text/fhirpath",
12
+ "expression": "%LaunchPatient.name"
13
+ },
14
+ "item": [
15
+ {
16
+ "type": "string",
17
+ "linkId": "{{%prefix1}}test"
18
+ },
19
+ {
20
+ "type": "string",
21
+ "linkId": "{{%prefix2}}test"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "item": [
3
+ {
4
+ "type": "string",
5
+ "linkId": "{{%prefix1}}test"
6
+ },
7
+ {
8
+ "type": "string",
9
+ "linkId": "{{%prefix2}}test"
10
+ }
11
+ ],
12
+ "meta": {
13
+ "profile": ["https://emr-core.beda.software/StructureDefinition/fhir-emr-questionnaire"]
14
+ },
15
+ "extension": [
16
+ {
17
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembledFrom",
18
+ "valueCanonical": "assemble_context"
19
+ },
20
+ {
21
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext",
22
+ "valueString": "prefix1"
23
+ },
24
+ {
25
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext",
26
+ "valueString": "prefix2"
27
+ },
28
+ {
29
+ "url": "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext",
30
+ "valueExpression": {
31
+ "language": "text/fhirpath",
32
+ "expression": "%LaunchPatient.name"
33
+ }
34
+ }
35
+ ],
36
+ "status": "active",
37
+ "id": "assemble_context",
38
+ "resourceType": "Questionnaire"
39
+ }
@@ -4,8 +4,16 @@ import { Questionnaire as FCEQuestionnaire } from '@beda.software/aidbox-types';
4
4
  import { legacyMappingExtensionUrl, legacyQuestionnaireProfileUrl, mappingExtensionUrl } from '../../constants';
5
5
 
6
6
  export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestionnaire {
7
- const { launchContext, mapping, sourceQueries, targetStructureMap, assembledFrom, ...fhirQuestionnaire } =
8
- questionnaire;
7
+ const {
8
+ launchContext,
9
+ mapping,
10
+ sourceQueries,
11
+ targetStructureMap,
12
+ assembledFrom,
13
+ assembleContext,
14
+ itemPopulationContext,
15
+ ...fhirQuestionnaire
16
+ } = questionnaire;
9
17
 
10
18
  let extensions: FHIRExtension[] = [];
11
19
 
@@ -79,6 +87,22 @@ export function processExtensions(questionnaire: FCEQuestionnaire): FHIRQuestion
79
87
  });
80
88
  }
81
89
 
90
+ if (assembleContext) {
91
+ extensions = extensions.concat(
92
+ assembleContext.map((assembleContextItem) => ({
93
+ url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
94
+ valueString: assembleContextItem,
95
+ })),
96
+ );
97
+ }
98
+
99
+ if (itemPopulationContext) {
100
+ extensions.push({
101
+ url: 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
102
+ valueExpression: itemPopulationContext,
103
+ });
104
+ }
105
+
82
106
  if (extensions.length) {
83
107
  fhirQuestionnaire.extension = (fhirQuestionnaire.extension ?? []).concat(extensions);
84
108
  }
@@ -1,6 +1,6 @@
1
1
  import { canonical } from '@beda.software/aidbox-types';
2
2
  import { legacyMappingExtensionUrl, mappingExtensionUrl } from '../../constants';
3
- import { Questionnaire as FHIRQuestionnaire } from 'fhir/r4b';
3
+ import { Questionnaire as FHIRQuestionnaire, Expression as FHIRExpression } from 'fhir/r4b';
4
4
 
5
5
  export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
6
6
  launchContext?: any[];
@@ -8,12 +8,16 @@ export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
8
8
  sourceQueries?: any[];
9
9
  targetStructureMap?: any[];
10
10
  assembledFrom?: any;
11
+ assembleContext?: string[];
12
+ itemPopulationContext?: FHIRExpression;
11
13
  } {
12
14
  const launchContext = processLaunchContext(fhirQuestionnaire);
13
15
  const mapping = processMapping(fhirQuestionnaire);
14
16
  const sourceQueries = processSourceQueries(fhirQuestionnaire);
15
17
  const targetStructureMap = processTargetStructureMap(fhirQuestionnaire);
16
18
  const assembledFrom = processAssembledFrom(fhirQuestionnaire);
19
+ const assembleContext = processAssembleContext(fhirQuestionnaire);
20
+ const itemPopulationContext = processItemPopulationContext(fhirQuestionnaire);
17
21
 
18
22
  return {
19
23
  launchContext: launchContext?.length ? launchContext : undefined,
@@ -21,6 +25,8 @@ export function processExtensions(fhirQuestionnaire: FHIRQuestionnaire): {
21
25
  sourceQueries: sourceQueries?.length ? sourceQueries : undefined,
22
26
  targetStructureMap: targetStructureMap?.length ? targetStructureMap : undefined,
23
27
  assembledFrom: assembledFrom ? assembledFrom : undefined,
28
+ assembleContext: assembleContext.length ? assembleContext : undefined,
29
+ itemPopulationContext: itemPopulationContext ? itemPopulationContext : undefined,
24
30
  };
25
31
  }
26
32
 
@@ -118,3 +124,23 @@ function processAssembledFrom(fhirQuestionnaire: FHIRQuestionnaire): canonical |
118
124
 
119
125
  return extension.valueCanonical;
120
126
  }
127
+
128
+ function processAssembleContext(fhirQuestionnaire: FHIRQuestionnaire): string[] {
129
+ const extensions = fhirQuestionnaire.extension?.filter(
130
+ (ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-assembleContext',
131
+ );
132
+
133
+ return (extensions ?? []).map((extension) => extension.valueString!);
134
+ }
135
+
136
+ function processItemPopulationContext(fhirQuestionnaire: FHIRQuestionnaire): FHIRExpression | undefined {
137
+ const extension = fhirQuestionnaire.extension?.find(
138
+ (ext) => ext.url === 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
139
+ );
140
+
141
+ if (!extension) {
142
+ return undefined;
143
+ }
144
+
145
+ return extension.valueExpression;
146
+ }