@aehrc/smart-forms-renderer 1.0.0-alpha.71 → 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/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/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/useQuantityCalculatedExpression.ts +13 -3
- package/src/hooks/useTerminologyServerQuery.ts +7 -4
- package/src/hooks/useValueSetCodings.ts +6 -4
- package/src/setup-jest.ts +5 -0
- package/src/utils/preferredTerminologyServer.ts +38 -0
- package/src/utils/questionnaireStoreUtils/extractOtherExtensions.ts +8 -5
|
@@ -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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"}
|
|
@@ -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/setup-jest.ts
CHANGED
|
@@ -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,
|