@aehrc/smart-forms-renderer 1.0.0-alpha.70 → 1.0.0-alpha.71

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.
@@ -19,7 +19,7 @@ function useAttachmentUrlValidation(url) {
19
19
  new URL(url);
20
20
  return true;
21
21
  }
22
- catch (error) {
22
+ catch (_a) {
23
23
  return false;
24
24
  }
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useAttachmentUrlValidation.js","sourceRoot":"","sources":["../../src/hooks/useAttachmentUrlValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,SAAS,0BAA0B,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"useAttachmentUrlValidation.js","sourceRoot":"","sources":["../../src/hooks/useAttachmentUrlValidation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,SAAS,0BAA0B,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,eAAe,0BAA0B,CAAC"}
package/lib/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { questionnaireStore, useQuestionnaireStore, questionnaireResponseStore,
7
7
  export type { UseResponsiveProps } from './hooks';
8
8
  export { useHidden, useReadOnly, useBuildForm, useRendererQueryClient, useRenderingExtensions, useValidationFeedback, useValueSetCodings, useStringCalculatedExpression, useDisplayCqfAndCalculatedExpression, useCodingCalculatedExpression, objectIsCoding, useResponsive } from './hooks';
9
9
  export type { ItemToRepopulate } from './utils';
10
- export { buildForm, destroyForm, getResponse, removeEmptyAnswersFromResponse, removeInternalIdsFromResponse, createEmptyQrItem, createEmptyQrGroup, updateQrItemsInGroup, mapQItemsIndex, getQrItemsIndex, isSpecificItemControl, getDecimalPrecision, isRepeatItemAndNotCheckbox, parseDecimalStringToFloat, parseDecimalStringWithPrecision, isHiddenByEnableWhen, initialiseQuestionnaireResponse, generateItemsToRepopulate, repopulateResponse, extractObservationBased, getQuestionnaireItem, getSectionHeading } from './utils';
10
+ export { buildForm, destroyForm, getResponse, removeEmptyAnswersFromResponse, removeInternalIdsFromResponse, createEmptyQrItem, createEmptyQrGroup, updateQrItemsInGroup, mapQItemsIndex, getQrItemsIndex, isSpecificItemControl, getDecimalPrecision, isRepeatItemAndNotCheckbox, parseDecimalStringToFloat, parseDecimalStringWithPrecision, isHiddenByEnableWhen, initialiseQuestionnaireResponse, generateItemsToRepopulate, repopulateResponse, extractObservationBased, canBeObservationExtracted, buildBundleFromObservationArray, getQuestionnaireItem, getSectionHeading } from './utils';
11
11
  export { RendererThemeProvider, rendererThemeComponentOverrides, accordionOverride, autocompleteOverride, buttonOverride, cardOverride, inputOverride, paperOverride, speedDialOverride, tableOverride, rendererThemeOptions } from './theme';
12
12
  export type { InitialiseFormWrapperProps } from './stories/storybookWrappers';
13
13
  export { InitialiseFormWrapperForStorybook } from './stories/storybookWrappers';
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ import '@fontsource/inter';
3
3
  export { SmartFormsRenderer, BaseRenderer, SingleItem, GroupItem, RepeatItem, RepeatGroup, GroupTable, GridGroup, parseFhirDateToDisplayDate, ItemFieldGrid, ItemLabel, BooleanField, DecimalField, StringField, ChoiceRadioSingle, FullWidthFormComponentBox } from './components';
4
4
  export { questionnaireStore, useQuestionnaireStore, questionnaireResponseStore, useQuestionnaireResponseStore, smartConfigStore, useSmartConfigStore, terminologyServerStore, useTerminologyServerStore, rendererStylingStore, useRendererStylingStore } from './stores';
5
5
  export { useHidden, useReadOnly, useBuildForm, useRendererQueryClient, useRenderingExtensions, useValidationFeedback, useValueSetCodings, useStringCalculatedExpression, useDisplayCqfAndCalculatedExpression, useCodingCalculatedExpression, objectIsCoding, useResponsive } from './hooks';
6
- export { buildForm, destroyForm, getResponse, removeEmptyAnswersFromResponse, removeInternalIdsFromResponse, createEmptyQrItem, createEmptyQrGroup, updateQrItemsInGroup, mapQItemsIndex, getQrItemsIndex, isSpecificItemControl, getDecimalPrecision, isRepeatItemAndNotCheckbox, parseDecimalStringToFloat, parseDecimalStringWithPrecision, isHiddenByEnableWhen, initialiseQuestionnaireResponse, generateItemsToRepopulate, repopulateResponse, extractObservationBased, getQuestionnaireItem, getSectionHeading } from './utils';
6
+ export { buildForm, destroyForm, getResponse, removeEmptyAnswersFromResponse, removeInternalIdsFromResponse, createEmptyQrItem, createEmptyQrGroup, updateQrItemsInGroup, mapQItemsIndex, getQrItemsIndex, isSpecificItemControl, getDecimalPrecision, isRepeatItemAndNotCheckbox, parseDecimalStringToFloat, parseDecimalStringWithPrecision, isHiddenByEnableWhen, initialiseQuestionnaireResponse, generateItemsToRepopulate, repopulateResponse, extractObservationBased, canBeObservationExtracted, buildBundleFromObservationArray, getQuestionnaireItem, getSectionHeading } from './utils';
7
7
  // theme provider exports
8
8
  export { RendererThemeProvider, rendererThemeComponentOverrides, accordionOverride, autocompleteOverride, buttonOverride, cardOverride, inputOverride, paperOverride, speedDialOverride, tableOverride, rendererThemeOptions } from './theme';
9
9
  export { InitialiseFormWrapperForStorybook } from './stories/storybookWrappers';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,mBAAmB,CAAC;AAgB3B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,0BAA0B,EAC1B,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AAWtB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,EAC7B,oCAAoC,EACpC,6BAA6B,EAC7B,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,+BAA+B,EAC/B,oBAAoB,EACpB,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,yBAAyB;AACzB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,OAAO,mBAAmB,CAAC;AAgB3B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,0BAA0B,EAC1B,aAAa,EACb,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AAWtB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC1B,6BAA6B,EAC7B,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,6BAA6B,EAC7B,oCAAoC,EACpC,6BAA6B,EAC7B,cAAc,EACd,aAAa,EACd,MAAM,SAAS,CAAC;AAIjB,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,8BAA8B,EAC9B,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,+BAA+B,EAC/B,oBAAoB,EACpB,+BAA+B,EAC/B,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAC/B,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,yBAAyB;AACzB,OAAO,EACL,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAIjB,OAAO,EAAE,iCAAiC,EAAE,MAAM,6BAA6B,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { CodeableConcept, Observation, Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItemAnswer } from 'fhir/r4';
1
+ import type { Bundle, CodeableConcept, Observation, Questionnaire, QuestionnaireItem, QuestionnaireResponse, QuestionnaireResponseItemAnswer } from 'fhir/r4';
2
2
  /**
3
3
  * Extract an array of Observations from a QuestionnaireResponse and its source Questionnaire.
4
4
  * @see https://build.fhir.org/ig/HL7/sdc/extraction.html#observation-based-extraction
@@ -13,3 +13,12 @@ export type Extractable = {
13
13
  export declare function mapQItemsExtractable(questionnaire: Questionnaire): Record<string, Extractable>;
14
14
  export declare function createObservation(questionnaireItem: QuestionnaireItem, questionnaireResponse: QuestionnaireResponse, answer: QuestionnaireResponseItemAnswer, categories: CodeableConcept[]): Observation;
15
15
  export declare function generateUniqueId(prefix: string): string;
16
+ /**
17
+ * Checks whether a Questionnaire or any of its items contains a valid `sdc-questionnaire-observationExtract` extension (and if it's at the item level, a valid item.code too).
18
+ * Array.prototype.some() is short-circuiting, so it will return true as soon as it finds a valid extension.
19
+ *
20
+ * @param questionnaire - The FHIR Questionnaire to check.
21
+ * @returns `true` if at least one valid observationExtract extension exists.
22
+ */
23
+ export declare function canBeObservationExtracted(questionnaire: Questionnaire): boolean;
24
+ export declare function buildBundleFromObservationArray(observations: Observation[]): Bundle;
@@ -1,6 +1,7 @@
1
- import { readQuestionnaireResponse, transverseQuestionnaire } from './genericRecursive';
1
+ import { readQuestionnaireResponse, traverseQuestionnaire } from './genericRecursive';
2
2
  import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
3
3
  import { getRelevantCodingProperties } from './valueSet';
4
+ import { nanoid } from 'nanoid';
4
5
  /**
5
6
  * Extract an array of Observations from a QuestionnaireResponse and its source Questionnaire.
6
7
  * @see https://build.fhir.org/ig/HL7/sdc/extraction.html#observation-based-extraction
@@ -88,51 +89,52 @@ export function mapQItemsExtractable(questionnaire) {
88
89
  extractCategories: extractCategoryExts !== null && extractCategoryExts !== void 0 ? extractCategoryExts : []
89
90
  }
90
91
  };
91
- transverseQuestionnaire(questionnaire, mapQItemsExtractableRecursive, initialExtractMap);
92
+ traverseQuestionnaire(questionnaire, mapQItemsExtractableRecursive, initialExtractMap);
92
93
  return initialExtractMap;
93
94
  }
94
- function mapQItemsExtractableRecursive(qItem, root, parent, qItemExtrableMap) {
95
+ function mapQItemsExtractableRecursive(qItem, root, parent, qItemExtractableMap) {
95
96
  var _a, _b, _c, _d, _e, _f, _g, _h;
96
- if (!qItemExtrableMap)
97
+ if (!qItemExtractableMap)
97
98
  return;
98
- if (!qItemExtrableMap[qItem.linkId]) {
99
- qItemExtrableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
99
+ if (!qItemExtractableMap[qItem.linkId]) {
100
+ qItemExtractableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
100
101
  }
101
- // Check if questionnaire extractable
102
+ // Check if questionnaireItem is observation-extractable
102
103
  const extension = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((e) => e.url === FHIR_OBSERVATION_EXTRACT_EXTENSION);
103
104
  if ((extension === null || extension === void 0 ? void 0 : extension.valueBoolean) || (extension === null || extension === void 0 ? void 0 : extension.valueBoolean) === false) {
104
- qItemExtrableMap[qItem.linkId].extractable = (_b = extension === null || extension === void 0 ? void 0 : extension.valueBoolean) !== null && _b !== void 0 ? _b : false;
105
+ qItemExtractableMap[qItem.linkId].extractable = (_b = extension === null || extension === void 0 ? void 0 : extension.valueBoolean) !== null && _b !== void 0 ? _b : false;
105
106
  }
106
- else if (parent && qItemExtrableMap[parent.linkId]) {
107
- qItemExtrableMap[qItem.linkId].extractable = qItemExtrableMap[parent.linkId].extractable;
107
+ else if (parent && qItemExtractableMap[parent.linkId]) {
108
+ qItemExtractableMap[qItem.linkId].extractable = qItemExtractableMap[parent.linkId].extractable;
108
109
  }
109
- else if (root && qItemExtrableMap[(_c = root.id) !== null && _c !== void 0 ? _c : 'root']) {
110
- qItemExtrableMap[qItem.linkId].extractable = qItemExtrableMap[(_d = root === null || root === void 0 ? void 0 : root.id) !== null && _d !== void 0 ? _d : 'root'].extractable;
110
+ else if (root && qItemExtractableMap[(_c = root.id) !== null && _c !== void 0 ? _c : 'root']) {
111
+ qItemExtractableMap[qItem.linkId].extractable =
112
+ qItemExtractableMap[(_d = root === null || root === void 0 ? void 0 : root.id) !== null && _d !== void 0 ? _d : 'root'].extractable;
111
113
  }
112
114
  else {
113
- qItemExtrableMap[qItem.linkId].extractable = false;
115
+ qItemExtractableMap[qItem.linkId].extractable = false;
114
116
  }
115
117
  // if questionnaire extractable, check for extract category
116
- if (qItemExtrableMap[qItem.linkId].extractable) {
118
+ if (qItemExtractableMap[qItem.linkId].extractable) {
117
119
  const extractCategoryExts = (_f = (_e = qItem.extension) === null || _e === void 0 ? void 0 : _e.filter((e) => e.url === FHIR_OBSERVATION_EXTRACT_CATEGORY_EXTENSION && e.valueCodeableConcept)) === null || _f === void 0 ? void 0 : _f.map((e) => e.valueCodeableConcept);
118
120
  if (extractCategoryExts) {
119
- qItemExtrableMap[qItem.linkId].extractCategories = extractCategoryExts;
121
+ qItemExtractableMap[qItem.linkId].extractCategories = extractCategoryExts;
120
122
  }
121
- else if (parent && qItemExtrableMap[parent.linkId].extractCategories.length) {
122
- qItemExtrableMap[qItem.linkId].extractCategories =
123
- qItemExtrableMap[parent.linkId].extractCategories;
123
+ else if (parent && qItemExtractableMap[parent.linkId].extractCategories.length) {
124
+ qItemExtractableMap[qItem.linkId].extractCategories =
125
+ qItemExtractableMap[parent.linkId].extractCategories;
124
126
  }
125
- else if (root && qItemExtrableMap[(_g = root.id) !== null && _g !== void 0 ? _g : 'root'].extractCategories.length) {
126
- qItemExtrableMap[qItem.linkId].extractCategories =
127
- qItemExtrableMap[(_h = root === null || root === void 0 ? void 0 : root.id) !== null && _h !== void 0 ? _h : 'root'].extractCategories;
127
+ else if (root && qItemExtractableMap[(_g = root.id) !== null && _g !== void 0 ? _g : 'root'].extractCategories.length) {
128
+ qItemExtractableMap[qItem.linkId].extractCategories =
129
+ qItemExtractableMap[(_h = root === null || root === void 0 ? void 0 : root.id) !== null && _h !== void 0 ? _h : 'root'].extractCategories;
128
130
  }
129
131
  else {
130
- qItemExtrableMap[qItem.linkId].extractCategories = [];
132
+ qItemExtractableMap[qItem.linkId].extractCategories = [];
131
133
  }
132
134
  }
133
135
  if (qItem.item && qItem.item.length !== 0) {
134
136
  for (const qChildItem of qItem.item) {
135
- mapQItemsExtractableRecursive(qChildItem, root, qItem, qItemExtrableMap);
137
+ mapQItemsExtractableRecursive(qChildItem, root, qItem, qItemExtractableMap);
136
138
  }
137
139
  }
138
140
  }
@@ -206,4 +208,76 @@ function removeIfNull(key, value, expectedValue) {
206
208
  return { [key]: expectedValue };
207
209
  return { [key]: value };
208
210
  }
211
+ /**
212
+ * Checks whether a Questionnaire or any of its items contains a valid `sdc-questionnaire-observationExtract` extension (and if it's at the item level, a valid item.code too).
213
+ * Array.prototype.some() is short-circuiting, so it will return true as soon as it finds a valid extension.
214
+ *
215
+ * @param questionnaire - The FHIR Questionnaire to check.
216
+ * @returns `true` if at least one valid observationExtract extension exists.
217
+ */
218
+ export function canBeObservationExtracted(questionnaire) {
219
+ // Check Questionnaire-level extension
220
+ const isObservationExtractable = hasObservationExtractExtension(questionnaire);
221
+ if (isObservationExtractable) {
222
+ return true;
223
+ }
224
+ // Check item-level extensions recursively
225
+ if (questionnaire.item) {
226
+ return questionnaire.item.some((item) => hasObservationExtractExtensionRecursive(item));
227
+ }
228
+ return false;
229
+ }
230
+ /**
231
+ * Recursively checks whether a `QuestionnaireItem` or any of its child items contains a `sdc-questionnaire-observationExtract` extension (and if it's at the item level, a valid item.code too).
232
+ * Array.prototype.some() is short-circuiting, so it will return true as soon as it finds a valid extension.
233
+ */
234
+ function hasObservationExtractExtensionRecursive(item) {
235
+ var _a, _b;
236
+ const isObservationExtractable = hasObservationExtractExtension(item);
237
+ if (isObservationExtractable) {
238
+ return true;
239
+ }
240
+ return (_b = (_a = item.item) === null || _a === void 0 ? void 0 : _a.some((child) => hasObservationExtractExtensionRecursive(child))) !== null && _b !== void 0 ? _b : false;
241
+ }
242
+ /**
243
+ * Checks if a Questionnaire or QuestionnaireItem has a `sdc-questionnaire-observationExtract` extension.
244
+ * For items, also ensures that there is an item.code.
245
+ */
246
+ function hasObservationExtractExtension(item) {
247
+ var _a;
248
+ const observationExtractPresent = !!((_a = item.extension) === null || _a === void 0 ? void 0 : _a.find((ext) => ext.url === FHIR_OBSERVATION_EXTRACT_EXTENSION));
249
+ // Check if the item has a linkId (means it's a QuestionnaireItem), item.code must be present
250
+ // This does not apply to the Questionnaire-level, hence itemCodePresent defaults to true
251
+ let itemCodePresent = true;
252
+ if ('linkId' in item) {
253
+ itemCodePresent = !!item.code && item.code.length > 0;
254
+ }
255
+ return observationExtractPresent && itemCodePresent;
256
+ }
257
+ export function buildBundleFromObservationArray(observations) {
258
+ return {
259
+ resourceType: 'Bundle',
260
+ id: `sdc-observation-extract-${nanoid()}`,
261
+ meta: {
262
+ tag: [
263
+ {
264
+ code: '@aehrc/smart-forms-renderer:generated'
265
+ }
266
+ ]
267
+ },
268
+ type: 'transaction',
269
+ timestamp: new Date().toISOString(),
270
+ entry: observations.map((observation) => {
271
+ const observationId = observation.id || `obs-${nanoid()}`;
272
+ return {
273
+ fullUrl: `Observation/${observationId}`,
274
+ resource: observation,
275
+ request: {
276
+ method: 'POST',
277
+ url: 'Observation'
278
+ }
279
+ };
280
+ })
281
+ };
282
+ }
209
283
  //# sourceMappingURL=extractObservation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractObservation.js","sourceRoot":"","sources":["../../src/utils/extractObservation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractObservation.js","sourceRoot":"","sources":["../../src/utils/extractObservation.ts"],"names":[],"mappings":"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"}
@@ -16,5 +16,5 @@ export type RecursiveReadArrayFunction<T, U> = (qItem: QuestionnaireItem, qrItem
16
16
  * @author Sean Fong
17
17
  */
18
18
  export declare function readQuestionnaireResponse<T, U>(questionnaire: Questionnaire, questionnaireResponse: QuestionnaireResponse, recursiveReadFunction: RecursiveReadArrayFunction<T, U>, extraData?: U): T[];
19
- export type RecursiveTranverseFunction<U> = (qItem: QuestionnaireItem, root?: Questionnaire, parent?: QuestionnaireItem, extraData?: U) => void;
20
- export declare function transverseQuestionnaire<U>(questionnaire: Questionnaire, recursiveTranverseFunction: RecursiveTranverseFunction<U>, extraData?: U): void;
19
+ export type RecursiveTraverseFunction<U> = (qItem: QuestionnaireItem, root?: Questionnaire, parent?: QuestionnaireItem, extraData?: U) => void;
20
+ export declare function traverseQuestionnaire<U>(questionnaire: Questionnaire, recursiveTraverseFunction: RecursiveTraverseFunction<U>, extraData?: U): void;
@@ -80,11 +80,11 @@ export function readQuestionnaireResponse(questionnaire, questionnaireResponse,
80
80
  }
81
81
  return readValueArray;
82
82
  }
83
- export function transverseQuestionnaire(questionnaire, recursiveTranverseFunction, extraData) {
83
+ export function traverseQuestionnaire(questionnaire, recursiveTraverseFunction, extraData) {
84
84
  if (!questionnaire.item || questionnaire.item.length === 0)
85
85
  return;
86
86
  for (const topLevelQItem of questionnaire.item) {
87
- recursiveTranverseFunction(topLevelQItem, questionnaire, undefined, extraData);
87
+ recursiveTraverseFunction(topLevelQItem, questionnaire, undefined, extraData);
88
88
  }
89
89
  }
90
90
  //# sourceMappingURL=genericRecursive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"genericRecursive.js","sourceRoot":"","sources":["../../src/utils/genericRecursive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genericRecursive.js","sourceRoot":"","sources":["../../src/utils/genericRecursive.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,5 @@ export { parseDecimalStringToFloat, parseDecimalStringWithPrecision } from './pa
8
8
  export type { ItemToRepopulate } from './repopulateItems';
9
9
  export { generateItemsToRepopulate } from './repopulateItems';
10
10
  export { repopulateResponse } from './repopulateIntoResponse';
11
- export { extractObservationBased } from './extractObservation';
11
+ export { extractObservationBased, canBeObservationExtracted, buildBundleFromObservationArray } from './extractObservation';
12
12
  export { getQuestionnaireItem, getSectionHeading } from './misc';
@@ -23,6 +23,6 @@ export { isRepeatItemAndNotCheckbox, isHiddenByEnableWhen } from './qItem';
23
23
  export { parseDecimalStringToFloat, parseDecimalStringWithPrecision } from './parseInputs';
24
24
  export { generateItemsToRepopulate } from './repopulateItems';
25
25
  export { repopulateResponse } from './repopulateIntoResponse';
26
- export { extractObservationBased } from './extractObservation';
26
+ export { extractObservationBased, canBeObservationExtracted, buildBundleFromObservationArray } from './extractObservation';
27
27
  export { getQuestionnaireItem, getSectionHeading } from './misc';
28
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,+BAA+B,EAAE,MAAM,eAAe,CAAC;AAE3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aehrc/smart-forms-renderer",
3
- "version": "1.0.0-alpha.70",
3
+ "version": "1.0.0-alpha.71",
4
4
  "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -19,7 +19,7 @@ function useAttachmentUrlValidation(url: string): boolean {
19
19
  try {
20
20
  new URL(url);
21
21
  return true;
22
- } catch (error) {
22
+ } catch {
23
23
  return false;
24
24
  }
25
25
  }
package/src/index.ts CHANGED
@@ -96,6 +96,8 @@ export {
96
96
  generateItemsToRepopulate,
97
97
  repopulateResponse,
98
98
  extractObservationBased,
99
+ canBeObservationExtracted,
100
+ buildBundleFromObservationArray,
99
101
  getQuestionnaireItem,
100
102
  getSectionHeading
101
103
  } from './utils';
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ Bundle,
2
3
  CodeableConcept,
3
4
  Observation,
4
5
  Questionnaire,
@@ -7,9 +8,10 @@ import type {
7
8
  QuestionnaireResponseItem,
8
9
  QuestionnaireResponseItemAnswer
9
10
  } from 'fhir/r4';
10
- import { readQuestionnaireResponse, transverseQuestionnaire } from './genericRecursive';
11
+ import { readQuestionnaireResponse, traverseQuestionnaire } from './genericRecursive';
11
12
  import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
12
13
  import { getRelevantCodingProperties } from './valueSet';
14
+ import { nanoid } from 'nanoid';
13
15
 
14
16
  /**
15
17
  * Extract an array of Observations from a QuestionnaireResponse and its source Questionnaire.
@@ -152,7 +154,7 @@ export function mapQItemsExtractable(questionnaire: Questionnaire): Record<strin
152
154
  }
153
155
  };
154
156
 
155
- transverseQuestionnaire(questionnaire, mapQItemsExtractableRecursive, initialExtractMap);
157
+ traverseQuestionnaire(questionnaire, mapQItemsExtractableRecursive, initialExtractMap);
156
158
 
157
159
  return initialExtractMap;
158
160
  }
@@ -161,29 +163,30 @@ function mapQItemsExtractableRecursive(
161
163
  qItem: QuestionnaireItem,
162
164
  root?: Questionnaire,
163
165
  parent?: QuestionnaireItem,
164
- qItemExtrableMap?: Record<string, Extractable>
166
+ qItemExtractableMap?: Record<string, Extractable>
165
167
  ): void {
166
- if (!qItemExtrableMap) return;
168
+ if (!qItemExtractableMap) return;
167
169
 
168
- if (!qItemExtrableMap[qItem.linkId]) {
169
- qItemExtrableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
170
+ if (!qItemExtractableMap[qItem.linkId]) {
171
+ qItemExtractableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
170
172
  }
171
173
 
172
- // Check if questionnaire extractable
174
+ // Check if questionnaireItem is observation-extractable
173
175
  const extension = qItem.extension?.find((e) => e.url === FHIR_OBSERVATION_EXTRACT_EXTENSION);
174
176
 
175
177
  if (extension?.valueBoolean || extension?.valueBoolean === false) {
176
- qItemExtrableMap[qItem.linkId].extractable = extension?.valueBoolean ?? false;
177
- } else if (parent && qItemExtrableMap[parent.linkId]) {
178
- qItemExtrableMap[qItem.linkId].extractable = qItemExtrableMap[parent.linkId].extractable;
179
- } else if (root && qItemExtrableMap[root.id ?? 'root']) {
180
- qItemExtrableMap[qItem.linkId].extractable = qItemExtrableMap[root?.id ?? 'root'].extractable;
178
+ qItemExtractableMap[qItem.linkId].extractable = extension?.valueBoolean ?? false;
179
+ } else if (parent && qItemExtractableMap[parent.linkId]) {
180
+ qItemExtractableMap[qItem.linkId].extractable = qItemExtractableMap[parent.linkId].extractable;
181
+ } else if (root && qItemExtractableMap[root.id ?? 'root']) {
182
+ qItemExtractableMap[qItem.linkId].extractable =
183
+ qItemExtractableMap[root?.id ?? 'root'].extractable;
181
184
  } else {
182
- qItemExtrableMap[qItem.linkId].extractable = false;
185
+ qItemExtractableMap[qItem.linkId].extractable = false;
183
186
  }
184
187
 
185
188
  // if questionnaire extractable, check for extract category
186
- if (qItemExtrableMap[qItem.linkId].extractable) {
189
+ if (qItemExtractableMap[qItem.linkId].extractable) {
187
190
  const extractCategoryExts = qItem.extension
188
191
  ?.filter(
189
192
  (e) => e.url === FHIR_OBSERVATION_EXTRACT_CATEGORY_EXTENSION && e.valueCodeableConcept
@@ -191,21 +194,21 @@ function mapQItemsExtractableRecursive(
191
194
  ?.map((e) => e.valueCodeableConcept) as CodeableConcept[] | undefined;
192
195
 
193
196
  if (extractCategoryExts) {
194
- qItemExtrableMap[qItem.linkId].extractCategories = extractCategoryExts;
195
- } else if (parent && qItemExtrableMap[parent.linkId].extractCategories.length) {
196
- qItemExtrableMap[qItem.linkId].extractCategories =
197
- qItemExtrableMap[parent.linkId].extractCategories;
198
- } else if (root && qItemExtrableMap[root.id ?? 'root'].extractCategories.length) {
199
- qItemExtrableMap[qItem.linkId].extractCategories =
200
- qItemExtrableMap[root?.id ?? 'root'].extractCategories;
197
+ qItemExtractableMap[qItem.linkId].extractCategories = extractCategoryExts;
198
+ } else if (parent && qItemExtractableMap[parent.linkId].extractCategories.length) {
199
+ qItemExtractableMap[qItem.linkId].extractCategories =
200
+ qItemExtractableMap[parent.linkId].extractCategories;
201
+ } else if (root && qItemExtractableMap[root.id ?? 'root'].extractCategories.length) {
202
+ qItemExtractableMap[qItem.linkId].extractCategories =
203
+ qItemExtractableMap[root?.id ?? 'root'].extractCategories;
201
204
  } else {
202
- qItemExtrableMap[qItem.linkId].extractCategories = [];
205
+ qItemExtractableMap[qItem.linkId].extractCategories = [];
203
206
  }
204
207
  }
205
208
 
206
209
  if (qItem.item && qItem.item.length !== 0) {
207
210
  for (const qChildItem of qItem.item) {
208
- mapQItemsExtractableRecursive(qChildItem, root, qItem, qItemExtrableMap);
211
+ mapQItemsExtractableRecursive(qChildItem, root, qItem, qItemExtractableMap);
209
212
  }
210
213
  }
211
214
  }
@@ -312,3 +315,84 @@ function removeIfNull<T, U>(
312
315
 
313
316
  return { [key]: value };
314
317
  }
318
+
319
+ /**
320
+ * Checks whether a Questionnaire or any of its items contains a valid `sdc-questionnaire-observationExtract` extension (and if it's at the item level, a valid item.code too).
321
+ * Array.prototype.some() is short-circuiting, so it will return true as soon as it finds a valid extension.
322
+ *
323
+ * @param questionnaire - The FHIR Questionnaire to check.
324
+ * @returns `true` if at least one valid observationExtract extension exists.
325
+ */
326
+ export function canBeObservationExtracted(questionnaire: Questionnaire): boolean {
327
+ // Check Questionnaire-level extension
328
+ const isObservationExtractable = hasObservationExtractExtension(questionnaire);
329
+ if (isObservationExtractable) {
330
+ return true;
331
+ }
332
+
333
+ // Check item-level extensions recursively
334
+ if (questionnaire.item) {
335
+ return questionnaire.item.some((item) => hasObservationExtractExtensionRecursive(item));
336
+ }
337
+
338
+ return false;
339
+ }
340
+
341
+ /**
342
+ * Recursively checks whether a `QuestionnaireItem` or any of its child items contains a `sdc-questionnaire-observationExtract` extension (and if it's at the item level, a valid item.code too).
343
+ * Array.prototype.some() is short-circuiting, so it will return true as soon as it finds a valid extension.
344
+ */
345
+ function hasObservationExtractExtensionRecursive(item: QuestionnaireItem): boolean {
346
+ const isObservationExtractable = hasObservationExtractExtension(item);
347
+ if (isObservationExtractable) {
348
+ return true;
349
+ }
350
+
351
+ return item.item?.some((child) => hasObservationExtractExtensionRecursive(child)) ?? false;
352
+ }
353
+
354
+ /**
355
+ * Checks if a Questionnaire or QuestionnaireItem has a `sdc-questionnaire-observationExtract` extension.
356
+ * For items, also ensures that there is an item.code.
357
+ */
358
+ function hasObservationExtractExtension(item: QuestionnaireItem | Questionnaire): boolean {
359
+ const observationExtractPresent = !!item.extension?.find(
360
+ (ext) => ext.url === FHIR_OBSERVATION_EXTRACT_EXTENSION
361
+ );
362
+
363
+ // Check if the item has a linkId (means it's a QuestionnaireItem), item.code must be present
364
+ // This does not apply to the Questionnaire-level, hence itemCodePresent defaults to true
365
+ let itemCodePresent = true;
366
+ if ('linkId' in item) {
367
+ itemCodePresent = !!item.code && item.code.length > 0;
368
+ }
369
+
370
+ return observationExtractPresent && itemCodePresent;
371
+ }
372
+
373
+ export function buildBundleFromObservationArray(observations: Observation[]): Bundle {
374
+ return {
375
+ resourceType: 'Bundle',
376
+ id: `sdc-observation-extract-${nanoid()}`,
377
+ meta: {
378
+ tag: [
379
+ {
380
+ code: '@aehrc/smart-forms-renderer:generated'
381
+ }
382
+ ]
383
+ },
384
+ type: 'transaction',
385
+ timestamp: new Date().toISOString(),
386
+ entry: observations.map((observation) => {
387
+ const observationId = observation.id || `obs-${nanoid()}`;
388
+ return {
389
+ fullUrl: `Observation/${observationId}`,
390
+ resource: observation,
391
+ request: {
392
+ method: 'POST',
393
+ url: 'Observation'
394
+ }
395
+ };
396
+ })
397
+ };
398
+ }
@@ -135,21 +135,21 @@ export function readQuestionnaireResponse<T, U>(
135
135
  return readValueArray;
136
136
  }
137
137
 
138
- export type RecursiveTranverseFunction<U> = (
138
+ export type RecursiveTraverseFunction<U> = (
139
139
  qItem: QuestionnaireItem,
140
140
  root?: Questionnaire,
141
141
  parent?: QuestionnaireItem,
142
142
  extraData?: U
143
143
  ) => void;
144
144
 
145
- export function transverseQuestionnaire<U>(
145
+ export function traverseQuestionnaire<U>(
146
146
  questionnaire: Questionnaire,
147
- recursiveTranverseFunction: RecursiveTranverseFunction<U>,
147
+ recursiveTraverseFunction: RecursiveTraverseFunction<U>,
148
148
  extraData?: U
149
149
  ): void {
150
150
  if (!questionnaire.item || questionnaire.item.length === 0) return;
151
151
 
152
152
  for (const topLevelQItem of questionnaire.item) {
153
- recursiveTranverseFunction(topLevelQItem, questionnaire, undefined, extraData);
153
+ recursiveTraverseFunction(topLevelQItem, questionnaire, undefined, extraData);
154
154
  }
155
155
  }
@@ -32,6 +32,10 @@ export { parseDecimalStringToFloat, parseDecimalStringWithPrecision } from './pa
32
32
  export type { ItemToRepopulate } from './repopulateItems';
33
33
  export { generateItemsToRepopulate } from './repopulateItems';
34
34
  export { repopulateResponse } from './repopulateIntoResponse';
35
- export { extractObservationBased } from './extractObservation';
35
+ export {
36
+ extractObservationBased,
37
+ canBeObservationExtracted,
38
+ buildBundleFromObservationArray
39
+ } from './extractObservation';
36
40
 
37
41
  export { getQuestionnaireItem, getSectionHeading } from './misc';