sdc-qrf 0.3.9 → 0.3.11

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.
@@ -26,6 +26,7 @@ export declare enum ExtensionIdentifier {
26
26
  InlineChoiceDirection = "https://beda.software/fhir-emr-questionnaire/inline-choice-direction",
27
27
  ChoiceColumns = "http://aidbox.io/fhir/StructureDefinition/questionnaire-choiceColumns",
28
28
  ItemPopulationContext = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext",
29
+ ItemConstraint = "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint",
29
30
  InitialExpression = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression",
30
31
  ChoiceColumn = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn",
31
32
  CalculatedExpression = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression",
@@ -43,13 +44,14 @@ export declare enum ExtensionIdentifier {
43
44
  export type ExtensionTransformer = {
44
45
  [key in ExtensionIdentifier]: {
45
46
  transform: {
46
- fromExtension: (extension: FHIRExtension) => Partial<FCEQuestionnaireItem> | undefined;
47
- toExtension: (item: FCEQuestionnaireItem) => FHIRExtension | undefined;
47
+ fromExtensions: (extensions: FHIRExtension[]) => Partial<FCEQuestionnaireItem> | undefined;
48
+ toExtensions: (item: FCEQuestionnaireItem) => FHIRExtension[];
48
49
  };
49
50
  } | {
50
51
  path: {
51
52
  extension: keyof FHIRExtension;
52
53
  questionnaire: keyof FCEQuestionnaireItem;
54
+ isCollection?: boolean;
53
55
  };
54
56
  };
55
57
  };
@@ -28,6 +28,7 @@ var ExtensionIdentifier;
28
28
  ExtensionIdentifier["InlineChoiceDirection"] = "https://beda.software/fhir-emr-questionnaire/inline-choice-direction";
29
29
  ExtensionIdentifier["ChoiceColumns"] = "http://aidbox.io/fhir/StructureDefinition/questionnaire-choiceColumns";
30
30
  ExtensionIdentifier["ItemPopulationContext"] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext";
31
+ ExtensionIdentifier["ItemConstraint"] = "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint";
31
32
  ExtensionIdentifier["InitialExpression"] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression";
32
33
  ExtensionIdentifier["ChoiceColumn"] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn";
33
34
  ExtensionIdentifier["CalculatedExpression"] = "http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression";
@@ -59,29 +60,32 @@ exports.extensionTransformers = {
59
60
  path: { extension: 'valueCoding', questionnaire: 'unit' },
60
61
  },
61
62
  [ExtensionIdentifier.UnitOption]: {
62
- path: { extension: 'valueCoding', questionnaire: 'unitOption' },
63
+ path: { extension: 'valueCoding', questionnaire: 'unitOption', isCollection: true },
63
64
  },
64
65
  [ExtensionIdentifier.RowsNumber]: {
65
66
  path: { extension: 'valueInteger', questionnaire: 'rowsNumber' },
66
67
  },
67
68
  [ExtensionIdentifier.ReferenceResource]: {
68
69
  transform: {
69
- fromExtension: (extension) => {
70
- if (extension.valueCode) {
71
- return { referenceResource: [extension.valueCode] };
70
+ fromExtensions: (extensions) => {
71
+ if (extensions[0].valueCode) {
72
+ return { referenceResource: [extensions[0].valueCode] };
72
73
  }
73
74
  else {
74
75
  return {};
75
76
  }
76
77
  },
77
- toExtension: (item) => {
78
+ toExtensions: (item) => {
78
79
  var _a;
79
80
  if ((_a = item.referenceResource) === null || _a === void 0 ? void 0 : _a.length) {
80
- return {
81
- url: ExtensionIdentifier.ReferenceResource,
82
- valueCode: item.referenceResource[0],
83
- };
81
+ return [
82
+ {
83
+ url: ExtensionIdentifier.ReferenceResource,
84
+ valueCode: item.referenceResource[0],
85
+ },
86
+ ];
84
87
  }
88
+ return [];
85
89
  },
86
90
  },
87
91
  },
@@ -102,26 +106,26 @@ exports.extensionTransformers = {
102
106
  },
103
107
  [ExtensionIdentifier.MinValue]: {
104
108
  transform: {
105
- fromExtension: (extension) => ({ minValue: extension }),
106
- toExtension: (item) => item.minValue,
109
+ fromExtensions: (extensions) => ({ minValue: extensions[0] }),
110
+ toExtensions: (item) => (item.minValue ? [item.minValue] : []),
107
111
  },
108
112
  },
109
113
  [ExtensionIdentifier.MaxValue]: {
110
114
  transform: {
111
- fromExtension: (extension) => ({ maxValue: extension }),
112
- toExtension: (item) => item.maxValue,
115
+ fromExtensions: (extensions) => ({ maxValue: extensions[0] }),
116
+ toExtensions: (item) => (item.maxValue ? [item.maxValue] : []),
113
117
  },
114
118
  },
115
119
  [ExtensionIdentifier.MinQuantity]: {
116
120
  transform: {
117
- fromExtension: (extension) => ({ minQuantity: extension }),
118
- toExtension: (item) => item.minQuantity,
121
+ fromExtensions: (extensions) => ({ minQuantity: extensions[0] }),
122
+ toExtensions: (item) => (item.minQuantity ? [item.minQuantity] : []),
119
123
  },
120
124
  },
121
125
  [ExtensionIdentifier.MaxQuantity]: {
122
126
  transform: {
123
- fromExtension: (extension) => ({ maxQuantity: extension }),
124
- toExtension: (item) => item.maxQuantity,
127
+ fromExtensions: (extensions) => ({ maxQuantity: extensions[0] }),
128
+ toExtensions: (item) => (item.maxQuantity ? [item.maxQuantity] : []),
125
129
  },
126
130
  },
127
131
  [ExtensionIdentifier.ShowOrdinalValue]: {
@@ -151,6 +155,57 @@ exports.extensionTransformers = {
151
155
  [ExtensionIdentifier.ItemPopulationContext]: {
152
156
  path: { extension: 'valueExpression', questionnaire: 'itemPopulationContext' },
153
157
  },
158
+ [ExtensionIdentifier.ItemConstraint]: {
159
+ transform: {
160
+ fromExtensions: (extensions) => {
161
+ return {
162
+ itemConstraint: extensions.map((extension) => {
163
+ var _a;
164
+ const itemConstraintExtension = extension.extension;
165
+ return {
166
+ key: itemConstraintExtension.find((obj) => obj.url === 'key').valueId,
167
+ requirements: (_a = itemConstraintExtension.find((obj) => obj.url === 'requirements')) === null || _a === void 0 ? void 0 : _a.valueString,
168
+ severity: itemConstraintExtension.find((obj) => obj.url === 'severity')
169
+ .valueCode,
170
+ human: itemConstraintExtension.find((obj) => obj.url === 'human')
171
+ .valueString,
172
+ expression: itemConstraintExtension.find((obj) => obj.url === 'expression').valueString,
173
+ };
174
+ }),
175
+ };
176
+ },
177
+ toExtensions: (item) => {
178
+ if (item.itemConstraint) {
179
+ return item.itemConstraint.map((itemConstraint) => ({
180
+ url: ExtensionIdentifier.ItemConstraint,
181
+ extension: [
182
+ {
183
+ url: 'key',
184
+ valueId: itemConstraint.key,
185
+ },
186
+ {
187
+ url: 'requirements',
188
+ valueString: itemConstraint.requirements,
189
+ },
190
+ {
191
+ url: 'severity',
192
+ valueCode: itemConstraint.severity,
193
+ },
194
+ {
195
+ url: 'human',
196
+ valueString: itemConstraint === null || itemConstraint === void 0 ? void 0 : itemConstraint.human,
197
+ },
198
+ {
199
+ url: 'expression',
200
+ valueString: itemConstraint.expression,
201
+ },
202
+ ],
203
+ }));
204
+ }
205
+ return [];
206
+ },
207
+ },
208
+ },
154
209
  [ExtensionIdentifier.InitialExpression]: {
155
210
  path: { extension: 'valueExpression', questionnaire: 'initialExpression' },
156
211
  },
@@ -165,37 +220,35 @@ exports.extensionTransformers = {
165
220
  },
166
221
  [ExtensionIdentifier.ChoiceColumn]: {
167
222
  transform: {
168
- fromExtension: (extension) => {
169
- var _a, _b, _c;
170
- const choiceColumnExtension = extension.extension;
171
- if (choiceColumnExtension) {
172
- return {
173
- choiceColumn: [
174
- {
175
- forDisplay: (_b = (_a = choiceColumnExtension.find((obj) => obj.url === 'forDisplay')) === null || _a === void 0 ? void 0 : _a.valueBoolean) !== null && _b !== void 0 ? _b : false,
176
- path: (_c = choiceColumnExtension.find((obj) => obj.url === 'path')) === null || _c === void 0 ? void 0 : _c.valueString,
177
- },
178
- ],
179
- };
180
- }
223
+ fromExtensions: (extensions) => {
224
+ return {
225
+ choiceColumn: extensions.map((extension) => {
226
+ var _a, _b, _c;
227
+ const choiceColumnExtension = extension.extension;
228
+ return {
229
+ forDisplay: (_b = (_a = choiceColumnExtension.find((obj) => obj.url === 'forDisplay')) === null || _a === void 0 ? void 0 : _a.valueBoolean) !== null && _b !== void 0 ? _b : false,
230
+ path: (_c = choiceColumnExtension.find((obj) => obj.url === 'path')) === null || _c === void 0 ? void 0 : _c.valueString,
231
+ };
232
+ }),
233
+ };
181
234
  },
182
- toExtension: (item) => {
183
- var _a, _b;
235
+ toExtensions: (item) => {
184
236
  if (item.choiceColumn) {
185
- return {
237
+ return item.choiceColumn.map((choiceColumn) => ({
186
238
  url: ExtensionIdentifier.ChoiceColumn,
187
239
  extension: [
188
240
  {
189
241
  url: 'forDisplay',
190
- valueBoolean: (_a = item.choiceColumn[0]) === null || _a === void 0 ? void 0 : _a.forDisplay,
242
+ valueBoolean: choiceColumn.forDisplay,
191
243
  },
192
244
  {
193
245
  url: 'path',
194
- valueString: (_b = item.choiceColumn[0]) === null || _b === void 0 ? void 0 : _b.path,
246
+ valueString: choiceColumn.path,
195
247
  },
196
248
  ],
197
- };
249
+ }));
198
250
  }
251
+ return [];
199
252
  },
200
253
  },
201
254
  },
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/converter/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/converter/extensions.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ function processItems(items) {
8
8
  return items.map((item) => {
9
9
  const extensions = (0, __1.convertToFHIRExtension)(item);
10
10
  if (extensions.length > 0) {
11
- const fieldsToOmit = extensions
11
+ const fieldsToOmit = Object.values(lodash_1.default.groupBy(extensions, (extension) => extension.url))
12
12
  .map(__1.convertFromFHIRExtension)
13
13
  .filter((ext) => ext !== undefined)
14
14
  .flatMap(Object.keys);
@@ -1 +1 @@
1
- {"version":3,"file":"processItems.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processItems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processItems.js","sourceRoot":"","sources":["../../../../src/converter/fceToFhir/questionnaire/processItems.ts"],"names":[],"mappings":"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"}
@@ -21,36 +21,28 @@ function convertItemProperties(item) {
21
21
  return newItem;
22
22
  }
23
23
  function getUpdatedPropertiesFromItem(item) {
24
- var _a, _b, _c, _d, _e;
24
+ var _a, _b, _c, _d;
25
25
  let updatedProperties = { linkId: item.linkId, type: item.type };
26
26
  for (const identifier of Object.values(extensions_1.ExtensionIdentifier)) {
27
- if (identifier === extensions_1.ExtensionIdentifier.UnitOption) {
28
- const unitOptions = ((_a = item.extension) === null || _a === void 0 ? void 0 : _a.filter((ext) => ext.url === extensions_1.ExtensionIdentifier.UnitOption)) || [];
29
- if (unitOptions.length > 0) {
30
- const unitOption = unitOptions.map((ext) => { var _a; return (_a = (0, converter_1.convertFromFHIRExtension)(ext)) === null || _a === void 0 ? void 0 : _a.unitOption; });
31
- updatedProperties = Object.assign(Object.assign({}, updatedProperties), { unitOption });
32
- }
33
- continue;
34
- }
35
27
  for (const property of Object.keys(item)) {
36
28
  const element = item[property];
37
29
  if (property.startsWith('_') && element instanceof Object) {
38
- const primitiveExtensions = (_b = element === null || element === void 0 ? void 0 : element.extension) !== null && _b !== void 0 ? _b : [];
30
+ const primitiveExtensions = (_a = element === null || element === void 0 ? void 0 : element.extension) !== null && _a !== void 0 ? _a : [];
39
31
  for (const extension of primitiveExtensions) {
40
32
  if (extension.url === identifier) {
41
- updatedProperties = Object.assign(Object.assign({}, updatedProperties), { [property]: (0, converter_1.convertFromFHIRExtension)(extension) });
33
+ updatedProperties = Object.assign(Object.assign({}, updatedProperties), { [property]: (0, converter_1.convertFromFHIRExtension)([extension]) });
42
34
  }
43
35
  }
44
36
  }
45
37
  }
46
- const extension = (0, converter_1.findExtension)(item, identifier);
47
- if (extension !== undefined) {
48
- updatedProperties = Object.assign(Object.assign({}, updatedProperties), (0, converter_1.convertFromFHIRExtension)(extension));
38
+ const extensions = (0, converter_1.filterExtensions)(item, identifier);
39
+ if (extensions === null || extensions === void 0 ? void 0 : extensions.length) {
40
+ updatedProperties = Object.assign(Object.assign({}, updatedProperties), (0, converter_1.convertFromFHIRExtension)(extensions));
49
41
  }
50
42
  }
51
- updatedProperties.answerOption = (_c = item.answerOption) === null || _c === void 0 ? void 0 : _c.map(processItemOption);
52
- updatedProperties.initial = (_d = item.initial) === null || _d === void 0 ? void 0 : _d.map(processItemOption);
53
- updatedProperties.enableWhen = (_e = item.enableWhen) === null || _e === void 0 ? void 0 : _e.map(processEnableWhenItem);
43
+ updatedProperties.answerOption = (_b = item.answerOption) === null || _b === void 0 ? void 0 : _b.map(processItemOption);
44
+ updatedProperties.initial = (_c = item.initial) === null || _c === void 0 ? void 0 : _c.map(processItemOption);
45
+ updatedProperties.enableWhen = (_d = item.enableWhen) === null || _d === void 0 ? void 0 : _d.map(processEnableWhenItem);
54
46
  return updatedProperties;
55
47
  }
56
48
  function processEnableWhenItem(item) {
@@ -1 +1 @@
1
- {"version":3,"file":"processItems.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processItems.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processItems.js","sourceRoot":"","sources":["../../../../src/converter/fhirToFce/questionnaire/processItems.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,10 @@ import { fromFirstClassExtension } from './fceToFhir';
4
4
  import { toFirstClassExtension } from './fhirToFce';
5
5
  import { processLaunchContext as processLaunchContextToFce } from './fhirToFce/questionnaire/processExtensions';
6
6
  export * from './utils';
7
- export declare function convertFromFHIRExtension(extension: FHIRExtension): Partial<FCEQuestionnaireItem> | undefined;
7
+ export declare function convertFromFHIRExtension(extensions: FHIRExtension[]): Partial<FCEQuestionnaireItem> | undefined;
8
8
  export declare function convertToFHIRExtension(item: FCEQuestionnaireItem): FHIRExtension[];
9
9
  export declare function extractExtension(extension: FCEExtension[] | undefined, url: 'ex:createdAt'): string | undefined;
10
- export declare function findExtension(item: FHIRQuestionnaireItem, url: string): FHIRExtension | undefined;
10
+ export declare function filterExtensions(item: FHIRQuestionnaireItem, url: string): FHIRExtension[] | undefined;
11
11
  export declare function fromFHIRReference(r?: FHIRReference): InternalReference | undefined;
12
12
  export declare function toFHIRReference(r?: InternalReference): FHIRReference | undefined;
13
13
  export { toFirstClassExtension, fromFirstClassExtension, processLaunchContextToFce };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processLaunchContextToFce = exports.fromFirstClassExtension = exports.toFirstClassExtension = exports.toFHIRReference = exports.fromFHIRReference = exports.findExtension = exports.extractExtension = exports.convertToFHIRExtension = exports.convertFromFHIRExtension = void 0;
3
+ exports.processLaunchContextToFce = exports.fromFirstClassExtension = exports.toFirstClassExtension = exports.toFHIRReference = exports.fromFHIRReference = exports.filterExtensions = exports.extractExtension = exports.convertToFHIRExtension = exports.convertFromFHIRExtension = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const extensions_1 = require("./extensions");
6
6
  const fceToFhir_1 = require("./fceToFhir");
@@ -10,15 +10,19 @@ Object.defineProperty(exports, "toFirstClassExtension", { enumerable: true, get:
10
10
  const processExtensions_1 = require("./fhirToFce/questionnaire/processExtensions");
11
11
  Object.defineProperty(exports, "processLaunchContextToFce", { enumerable: true, get: function () { return processExtensions_1.processLaunchContext; } });
12
12
  tslib_1.__exportStar(require("./utils"), exports);
13
- function convertFromFHIRExtension(extension) {
14
- const identifier = extension.url;
13
+ function convertFromFHIRExtension(extensions) {
14
+ const identifier = extensions[0].url;
15
15
  const transformer = extensions_1.extensionTransformers[identifier];
16
16
  if (transformer !== undefined) {
17
17
  if ('transform' in transformer) {
18
- return transformer.transform.fromExtension(extension);
18
+ return transformer.transform.fromExtensions(extensions);
19
19
  }
20
20
  else {
21
- return { [transformer.path.questionnaire]: extension[transformer.path.extension] };
21
+ return {
22
+ [transformer.path.questionnaire]: transformer.path.isCollection
23
+ ? extensions.map((extension) => extension[transformer.path.extension])
24
+ : extensions[0][transformer.path.extension],
25
+ };
22
26
  }
23
27
  }
24
28
  }
@@ -28,19 +32,16 @@ function convertToFHIRExtension(item) {
28
32
  Object.values(extensions_1.ExtensionIdentifier).forEach((identifier) => {
29
33
  const transformer = extensions_1.extensionTransformers[identifier];
30
34
  if ('transform' in transformer) {
31
- const extension = transformer.transform.toExtension(item);
32
- if (extension !== undefined) {
33
- extensions.push(extension);
34
- }
35
+ extensions.push(...transformer.transform.toExtensions(item));
35
36
  }
36
37
  else {
37
- const extensionValue = item[transformer.path.questionnaire];
38
- if (extensionValue !== undefined) {
39
- const extension = {
38
+ const value = item[transformer.path.questionnaire];
39
+ if (value !== undefined) {
40
+ const valueArray = Array.isArray(value) ? value : [value];
41
+ extensions.push(...valueArray.map((extensionValue) => ({
40
42
  [transformer.path.extension]: extensionValue,
41
43
  url: identifier,
42
- };
43
- extensions.push(extension);
44
+ })));
44
45
  }
45
46
  }
46
47
  });
@@ -52,15 +53,18 @@ function extractExtension(extension, url) {
52
53
  return (_a = extension === null || extension === void 0 ? void 0 : extension.find((e) => e.url === url)) === null || _a === void 0 ? void 0 : _a.valueInstant;
53
54
  }
54
55
  exports.extractExtension = extractExtension;
55
- function findExtension(item, url) {
56
+ function filterExtensions(item, url) {
56
57
  var _a;
57
- return (_a = item.extension) === null || _a === void 0 ? void 0 : _a.find((ext) => ext.url === url);
58
+ return (_a = item.extension) === null || _a === void 0 ? void 0 : _a.filter((ext) => ext.url === url);
58
59
  }
59
- exports.findExtension = findExtension;
60
+ exports.filterExtensions = filterExtensions;
60
61
  function fromFHIRReference(r) {
61
62
  if (!r || !r.reference) {
62
63
  return undefined;
63
64
  }
65
+ // We remove original reference from r in this "strange" way
66
+ // TODO: re-write omitting
67
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
68
  const { reference: literalReference } = r, commonReferenceProperties = tslib_1.__rest(r, ["reference"]);
65
69
  const isHistoryVersionLink = r.reference.split('/').slice(-2, -1)[0] === '_history';
66
70
  if (isHistoryVersionLink) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converter/index.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.9",
4
+ "version": "0.3.11",
5
5
  "scripts": {
6
6
  "build": "tsc",
7
7
  "coverage": "jest --coverage --coverageReporters=text-lcov | coveralls",
@@ -13,6 +13,7 @@ import fce_allergies from './resources/questionnaire_fce/allergies.json';
13
13
  import fce_beverages from './resources/questionnaire_fce/beverages.json';
14
14
  import fce_choice_answer_option from './resources/questionnaire_fce/choice_answer_option.json';
15
15
  import fce_consent from './resources/questionnaire_fce/consent.json';
16
+ import fce_constraint from './resources/questionnaire_fce/constraint.json';
16
17
  import fce_cqf_examples from './resources/questionnaire_fce/cqf-examples.json';
17
18
  import fce_enable_when from './resources/questionnaire_fce/enable_when.json';
18
19
  import fce_encounter_create from './resources/questionnaire_fce/encounter_create.json';
@@ -31,12 +32,14 @@ import fce_practitioner_role_create from './resources/questionnaire_fce/practiti
31
32
  import fce_public_appointment from './resources/questionnaire_fce/public_appointment.json';
32
33
  import fce_review_of_systems from './resources/questionnaire_fce/review_of_systems.json';
33
34
  import fce_source_queries from './resources/questionnaire_fce/source_queries.json';
35
+ import fce_unit_option from './resources/questionnaire_fce/unit-option.json';
34
36
  import fce_vitals from './resources/questionnaire_fce/vitals.json';
35
37
  // fhir questionnaire
36
38
  import fhir_allergies from './resources/questionnaire_fhir/allergies.json';
37
39
  import fhir_beverages from './resources/questionnaire_fhir/beverages.json';
38
40
  import fhir_choice_answer_option from './resources/questionnaire_fhir/choice_answer_option.json';
39
41
  import fhir_consent from './resources/questionnaire_fhir/consent.json';
42
+ import fhir_constraint from './resources/questionnaire_fhir/constraint.json';
40
43
  import fhir_cqf_examples from './resources/questionnaire_fhir/cqf-examples.json';
41
44
  import fhir_enable_when from './resources/questionnaire_fhir/enable_when.json';
42
45
  import fhir_encounter_create from './resources/questionnaire_fhir/encounter_create.json';
@@ -55,6 +58,7 @@ import fhir_practitioner_role_create from './resources/questionnaire_fhir/practi
55
58
  import fhir_public_appointment from './resources/questionnaire_fhir/public_appointment.json';
56
59
  import fhir_review_of_systems from './resources/questionnaire_fhir/review_of_systems.json';
57
60
  import fhir_source_queries from './resources/questionnaire_fhir/source_queries.json';
61
+ import fhir_unit_option from './resources/questionnaire_fhir/unit-option.json';
58
62
  import fhir_vitals from './resources/questionnaire_fhir/vitals.json';
59
63
  // fce questionnaire response
60
64
  import fce_allergies_inprogress_qr from './resources/questionnaire_response_fce/allergies_inprogress.json';
@@ -114,6 +118,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
114
118
  [fhir_consent, fce_consent],
115
119
  [fhir_enable_when, fce_enable_when],
116
120
  [fhir_cqf_examples, fce_cqf_examples],
121
+ [fhir_constraint, fce_constraint],
122
+ [fhir_unit_option, fce_unit_option],
117
123
  ])(
118
124
  'Each FHIR Questionnaire should convert to FCE',
119
125
  async (fhir_questionnaire, fce_questionnaire) => {
@@ -147,6 +153,8 @@ describe('Questionanire and QuestionnaireResponses transformation', () => {
147
153
  [fce_consent, fhir_consent],
148
154
  [fce_enable_when, fhir_enable_when],
149
155
  [fce_cqf_examples, fhir_cqf_examples],
156
+ [fce_constraint, fhir_constraint],
157
+ [fce_unit_option, fhir_unit_option],
150
158
  ])(
151
159
  'Each FCE Questionnaire should convert to FHIR',
152
160
  async (fce_questionnaire, fhir_questionnaire) => {
@@ -0,0 +1,31 @@
1
+ {
2
+ "resourceType": "Questionnaire",
3
+ "id": "constraint",
4
+ "meta": {
5
+ "profile": ["https://beda.software/beda-emr-questionnaire"]
6
+ },
7
+ "status": "active",
8
+ "item": [
9
+ {
10
+ "type": "string",
11
+ "linkId": "email",
12
+ "itemConstraint": [
13
+ {
14
+ "key": "first",
15
+ "requirements": "Req first",
16
+ "severity": "error",
17
+ "human": "Human first",
18
+ "expression": "false"
19
+ },
20
+ {
21
+ "key": "second",
22
+ "requirements": "Req second",
23
+ "severity": "error",
24
+ "human": "Human second",
25
+ "expression": "true"
26
+ }
27
+
28
+ ]
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "resourceType": "Questionnaire",
3
+ "id": "unit-option",
4
+ "meta": {
5
+ "profile": ["https://beda.software/beda-emr-questionnaire"]
6
+ },
7
+ "status": "active",
8
+ "item": [
9
+ {
10
+ "type": "quantity",
11
+ "linkId": "height",
12
+ "unitOption": [
13
+ {
14
+ "code": "foot",
15
+ "system": "http://unitsofmeasure.org",
16
+ "display": "ft"
17
+ },
18
+ {
19
+ "code": "inch",
20
+ "system": "http://unitsofmeasure.org",
21
+ "display": "in"
22
+ },
23
+ {
24
+ "code": "cm",
25
+ "system": "http://unitsofmeasure.org",
26
+ "display": "cm"
27
+ }
28
+ ]
29
+ }
30
+ ]
31
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "item": [
3
+ {
4
+ "type": "string",
5
+ "linkId": "email",
6
+ "extension": [
7
+ {
8
+ "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint",
9
+ "extension": [
10
+ {
11
+ "url": "key",
12
+ "valueId": "first"
13
+ },
14
+ {
15
+ "url": "human",
16
+ "valueString": "Human first"
17
+ },
18
+ {
19
+ "url": "severity",
20
+ "valueCode": "error"
21
+ },
22
+ {
23
+ "url": "expression",
24
+ "valueString": "false"
25
+ },
26
+ {
27
+ "url": "requirements",
28
+ "valueString": "Req first"
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-constraint",
34
+ "extension": [
35
+ {
36
+ "url": "key",
37
+ "valueId": "second"
38
+ },
39
+ {
40
+ "url": "human",
41
+ "valueString": "Human second"
42
+ },
43
+ {
44
+ "url": "severity",
45
+ "valueCode": "error"
46
+ },
47
+ {
48
+ "url": "expression",
49
+ "valueString": "true"
50
+ },
51
+ {
52
+ "url": "requirements",
53
+ "valueString": "Req second"
54
+ }
55
+ ]
56
+ }
57
+ ]
58
+ }
59
+ ],
60
+ "meta": {
61
+ "profile": ["https://beda.software/beda-emr-questionnaire"]
62
+ },
63
+ "status": "active",
64
+ "resourceType": "Questionnaire",
65
+ "id": "constraint"
66
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "item": [
3
+ {
4
+ "type": "quantity",
5
+ "linkId": "height",
6
+ "extension": [
7
+ {
8
+ "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption",
9
+ "valueCoding": {
10
+ "code": "foot",
11
+ "system": "http://unitsofmeasure.org",
12
+ "display": "ft"
13
+ }
14
+ },
15
+ {
16
+ "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption",
17
+ "valueCoding": {
18
+ "code": "inch",
19
+ "system": "http://unitsofmeasure.org",
20
+ "display": "in"
21
+ }
22
+ },
23
+ {
24
+ "url": "http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption",
25
+ "valueCoding": {
26
+ "code": "cm",
27
+ "system": "http://unitsofmeasure.org",
28
+ "display": "cm"
29
+ }
30
+ }
31
+ ]
32
+ }
33
+ ],
34
+ "meta": {
35
+ "profile": ["https://beda.software/beda-emr-questionnaire"]
36
+ },
37
+ "status": "active",
38
+ "id": "unit-option",
39
+ "resourceType": "Questionnaire"
40
+ }
@@ -29,6 +29,7 @@ export enum ExtensionIdentifier {
29
29
  ChoiceColumns = 'http://aidbox.io/fhir/StructureDefinition/questionnaire-choiceColumns',
30
30
 
31
31
  ItemPopulationContext = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-itemPopulationContext',
32
+ ItemConstraint = 'http://hl7.org/fhir/StructureDefinition/questionnaire-constraint',
32
33
  InitialExpression = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-initialExpression',
33
34
  ChoiceColumn = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn',
34
35
  CalculatedExpression = 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-calculatedExpression',
@@ -49,16 +50,17 @@ export type ExtensionTransformer = {
49
50
  [key in ExtensionIdentifier]:
50
51
  | {
51
52
  transform: {
52
- fromExtension: (
53
- extension: FHIRExtension,
53
+ fromExtensions: (
54
+ extensions: FHIRExtension[],
54
55
  ) => Partial<FCEQuestionnaireItem> | undefined;
55
- toExtension: (item: FCEQuestionnaireItem) => FHIRExtension | undefined;
56
+ toExtensions: (item: FCEQuestionnaireItem) => FHIRExtension[];
56
57
  };
57
58
  }
58
59
  | {
59
60
  path: {
60
61
  extension: keyof FHIRExtension;
61
62
  questionnaire: keyof FCEQuestionnaireItem;
63
+ isCollection?: boolean;
62
64
  };
63
65
  };
64
66
  };
@@ -80,27 +82,31 @@ export const extensionTransformers: ExtensionTransformer = {
80
82
  path: { extension: 'valueCoding', questionnaire: 'unit' },
81
83
  },
82
84
  [ExtensionIdentifier.UnitOption]: {
83
- path: { extension: 'valueCoding', questionnaire: 'unitOption' },
85
+ path: { extension: 'valueCoding', questionnaire: 'unitOption', isCollection: true },
84
86
  },
85
87
  [ExtensionIdentifier.RowsNumber]: {
86
88
  path: { extension: 'valueInteger', questionnaire: 'rowsNumber' },
87
89
  },
88
90
  [ExtensionIdentifier.ReferenceResource]: {
89
91
  transform: {
90
- fromExtension: (extension) => {
91
- if (extension.valueCode) {
92
- return { referenceResource: [extension.valueCode] };
92
+ fromExtensions: (extensions) => {
93
+ if (extensions[0]!.valueCode) {
94
+ return { referenceResource: [extensions[0]!.valueCode] };
93
95
  } else {
94
96
  return {};
95
97
  }
96
98
  },
97
- toExtension: (item) => {
99
+ toExtensions: (item) => {
98
100
  if (item.referenceResource?.length) {
99
- return {
100
- url: ExtensionIdentifier.ReferenceResource,
101
- valueCode: item.referenceResource[0],
102
- };
101
+ return [
102
+ {
103
+ url: ExtensionIdentifier.ReferenceResource,
104
+ valueCode: item.referenceResource[0],
105
+ },
106
+ ];
103
107
  }
108
+
109
+ return [];
104
110
  },
105
111
  },
106
112
  },
@@ -121,26 +127,26 @@ export const extensionTransformers: ExtensionTransformer = {
121
127
  },
122
128
  [ExtensionIdentifier.MinValue]: {
123
129
  transform: {
124
- fromExtension: (extension) => ({ minValue: extension }),
125
- toExtension: (item) => item.minValue,
130
+ fromExtensions: (extensions) => ({ minValue: extensions[0]! }),
131
+ toExtensions: (item) => (item.minValue ? [item.minValue] : []),
126
132
  },
127
133
  },
128
134
  [ExtensionIdentifier.MaxValue]: {
129
135
  transform: {
130
- fromExtension: (extension) => ({ maxValue: extension }),
131
- toExtension: (item) => item.maxValue,
136
+ fromExtensions: (extensions) => ({ maxValue: extensions[0]! }),
137
+ toExtensions: (item) => (item.maxValue ? [item.maxValue] : []),
132
138
  },
133
139
  },
134
140
  [ExtensionIdentifier.MinQuantity]: {
135
141
  transform: {
136
- fromExtension: (extension) => ({ minQuantity: extension }),
137
- toExtension: (item) => item.minQuantity,
142
+ fromExtensions: (extensions) => ({ minQuantity: extensions[0]! }),
143
+ toExtensions: (item) => (item.minQuantity ? [item.minQuantity] : []),
138
144
  },
139
145
  },
140
146
  [ExtensionIdentifier.MaxQuantity]: {
141
147
  transform: {
142
- fromExtension: (extension) => ({ maxQuantity: extension }),
143
- toExtension: (item) => item.maxQuantity,
148
+ fromExtensions: (extensions) => ({ maxQuantity: extensions[0]! }),
149
+ toExtensions: (item) => (item.maxQuantity ? [item.maxQuantity] : []),
144
150
  },
145
151
  },
146
152
  [ExtensionIdentifier.ShowOrdinalValue]: {
@@ -171,6 +177,62 @@ export const extensionTransformers: ExtensionTransformer = {
171
177
  [ExtensionIdentifier.ItemPopulationContext]: {
172
178
  path: { extension: 'valueExpression', questionnaire: 'itemPopulationContext' },
173
179
  },
180
+ [ExtensionIdentifier.ItemConstraint]: {
181
+ transform: {
182
+ fromExtensions: (extensions) => {
183
+ return {
184
+ itemConstraint: extensions.map((extension) => {
185
+ const itemConstraintExtension = extension.extension!;
186
+
187
+ return {
188
+ key: itemConstraintExtension.find((obj) => obj.url === 'key')!.valueId!,
189
+ requirements: itemConstraintExtension.find(
190
+ (obj) => obj.url === 'requirements',
191
+ )?.valueString,
192
+ severity: itemConstraintExtension.find((obj) => obj.url === 'severity')!
193
+ .valueCode!,
194
+ human: itemConstraintExtension.find((obj) => obj.url === 'human')!
195
+ .valueString!,
196
+ expression: itemConstraintExtension.find(
197
+ (obj) => obj.url === 'expression',
198
+ )!.valueString!,
199
+ };
200
+ }),
201
+ };
202
+ },
203
+ toExtensions: (item) => {
204
+ if (item.itemConstraint) {
205
+ return item.itemConstraint.map((itemConstraint) => ({
206
+ url: ExtensionIdentifier.ItemConstraint,
207
+ extension: [
208
+ {
209
+ url: 'key',
210
+ valueId: itemConstraint.key,
211
+ },
212
+ {
213
+ url: 'requirements',
214
+ valueString: itemConstraint.requirements,
215
+ },
216
+ {
217
+ url: 'severity',
218
+ valueCode: itemConstraint.severity,
219
+ },
220
+ {
221
+ url: 'human',
222
+ valueString: itemConstraint?.human,
223
+ },
224
+ {
225
+ url: 'expression',
226
+ valueString: itemConstraint.expression,
227
+ },
228
+ ],
229
+ }));
230
+ }
231
+
232
+ return [];
233
+ },
234
+ },
235
+ },
174
236
  [ExtensionIdentifier.InitialExpression]: {
175
237
  path: { extension: 'valueExpression', questionnaire: 'initialExpression' },
176
238
  },
@@ -185,38 +247,39 @@ export const extensionTransformers: ExtensionTransformer = {
185
247
  },
186
248
  [ExtensionIdentifier.ChoiceColumn]: {
187
249
  transform: {
188
- fromExtension: (extension) => {
189
- const choiceColumnExtension = extension.extension;
190
- if (choiceColumnExtension) {
191
- return {
192
- choiceColumn: [
193
- {
194
- forDisplay:
195
- choiceColumnExtension.find((obj) => obj.url === 'forDisplay')
196
- ?.valueBoolean ?? false,
197
- path: choiceColumnExtension.find((obj) => obj.url === 'path')
198
- ?.valueString,
199
- },
200
- ],
201
- };
202
- }
250
+ fromExtensions: (extensions) => {
251
+ return {
252
+ choiceColumn: extensions.map((extension) => {
253
+ const choiceColumnExtension = extension.extension!;
254
+
255
+ return {
256
+ forDisplay:
257
+ choiceColumnExtension.find((obj) => obj.url === 'forDisplay')
258
+ ?.valueBoolean ?? false,
259
+ path: choiceColumnExtension.find((obj) => obj.url === 'path')
260
+ ?.valueString,
261
+ };
262
+ }),
263
+ };
203
264
  },
204
- toExtension: (item) => {
265
+ toExtensions: (item) => {
205
266
  if (item.choiceColumn) {
206
- return {
267
+ return item.choiceColumn.map((choiceColumn) => ({
207
268
  url: ExtensionIdentifier.ChoiceColumn,
208
269
  extension: [
209
270
  {
210
271
  url: 'forDisplay',
211
- valueBoolean: item.choiceColumn[0]?.forDisplay,
272
+ valueBoolean: choiceColumn.forDisplay,
212
273
  },
213
274
  {
214
275
  url: 'path',
215
- valueString: item.choiceColumn[0]?.path,
276
+ valueString: choiceColumn.path,
216
277
  },
217
278
  ],
218
- };
279
+ }));
219
280
  }
281
+
282
+ return [];
220
283
  },
221
284
  },
222
285
  },
@@ -21,7 +21,7 @@ export function processItems(items: FCEQuestionnaireItem[]): FHIRQuestionnaireIt
21
21
  return items.map((item) => {
22
22
  const extensions = convertToFHIRExtension(item);
23
23
  if (extensions.length > 0) {
24
- const fieldsToOmit = extensions
24
+ const fieldsToOmit = Object.values(_.groupBy(extensions, (extension) => extension.url))
25
25
  .map(convertFromFHIRExtension)
26
26
  .filter((ext): ext is Partial<FCEQuestionnaireItem> => ext !== undefined)
27
27
  .flatMap(Object.keys);
@@ -14,10 +14,9 @@ import {
14
14
  QuestionnaireItemEnableWhenAnswer as FCEQuestionnaireItemEnableWhenAnswer,
15
15
  QuestionnaireItemAnswerOption as FCEQuestionnaireItemAnswerOption,
16
16
  QuestionnaireItemInitial as FCEQuestionnaireItemInitial,
17
- Coding as FCECoding,
18
17
  } from 'shared/src/contrib/aidbox';
19
18
 
20
- import { convertFromFHIRExtension, findExtension, fromFHIRReference } from '../../../converter';
19
+ import { convertFromFHIRExtension, filterExtensions, fromFHIRReference } from '../../../converter';
21
20
  import { ExtensionIdentifier } from '../../extensions';
22
21
 
23
22
  export function processItems(fhirQuestionnaire: FHIRQuestionnaire) {
@@ -41,18 +40,6 @@ function getUpdatedPropertiesFromItem(item: FHIRQuestionnaireItem) {
41
40
  let updatedProperties: FCEQuestionnaireItem = { linkId: item.linkId, type: item.type };
42
41
 
43
42
  for (const identifier of Object.values(ExtensionIdentifier)) {
44
- if (identifier === ExtensionIdentifier.UnitOption) {
45
- const unitOptions =
46
- item.extension?.filter((ext) => ext.url === ExtensionIdentifier.UnitOption) || [];
47
- if (unitOptions.length > 0) {
48
- const unitOption = unitOptions.map(
49
- (ext) => convertFromFHIRExtension(ext)?.unitOption,
50
- ) as FCECoding[];
51
- updatedProperties = { ...updatedProperties, unitOption };
52
- }
53
- continue;
54
- }
55
-
56
43
  for (const property of Object.keys(item)) {
57
44
  const element = item[property as keyof FHIRQuestionnaireItem];
58
45
  if (property.startsWith('_') && element instanceof Object) {
@@ -61,18 +48,18 @@ function getUpdatedPropertiesFromItem(item: FHIRQuestionnaireItem) {
61
48
  if (extension.url === identifier) {
62
49
  updatedProperties = {
63
50
  ...updatedProperties,
64
- ...{ [property]: convertFromFHIRExtension(extension) },
51
+ ...{ [property]: convertFromFHIRExtension([extension]) },
65
52
  };
66
53
  }
67
54
  }
68
55
  }
69
56
  }
70
57
 
71
- const extension = findExtension(item, identifier);
72
- if (extension !== undefined) {
58
+ const extensions = filterExtensions(item, identifier);
59
+ if (extensions?.length) {
73
60
  updatedProperties = {
74
61
  ...updatedProperties,
75
- ...convertFromFHIRExtension(extension),
62
+ ...convertFromFHIRExtension(extensions),
76
63
  };
77
64
  }
78
65
  }
@@ -17,15 +17,19 @@ import { processLaunchContext as processLaunchContextToFce } from './fhirToFce/q
17
17
  export * from './utils';
18
18
 
19
19
  export function convertFromFHIRExtension(
20
- extension: FHIRExtension,
20
+ extensions: FHIRExtension[],
21
21
  ): Partial<FCEQuestionnaireItem> | undefined {
22
- const identifier = extension.url;
22
+ const identifier = extensions[0]!.url;
23
23
  const transformer = extensionTransformers[identifier as ExtensionIdentifier];
24
24
  if (transformer !== undefined) {
25
25
  if ('transform' in transformer) {
26
- return transformer.transform.fromExtension(extension);
26
+ return transformer.transform.fromExtensions(extensions);
27
27
  } else {
28
- return { [transformer.path.questionnaire]: extension[transformer.path.extension] };
28
+ return {
29
+ [transformer.path.questionnaire]: transformer.path.isCollection
30
+ ? extensions.map((extension) => extension[transformer.path.extension])
31
+ : extensions[0]![transformer.path.extension],
32
+ };
29
33
  }
30
34
  }
31
35
  }
@@ -35,18 +39,18 @@ export function convertToFHIRExtension(item: FCEQuestionnaireItem): FHIRExtensio
35
39
  Object.values(ExtensionIdentifier).forEach((identifier) => {
36
40
  const transformer = extensionTransformers[identifier];
37
41
  if ('transform' in transformer) {
38
- const extension = transformer.transform.toExtension(item);
39
- if (extension !== undefined) {
40
- extensions.push(extension);
41
- }
42
+ extensions.push(...transformer.transform.toExtensions(item));
42
43
  } else {
43
- const extensionValue = item[transformer.path.questionnaire];
44
- if (extensionValue !== undefined) {
45
- const extension: FHIRExtension = {
46
- [transformer.path.extension]: extensionValue,
47
- url: identifier,
48
- };
49
- extensions.push(extension);
44
+ const value = item[transformer.path.questionnaire];
45
+ if (value !== undefined) {
46
+ const valueArray = Array.isArray(value) ? value : [value];
47
+
48
+ extensions.push(
49
+ ...valueArray.map((extensionValue) => ({
50
+ [transformer.path.extension]: extensionValue,
51
+ url: identifier,
52
+ })),
53
+ );
50
54
  }
51
55
  }
52
56
  });
@@ -57,8 +61,8 @@ export function extractExtension(extension: FCEExtension[] | undefined, url: 'ex
57
61
  return extension?.find((e) => e.url === url)?.valueInstant;
58
62
  }
59
63
 
60
- export function findExtension(item: FHIRQuestionnaireItem, url: string) {
61
- return item.extension?.find((ext) => ext.url === url);
64
+ export function filterExtensions(item: FHIRQuestionnaireItem, url: string) {
65
+ return item.extension?.filter((ext) => ext.url === url);
62
66
  }
63
67
 
64
68
  export function fromFHIRReference(r?: FHIRReference): InternalReference | undefined {
@@ -66,6 +70,9 @@ export function fromFHIRReference(r?: FHIRReference): InternalReference | undefi
66
70
  return undefined;
67
71
  }
68
72
 
73
+ // We remove original reference from r in this "strange" way
74
+ // TODO: re-write omitting
75
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
69
76
  const { reference: literalReference, ...commonReferenceProperties } = r;
70
77
  const isHistoryVersionLink = r.reference.split('/').slice(-2, -1)[0] === '_history';
71
78