@aehrc/smart-forms-renderer 1.0.0-alpha.70 → 1.0.0-alpha.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/hooks/useAttachmentUrlValidation.js +1 -1
- package/lib/hooks/useAttachmentUrlValidation.js.map +1 -1
- package/lib/hooks/useQuantityCalculatedExpression.js +6 -3
- package/lib/hooks/useQuantityCalculatedExpression.js.map +1 -1
- package/lib/hooks/useTerminologyServerQuery.js +5 -5
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +4 -4
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/extractObservation.d.ts +10 -1
- package/lib/utils/extractObservation.js +97 -23
- package/lib/utils/extractObservation.js.map +1 -1
- package/lib/utils/genericRecursive.d.ts +2 -2
- package/lib/utils/genericRecursive.js +2 -2
- package/lib/utils/genericRecursive.js.map +1 -1
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/preferredTerminologyServer.d.ts +11 -0
- package/lib/utils/preferredTerminologyServer.js +30 -0
- package/lib/utils/preferredTerminologyServer.js.map +1 -0
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +6 -6
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/package.json +1 -1
- package/src/hooks/useAttachmentUrlValidation.ts +1 -1
- package/src/hooks/useQuantityCalculatedExpression.ts +13 -3
- package/src/hooks/useTerminologyServerQuery.ts +7 -4
- package/src/hooks/useValueSetCodings.ts +6 -4
- package/src/index.ts +2 -0
- package/src/setup-jest.ts +5 -0
- package/src/utils/extractObservation.ts +107 -23
- package/src/utils/genericRecursive.ts +4 -4
- package/src/utils/index.ts +5 -1
- package/src/utils/preferredTerminologyServer.ts +38 -0
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +8 -5
|
@@ -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,
|
|
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"}
|
|
@@ -15,12 +15,14 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { useEffect, useState } from 'react';
|
|
18
|
-
import { useQuestionnaireStore } from '../stores';
|
|
18
|
+
import { useQuestionnaireStore, useTerminologyServerStore } from '../stores';
|
|
19
19
|
import { validateCodePromise } from '../utils/valueSet';
|
|
20
|
-
import {
|
|
20
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
21
21
|
function useQuantityCalculatedExpression(props) {
|
|
22
22
|
const { qItem, inputValue, precision, onChangeByCalcExpressionDecimal, onChangeByCalcExpressionQuantity, onChangeByCalcExpressionNull } = props;
|
|
23
23
|
const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
|
|
24
|
+
const itemPreferredTerminologyServers = useQuestionnaireStore.use.itemPreferredTerminologyServers();
|
|
25
|
+
const defaultTerminologyServerUrl = useTerminologyServerStore.use.url();
|
|
24
26
|
const [calcExpUpdated, setCalcExpUpdated] = useState(false);
|
|
25
27
|
useEffect(() => {
|
|
26
28
|
var _a;
|
|
@@ -67,7 +69,8 @@ function useQuantityCalculatedExpression(props) {
|
|
|
67
69
|
const unitCodeFormatted = unitCode.replace(/'/g, '');
|
|
68
70
|
const ucumValueSet = 'http://hl7.org/fhir/ValueSet/ucum-units';
|
|
69
71
|
const ucumSystem = 'http://unitsofmeasure.org';
|
|
70
|
-
|
|
72
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(qItem, itemPreferredTerminologyServers, defaultTerminologyServerUrl);
|
|
73
|
+
validateCodePromise(ucumValueSet, ucumSystem, unitCodeFormatted, terminologyServerUrl).then((validateCodeResponse) => {
|
|
71
74
|
// Return early if validate-code request fails
|
|
72
75
|
if (!validateCodeResponse) {
|
|
73
76
|
onChangeByCalcExpressionNull();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuantityCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useQuantityCalculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"useQuantityCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useQuantityCalculatedExpression.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import {
|
|
17
|
+
import { getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
|
|
18
18
|
import { useQuestionnaireStore, useTerminologyServerStore } from '../stores';
|
|
19
19
|
import { useQuery } from '@tanstack/react-query';
|
|
20
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
20
21
|
function useTerminologyServerQuery(qItem, maxList, input, searchTerm) {
|
|
21
|
-
var _a, _b
|
|
22
|
+
var _a, _b;
|
|
22
23
|
const processedValueSets = useQuestionnaireStore.use.processedValueSets();
|
|
23
24
|
const itemPreferredTerminologyServers = useQuestionnaireStore.use.itemPreferredTerminologyServers();
|
|
24
25
|
const defaultTerminologyServerUrl = useTerminologyServerStore.use.url();
|
|
@@ -45,8 +46,7 @@ function useTerminologyServerQuery(qItem, maxList, input, searchTerm) {
|
|
|
45
46
|
fullUrl = urlWithTrailingAmpersand + 'filter=' + searchTerm + '&count=' + maxList;
|
|
46
47
|
}
|
|
47
48
|
// Perform query
|
|
48
|
-
const
|
|
49
|
-
const terminologyServerUrl = (_c = (_b = getTerminologyServerUrl(qItem)) !== null && _b !== void 0 ? _b : preferredTerminologyServerUrl) !== null && _c !== void 0 ? _c : defaultTerminologyServerUrl;
|
|
49
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(qItem, itemPreferredTerminologyServers, defaultTerminologyServerUrl);
|
|
50
50
|
const { isFetching, error, data } = useQuery({
|
|
51
51
|
queryKey: ['expandValueSet', fullUrl],
|
|
52
52
|
queryFn: () => getValueSetPromise(fullUrl, terminologyServerUrl),
|
|
@@ -60,7 +60,7 @@ function useTerminologyServerQuery(qItem, maxList, input, searchTerm) {
|
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
if (data) {
|
|
63
|
-
if (((
|
|
63
|
+
if (((_b = data.expansion) === null || _b === void 0 ? void 0 : _b.total) !== 0) {
|
|
64
64
|
options = getValueSetCodings(data);
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminologyServerQuery.js","sourceRoot":"","sources":["../../src/hooks/useTerminologyServerQuery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useTerminologyServerQuery.js","sourceRoot":"","sources":["../../src/hooks/useTerminologyServerQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,15 +24,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
26
|
import { useEffect, useMemo, useState } from 'react';
|
|
27
|
-
import { getResourceFromLaunchContext,
|
|
27
|
+
import { getResourceFromLaunchContext, getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
|
|
28
28
|
import { getAnswerExpression } from '../utils/getExpressionsFromItem';
|
|
29
29
|
import fhirpath from 'fhirpath';
|
|
30
30
|
import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
|
|
31
31
|
import { useQuestionnaireStore, useSmartConfigStore, useTerminologyServerStore } from '../stores';
|
|
32
32
|
import { addDisplayToCodingArray } from '../utils/questionnaireStoreUtils/addDisplayToCodings';
|
|
33
33
|
import useDynamicValueSetEffect, { getUpdatableValueSetUrl } from './useDynamicValueSetEffect';
|
|
34
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
34
35
|
function useValueSetCodings(qItem) {
|
|
35
|
-
var _a
|
|
36
|
+
var _a;
|
|
36
37
|
const patient = useSmartConfigStore.use.patient();
|
|
37
38
|
const user = useSmartConfigStore.use.user();
|
|
38
39
|
const encounter = useSmartConfigStore.use.encounter();
|
|
@@ -122,8 +123,7 @@ function useValueSetCodings(qItem) {
|
|
|
122
123
|
const [serverError, setServerError] = useState(null);
|
|
123
124
|
const [dynamicCodingsUpdated, setDynamicCodingsUpdated] = useState(false);
|
|
124
125
|
const codingsCount = codings.length;
|
|
125
|
-
const
|
|
126
|
-
const terminologyServerUrl = (_c = (_b = getTerminologyServerUrl(qItem)) !== null && _b !== void 0 ? _b : preferredTerminologyServerUrl) !== null && _c !== void 0 ? _c : defaultTerminologyServerUrl;
|
|
126
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(qItem, itemPreferredTerminologyServers, defaultTerminologyServerUrl);
|
|
127
127
|
// Get options from parameterised/dynamic value sets when the updatableValueSetUrl changes (p-param is updated via fhirpath) or from cqf-expression in _answerValueSet
|
|
128
128
|
useDynamicValueSetEffect(qItem, terminologyServerUrl, processedValueSets, cachedValueSetCodings, setCodings, setDynamicCodingsUpdated, setServerError);
|
|
129
129
|
// Acts as a fallback - get options from answerValueSet in real-time if it's not pre-processed or cached which is very unlikely
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAEH,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EACL,4BAA4B,EAC5B,
|
|
1
|
+
{"version":3,"file":"useValueSetCodings.js","sourceRoot":"","sources":["../../src/hooks/useValueSetCodings.ts"],"names":[],"mappings":"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"}
|
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,
|
|
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
|
-
|
|
92
|
+
traverseQuestionnaire(questionnaire, mapQItemsExtractableRecursive, initialExtractMap);
|
|
92
93
|
return initialExtractMap;
|
|
93
94
|
}
|
|
94
|
-
function mapQItemsExtractableRecursive(qItem, root, parent,
|
|
95
|
+
function mapQItemsExtractableRecursive(qItem, root, parent, qItemExtractableMap) {
|
|
95
96
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
96
|
-
if (!
|
|
97
|
+
if (!qItemExtractableMap)
|
|
97
98
|
return;
|
|
98
|
-
if (!
|
|
99
|
-
|
|
99
|
+
if (!qItemExtractableMap[qItem.linkId]) {
|
|
100
|
+
qItemExtractableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
|
|
100
101
|
}
|
|
101
|
-
// Check if
|
|
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
|
-
|
|
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 &&
|
|
107
|
-
|
|
107
|
+
else if (parent && qItemExtractableMap[parent.linkId]) {
|
|
108
|
+
qItemExtractableMap[qItem.linkId].extractable = qItemExtractableMap[parent.linkId].extractable;
|
|
108
109
|
}
|
|
109
|
-
else if (root &&
|
|
110
|
-
|
|
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
|
-
|
|
115
|
+
qItemExtractableMap[qItem.linkId].extractable = false;
|
|
114
116
|
}
|
|
115
117
|
// if questionnaire extractable, check for extract category
|
|
116
|
-
if (
|
|
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
|
-
|
|
121
|
+
qItemExtractableMap[qItem.linkId].extractCategories = extractCategoryExts;
|
|
120
122
|
}
|
|
121
|
-
else if (parent &&
|
|
122
|
-
|
|
123
|
-
|
|
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 &&
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
20
|
-
export declare function
|
|
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
|
|
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
|
-
|
|
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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"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -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';
|
package/lib/utils/index.js
CHANGED
|
@@ -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
|
package/lib/utils/index.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
/**
|
|
3
|
+
* Returns the terminology server URL to use for a given Questionnaire item.
|
|
4
|
+
*
|
|
5
|
+
* Priority:
|
|
6
|
+
* 1. Use sdc-questionnaire-preferredTerminologyServer extension.
|
|
7
|
+
* 2. Use StructureDefinition/terminology-server extension.
|
|
8
|
+
* 3. Use renderer default server url set at the buildForm() stage.
|
|
9
|
+
* 4. Use global fallback URL from @aehrc/smart-forms-renderer - https://tx.ontoserver.csiro.au/fhir/
|
|
10
|
+
*/
|
|
11
|
+
export declare function getItemTerminologyServerToUse(qItem: QuestionnaireItem, itemPreferredTerminologyServers: Record<string, string>, rendererDefaultTerminologyServerUrl: string): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getTerminologyServerUrl } from './valueSet';
|
|
2
|
+
import { TERMINOLOGY_SERVER_URL } from '../globals';
|
|
3
|
+
/**
|
|
4
|
+
* Returns the terminology server URL to use for a given Questionnaire item.
|
|
5
|
+
*
|
|
6
|
+
* Priority:
|
|
7
|
+
* 1. Use sdc-questionnaire-preferredTerminologyServer extension.
|
|
8
|
+
* 2. Use StructureDefinition/terminology-server extension.
|
|
9
|
+
* 3. Use renderer default server url set at the buildForm() stage.
|
|
10
|
+
* 4. Use global fallback URL from @aehrc/smart-forms-renderer - https://tx.ontoserver.csiro.au/fhir/
|
|
11
|
+
*/
|
|
12
|
+
export function getItemTerminologyServerToUse(qItem, itemPreferredTerminologyServers, rendererDefaultTerminologyServerUrl) {
|
|
13
|
+
// Item has sdc-questionnaire-preferredTerminologyServer extension set, use it
|
|
14
|
+
const preferredTerminologyServerUrl = itemPreferredTerminologyServers[qItem.linkId];
|
|
15
|
+
if (preferredTerminologyServerUrl) {
|
|
16
|
+
return preferredTerminologyServerUrl;
|
|
17
|
+
}
|
|
18
|
+
// Item has backwards compatible StructureDefinition/terminology-server extension set, use it
|
|
19
|
+
const terminologyServerUrlBackwardsCompatible = getTerminologyServerUrl(qItem);
|
|
20
|
+
if (terminologyServerUrlBackwardsCompatible) {
|
|
21
|
+
return terminologyServerUrlBackwardsCompatible;
|
|
22
|
+
}
|
|
23
|
+
// A default terminology server is set during renderer initialisation, use it
|
|
24
|
+
if (rendererDefaultTerminologyServerUrl) {
|
|
25
|
+
return rendererDefaultTerminologyServerUrl;
|
|
26
|
+
}
|
|
27
|
+
// Fallback to use default terminology server from env - https://tx.ontoserver.csiro.au/fhir/
|
|
28
|
+
return TERMINOLOGY_SERVER_URL;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=preferredTerminologyServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferredTerminologyServer.js","sourceRoot":"","sources":["../../src/utils/preferredTerminologyServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAwB,EACxB,+BAAuD,EACvD,mCAA2C;IAE3C,8EAA8E;IAC9E,MAAM,6BAA6B,GAAG,+BAA+B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpF,IAAI,6BAA6B,EAAE,CAAC;QAClC,OAAO,6BAA6B,CAAC;IACvC,CAAC;IAED,6FAA6F;IAC7F,MAAM,uCAAuC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,uCAAuC,EAAE,CAAC;QAC5C,OAAO,uCAAuC,CAAC;IACjD,CAAC;IAED,6EAA6E;IAC7E,IAAI,mCAAmC,EAAE,CAAC;QACxC,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IAED,6FAA6F;IAC7F,OAAO,sBAAsB,CAAC;AAChC,CAAC"}
|
|
@@ -23,7 +23,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
23
23
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
24
|
});
|
|
25
25
|
};
|
|
26
|
-
import {
|
|
26
|
+
import { getValueSetPromise } from '../valueSet';
|
|
27
27
|
import { getFhirPathVariables, getXFhirQueryVariables } from './extractVariables';
|
|
28
28
|
import { getRepeatGroupParentItem } from '../misc';
|
|
29
29
|
import { checkItemIsEnabledRepeat } from '../enableWhen';
|
|
@@ -31,6 +31,7 @@ import { emptyResponse } from '../emptyResource';
|
|
|
31
31
|
import { evaluateEnableWhenRepeatExpressionInstance } from '../enableWhenExpression';
|
|
32
32
|
import { getAnswerExpression, getAnswerOptionsToggleExpressions, getCalculatedExpressions, getEnableWhenExpression, getInitialExpression } from '../getExpressionsFromItem';
|
|
33
33
|
import { addBindingParametersToValueSetUrl, getBindingParameters } from '../parameterisedValueSets';
|
|
34
|
+
import { getItemTerminologyServerToUse } from '../preferredTerminologyServer';
|
|
34
35
|
export function extractOtherExtensions(questionnaire, variables, valueSetPromises, processedValueSets, cachedValueSetCodings, itemPreferredTerminologyServers, terminologyServerUrl) {
|
|
35
36
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
37
|
const enableWhenItems = { singleItems: {}, repeatItems: {} };
|
|
@@ -99,7 +100,7 @@ export function extractOtherExtensions(questionnaire, variables, valueSetPromise
|
|
|
99
100
|
}
|
|
100
101
|
function extractExtensionsFromItemRecursive(params) {
|
|
101
102
|
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
-
var _a
|
|
103
|
+
var _a;
|
|
103
104
|
const { questionnaire, item, variables, enableWhenItems, enableWhenExpressions, calculatedExpressions, initialExpressions, answerExpressions, answerOptions, answerOptionsToggleExpressions, valueSetPromises, processedValueSets, cachedValueSetCodings, itemPreferredTerminologyServers, defaultTerminologyServerUrl, parentRepeatGroupLinkId } = params;
|
|
104
105
|
const items = item.item;
|
|
105
106
|
const isRepeatGroup = !!item.repeats && item.type === 'group';
|
|
@@ -122,9 +123,8 @@ function extractExtensionsFromItemRecursive(params) {
|
|
|
122
123
|
enableWhenItemProperties;
|
|
123
124
|
}
|
|
124
125
|
}
|
|
125
|
-
// Get
|
|
126
|
-
const
|
|
127
|
-
const terminologyServerUrl = (_b = (_a = getTerminologyServerUrl(item)) !== null && _a !== void 0 ? _a : preferredTerminologyServerUrl) !== null && _b !== void 0 ? _b : defaultTerminologyServerUrl;
|
|
126
|
+
// Get terminology server URL to use for the item
|
|
127
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(item, itemPreferredTerminologyServers, defaultTerminologyServerUrl);
|
|
128
128
|
const initialisedEnableWhenExpressions = yield initialiseEnableWhenExpression(item, questionnaire, terminologyServerUrl, parentRepeatGroupLinkId);
|
|
129
129
|
if (initialisedEnableWhenExpressions) {
|
|
130
130
|
const { enableWhenExpressionType, enableWhenExpression } = initialisedEnableWhenExpressions;
|
|
@@ -157,7 +157,7 @@ function extractExtensionsFromItemRecursive(params) {
|
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
159
|
// Get answerOptions
|
|
160
|
-
const options = (
|
|
160
|
+
const options = (_a = item.answerOption) !== null && _a !== void 0 ? _a : null;
|
|
161
161
|
if (options) {
|
|
162
162
|
answerOptions[item.linkId] = options;
|
|
163
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;AAuBH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"extractOtherExtensions.js","sourceRoot":"","sources":["../../../src/utils/questionnaireStoreUtils/extractOtherExtensions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
import { useEffect, useState } from 'react';
|
|
19
19
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
20
|
-
import { useQuestionnaireStore } from '../stores';
|
|
20
|
+
import { useQuestionnaireStore, useTerminologyServerStore } from '../stores';
|
|
21
21
|
import { validateCodePromise } from '../utils/valueSet';
|
|
22
|
-
import { TERMINOLOGY_SERVER_URL } from '../globals';
|
|
23
22
|
import type {
|
|
24
23
|
CodeParameter,
|
|
25
24
|
DisplayParameter,
|
|
26
25
|
SystemParameter
|
|
27
26
|
} from '../interfaces/valueSet.interface';
|
|
27
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
28
28
|
|
|
29
29
|
interface UseQuantityCalculatedExpression {
|
|
30
30
|
calcExpUpdated: boolean;
|
|
@@ -58,6 +58,10 @@ function useQuantityCalculatedExpression(
|
|
|
58
58
|
|
|
59
59
|
const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
|
|
60
60
|
|
|
61
|
+
const itemPreferredTerminologyServers =
|
|
62
|
+
useQuestionnaireStore.use.itemPreferredTerminologyServers();
|
|
63
|
+
const defaultTerminologyServerUrl = useTerminologyServerStore.use.url();
|
|
64
|
+
|
|
61
65
|
const [calcExpUpdated, setCalcExpUpdated] = useState(false);
|
|
62
66
|
|
|
63
67
|
useEffect(
|
|
@@ -119,11 +123,17 @@ function useQuantityCalculatedExpression(
|
|
|
119
123
|
const ucumValueSet = 'http://hl7.org/fhir/ValueSet/ucum-units';
|
|
120
124
|
const ucumSystem = 'http://unitsofmeasure.org';
|
|
121
125
|
|
|
126
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(
|
|
127
|
+
qItem,
|
|
128
|
+
itemPreferredTerminologyServers,
|
|
129
|
+
defaultTerminologyServerUrl
|
|
130
|
+
);
|
|
131
|
+
|
|
122
132
|
validateCodePromise(
|
|
123
133
|
ucumValueSet,
|
|
124
134
|
ucumSystem,
|
|
125
135
|
unitCodeFormatted,
|
|
126
|
-
|
|
136
|
+
terminologyServerUrl
|
|
127
137
|
).then((validateCodeResponse) => {
|
|
128
138
|
// Return early if validate-code request fails
|
|
129
139
|
if (!validateCodeResponse) {
|
|
@@ -16,11 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import type { Coding, QuestionnaireItem, ValueSet } from 'fhir/r4';
|
|
19
|
-
import {
|
|
19
|
+
import { getValueSetCodings, getValueSetPromise } from '../utils/valueSet';
|
|
20
20
|
|
|
21
21
|
import type { AlertColor } from '@mui/material/Alert';
|
|
22
22
|
import { useQuestionnaireStore, useTerminologyServerStore } from '../stores';
|
|
23
23
|
import { useQuery } from '@tanstack/react-query';
|
|
24
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
24
25
|
|
|
25
26
|
function useTerminologyServerQuery(
|
|
26
27
|
qItem: QuestionnaireItem,
|
|
@@ -63,9 +64,11 @@ function useTerminologyServerQuery(
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
// Perform query
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(
|
|
68
|
+
qItem,
|
|
69
|
+
itemPreferredTerminologyServers,
|
|
70
|
+
defaultTerminologyServerUrl
|
|
71
|
+
);
|
|
69
72
|
|
|
70
73
|
const { isFetching, error, data } = useQuery<ValueSet>({
|
|
71
74
|
queryKey: ['expandValueSet', fullUrl],
|
|
@@ -19,7 +19,6 @@ import { useEffect, useMemo, useState } from 'react';
|
|
|
19
19
|
import type { Coding, FhirResource, QuestionnaireItem, ValueSet } from 'fhir/r4';
|
|
20
20
|
import {
|
|
21
21
|
getResourceFromLaunchContext,
|
|
22
|
-
getTerminologyServerUrl,
|
|
23
22
|
getValueSetCodings,
|
|
24
23
|
getValueSetPromise
|
|
25
24
|
} from '../utils/valueSet';
|
|
@@ -29,6 +28,7 @@ import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
|
|
|
29
28
|
import { useQuestionnaireStore, useSmartConfigStore, useTerminologyServerStore } from '../stores';
|
|
30
29
|
import { addDisplayToCodingArray } from '../utils/questionnaireStoreUtils/addDisplayToCodings';
|
|
31
30
|
import useDynamicValueSetEffect, { getUpdatableValueSetUrl } from './useDynamicValueSetEffect';
|
|
31
|
+
import { getItemTerminologyServerToUse } from '../utils/preferredTerminologyServer';
|
|
32
32
|
|
|
33
33
|
export interface TerminologyError {
|
|
34
34
|
error: Error | null;
|
|
@@ -143,9 +143,11 @@ function useValueSetCodings(qItem: QuestionnaireItem): {
|
|
|
143
143
|
const [dynamicCodingsUpdated, setDynamicCodingsUpdated] = useState(false);
|
|
144
144
|
|
|
145
145
|
const codingsCount = codings.length;
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(
|
|
147
|
+
qItem,
|
|
148
|
+
itemPreferredTerminologyServers,
|
|
149
|
+
defaultTerminologyServerUrl
|
|
150
|
+
);
|
|
149
151
|
|
|
150
152
|
// Get options from parameterised/dynamic value sets when the updatableValueSetUrl changes (p-param is updated via fhirpath) or from cqf-expression in _answerValueSet
|
|
151
153
|
useDynamicValueSetEffect(
|
package/src/index.ts
CHANGED
package/src/setup-jest.ts
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
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
|
-
|
|
166
|
+
qItemExtractableMap?: Record<string, Extractable>
|
|
165
167
|
): void {
|
|
166
|
-
if (!
|
|
168
|
+
if (!qItemExtractableMap) return;
|
|
167
169
|
|
|
168
|
-
if (!
|
|
169
|
-
|
|
170
|
+
if (!qItemExtractableMap[qItem.linkId]) {
|
|
171
|
+
qItemExtractableMap[qItem.linkId] = { extractable: false, extractCategories: [] };
|
|
170
172
|
}
|
|
171
173
|
|
|
172
|
-
// Check if
|
|
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
|
-
|
|
177
|
-
} else if (parent &&
|
|
178
|
-
|
|
179
|
-
} else if (root &&
|
|
180
|
-
|
|
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
|
-
|
|
185
|
+
qItemExtractableMap[qItem.linkId].extractable = false;
|
|
183
186
|
}
|
|
184
187
|
|
|
185
188
|
// if questionnaire extractable, check for extract category
|
|
186
|
-
if (
|
|
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
|
-
|
|
195
|
-
} else if (parent &&
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
} else if (root &&
|
|
199
|
-
|
|
200
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
145
|
+
export function traverseQuestionnaire<U>(
|
|
146
146
|
questionnaire: Questionnaire,
|
|
147
|
-
|
|
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
|
-
|
|
153
|
+
recursiveTraverseFunction(topLevelQItem, questionnaire, undefined, extraData);
|
|
154
154
|
}
|
|
155
155
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -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 {
|
|
35
|
+
export {
|
|
36
|
+
extractObservationBased,
|
|
37
|
+
canBeObservationExtracted,
|
|
38
|
+
buildBundleFromObservationArray
|
|
39
|
+
} from './extractObservation';
|
|
36
40
|
|
|
37
41
|
export { getQuestionnaireItem, getSectionHeading } from './misc';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
import { getTerminologyServerUrl } from './valueSet';
|
|
3
|
+
import { TERMINOLOGY_SERVER_URL } from '../globals';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns the terminology server URL to use for a given Questionnaire item.
|
|
7
|
+
*
|
|
8
|
+
* Priority:
|
|
9
|
+
* 1. Use sdc-questionnaire-preferredTerminologyServer extension.
|
|
10
|
+
* 2. Use StructureDefinition/terminology-server extension.
|
|
11
|
+
* 3. Use renderer default server url set at the buildForm() stage.
|
|
12
|
+
* 4. Use global fallback URL from @aehrc/smart-forms-renderer - https://tx.ontoserver.csiro.au/fhir/
|
|
13
|
+
*/
|
|
14
|
+
export function getItemTerminologyServerToUse(
|
|
15
|
+
qItem: QuestionnaireItem,
|
|
16
|
+
itemPreferredTerminologyServers: Record<string, string>,
|
|
17
|
+
rendererDefaultTerminologyServerUrl: string
|
|
18
|
+
): string {
|
|
19
|
+
// Item has sdc-questionnaire-preferredTerminologyServer extension set, use it
|
|
20
|
+
const preferredTerminologyServerUrl = itemPreferredTerminologyServers[qItem.linkId];
|
|
21
|
+
if (preferredTerminologyServerUrl) {
|
|
22
|
+
return preferredTerminologyServerUrl;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Item has backwards compatible StructureDefinition/terminology-server extension set, use it
|
|
26
|
+
const terminologyServerUrlBackwardsCompatible = getTerminologyServerUrl(qItem);
|
|
27
|
+
if (terminologyServerUrlBackwardsCompatible) {
|
|
28
|
+
return terminologyServerUrlBackwardsCompatible;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// A default terminology server is set during renderer initialisation, use it
|
|
32
|
+
if (rendererDefaultTerminologyServerUrl) {
|
|
33
|
+
return rendererDefaultTerminologyServerUrl;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Fallback to use default terminology server from env - https://tx.ontoserver.csiro.au/fhir/
|
|
37
|
+
return TERMINOLOGY_SERVER_URL;
|
|
38
|
+
}
|
|
@@ -36,7 +36,7 @@ import type {
|
|
|
36
36
|
} from '../../interfaces/enableWhen.interface';
|
|
37
37
|
import type { AnswerExpression } from '../../interfaces/answerExpression.interface';
|
|
38
38
|
import type { ProcessedValueSet, ValueSetPromise } from '../../interfaces/valueSet.interface';
|
|
39
|
-
import {
|
|
39
|
+
import { getValueSetPromise } from '../valueSet';
|
|
40
40
|
import type { Variables } from '../../interfaces/variables.interface';
|
|
41
41
|
import { getFhirPathVariables, getXFhirQueryVariables } from './extractVariables';
|
|
42
42
|
import { getRepeatGroupParentItem } from '../misc';
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
import type { InitialExpression } from '../../interfaces/initialExpression.interface';
|
|
54
54
|
import { addBindingParametersToValueSetUrl, getBindingParameters } from '../parameterisedValueSets';
|
|
55
55
|
import type { AnswerOptionsToggleExpression } from '../../interfaces/answerOptionsToggleExpression.interface';
|
|
56
|
+
import { getItemTerminologyServerToUse } from '../preferredTerminologyServer';
|
|
56
57
|
|
|
57
58
|
interface ReturnParamsRecursive {
|
|
58
59
|
variables: Variables;
|
|
@@ -215,10 +216,12 @@ async function extractExtensionsFromItemRecursive(
|
|
|
215
216
|
}
|
|
216
217
|
}
|
|
217
218
|
|
|
218
|
-
// Get
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
219
|
+
// Get terminology server URL to use for the item
|
|
220
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(
|
|
221
|
+
item,
|
|
222
|
+
itemPreferredTerminologyServers,
|
|
223
|
+
defaultTerminologyServerUrl
|
|
224
|
+
);
|
|
222
225
|
|
|
223
226
|
const initialisedEnableWhenExpressions = await initialiseEnableWhenExpression(
|
|
224
227
|
item,
|