@aehrc/smart-forms-renderer 0.37.2 → 0.38.2
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/components/FormComponents/QuantityItem/QuantityComparatorField.d.ts +12 -0
- package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js +13 -0
- package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js.map +1 -0
- package/lib/components/FormComponents/QuantityItem/QuantityField.d.ts +15 -0
- package/lib/components/FormComponents/QuantityItem/QuantityField.js +14 -0
- package/lib/components/FormComponents/QuantityItem/QuantityField.js.map +1 -0
- package/lib/components/FormComponents/QuantityItem/QuantityItem.d.ts +9 -0
- package/lib/components/FormComponents/QuantityItem/QuantityItem.js +144 -0
- package/lib/components/FormComponents/QuantityItem/QuantityItem.js.map +1 -0
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.d.ts +12 -0
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js +10 -0
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js.map +1 -0
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +2 -1
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +2 -2
- package/lib/hooks/useQuantityCalculatedExpression.d.ts +14 -0
- package/lib/hooks/useQuantityCalculatedExpression.js +105 -0
- package/lib/hooks/useQuantityCalculatedExpression.js.map +1 -0
- package/lib/hooks/useRenderingExtensions.d.ts +2 -1
- package/lib/hooks/useRenderingExtensions.js +3 -2
- package/lib/hooks/useRenderingExtensions.js.map +1 -1
- package/lib/hooks/useStringInput.js +1 -0
- package/lib/hooks/useStringInput.js.map +1 -1
- package/lib/interfaces/valueSet.interface.d.ts +15 -0
- package/lib/utils/calculatedExpression.js +4 -1
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/itemControl.d.ts +7 -1
- package/lib/utils/itemControl.js +14 -0
- package/lib/utils/itemControl.js.map +1 -1
- package/lib/utils/quantity.d.ts +4 -0
- package/lib/utils/quantity.js +49 -0
- package/lib/utils/quantity.js.map +1 -0
- package/lib/utils/valueSet.d.ts +2 -1
- package/lib/utils/valueSet.js +22 -0
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormComponents/QuantityItem/QuantityComparatorField.tsx +40 -0
- package/src/components/FormComponents/QuantityItem/QuantityField.tsx +60 -0
- package/src/components/FormComponents/QuantityItem/QuantityItem.tsx +286 -0
- package/src/components/FormComponents/QuantityItem/QuantityUnitField.tsx +38 -0
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +2 -1
- package/src/hooks/useDecimalCalculatedExpression.ts +2 -2
- package/src/hooks/useQuantityCalculatedExpression.ts +177 -0
- package/src/hooks/useRenderingExtensions.ts +5 -2
- package/src/hooks/useStringInput.ts +1 -0
- package/src/interfaces/valueSet.interface.ts +19 -0
- package/src/stories/assets/questionnaires/QPrePopTester.ts +30 -0
- package/src/stories/assets/questionnaires/QQuantity.ts +283 -1
- package/src/stories/itemTypes/Quantity.stories.tsx +33 -1
- package/src/utils/calculatedExpression.ts +5 -1
- package/src/utils/itemControl.ts +19 -1
- package/src/utils/quantity.ts +62 -0
- package/src/utils/valueSet.ts +32 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
3
|
+
import type { Quantity } from 'fhir/r4';
|
|
4
|
+
interface QuantityComparatorFieldProps extends PropsWithIsTabledAttribute {
|
|
5
|
+
linkId: string;
|
|
6
|
+
options: Quantity['comparator'][];
|
|
7
|
+
valueSelect: Quantity['comparator'] | null;
|
|
8
|
+
readOnly: boolean;
|
|
9
|
+
onChange: (newValue: Quantity['comparator'] | null) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function QuantityComparatorField(props: QuantityComparatorFieldProps): React.JSX.Element;
|
|
12
|
+
export default QuantityComparatorField;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import Autocomplete from '@mui/material/Autocomplete';
|
|
3
|
+
import MuiTextField from '../TextItem/MuiTextField';
|
|
4
|
+
import Box from '@mui/material/Box';
|
|
5
|
+
import Typography from '@mui/material/Typography';
|
|
6
|
+
function QuantityComparatorField(props) {
|
|
7
|
+
const { linkId, options, valueSelect, readOnly, onChange } = props;
|
|
8
|
+
return (React.createElement(Box, null,
|
|
9
|
+
React.createElement(Autocomplete, { id: linkId + '-comparator', value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, options: options, onChange: (_, newValue) => onChange(newValue), autoHighlight: true, sx: { width: 88 }, disabled: readOnly, size: "small", renderInput: (params) => React.createElement(MuiTextField, Object.assign({ sx: { width: 88 } }, params)) }),
|
|
10
|
+
React.createElement(Typography, { variant: "caption", color: "text.secondary" }, "Symbol (optional)")));
|
|
11
|
+
}
|
|
12
|
+
export default QuantityComparatorField;
|
|
13
|
+
//# sourceMappingURL=QuantityComparatorField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuantityComparatorField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityComparatorField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAEtD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,GAAG,MAAM,mBAAmB,CAAC;AACpC,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAWlD,SAAS,uBAAuB,CAAC,KAAmC;IAClE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEnE,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,YAAY,IACX,EAAE,EAAE,MAAM,GAAG,aAAa,EAC1B,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAkC,CAAC,EACvE,aAAa,QACb,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EACjB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAC,YAAY,kBAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAM,MAAM,EAAI,GACxE;QACF,oBAAC,UAAU,IAAC,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,gBAAgB,wBAEvC,CACT,CACP,CAAC;AACJ,CAAC;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
3
|
+
interface QuantityFieldProps extends PropsWithIsTabledAttribute {
|
|
4
|
+
linkId: string;
|
|
5
|
+
input: string;
|
|
6
|
+
feedback: string;
|
|
7
|
+
displayPrompt: string;
|
|
8
|
+
displayUnit: string;
|
|
9
|
+
entryFormat: string;
|
|
10
|
+
readOnly: boolean;
|
|
11
|
+
calcExpUpdated: boolean;
|
|
12
|
+
onInputChange: (value: string) => void;
|
|
13
|
+
}
|
|
14
|
+
declare function QuantityField(props: QuantityFieldProps): React.JSX.Element;
|
|
15
|
+
export default QuantityField;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import InputAdornment from '@mui/material/InputAdornment';
|
|
3
|
+
import FadingCheckIcon from '../ItemParts/FadingCheckIcon';
|
|
4
|
+
import { StandardTextField } from '../Textfield.styles';
|
|
5
|
+
function QuantityField(props) {
|
|
6
|
+
const { linkId, input, feedback, displayPrompt, displayUnit, entryFormat, readOnly, calcExpUpdated, isTabled, onInputChange } = props;
|
|
7
|
+
return (React.createElement(StandardTextField, { id: linkId, value: input, error: !!feedback, onChange: (event) => onInputChange(event.target.value), disabled: readOnly, label: displayPrompt, placeholder: entryFormat === '' ? '0.0' : entryFormat, fullWidth: true, isTabled: isTabled, size: "small", inputProps: { inputMode: 'numeric', pattern: '[0-9]*' }, InputProps: {
|
|
8
|
+
endAdornment: (React.createElement(InputAdornment, { position: 'end' },
|
|
9
|
+
React.createElement(FadingCheckIcon, { fadeIn: calcExpUpdated, disabled: readOnly }),
|
|
10
|
+
displayUnit))
|
|
11
|
+
}, helperText: feedback, "data-test": "q-item-quantity-field" }));
|
|
12
|
+
}
|
|
13
|
+
export default QuantityField;
|
|
14
|
+
//# sourceMappingURL=QuantityField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuantityField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,cAAc,MAAM,8BAA8B,CAAC;AAC1D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAexD,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,aAAa,EACd,GAAG,KAAK,CAAC;IAEV,OAAO,CACL,oBAAC,iBAAiB,IAChB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,CAAC,CAAC,QAAQ,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EACrD,SAAS,QACT,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,EACZ,UAAU,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EACvD,UAAU,EAAE;YACV,YAAY,EAAE,CACZ,oBAAC,cAAc,IAAC,QAAQ,EAAE,KAAK;gBAC7B,oBAAC,eAAe,IAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAI;gBAC9D,WAAW,CACG,CAClB;SACF,EACD,UAAU,EAAE,QAAQ,eACV,uBAAuB,GACjC,CACH,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute, PropsWithParentIsReadOnlyAttribute, PropsWithQrItemChangeHandler } from '../../../interfaces/renderProps.interface';
|
|
3
|
+
import type { QuestionnaireItem, QuestionnaireResponseItem } from 'fhir/r4';
|
|
4
|
+
interface QuantityItemProps extends PropsWithQrItemChangeHandler, PropsWithIsRepeatedAttribute, PropsWithIsTabledAttribute, PropsWithParentIsReadOnlyAttribute {
|
|
5
|
+
qItem: QuestionnaireItem;
|
|
6
|
+
qrItem: QuestionnaireResponseItem | null;
|
|
7
|
+
}
|
|
8
|
+
declare function QuantityItem(props: QuantityItemProps): React.JSX.Element;
|
|
9
|
+
export default QuantityItem;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
2
|
+
import useRenderingExtensions from '../../../hooks/useRenderingExtensions';
|
|
3
|
+
import { FullWidthFormComponentBox } from '../../Box.styles';
|
|
4
|
+
import useValidationFeedback from '../../../hooks/useValidationFeedback';
|
|
5
|
+
import debounce from 'lodash.debounce';
|
|
6
|
+
import { DEBOUNCE_DURATION } from '../../../utils/debounce';
|
|
7
|
+
import { createEmptyQrItem } from '../../../utils/qrItem';
|
|
8
|
+
import ItemFieldGrid from '../ItemParts/ItemFieldGrid';
|
|
9
|
+
import { parseDecimalStringWithPrecision } from '../../../utils/parseInputs';
|
|
10
|
+
import { getDecimalPrecision } from '../../../utils/itemControl';
|
|
11
|
+
import useStringInput from '../../../hooks/useStringInput';
|
|
12
|
+
import useReadOnly from '../../../hooks/useReadOnly';
|
|
13
|
+
import { useQuestionnaireStore } from '../../../stores';
|
|
14
|
+
import Box from '@mui/material/Box';
|
|
15
|
+
import QuantityField from './QuantityField';
|
|
16
|
+
import QuantityUnitField from './QuantityUnitField';
|
|
17
|
+
import { createQuantityItemAnswer, quantityComparators, stringIsComparator } from '../../../utils/quantity';
|
|
18
|
+
import QuantityComparatorField from './QuantityComparatorField';
|
|
19
|
+
import useQuantityCalculatedExpression from '../../../hooks/useQuantityCalculatedExpression';
|
|
20
|
+
function QuantityItem(props) {
|
|
21
|
+
var _a, _b, _c;
|
|
22
|
+
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
23
|
+
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
24
|
+
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
25
|
+
const precision = getDecimalPrecision(qItem);
|
|
26
|
+
const { displayUnit, displayPrompt, entryFormat, quantityUnit } = useRenderingExtensions(qItem);
|
|
27
|
+
// Get units options if present
|
|
28
|
+
const unitOptions = useMemo(() => {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
return (_b = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.filter((f) => f.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption')) !== null && _b !== void 0 ? _b : [];
|
|
31
|
+
}, [qItem]);
|
|
32
|
+
// Init inputs
|
|
33
|
+
let valueQuantity = {};
|
|
34
|
+
let initialValueInput = '';
|
|
35
|
+
let initialComparatorInput = null;
|
|
36
|
+
let initialUnitInput = (_a = quantityUnit !== null && quantityUnit !== void 0 ? quantityUnit : unitOptions === null || unitOptions === void 0 ? void 0 : unitOptions.at(0)) !== null && _a !== void 0 ? _a : null;
|
|
37
|
+
if (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer) {
|
|
38
|
+
if (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer[0].valueQuantity) {
|
|
39
|
+
valueQuantity = qrItem.answer[0].valueQuantity;
|
|
40
|
+
}
|
|
41
|
+
initialValueInput =
|
|
42
|
+
(precision ? (_b = valueQuantity.value) === null || _b === void 0 ? void 0 : _b.toFixed(precision) : (_c = valueQuantity.value) === null || _c === void 0 ? void 0 : _c.toString()) || '';
|
|
43
|
+
if (valueQuantity.comparator && stringIsComparator(valueQuantity.comparator)) {
|
|
44
|
+
initialComparatorInput = valueQuantity.comparator;
|
|
45
|
+
}
|
|
46
|
+
if (valueQuantity.code && valueQuantity.system) {
|
|
47
|
+
initialUnitInput = {
|
|
48
|
+
valueCoding: {
|
|
49
|
+
code: valueQuantity.code,
|
|
50
|
+
system: valueQuantity.system,
|
|
51
|
+
display: valueQuantity.unit
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// input states
|
|
57
|
+
const [valueInput, setValueInput] = useStringInput(initialValueInput);
|
|
58
|
+
const [comparatorInput, setComparatorInput] = useState(initialComparatorInput);
|
|
59
|
+
const [unitInput, setUnitInput] = useState(initialUnitInput);
|
|
60
|
+
// Perform validation checks
|
|
61
|
+
const feedback = useValidationFeedback(qItem, valueInput);
|
|
62
|
+
// Process calculated expressions
|
|
63
|
+
const { calcExpUpdated } = useQuantityCalculatedExpression({
|
|
64
|
+
qItem: qItem,
|
|
65
|
+
inputValue: valueInput,
|
|
66
|
+
precision: precision,
|
|
67
|
+
onChangeByCalcExpressionDecimal: (newValueDecimal) => {
|
|
68
|
+
var _a, _b, _c;
|
|
69
|
+
setValueInput(typeof precision === 'number'
|
|
70
|
+
? newValueDecimal.toFixed(precision)
|
|
71
|
+
: newValueDecimal.toString());
|
|
72
|
+
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [
|
|
73
|
+
{
|
|
74
|
+
valueQuantity: {
|
|
75
|
+
value: newValueDecimal,
|
|
76
|
+
unit: (_a = unitInput === null || unitInput === void 0 ? void 0 : unitInput.valueCoding) === null || _a === void 0 ? void 0 : _a.display,
|
|
77
|
+
system: (_b = unitInput === null || unitInput === void 0 ? void 0 : unitInput.valueCoding) === null || _b === void 0 ? void 0 : _b.system,
|
|
78
|
+
code: (_c = unitInput === null || unitInput === void 0 ? void 0 : unitInput.valueCoding) === null || _c === void 0 ? void 0 : _c.code
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
] }));
|
|
82
|
+
},
|
|
83
|
+
onChangeByCalcExpressionQuantity: (newValueDecimal, newUnitSystem, newUnitCode, newUnitDisplay) => {
|
|
84
|
+
setValueInput(typeof precision === 'number'
|
|
85
|
+
? newValueDecimal.toFixed(precision)
|
|
86
|
+
: newValueDecimal.toString());
|
|
87
|
+
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: [
|
|
88
|
+
{
|
|
89
|
+
valueQuantity: {
|
|
90
|
+
value: newValueDecimal,
|
|
91
|
+
unit: newUnitDisplay,
|
|
92
|
+
system: newUnitSystem,
|
|
93
|
+
code: newUnitCode
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
] }));
|
|
97
|
+
},
|
|
98
|
+
onChangeByCalcExpressionNull: () => {
|
|
99
|
+
setValueInput('');
|
|
100
|
+
onQrItemChange(createEmptyQrItem(qItem));
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
// Event handlers
|
|
104
|
+
function handleComparatorInputChange(newComparatorInput) {
|
|
105
|
+
setComparatorInput(newComparatorInput);
|
|
106
|
+
if (!valueInput)
|
|
107
|
+
return;
|
|
108
|
+
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: createQuantityItemAnswer(precision, valueInput, newComparatorInput, unitInput) }));
|
|
109
|
+
}
|
|
110
|
+
function handleUnitInputChange(newUnitInput) {
|
|
111
|
+
setUnitInput(newUnitInput);
|
|
112
|
+
if (!valueInput)
|
|
113
|
+
return;
|
|
114
|
+
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: createQuantityItemAnswer(precision, valueInput, comparatorInput, newUnitInput) }));
|
|
115
|
+
}
|
|
116
|
+
function handleValueInputChange(newInput) {
|
|
117
|
+
const parsedNewInput = parseDecimalStringWithPrecision(newInput, precision);
|
|
118
|
+
setValueInput(parsedNewInput);
|
|
119
|
+
updateQrItemWithDebounce(parsedNewInput);
|
|
120
|
+
}
|
|
121
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
122
|
+
const updateQrItemWithDebounce = useCallback(debounce((parsedNewInput) => {
|
|
123
|
+
if (parsedNewInput === '') {
|
|
124
|
+
onQrItemChange(createEmptyQrItem(qItem));
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
onQrItemChange(Object.assign(Object.assign({}, createEmptyQrItem(qItem)), { answer: createQuantityItemAnswer(precision, parsedNewInput, comparatorInput, unitInput) }));
|
|
128
|
+
}
|
|
129
|
+
}, DEBOUNCE_DURATION), [onQrItemChange, qItem, displayUnit, precision, comparatorInput, unitInput]); // Dependencies are tested, debounce is causing eslint to not recognise dependencies
|
|
130
|
+
if (isRepeated) {
|
|
131
|
+
return (React.createElement(Box, { "data-test": "q-item-quantity-box", display: "flex", gap: 1 },
|
|
132
|
+
React.createElement(QuantityComparatorField, { linkId: qItem.linkId, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, isTabled: isTabled, onChange: handleComparatorInputChange }),
|
|
133
|
+
React.createElement(QuantityField, { linkId: qItem.linkId, input: valueInput, feedback: feedback, displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }),
|
|
134
|
+
unitOptions.length > 0 ? (React.createElement(QuantityUnitField, { linkId: qItem.linkId, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, isTabled: isTabled, onChange: handleUnitInputChange })) : null));
|
|
135
|
+
}
|
|
136
|
+
return (React.createElement(FullWidthFormComponentBox, { "data-test": "q-item-quantity-box", "data-linkid": qItem.linkId, onClick: () => onFocusLinkId(qItem.linkId) },
|
|
137
|
+
React.createElement(ItemFieldGrid, { qItem: qItem, readOnly: readOnly },
|
|
138
|
+
React.createElement(Box, { display: "flex", gap: 1 },
|
|
139
|
+
React.createElement(QuantityComparatorField, { linkId: qItem.linkId, options: quantityComparators, valueSelect: comparatorInput, readOnly: readOnly, isTabled: isTabled, onChange: handleComparatorInputChange }),
|
|
140
|
+
React.createElement(QuantityField, { linkId: qItem.linkId, input: valueInput, feedback: feedback, displayPrompt: displayPrompt, displayUnit: displayUnit, entryFormat: entryFormat, readOnly: readOnly, calcExpUpdated: calcExpUpdated, isTabled: isTabled, onInputChange: handleValueInputChange }),
|
|
141
|
+
unitOptions.length > 0 ? (React.createElement(QuantityUnitField, { linkId: qItem.linkId, options: unitOptions, valueSelect: unitInput, readOnly: readOnly, isTabled: isTabled, onChange: handleUnitInputChange })) : null))));
|
|
142
|
+
}
|
|
143
|
+
export default QuantityItem;
|
|
144
|
+
//# sourceMappingURL=QuantityItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuantityItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
3
|
+
import type { PropsWithIsTabledAttribute } from '../../../interfaces/renderProps.interface';
|
|
4
|
+
interface QuantityUnitFieldProps extends PropsWithIsTabledAttribute {
|
|
5
|
+
linkId: string;
|
|
6
|
+
options: QuestionnaireItemAnswerOption[];
|
|
7
|
+
valueSelect: QuestionnaireItemAnswerOption | null;
|
|
8
|
+
readOnly: boolean;
|
|
9
|
+
onChange: (newValue: QuestionnaireItemAnswerOption | null) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function QuantityUnitField(props: QuantityUnitFieldProps): React.JSX.Element;
|
|
12
|
+
export default QuantityUnitField;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { getAnswerOptionLabel } from '../../../utils/openChoice';
|
|
3
|
+
import { StandardTextField, TEXT_FIELD_WIDTH } from '../Textfield.styles';
|
|
4
|
+
import Autocomplete from '@mui/material/Autocomplete';
|
|
5
|
+
function QuantityUnitField(props) {
|
|
6
|
+
const { linkId, options, valueSelect, readOnly, isTabled, onChange } = props;
|
|
7
|
+
return (React.createElement(Autocomplete, { id: linkId + '-unit', value: valueSelect !== null && valueSelect !== void 0 ? valueSelect : null, isOptionEqualToValue: (option, value) => { var _a, _b; return ((_a = option.valueCoding) === null || _a === void 0 ? void 0 : _a.code) === ((_b = value === null || value === void 0 ? void 0 : value.valueCoding) === null || _b === void 0 ? void 0 : _b.code); }, options: options, getOptionLabel: (option) => getAnswerOptionLabel(option), onChange: (_, newValue) => onChange(newValue), autoHighlight: true, sx: { maxWidth: !isTabled ? TEXT_FIELD_WIDTH : 3000, minWidth: 160, flexGrow: 1 }, disabled: readOnly, size: "small", renderInput: (params) => React.createElement(StandardTextField, Object.assign({ isTabled: isTabled }, params)) }));
|
|
8
|
+
}
|
|
9
|
+
export default QuantityUnitField;
|
|
10
|
+
//# sourceMappingURL=QuantityUnitField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuantityUnitField.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/QuantityItem/QuantityUnitField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,YAAY,MAAM,4BAA4B,CAAC;AAYtD,SAAS,iBAAiB,CAAC,KAA6B;IACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE7E,OAAO,CACL,oBAAC,YAAY,IACX,EAAE,EAAE,MAAM,GAAG,OAAO,EACpB,KAAK,EAAE,WAAW,aAAX,WAAW,cAAX,WAAW,GAAI,IAAI,EAC1B,oBAAoB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,eACtC,OAAA,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,IAAI,OAAK,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,0CAAE,IAAI,CAAA,CAAA,EAAA,EAEvD,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,EACxD,QAAQ,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAgD,CAAC,EACrF,aAAa,QACb,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,EACjF,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,EACZ,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,oBAAC,iBAAiB,kBAAC,QAAQ,EAAE,QAAQ,IAAM,MAAM,EAAI,GAC9E,CACH,CAAC;AACJ,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -31,6 +31,7 @@ import SliderItem from '../SliderItem/SliderItem';
|
|
|
31
31
|
import IntegerItem from '../IntegerItem/IntegerItem';
|
|
32
32
|
import AttachmentItem from '../AttachmentItem/AttachmentItem';
|
|
33
33
|
import CustomDateTimeItem from '../DateTimeItems/CustomDateTimeItem/CustomDateTimeItem';
|
|
34
|
+
import QuantityItem from '../QuantityItem/QuantityItem';
|
|
34
35
|
function SingleItemSwitcher(props) {
|
|
35
36
|
const { qItem, qrItem, isRepeated, isTabled, showMinimalView, parentIsReadOnly, onQrItemChange } = props;
|
|
36
37
|
switch (qItem.type) {
|
|
@@ -68,7 +69,7 @@ function SingleItemSwitcher(props) {
|
|
|
68
69
|
return (React.createElement(StringItem, { qItem: qItem, qrItem: qrItem, isRepeated: isRepeated, isTabled: isTabled, parentIsReadOnly: parentIsReadOnly, onQrItemChange: onQrItemChange }));
|
|
69
70
|
case 'quantity':
|
|
70
71
|
// FIXME quantity item uses the same component as decimal item currently
|
|
71
|
-
return (React.createElement(
|
|
72
|
+
return (React.createElement(QuantityItem, { qItem: qItem, qrItem: qrItem, isRepeated: isRepeated, isTabled: isTabled, parentIsReadOnly: parentIsReadOnly, onQrItemChange: onQrItemChange }));
|
|
72
73
|
default:
|
|
73
74
|
return (React.createElement(Typography, null,
|
|
74
75
|
"Item type ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SingleItemSwitcher.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,kBAAkB,MAAM,mCAAmC,CAAC;AAEnE,OAAO,sBAAsB,MAAM,2CAA2C,CAAC;AAC/E,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAQlD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,cAAc,MAAM,gDAAgD,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,cAAc,MAAM,kCAAkC,CAAC;AAC9D,OAAO,kBAAkB,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"SingleItemSwitcher.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@ import type { QuestionnaireItem } from 'fhir/r4';
|
|
|
2
2
|
interface UseDecimalCalculatedExpression {
|
|
3
3
|
calcExpUpdated: boolean;
|
|
4
4
|
}
|
|
5
|
-
interface
|
|
5
|
+
interface UseDecimalCalculatedExpressionProps {
|
|
6
6
|
qItem: QuestionnaireItem;
|
|
7
7
|
inputValue: string;
|
|
8
8
|
precision: number | null;
|
|
9
9
|
onChangeByCalcExpressionDecimal: (calcExpressionValue: number) => void;
|
|
10
10
|
onChangeByCalcExpressionNull: () => void;
|
|
11
11
|
}
|
|
12
|
-
declare function useDecimalCalculatedExpression(props:
|
|
12
|
+
declare function useDecimalCalculatedExpression(props: UseDecimalCalculatedExpressionProps): UseDecimalCalculatedExpression;
|
|
13
13
|
export default useDecimalCalculatedExpression;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
interface UseQuantityCalculatedExpression {
|
|
3
|
+
calcExpUpdated: boolean;
|
|
4
|
+
}
|
|
5
|
+
interface UseQuantityCalculatedExpressionProps {
|
|
6
|
+
qItem: QuestionnaireItem;
|
|
7
|
+
inputValue: string;
|
|
8
|
+
precision: number | null;
|
|
9
|
+
onChangeByCalcExpressionDecimal: (newValue: number) => void;
|
|
10
|
+
onChangeByCalcExpressionQuantity: (newValue: number, newUnitSystem: string, newUnitCode: string, newUnitDisplay: string) => void;
|
|
11
|
+
onChangeByCalcExpressionNull: () => void;
|
|
12
|
+
}
|
|
13
|
+
declare function useQuantityCalculatedExpression(props: UseQuantityCalculatedExpressionProps): UseQuantityCalculatedExpression;
|
|
14
|
+
export default useQuantityCalculatedExpression;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2024 Commonwealth Scientific and Industrial Research
|
|
3
|
+
* Organisation (CSIRO) ABN 41 687 119 230.
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { useEffect, useState } from 'react';
|
|
18
|
+
import { useQuestionnaireStore } from '../stores';
|
|
19
|
+
import { validateCodePromise } from '../utils/valueSet';
|
|
20
|
+
import { TERMINOLOGY_SERVER_URL } from '../globals';
|
|
21
|
+
function useQuantityCalculatedExpression(props) {
|
|
22
|
+
const { qItem, inputValue, precision, onChangeByCalcExpressionDecimal, onChangeByCalcExpressionQuantity, onChangeByCalcExpressionNull } = props;
|
|
23
|
+
const calculatedExpressions = useQuestionnaireStore.use.calculatedExpressions();
|
|
24
|
+
const [calcExpUpdated, setCalcExpUpdated] = useState(false);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
var _a;
|
|
27
|
+
const calcExpression = (_a = calculatedExpressions[qItem.linkId]) === null || _a === void 0 ? void 0 : _a.find((exp) => exp.from === 'item');
|
|
28
|
+
if (!calcExpression) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// only update if calculated value is different from current value
|
|
32
|
+
if (calcExpression.value !== inputValue &&
|
|
33
|
+
(typeof calcExpression.value === 'number' ||
|
|
34
|
+
typeof calcExpression.value === 'string' ||
|
|
35
|
+
calcExpression.value === null)) {
|
|
36
|
+
// Null path
|
|
37
|
+
if (calcExpression.value === null) {
|
|
38
|
+
onChangeByCalcExpressionNull();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Number path
|
|
42
|
+
if (typeof calcExpression.value === 'number') {
|
|
43
|
+
const calcExpressionValue = typeof precision === 'number'
|
|
44
|
+
? parseFloat(calcExpression.value.toFixed(precision))
|
|
45
|
+
: calcExpression.value;
|
|
46
|
+
// only update if calculated value is different from current value
|
|
47
|
+
if (calcExpressionValue !== parseFloat(inputValue)) {
|
|
48
|
+
// update ui to show calculated value changes
|
|
49
|
+
setCalcExpUpdated(true);
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
setCalcExpUpdated(false);
|
|
52
|
+
}, 500);
|
|
53
|
+
// calculatedExpression value is null
|
|
54
|
+
if (calcExpressionValue === null) {
|
|
55
|
+
onChangeByCalcExpressionNull();
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// calculatedExpression value is a number
|
|
59
|
+
onChangeByCalcExpressionDecimal(calcExpressionValue);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// String path (quantity)
|
|
63
|
+
if (typeof calcExpression.value === 'string') {
|
|
64
|
+
try {
|
|
65
|
+
const [value, unitCode] = calcExpression.value.split(' ');
|
|
66
|
+
const unitCodeFormatted = unitCode.replace(/'/g, '');
|
|
67
|
+
const ucumValueSet = 'http://hl7.org/fhir/ValueSet/ucum-units';
|
|
68
|
+
const ucumSystem = 'http://unitsofmeasure.org';
|
|
69
|
+
validateCodePromise(ucumValueSet, ucumSystem, unitCodeFormatted, TERMINOLOGY_SERVER_URL).then((validateCodeResponse) => {
|
|
70
|
+
// Return early if validate-code request fails
|
|
71
|
+
if (!validateCodeResponse) {
|
|
72
|
+
onChangeByCalcExpressionNull();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (validateCodeResponse.parameter) {
|
|
76
|
+
const systemParameter = validateCodeResponse.parameter.find((p) => p.name === 'system');
|
|
77
|
+
const codeParameter = validateCodeResponse.parameter.find((p) => p.name === 'code');
|
|
78
|
+
const displayParameter = validateCodeResponse.parameter.find((p) => p.name === 'display');
|
|
79
|
+
if (systemParameter.valueUri &&
|
|
80
|
+
codeParameter.valueCode &&
|
|
81
|
+
displayParameter.valueString) {
|
|
82
|
+
// update ui to show calculated value changes
|
|
83
|
+
setCalcExpUpdated(true);
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
setCalcExpUpdated(false);
|
|
86
|
+
}, 500);
|
|
87
|
+
onChangeByCalcExpressionQuantity(parseFloat(value), systemParameter.valueUri, codeParameter.valueCode, displayParameter.valueString);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
console.error(e);
|
|
94
|
+
onChangeByCalcExpressionNull();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
// Only trigger this effect if calculatedExpression of item changes
|
|
100
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
101
|
+
[calculatedExpressions]);
|
|
102
|
+
return { calcExpUpdated: calcExpUpdated };
|
|
103
|
+
}
|
|
104
|
+
export default useQuantityCalculatedExpression;
|
|
105
|
+
//# sourceMappingURL=useQuantityCalculatedExpression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useQuantityCalculatedExpression.js","sourceRoot":"","sources":["../../src/hooks/useQuantityCalculatedExpression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { QuestionnaireItem } from 'fhir/r4';
|
|
1
|
+
import type { QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
2
2
|
interface RenderingExtensions {
|
|
3
3
|
displayUnit: string;
|
|
4
4
|
displayPrompt: string;
|
|
@@ -7,6 +7,7 @@ interface RenderingExtensions {
|
|
|
7
7
|
readOnly: boolean;
|
|
8
8
|
entryFormat: string;
|
|
9
9
|
required: boolean;
|
|
10
|
+
quantityUnit: QuestionnaireItemAnswerOption | null;
|
|
10
11
|
}
|
|
11
12
|
declare function useRenderingExtensions(qItem: QuestionnaireItem): RenderingExtensions;
|
|
12
13
|
export default useRenderingExtensions;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
-
import { getTextDisplayFlyover, getTextDisplayInstructions, getTextDisplayPrompt, getTextDisplayUnit } from '../utils/itemControl';
|
|
17
|
+
import { getQuantityUnit, getTextDisplayFlyover, getTextDisplayInstructions, getTextDisplayPrompt, getTextDisplayUnit } from '../utils/itemControl';
|
|
18
18
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
19
19
|
import { useMemo } from 'react';
|
|
20
20
|
function useRenderingExtensions(qItem) {
|
|
@@ -27,7 +27,8 @@ function useRenderingExtensions(qItem) {
|
|
|
27
27
|
displayFlyover: getTextDisplayFlyover(qItem),
|
|
28
28
|
readOnly: !!qItem.readOnly,
|
|
29
29
|
entryFormat: (_a = structuredDataCapture.getEntryFormat(qItem)) !== null && _a !== void 0 ? _a : '',
|
|
30
|
-
required: (_b = qItem.required) !== null && _b !== void 0 ? _b : false
|
|
30
|
+
required: (_b = qItem.required) !== null && _b !== void 0 ? _b : false,
|
|
31
|
+
quantityUnit: getQuantityUnit(qItem)
|
|
31
32
|
});
|
|
32
33
|
}, [qItem]);
|
|
33
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderingExtensions.js","sourceRoot":"","sources":["../../src/hooks/useRenderingExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useRenderingExtensions.js","sourceRoot":"","sources":["../../src/hooks/useRenderingExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAahC,SAAS,sBAAsB,CAAC,KAAwB;IACtD,OAAO,OAAO,CACZ,GAAG,EAAE;;QAAC,OAAA,CAAC;YACL,WAAW,EAAE,kBAAkB,CAAC,KAAK,CAAC;YACtC,aAAa,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAC1C,mBAAmB,EAAE,0BAA0B,CAAC,KAAK,CAAC;YACtD,cAAc,EAAE,qBAAqB,CAAC,KAAK,CAAC;YAC5C,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC1B,WAAW,EAAE,MAAA,qBAAqB,CAAC,cAAc,CAAC,KAAK,CAAC,mCAAI,EAAE;YAC9D,QAAQ,EAAE,MAAA,KAAK,CAAC,QAAQ,mCAAI,KAAK;YACjC,YAAY,EAAE,eAAe,CAAC,KAAK,CAAC;SACrC,CAAC,CAAA;KAAA,EACF,CAAC,KAAK,CAAC,CACR,CAAC;AACJ,CAAC;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { useEffect, useState } from 'react';
|
|
18
|
+
// The purpose of this hook to sync the string state from external changes i.e. re-population changes etc.
|
|
18
19
|
function useStringInput(valueFromProps) {
|
|
19
20
|
const [input, setInput] = useState(valueFromProps);
|
|
20
21
|
useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStringInput.js","sourceRoot":"","sources":["../../src/hooks/useStringInput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,SAAS,cAAc,CAAC,cAAsB;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEnD,SAAS,CACP,GAAG,EAAE;QACH,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC1B;IACH,CAAC;IACD,iDAAiD;IACjD,uDAAuD;IACvD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"useStringInput.js","sourceRoot":"","sources":["../../src/hooks/useStringInput.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,0GAA0G;AAC1G,SAAS,cAAc,CAAC,cAAsB;IAC5C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAEnD,SAAS,CACP,GAAG,EAAE;QACH,IAAI,KAAK,KAAK,cAAc,EAAE;YAC5B,QAAQ,CAAC,cAAc,CAAC,CAAC;SAC1B;IACH,CAAC;IACD,iDAAiD;IACjD,uDAAuD;IACvD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -3,3 +3,18 @@ export interface ValueSetPromise {
|
|
|
3
3
|
promise: Promise<ValueSet>;
|
|
4
4
|
valueSet?: ValueSet;
|
|
5
5
|
}
|
|
6
|
+
export interface ValidateCodeResponse extends Parameters<any> {
|
|
7
|
+
parameter: [SystemParameter, CodeParameter, DisplayParameter];
|
|
8
|
+
}
|
|
9
|
+
export interface SystemParameter {
|
|
10
|
+
name: 'system';
|
|
11
|
+
valueUri: string;
|
|
12
|
+
}
|
|
13
|
+
export interface CodeParameter {
|
|
14
|
+
name: 'code';
|
|
15
|
+
valueCode: string;
|
|
16
|
+
}
|
|
17
|
+
export interface DisplayParameter {
|
|
18
|
+
name: 'display';
|
|
19
|
+
valueString: string;
|
|
20
|
+
}
|
|
@@ -185,7 +185,10 @@ function parseValueToAnswer(qItem, value) {
|
|
|
185
185
|
return { valueInteger: value };
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
|
-
if (typeof value === 'object') {
|
|
188
|
+
if (typeof value === 'object' && value.unit) {
|
|
189
|
+
return { valueQuantity: value };
|
|
190
|
+
}
|
|
191
|
+
if (typeof value === 'object' && value.system && value.code) {
|
|
189
192
|
return { valueCoding: value };
|
|
190
193
|
}
|
|
191
194
|
// Value is string at this point
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calculatedExpression.js","sourceRoot":"","sources":["../../src/utils/calculatedExpression.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"calculatedExpression.js","sourceRoot":"","sources":["../../src/utils/calculatedExpression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AAUzD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAUzD,MAAM,UAAU,oCAAoC,CAClD,MAAkD;IAKlD,MAAM,EACJ,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACxB,GAAG,MAAM,CAAC;IAEX,8FAA8F;IAC9F,IACE,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/C;QACA,OAAO;YACL,4BAA4B,EAAE,qBAAqB;YACnD,sBAAsB,EAAE,uBAAuB;SAChD,CAAC;KACH;IAED,MAAM,4BAA4B,qBAC7B,qBAAqB,CACzB,CAAC;IAEF,MAAM,sBAAsB,GAAG,qBAAqB,CAClD,eAAe,EACf,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,CACxB,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,4BAA4B,EAAE;QACjD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE1D,KAAK,MAAM,cAAc,IAAI,mBAAmB,EAAE;YAChD,IAAI;gBACF,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAC9B,EAAE,EACF,cAAc,CAAC,UAAU,EACzB,sBAAsB,EACtB,iBAAiB,CAClB,CAAC;gBAEF,kEAAkE;gBAClE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBACnE,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBAClC;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,MAAM,iBAAiB,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;aACxF;SACF;QAED,4BAA4B,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC;KAC5D;IAED,OAAO;QACL,4BAA4B;QAC5B,sBAAsB;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,eAAoC,EACpC,qBAA6D;IAK7D,MAAM,4BAA4B,qBAC7B,qBAAqB,CACzB,CAAC;IAEF,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE;QAC1C,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAE1D,KAAK,MAAM,cAAc,IAAI,mBAAmB,EAAE;YAChD,IAAI;gBACF,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAC9B,EAAE,EACF,cAAc,CAAC,UAAU,EACzB,eAAe,EACf,iBAAiB,CAClB,CAAC;gBAEF,6DAA6D;gBAC7D,6IAA6I;gBAC7I,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBACnE,SAAS,GAAG,IAAI,CAAC;oBACjB,cAAc,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;iBAClC;gBAED,qEAAqE;gBACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,KAAK,IAAI,EAAE;oBACxD,SAAS,GAAG,IAAI,CAAC;oBACjB,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;iBAC7B;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,MAAM,iBAAiB,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC;aACxF;SACF;QAED,4BAA4B,CAAC,MAAM,CAAC,GAAG,mBAAmB,CAAC;KAC5D;IAED,OAAO;QACL,uBAAuB,EAAE,SAAS;QAClC,4BAA4B,EAAE,4BAA4B;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,aAA4B,EAC5B,iBAAwC,EACxC,qBAA6D;IAE7D,2EAA2E;IAC3E,MAAM,+BAA+B,GAA2C,EAAE,CAAC;IACnF,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE;QAC1C,MAAM,6BAA6B,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,MAAM,CACxE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,KAAK,SAAS,CACvD,CAAC;QAEF,IAAI,6BAA6B,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,+BAA+B,CAAC,MAAM,CAAC,GAAG,6BAA6B,CAAC;SACzE;KACF;IAED,OAAO,2BAA2B,CAChC,aAAa,EACb,iBAAiB,EACjB,gDAAgD,EAChD,+BAA+B,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,gDAAgD,CACvD,KAAwB,EACxB,aAA6E,EAC7E,qBAA6D;;IAE7D,oBAAoB;IACpB,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,kBAAkB,EAAE;QACtB,OAAO,aAAa,CAAC;KACtB;IAED,MAAM,MAAM,GAAG,aAAa,CAAC;IAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QACzC,MAAM,YAAY,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,mCAAI,EAAE,CAAC;QAExC,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE5E,wCAAwC;QACxC,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE;YACvD,MAAM,kBAAkB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;YAEjD,MAAM,yBAAyB,GAAG,gDAAgD,CAChF,UAAU,EACV,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,IAAI,EAC1B,qBAAqB,CACtB,CAAC;YAEF,0CAA0C;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE;gBAC5C,SAAS;aACV;YAED,MAAM,kBAAkB,GAAG,yBAAyB,CAAC;YACrD,IAAI,kBAAkB,EAAE;gBACtB,oBAAoB,CAClB,kBAAkB,EAClB,IAAI,EACJ,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAC9D,QAAQ,CACT,CAAC;aACH;SACF;QAED,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;KACjE;IAED,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAwB,EACxB,qBAA6D;;IAE7D,MAAM,sBAAsB,GAAG,MAAA,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,0CAAE,IAAI,CACtE,CAAC,cAAc,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,CACnD,CAAC;IAEF,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,KAAK,EAAE;QAC1D,OAAO,kBAAkB,CAAC,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC;KAChE;IAED,OAAO;AACT,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAwB,EACxB,MAAwC,EACxC,qBAA6D;IAE7D,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAE/F,6FAA6F;IAC7F,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,MAAM,IAAG,CAAC,EAAE;QAC/C,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC;KACvB;IAED,IAAI,CAAC,0BAA0B,EAAE;QAC/B,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC;KACvB;IAED,IAAI,MAAM,EAAE;QACV,uCACK,MAAM,KACT,MAAM,EAAE,CAAC,0BAA0B,CAAC,IACpC;KACH;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,CAAC,0BAA0B,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,MAAwC,EACxC,qBAA6D;IAE7D,MAAM,0BAA0B,GAAG,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IAC/F,IAAI,CAAC,0BAA0B,EAAE;QAC/B,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAC;KACvB;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,CAAC,0BAA0B,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,sCAAsC;AACtC,SAAS,kBAAkB,CAAC,KAAwB,EAAE,KAAU;IAC9D,IAAI,KAAK,CAAC,YAAY,EAAE;QACtB,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAC1C,CAAC,MAAqC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,MAAM,CAAC,WAAW,0CAAE,IAAI,OAAK,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,CAAA,CAAA,EAAA,CACpF,CAAC;QAEF,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC;SACrB;KACF;IAED,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAC1D,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;KAChC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;SAChC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;YAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;SAChC;KACF;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;QAC3C,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;KACjC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;QAC3D,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;KAC/B;IAED,gCAAgC;IAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QACnD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KAC7B;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QACvD,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;KACjC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;QAC/C,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;KAC7B;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,OAAO,KAAK,CAAC,aAAa,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,SAAS,GAAG,4DAA4D,CAAC;IAC/E,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Extension, QuestionnaireItem } from 'fhir/r4';
|
|
1
|
+
import type { Extension, QuestionnaireItem, QuestionnaireItemAnswerOption } from 'fhir/r4';
|
|
2
2
|
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
3
3
|
export declare function shouldRenderNestedItems(qItem: QuestionnaireItem): boolean;
|
|
4
4
|
/**
|
|
@@ -56,6 +56,12 @@ export declare function getMarkdownString(qItem: QuestionnaireItem): string | nu
|
|
|
56
56
|
* @author Sean Fong
|
|
57
57
|
*/
|
|
58
58
|
export declare function getTextDisplayPrompt(qItem: QuestionnaireItem): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get Quantity unit for items with itemControlCode unit and has a unit childItem
|
|
61
|
+
*
|
|
62
|
+
* @author Sean Fong
|
|
63
|
+
*/
|
|
64
|
+
export declare function getQuantityUnit(qItem: QuestionnaireItem): QuestionnaireItemAnswerOption | null;
|
|
59
65
|
/**
|
|
60
66
|
* Get decimal text display unit for items with itemControlCode unit and has a unit childItem
|
|
61
67
|
*
|