@aehrc/smart-forms-renderer 0.22.0 → 0.23.0
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/DecimalItem/DecimalItem.js +2 -2
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +2 -2
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringItem.js +2 -2
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.js +2 -2
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.js +2 -2
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- package/lib/hooks/useRenderingExtensions.d.ts +0 -5
- package/lib/hooks/useRenderingExtensions.js +2 -6
- package/lib/hooks/useRenderingExtensions.js.map +1 -1
- package/lib/hooks/useValidationFeedback.d.ts +2 -2
- package/lib/hooks/useValidationFeedback.js +29 -2
- package/lib/hooks/useValidationFeedback.js.map +1 -1
- package/lib/utils/itemControl.d.ts +2 -0
- package/lib/utils/itemControl.js +42 -0
- package/lib/utils/itemControl.js.map +1 -1
- package/lib/utils/validateQuestionnaire.d.ts +12 -2
- package/lib/utils/validateQuestionnaire.js +145 -5
- package/lib/utils/validateQuestionnaire.js.map +1 -1
- package/package.json +1 -1
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +2 -16
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +2 -3
- package/src/components/FormComponents/StringItem/StringItem.tsx +2 -3
- package/src/components/FormComponents/TextItem/TextItem.tsx +2 -3
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +2 -3
- package/src/hooks/useRenderingExtensions.ts +1 -11
- package/src/hooks/useValidationFeedback.ts +33 -11
- package/src/utils/itemControl.ts +58 -0
- package/src/utils/validateQuestionnaire.ts +190 -14
|
@@ -34,7 +34,7 @@ function DecimalItem(props) {
|
|
|
34
34
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
35
35
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
36
36
|
const precision = getDecimalPrecision(qItem);
|
|
37
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
37
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
38
38
|
// Init input value
|
|
39
39
|
let valueDecimal = 0.0;
|
|
40
40
|
let initialInput = '0';
|
|
@@ -49,7 +49,7 @@ function DecimalItem(props) {
|
|
|
49
49
|
}
|
|
50
50
|
const [input, setInput] = useStringInput(initialInput);
|
|
51
51
|
// Perform validation checks
|
|
52
|
-
const feedback = useValidationFeedback(
|
|
52
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
53
53
|
// Process calculated expressions
|
|
54
54
|
const { calcExpUpdated } = useDecimalCalculatedExpression({
|
|
55
55
|
qItem: qItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecimalItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/DecimalItem/DecimalItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,8BAA8B,MAAM,+CAA+C,CAAC;AAC3F,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,
|
|
1
|
+
{"version":3,"file":"DecimalItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/DecimalItem/DecimalItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ function IntegerItem(props) {
|
|
|
32
32
|
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
33
33
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
34
34
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
35
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
35
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
36
36
|
// Init input value
|
|
37
37
|
let valueInteger = 0;
|
|
38
38
|
if (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer) {
|
|
@@ -45,7 +45,7 @@ function IntegerItem(props) {
|
|
|
45
45
|
}
|
|
46
46
|
const [value, setValue] = useNumberInput(valueInteger);
|
|
47
47
|
// Perform validation checks
|
|
48
|
-
const feedback = useValidationFeedback(value.toString()
|
|
48
|
+
const feedback = useValidationFeedback(qItem, value.toString());
|
|
49
49
|
// Process calculated expressions
|
|
50
50
|
const { calcExpUpdated } = useIntegerCalculatedExpression({
|
|
51
51
|
qItem: qItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/IntegerItem/IntegerItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,8BAA8B,MAAM,+CAA+C,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAWxD,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"IntegerItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/IntegerItem/IntegerItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ function StringItem(props) {
|
|
|
31
31
|
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
32
32
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
33
33
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
34
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
34
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
35
35
|
// Init input value
|
|
36
36
|
let valueString = '';
|
|
37
37
|
if ((qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer) && (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer[0].valueString)) {
|
|
@@ -39,7 +39,7 @@ function StringItem(props) {
|
|
|
39
39
|
}
|
|
40
40
|
const [input, setInput] = useStringInput(valueString);
|
|
41
41
|
// Perform validation checks
|
|
42
|
-
const feedback = useValidationFeedback(
|
|
42
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
43
43
|
// Process calculated expressions
|
|
44
44
|
const { calcExpUpdated } = useStringCalculatedExpression({
|
|
45
45
|
qItem: qItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/StringItem/StringItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,6BAA6B,MAAM,8CAA8C,CAAC;AACzF,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAUxD,SAAS,UAAU,CAAC,KAAsB;IACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"StringItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/StringItem/StringItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@ function TextItem(props) {
|
|
|
31
31
|
const { qItem, qrItem, isRepeated, parentIsReadOnly, onQrItemChange } = props;
|
|
32
32
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
33
33
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
34
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
34
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
35
35
|
// Init input value
|
|
36
36
|
let valueText = '';
|
|
37
37
|
if ((qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer) && (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer[0].valueString)) {
|
|
@@ -39,7 +39,7 @@ function TextItem(props) {
|
|
|
39
39
|
}
|
|
40
40
|
const [input, setInput] = useStringInput(valueText);
|
|
41
41
|
// Perform validation checks
|
|
42
|
-
const feedback = useValidationFeedback(
|
|
42
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
43
43
|
// Process calculated expressions
|
|
44
44
|
const { calcExpUpdated } = useStringCalculatedExpression({
|
|
45
45
|
qItem: qItem,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/TextItem/TextItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAO3C,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,OAAO,6BAA6B,MAAM,8CAA8C,CAAC;AACzF,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAUxD,SAAS,QAAQ,CAAC,KAAoB;IACpC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9E,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"TextItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/TextItem/TextItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ function UrlItem(props) {
|
|
|
29
29
|
const { qItem, qrItem, isRepeated, isTabled, parentIsReadOnly, onQrItemChange } = props;
|
|
30
30
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
31
31
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
32
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
32
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
33
33
|
// Init input value
|
|
34
34
|
let valueUri = '';
|
|
35
35
|
if ((qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer) && (qrItem === null || qrItem === void 0 ? void 0 : qrItem.answer[0].valueUri)) {
|
|
@@ -37,7 +37,7 @@ function UrlItem(props) {
|
|
|
37
37
|
}
|
|
38
38
|
const [input, setInput] = useState(valueUri);
|
|
39
39
|
// Perform validation checks
|
|
40
|
-
const feedback = useValidationFeedback(
|
|
40
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
41
41
|
// Event handlers
|
|
42
42
|
function handleChange(newInput) {
|
|
43
43
|
setInput(newInput);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UrlItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/UrlItem/UrlItem.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQrD,OAAO,sBAAsB,MAAM,uCAAuC,CAAC;AAC3E,OAAO,qBAAqB,MAAM,sCAAsC,CAAC;AACzE,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,aAAa,MAAM,4BAA4B,CAAC;AACvD,OAAO,WAAW,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAUxD,SAAS,OAAO,CAAC,KAAmB;IAClC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAExF,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"UrlItem.js","sourceRoot":"","sources":["../../../../src/components/FormComponents/UrlItem/UrlItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
2
|
-
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
3
2
|
interface RenderingExtensions {
|
|
4
3
|
displayUnit: string;
|
|
5
4
|
displayPrompt: string;
|
|
@@ -8,10 +7,6 @@ interface RenderingExtensions {
|
|
|
8
7
|
readOnly: boolean;
|
|
9
8
|
entryFormat: string;
|
|
10
9
|
required: boolean;
|
|
11
|
-
regexValidation?: RegexValidation;
|
|
12
|
-
minLength?: number;
|
|
13
|
-
maxLength?: number;
|
|
14
|
-
maxDecimalPlaces?: number;
|
|
15
10
|
}
|
|
16
11
|
declare function useRenderingExtensions(qItem: QuestionnaireItem): RenderingExtensions;
|
|
17
12
|
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 {
|
|
17
|
+
import { 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,11 +27,7 @@ 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
|
|
31
|
-
regexValidation: getRegexValidation(qItem),
|
|
32
|
-
minLength: structuredDataCapture.getMinLength(qItem),
|
|
33
|
-
maxLength: qItem.maxLength,
|
|
34
|
-
maxDecimalPlaces: structuredDataCapture.getMaxDecimalPlaces(qItem)
|
|
30
|
+
required: (_b = qItem.required) !== null && _b !== void 0 ? _b : false
|
|
35
31
|
});
|
|
36
32
|
}, [qItem]);
|
|
37
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRenderingExtensions.js","sourceRoot":"","sources":["../../src/hooks/useRenderingExtensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,
|
|
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;AAYhC,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;SAClC,CAAC,CAAA;KAAA,EACF,CAAC,KAAK,CAAC,CACR,CAAC;AACJ,CAAC;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
declare function useValidationFeedback(
|
|
1
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
2
|
+
declare function useValidationFeedback(qItem: QuestionnaireItem, input: string): string;
|
|
3
3
|
export default useValidationFeedback;
|
|
@@ -15,8 +15,25 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
import { getInputInvalidType, ValidationResult } from '../utils/validateQuestionnaire';
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
import { getMaxValue, getMinValue, getRegexValidation } from '../utils/itemControl';
|
|
19
|
+
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
20
|
+
function useValidationFeedback(qItem, input) {
|
|
21
|
+
const regexValidation = getRegexValidation(qItem);
|
|
22
|
+
const minLength = structuredDataCapture.getMinLength(qItem);
|
|
23
|
+
const maxLength = qItem.maxLength;
|
|
24
|
+
const maxDecimalPlaces = structuredDataCapture.getMaxDecimalPlaces(qItem);
|
|
25
|
+
const minValue = getMinValue(qItem);
|
|
26
|
+
const maxValue = getMaxValue(qItem);
|
|
27
|
+
const invalidType = getInputInvalidType({
|
|
28
|
+
qItem,
|
|
29
|
+
input,
|
|
30
|
+
regexValidation,
|
|
31
|
+
minLength,
|
|
32
|
+
maxLength,
|
|
33
|
+
maxDecimalPlaces,
|
|
34
|
+
minValue,
|
|
35
|
+
maxValue
|
|
36
|
+
});
|
|
20
37
|
if (!invalidType) {
|
|
21
38
|
return '';
|
|
22
39
|
}
|
|
@@ -35,6 +52,16 @@ function useValidationFeedback(input, regexValidation, minLength, maxLength, max
|
|
|
35
52
|
if (invalidType === ValidationResult.maxDecimalPlaces && typeof maxDecimalPlaces === 'number') {
|
|
36
53
|
return `Input exceeds maximum decimal places limit of ${maxDecimalPlaces}.`;
|
|
37
54
|
}
|
|
55
|
+
// Test min value
|
|
56
|
+
if (invalidType === ValidationResult.minValue &&
|
|
57
|
+
(typeof minValue === 'string' || typeof minValue === 'number')) {
|
|
58
|
+
return `Input is lower than the expected minimum value of ${minValue}.`;
|
|
59
|
+
}
|
|
60
|
+
// Test min value
|
|
61
|
+
if (invalidType === ValidationResult.maxValue &&
|
|
62
|
+
(typeof maxValue === 'string' || typeof maxValue === 'number')) {
|
|
63
|
+
return `Input exceeds permitted maximum value of ${maxValue}.`;
|
|
64
|
+
}
|
|
38
65
|
return '';
|
|
39
66
|
}
|
|
40
67
|
export default useValidationFeedback;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useValidationFeedback.js","sourceRoot":"","sources":["../../src/hooks/useValidationFeedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"useValidationFeedback.js","sourceRoot":"","sources":["../../src/hooks/useValidationFeedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,SAAS,qBAAqB,CAAC,KAAwB,EAAE,KAAa;IACpE,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEpC,MAAM,WAAW,GAAG,mBAAmB,CAAC;QACtC,KAAK;QACL,KAAK;QACL,eAAe;QACf,SAAS;QACT,SAAS;QACT,gBAAgB;QAChB,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,IAAI,WAAW,KAAK,gBAAgB,CAAC,KAAK,IAAI,eAAe,EAAE;QAC7D,OAAO,0CAA0C,eAAe,CAAC,UAAU,EAAE,CAAC;KAC/E;IAED,2BAA2B;IAC3B,IAAI,WAAW,KAAK,gBAAgB,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QAC/E,OAAO,kBAAkB,SAAS,cAAc,CAAC;KAClD;IAED,2BAA2B;IAC3B,IAAI,WAAW,KAAK,gBAAgB,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QAC/E,OAAO,4CAA4C,SAAS,GAAG,CAAC;KACjE;IAED,gCAAgC;IAChC,IAAI,WAAW,KAAK,gBAAgB,CAAC,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;QAC7F,OAAO,iDAAiD,gBAAgB,GAAG,CAAC;KAC7E;IAED,iBAAiB;IACjB,IACE,WAAW,KAAK,gBAAgB,CAAC,QAAQ;QACzC,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,EAC9D;QACA,OAAO,qDAAqD,QAAQ,GAAG,CAAC;KACzE;IAED,iBAAiB;IACjB,IACE,WAAW,KAAK,gBAAgB,CAAC,QAAQ;QACzC,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,CAAC,EAC9D;QACA,OAAO,4CAA4C,QAAQ,GAAG,CAAC;KAChE;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -98,3 +98,5 @@ export declare function getTextDisplayFlyover(qItem: QuestionnaireItem): string;
|
|
|
98
98
|
*/
|
|
99
99
|
export declare function getRegexValidation(qItem: QuestionnaireItem): RegexValidation | undefined;
|
|
100
100
|
export declare function getRegexString(qItem: QuestionnaireItem): string | null;
|
|
101
|
+
export declare function getMinValue(qItem: QuestionnaireItem): string | number | undefined;
|
|
102
|
+
export declare function getMaxValue(qItem: QuestionnaireItem): string | number | undefined;
|
package/lib/utils/itemControl.js
CHANGED
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
|
+
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
17
18
|
/**
|
|
18
19
|
* Check if the extension has an itemControl code equal to the given itemControlCode
|
|
19
20
|
*
|
|
@@ -194,6 +195,8 @@ export function getTextDisplayPrompt(qItem) {
|
|
|
194
195
|
* @author Sean Fong
|
|
195
196
|
*/
|
|
196
197
|
export function getTextDisplayUnit(qItem) {
|
|
198
|
+
var _a, _b;
|
|
199
|
+
// Check if the item has a display unit childItem
|
|
197
200
|
if (qItem.item) {
|
|
198
201
|
for (const childItem of qItem.item) {
|
|
199
202
|
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'unit')) {
|
|
@@ -201,6 +204,11 @@ export function getTextDisplayUnit(qItem) {
|
|
|
201
204
|
}
|
|
202
205
|
}
|
|
203
206
|
}
|
|
207
|
+
// Otherwise, check if the item has a unit extension
|
|
208
|
+
const itemControl = (_a = qItem.extension) === null || _a === void 0 ? void 0 : _a.find((extension) => extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unit');
|
|
209
|
+
if (itemControl && itemControl.valueCoding) {
|
|
210
|
+
return (_b = itemControl.valueCoding.display) !== null && _b !== void 0 ? _b : '';
|
|
211
|
+
}
|
|
204
212
|
return '';
|
|
205
213
|
}
|
|
206
214
|
/**
|
|
@@ -298,4 +306,38 @@ export function getRegexString(qItem) {
|
|
|
298
306
|
}
|
|
299
307
|
return null;
|
|
300
308
|
}
|
|
309
|
+
export function getMinValue(qItem) {
|
|
310
|
+
var _a, _b;
|
|
311
|
+
switch (qItem.type) {
|
|
312
|
+
case 'integer':
|
|
313
|
+
return structuredDataCapture.getMinValueAsInteger(qItem);
|
|
314
|
+
case 'decimal':
|
|
315
|
+
// In the case for decimals, permit minValue to be a decimal or integer
|
|
316
|
+
return ((_a = structuredDataCapture.getMinValueAsDecimal(qItem)) !== null && _a !== void 0 ? _a : structuredDataCapture.getMinValueAsInteger(qItem));
|
|
317
|
+
case 'date':
|
|
318
|
+
return structuredDataCapture.getMinValueAsDate(qItem);
|
|
319
|
+
case 'dateTime':
|
|
320
|
+
// In the case for dateTime, permit minValue to be a dateTime or date
|
|
321
|
+
return ((_b = structuredDataCapture.getMinValueAsDateTime(qItem)) !== null && _b !== void 0 ? _b : structuredDataCapture.getMinValueAsDate(qItem));
|
|
322
|
+
default:
|
|
323
|
+
return undefined;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
export function getMaxValue(qItem) {
|
|
327
|
+
var _a, _b;
|
|
328
|
+
switch (qItem.type) {
|
|
329
|
+
case 'integer':
|
|
330
|
+
return structuredDataCapture.getMaxValueAsInteger(qItem);
|
|
331
|
+
case 'decimal':
|
|
332
|
+
// In the case for decimals, permit maxValue to be a decimal or integer
|
|
333
|
+
return ((_a = structuredDataCapture.getMaxValueAsDecimal(qItem)) !== null && _a !== void 0 ? _a : structuredDataCapture.getMaxValueAsInteger(qItem));
|
|
334
|
+
case 'date':
|
|
335
|
+
return structuredDataCapture.getMaxValueAsDate(qItem);
|
|
336
|
+
case 'dateTime':
|
|
337
|
+
// In the case for dateTime, permit maxValue to be a dateTime or date
|
|
338
|
+
return ((_b = structuredDataCapture.getMaxValueAsDateTime(qItem)) !== null && _b !== void 0 ? _b : structuredDataCapture.getMaxValueAsDate(qItem));
|
|
339
|
+
default:
|
|
340
|
+
return undefined;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
301
343
|
//# sourceMappingURL=itemControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itemControl.js","sourceRoot":"","sources":["../../src/utils/itemControl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"itemControl.js","sourceRoot":"","sources":["../../src/utils/itemControl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { OperationOutcome, Questionnaire, QuestionnaireResponse } from 'fhir/r4';
|
|
1
|
+
import type { OperationOutcome, Questionnaire, QuestionnaireItem, QuestionnaireResponse } from 'fhir/r4';
|
|
2
2
|
import type { EnableWhenExpressions, EnableWhenItems } from '../interfaces';
|
|
3
3
|
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
4
4
|
export declare enum ValidationResult {
|
|
@@ -56,5 +56,15 @@ interface ValidateQuestionnaireParams {
|
|
|
56
56
|
* @author Sean Fong
|
|
57
57
|
*/
|
|
58
58
|
export declare function validateQuestionnaire(params: ValidateQuestionnaireParams): Record<string, OperationOutcome>;
|
|
59
|
-
|
|
59
|
+
interface GetInputInvalidTypeParams {
|
|
60
|
+
qItem: QuestionnaireItem;
|
|
61
|
+
input: string;
|
|
62
|
+
regexValidation?: RegexValidation;
|
|
63
|
+
minLength?: number;
|
|
64
|
+
maxLength?: number;
|
|
65
|
+
maxDecimalPlaces?: number;
|
|
66
|
+
minValue?: string | number;
|
|
67
|
+
maxValue?: string | number;
|
|
68
|
+
}
|
|
69
|
+
export declare function getInputInvalidType(getInputInvalidTypeParams: GetInputInvalidTypeParams): ValidationResult | null;
|
|
60
70
|
export {};
|
|
@@ -16,8 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
|
|
18
18
|
import { isHiddenByEnableWhen } from './qItem';
|
|
19
|
-
import { getRegexString, getRegexValidation, getShortText } from './itemControl';
|
|
19
|
+
import { getDecimalPrecision, getMaxValue, getMinValue, getRegexString, getRegexValidation, getShortText } from './itemControl';
|
|
20
20
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
21
|
+
import { parseDecimalStringToFloat } from './parseInputs';
|
|
22
|
+
import dayjs from 'dayjs';
|
|
21
23
|
export var ValidationResult;
|
|
22
24
|
(function (ValidationResult) {
|
|
23
25
|
ValidationResult["unknown"] = "unknown";
|
|
@@ -108,7 +110,7 @@ export function validateQuestionnaire(params) {
|
|
|
108
110
|
isRepeatGroupInstance: false
|
|
109
111
|
});
|
|
110
112
|
// Increment qrItemIndex
|
|
111
|
-
// If
|
|
113
|
+
// If it's a repeat group, increment by the number of instances so qrItemIndex is correct once we reach the next item
|
|
112
114
|
if (isRepeatGroup && typeof repeatGroupInstances === 'number') {
|
|
113
115
|
qrItemIndex += repeatGroupInstances;
|
|
114
116
|
}
|
|
@@ -229,7 +231,16 @@ function validateSingleItem(qItem, qrItem, invalidItems, locationExpression) {
|
|
|
229
231
|
for (const [i, answer] of qrItem.answer.entries()) {
|
|
230
232
|
// Your code here, you can use 'index' and 'answer' as needed
|
|
231
233
|
if (answer.valueString || answer.valueInteger || answer.valueDecimal || answer.valueUri) {
|
|
232
|
-
const invalidInputType = getInputInvalidType(
|
|
234
|
+
const invalidInputType = getInputInvalidType({
|
|
235
|
+
qItem,
|
|
236
|
+
input: getInputInString(answer),
|
|
237
|
+
regexValidation: getRegexValidation(qItem),
|
|
238
|
+
minLength: structuredDataCapture.getMinLength(qItem),
|
|
239
|
+
maxLength: qItem.maxLength,
|
|
240
|
+
maxDecimalPlaces: structuredDataCapture.getMaxDecimalPlaces(qItem),
|
|
241
|
+
minValue: getMinValue(qItem),
|
|
242
|
+
maxValue: getMaxValue(qItem)
|
|
243
|
+
});
|
|
233
244
|
if (invalidInputType) {
|
|
234
245
|
invalidItems[qItem.linkId] = createValidationOperationOutcome(invalidInputType, qItem, qrItem, i, locationExpression, (_b = invalidItems[qItem.linkId]) === null || _b === void 0 ? void 0 : _b.issue);
|
|
235
246
|
}
|
|
@@ -256,8 +267,9 @@ function getInputInString(answer) {
|
|
|
256
267
|
}
|
|
257
268
|
return '';
|
|
258
269
|
}
|
|
259
|
-
export function getInputInvalidType(
|
|
270
|
+
export function getInputInvalidType(getInputInvalidTypeParams) {
|
|
260
271
|
var _a, _b;
|
|
272
|
+
const { qItem, input, regexValidation, minLength, maxLength, maxDecimalPlaces, minValue, maxValue } = getInputInvalidTypeParams;
|
|
261
273
|
if (input) {
|
|
262
274
|
if (regexValidation && !regexValidation.expression.test(input)) {
|
|
263
275
|
return ValidationResult.regex;
|
|
@@ -274,6 +286,98 @@ export function getInputInvalidType(input, regexValidation, minLength, maxLength
|
|
|
274
286
|
return ValidationResult.maxDecimalPlaces;
|
|
275
287
|
}
|
|
276
288
|
}
|
|
289
|
+
if (minValue) {
|
|
290
|
+
const minValueError = checkMinValue(qItem, input, minValue);
|
|
291
|
+
if (minValueError !== null) {
|
|
292
|
+
return ValidationResult.minValue;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (maxValue) {
|
|
296
|
+
const maxValueError = checkMaxValue(qItem, input, maxValue);
|
|
297
|
+
if (maxValueError !== null) {
|
|
298
|
+
return ValidationResult.maxValue;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return null;
|
|
303
|
+
}
|
|
304
|
+
function checkMinValue(qItem, input, minValue) {
|
|
305
|
+
switch (qItem.type) {
|
|
306
|
+
case 'integer':
|
|
307
|
+
if (typeof minValue === 'number') {
|
|
308
|
+
if (parseInt(input) < minValue) {
|
|
309
|
+
return ValidationResult.minValue;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
break;
|
|
313
|
+
case 'decimal': {
|
|
314
|
+
const precision = getDecimalPrecision(qItem);
|
|
315
|
+
const decimalValue = precision
|
|
316
|
+
? parseDecimalStringToFloat(input, precision)
|
|
317
|
+
: parseFloat(input);
|
|
318
|
+
if (typeof minValue === 'number') {
|
|
319
|
+
if (decimalValue < minValue) {
|
|
320
|
+
return ValidationResult.minValue;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
case 'date':
|
|
326
|
+
if (typeof minValue === 'string') {
|
|
327
|
+
if (new Date(input) < new Date(minValue)) {
|
|
328
|
+
return ValidationResult.minValue;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
break;
|
|
332
|
+
case 'dateTime':
|
|
333
|
+
if (typeof minValue === 'string') {
|
|
334
|
+
if (dayjs(input).isBefore(dayjs(minValue))) {
|
|
335
|
+
return ValidationResult.minValue;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
break;
|
|
339
|
+
default:
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
function checkMaxValue(qItem, input, maxValue) {
|
|
345
|
+
switch (qItem.type) {
|
|
346
|
+
case 'integer':
|
|
347
|
+
if (typeof maxValue === 'number') {
|
|
348
|
+
if (parseInt(input) > maxValue) {
|
|
349
|
+
return ValidationResult.maxValue;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
break;
|
|
353
|
+
case 'decimal': {
|
|
354
|
+
const precision = getDecimalPrecision(qItem);
|
|
355
|
+
const decimalValue = precision
|
|
356
|
+
? parseDecimalStringToFloat(input, precision)
|
|
357
|
+
: parseFloat(input);
|
|
358
|
+
if (typeof maxValue === 'number') {
|
|
359
|
+
if (decimalValue > maxValue) {
|
|
360
|
+
return ValidationResult.maxValue;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
case 'date':
|
|
366
|
+
if (typeof maxValue === 'string') {
|
|
367
|
+
if (new Date(input) > new Date(maxValue)) {
|
|
368
|
+
return ValidationResult.maxValue;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
break;
|
|
372
|
+
case 'dateTime':
|
|
373
|
+
if (typeof maxValue === 'string') {
|
|
374
|
+
if (dayjs(input).isAfter(dayjs(maxValue))) {
|
|
375
|
+
return ValidationResult.maxValue;
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
break;
|
|
379
|
+
default:
|
|
380
|
+
return null;
|
|
277
381
|
}
|
|
278
382
|
return null;
|
|
279
383
|
}
|
|
@@ -284,7 +388,7 @@ function createValidationOperationOutcome(error, qItem, qrItem, answerIndex, loc
|
|
|
284
388
|
};
|
|
285
389
|
}
|
|
286
390
|
function createValidationOperationOutcomeIssue(error, qItem, qrItem, answerIndex, locationExpression) {
|
|
287
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
391
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
288
392
|
const errorCodeSystem = 'http://fhir.forms-lab.com/CodeSystem/errors';
|
|
289
393
|
let detailsText = '';
|
|
290
394
|
let fieldDisplayText = (_d = (_c = (_b = (_a = qrItem === null || qrItem === void 0 ? void 0 : qrItem.text) !== null && _a !== void 0 ? _a : getShortText(qItem)) !== null && _b !== void 0 ? _b : qItem === null || qItem === void 0 ? void 0 : qItem.text) !== null && _c !== void 0 ? _c : qItem.linkId) !== null && _d !== void 0 ? _d : qrItem.linkId;
|
|
@@ -393,6 +497,42 @@ function createValidationOperationOutcomeIssue(error, qItem, qrItem, answerIndex
|
|
|
393
497
|
}
|
|
394
498
|
};
|
|
395
499
|
}
|
|
500
|
+
case ValidationResult.minValue: {
|
|
501
|
+
detailsText = `${fieldDisplayText}: Expected the minimum value ${getMinValue(qItem)}, received '${getInputInString((_k = qrItem.answer) === null || _k === void 0 ? void 0 : _k[answerIndex])}'`;
|
|
502
|
+
return {
|
|
503
|
+
severity: 'error',
|
|
504
|
+
code: 'business-rule',
|
|
505
|
+
expression: [locationExpression],
|
|
506
|
+
details: {
|
|
507
|
+
coding: [
|
|
508
|
+
{
|
|
509
|
+
system: errorCodeSystem,
|
|
510
|
+
code: error,
|
|
511
|
+
display: 'Too small'
|
|
512
|
+
}
|
|
513
|
+
],
|
|
514
|
+
text: detailsText
|
|
515
|
+
}
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
case ValidationResult.maxValue: {
|
|
519
|
+
detailsText = `${fieldDisplayText}: Exceeded the maximum value ${getMaxValue(qItem)}, received '${getInputInString((_l = qrItem.answer) === null || _l === void 0 ? void 0 : _l[answerIndex])}'`;
|
|
520
|
+
return {
|
|
521
|
+
severity: 'error',
|
|
522
|
+
code: 'business-rule',
|
|
523
|
+
expression: [locationExpression],
|
|
524
|
+
details: {
|
|
525
|
+
coding: [
|
|
526
|
+
{
|
|
527
|
+
system: errorCodeSystem,
|
|
528
|
+
code: error,
|
|
529
|
+
display: 'Too big'
|
|
530
|
+
}
|
|
531
|
+
],
|
|
532
|
+
text: detailsText
|
|
533
|
+
}
|
|
534
|
+
};
|
|
535
|
+
}
|
|
396
536
|
// mark unknown issues as fatal
|
|
397
537
|
default: {
|
|
398
538
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateQuestionnaire.js","sourceRoot":"","sources":["../../src/utils/validateQuestionnaire.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validateQuestionnaire.js","sourceRoot":"","sources":["../../src/utils/validateQuestionnaire.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -57,15 +57,7 @@ function DecimalItem(props: DecimalItemProps) {
|
|
|
57
57
|
|
|
58
58
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
59
59
|
const precision = getDecimalPrecision(qItem);
|
|
60
|
-
const {
|
|
61
|
-
displayUnit,
|
|
62
|
-
displayPrompt,
|
|
63
|
-
entryFormat,
|
|
64
|
-
regexValidation,
|
|
65
|
-
minLength,
|
|
66
|
-
maxLength,
|
|
67
|
-
maxDecimalPlaces
|
|
68
|
-
} = useRenderingExtensions(qItem);
|
|
60
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
69
61
|
|
|
70
62
|
// Init input value
|
|
71
63
|
let valueDecimal = 0.0;
|
|
@@ -84,13 +76,7 @@ function DecimalItem(props: DecimalItemProps) {
|
|
|
84
76
|
const [input, setInput] = useStringInput(initialInput);
|
|
85
77
|
|
|
86
78
|
// Perform validation checks
|
|
87
|
-
const feedback = useValidationFeedback(
|
|
88
|
-
input,
|
|
89
|
-
regexValidation,
|
|
90
|
-
minLength,
|
|
91
|
-
maxLength,
|
|
92
|
-
maxDecimalPlaces
|
|
93
|
-
);
|
|
79
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
94
80
|
|
|
95
81
|
// Process calculated expressions
|
|
96
82
|
const { calcExpUpdated } = useDecimalCalculatedExpression({
|
|
@@ -52,8 +52,7 @@ function IntegerItem(props: IntegerItemProps) {
|
|
|
52
52
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
53
53
|
|
|
54
54
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
55
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
56
|
-
useRenderingExtensions(qItem);
|
|
55
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
57
56
|
|
|
58
57
|
// Init input value
|
|
59
58
|
let valueInteger = 0;
|
|
@@ -68,7 +67,7 @@ function IntegerItem(props: IntegerItemProps) {
|
|
|
68
67
|
const [value, setValue] = useNumberInput(valueInteger);
|
|
69
68
|
|
|
70
69
|
// Perform validation checks
|
|
71
|
-
const feedback = useValidationFeedback(value.toString()
|
|
70
|
+
const feedback = useValidationFeedback(qItem, value.toString());
|
|
72
71
|
|
|
73
72
|
// Process calculated expressions
|
|
74
73
|
const { calcExpUpdated } = useIntegerCalculatedExpression({
|
|
@@ -50,8 +50,7 @@ function StringItem(props: StringItemProps) {
|
|
|
50
50
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
51
51
|
|
|
52
52
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
53
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
54
|
-
useRenderingExtensions(qItem);
|
|
53
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
55
54
|
|
|
56
55
|
// Init input value
|
|
57
56
|
let valueString = '';
|
|
@@ -61,7 +60,7 @@ function StringItem(props: StringItemProps) {
|
|
|
61
60
|
const [input, setInput] = useStringInput(valueString);
|
|
62
61
|
|
|
63
62
|
// Perform validation checks
|
|
64
|
-
const feedback = useValidationFeedback(
|
|
63
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
65
64
|
|
|
66
65
|
// Process calculated expressions
|
|
67
66
|
const { calcExpUpdated } = useStringCalculatedExpression({
|
|
@@ -49,8 +49,7 @@ function TextItem(props: TextItemProps) {
|
|
|
49
49
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
50
50
|
|
|
51
51
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
52
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
53
|
-
useRenderingExtensions(qItem);
|
|
52
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
54
53
|
|
|
55
54
|
// Init input value
|
|
56
55
|
let valueText = '';
|
|
@@ -60,7 +59,7 @@ function TextItem(props: TextItemProps) {
|
|
|
60
59
|
const [input, setInput] = useStringInput(valueText);
|
|
61
60
|
|
|
62
61
|
// Perform validation checks
|
|
63
|
-
const feedback = useValidationFeedback(
|
|
62
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
64
63
|
|
|
65
64
|
// Process calculated expressions
|
|
66
65
|
const { calcExpUpdated } = useStringCalculatedExpression({
|
|
@@ -48,8 +48,7 @@ function UrlItem(props: UrlItemProps) {
|
|
|
48
48
|
const onFocusLinkId = useQuestionnaireStore.use.onFocusLinkId();
|
|
49
49
|
|
|
50
50
|
const readOnly = useReadOnly(qItem, parentIsReadOnly);
|
|
51
|
-
const { displayUnit, displayPrompt, entryFormat
|
|
52
|
-
useRenderingExtensions(qItem);
|
|
51
|
+
const { displayUnit, displayPrompt, entryFormat } = useRenderingExtensions(qItem);
|
|
53
52
|
|
|
54
53
|
// Init input value
|
|
55
54
|
let valueUri = '';
|
|
@@ -59,7 +58,7 @@ function UrlItem(props: UrlItemProps) {
|
|
|
59
58
|
const [input, setInput] = useState(valueUri);
|
|
60
59
|
|
|
61
60
|
// Perform validation checks
|
|
62
|
-
const feedback = useValidationFeedback(
|
|
61
|
+
const feedback = useValidationFeedback(qItem, input);
|
|
63
62
|
|
|
64
63
|
// Event handlers
|
|
65
64
|
function handleChange(newInput: string) {
|
|
@@ -16,14 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
|
-
getRegexValidation,
|
|
20
19
|
getTextDisplayFlyover,
|
|
21
20
|
getTextDisplayInstructions,
|
|
22
21
|
getTextDisplayPrompt,
|
|
23
22
|
getTextDisplayUnit
|
|
24
23
|
} from '../utils/itemControl';
|
|
25
24
|
import type { QuestionnaireItem } from 'fhir/r4';
|
|
26
|
-
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
27
25
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
28
26
|
import { useMemo } from 'react';
|
|
29
27
|
|
|
@@ -35,10 +33,6 @@ interface RenderingExtensions {
|
|
|
35
33
|
readOnly: boolean;
|
|
36
34
|
entryFormat: string;
|
|
37
35
|
required: boolean;
|
|
38
|
-
regexValidation?: RegexValidation;
|
|
39
|
-
minLength?: number;
|
|
40
|
-
maxLength?: number;
|
|
41
|
-
maxDecimalPlaces?: number;
|
|
42
36
|
}
|
|
43
37
|
|
|
44
38
|
function useRenderingExtensions(qItem: QuestionnaireItem): RenderingExtensions {
|
|
@@ -50,11 +44,7 @@ function useRenderingExtensions(qItem: QuestionnaireItem): RenderingExtensions {
|
|
|
50
44
|
displayFlyover: getTextDisplayFlyover(qItem),
|
|
51
45
|
readOnly: !!qItem.readOnly,
|
|
52
46
|
entryFormat: structuredDataCapture.getEntryFormat(qItem) ?? '',
|
|
53
|
-
required: qItem.required ?? false
|
|
54
|
-
regexValidation: getRegexValidation(qItem),
|
|
55
|
-
minLength: structuredDataCapture.getMinLength(qItem),
|
|
56
|
-
maxLength: qItem.maxLength,
|
|
57
|
-
maxDecimalPlaces: structuredDataCapture.getMaxDecimalPlaces(qItem)
|
|
47
|
+
required: qItem.required ?? false
|
|
58
48
|
}),
|
|
59
49
|
[qItem]
|
|
60
50
|
);
|
|
@@ -15,23 +15,29 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
19
18
|
import { getInputInvalidType, ValidationResult } from '../utils/validateQuestionnaire';
|
|
19
|
+
import type { QuestionnaireItem } from 'fhir/r4';
|
|
20
|
+
import { getMaxValue, getMinValue, getRegexValidation } from '../utils/itemControl';
|
|
21
|
+
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
20
22
|
|
|
21
|
-
function useValidationFeedback(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
23
|
+
function useValidationFeedback(qItem: QuestionnaireItem, input: string): string {
|
|
24
|
+
const regexValidation = getRegexValidation(qItem);
|
|
25
|
+
const minLength = structuredDataCapture.getMinLength(qItem);
|
|
26
|
+
const maxLength = qItem.maxLength;
|
|
27
|
+
const maxDecimalPlaces = structuredDataCapture.getMaxDecimalPlaces(qItem);
|
|
28
|
+
const minValue = getMinValue(qItem);
|
|
29
|
+
const maxValue = getMaxValue(qItem);
|
|
30
|
+
|
|
31
|
+
const invalidType = getInputInvalidType({
|
|
32
|
+
qItem,
|
|
29
33
|
input,
|
|
30
34
|
regexValidation,
|
|
31
35
|
minLength,
|
|
32
36
|
maxLength,
|
|
33
|
-
maxDecimalPlaces
|
|
34
|
-
|
|
37
|
+
maxDecimalPlaces,
|
|
38
|
+
minValue,
|
|
39
|
+
maxValue
|
|
40
|
+
});
|
|
35
41
|
|
|
36
42
|
if (!invalidType) {
|
|
37
43
|
return '';
|
|
@@ -56,6 +62,22 @@ function useValidationFeedback(
|
|
|
56
62
|
return `Input exceeds maximum decimal places limit of ${maxDecimalPlaces}.`;
|
|
57
63
|
}
|
|
58
64
|
|
|
65
|
+
// Test min value
|
|
66
|
+
if (
|
|
67
|
+
invalidType === ValidationResult.minValue &&
|
|
68
|
+
(typeof minValue === 'string' || typeof minValue === 'number')
|
|
69
|
+
) {
|
|
70
|
+
return `Input is lower than the expected minimum value of ${minValue}.`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// Test min value
|
|
74
|
+
if (
|
|
75
|
+
invalidType === ValidationResult.maxValue &&
|
|
76
|
+
(typeof maxValue === 'string' || typeof maxValue === 'number')
|
|
77
|
+
) {
|
|
78
|
+
return `Input exceeds permitted maximum value of ${maxValue}.`;
|
|
79
|
+
}
|
|
80
|
+
|
|
59
81
|
return '';
|
|
60
82
|
}
|
|
61
83
|
|
package/src/utils/itemControl.ts
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import type { Coding, Expression, Extension, QuestionnaireItem } from 'fhir/r4';
|
|
19
19
|
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
20
|
+
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
23
|
* Check if the extension has an itemControl code equal to the given itemControlCode
|
|
@@ -237,6 +238,7 @@ export function getTextDisplayPrompt(qItem: QuestionnaireItem): string {
|
|
|
237
238
|
* @author Sean Fong
|
|
238
239
|
*/
|
|
239
240
|
export function getTextDisplayUnit(qItem: QuestionnaireItem): string {
|
|
241
|
+
// Check if the item has a display unit childItem
|
|
240
242
|
if (qItem.item) {
|
|
241
243
|
for (const childItem of qItem.item) {
|
|
242
244
|
if (childItem.type === 'display' && isSpecificItemControl(childItem, 'unit')) {
|
|
@@ -244,6 +246,16 @@ export function getTextDisplayUnit(qItem: QuestionnaireItem): string {
|
|
|
244
246
|
}
|
|
245
247
|
}
|
|
246
248
|
}
|
|
249
|
+
|
|
250
|
+
// Otherwise, check if the item has a unit extension
|
|
251
|
+
const itemControl = qItem.extension?.find(
|
|
252
|
+
(extension: Extension) =>
|
|
253
|
+
extension.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unit'
|
|
254
|
+
);
|
|
255
|
+
if (itemControl && itemControl.valueCoding) {
|
|
256
|
+
return itemControl.valueCoding.display ?? '';
|
|
257
|
+
}
|
|
258
|
+
|
|
247
259
|
return '';
|
|
248
260
|
}
|
|
249
261
|
|
|
@@ -355,3 +367,49 @@ export function getRegexString(qItem: QuestionnaireItem): string | null {
|
|
|
355
367
|
|
|
356
368
|
return null;
|
|
357
369
|
}
|
|
370
|
+
|
|
371
|
+
export function getMinValue(qItem: QuestionnaireItem) {
|
|
372
|
+
switch (qItem.type) {
|
|
373
|
+
case 'integer':
|
|
374
|
+
return structuredDataCapture.getMinValueAsInteger(qItem);
|
|
375
|
+
case 'decimal':
|
|
376
|
+
// In the case for decimals, permit minValue to be a decimal or integer
|
|
377
|
+
return (
|
|
378
|
+
structuredDataCapture.getMinValueAsDecimal(qItem) ??
|
|
379
|
+
structuredDataCapture.getMinValueAsInteger(qItem)
|
|
380
|
+
);
|
|
381
|
+
case 'date':
|
|
382
|
+
return structuredDataCapture.getMinValueAsDate(qItem);
|
|
383
|
+
case 'dateTime':
|
|
384
|
+
// In the case for dateTime, permit minValue to be a dateTime or date
|
|
385
|
+
return (
|
|
386
|
+
structuredDataCapture.getMinValueAsDateTime(qItem) ??
|
|
387
|
+
structuredDataCapture.getMinValueAsDate(qItem)
|
|
388
|
+
);
|
|
389
|
+
default:
|
|
390
|
+
return undefined;
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
export function getMaxValue(qItem: QuestionnaireItem) {
|
|
395
|
+
switch (qItem.type) {
|
|
396
|
+
case 'integer':
|
|
397
|
+
return structuredDataCapture.getMaxValueAsInteger(qItem);
|
|
398
|
+
case 'decimal':
|
|
399
|
+
// In the case for decimals, permit maxValue to be a decimal or integer
|
|
400
|
+
return (
|
|
401
|
+
structuredDataCapture.getMaxValueAsDecimal(qItem) ??
|
|
402
|
+
structuredDataCapture.getMaxValueAsInteger(qItem)
|
|
403
|
+
);
|
|
404
|
+
case 'date':
|
|
405
|
+
return structuredDataCapture.getMaxValueAsDate(qItem);
|
|
406
|
+
case 'dateTime':
|
|
407
|
+
// In the case for dateTime, permit maxValue to be a dateTime or date
|
|
408
|
+
return (
|
|
409
|
+
structuredDataCapture.getMaxValueAsDateTime(qItem) ??
|
|
410
|
+
structuredDataCapture.getMaxValueAsDate(qItem)
|
|
411
|
+
);
|
|
412
|
+
default:
|
|
413
|
+
return undefined;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
@@ -27,9 +27,18 @@ import type {
|
|
|
27
27
|
import { getQrItemsIndex, mapQItemsIndex } from './mapItem';
|
|
28
28
|
import type { EnableWhenExpressions, EnableWhenItems } from '../interfaces';
|
|
29
29
|
import { isHiddenByEnableWhen } from './qItem';
|
|
30
|
-
import {
|
|
30
|
+
import {
|
|
31
|
+
getDecimalPrecision,
|
|
32
|
+
getMaxValue,
|
|
33
|
+
getMinValue,
|
|
34
|
+
getRegexString,
|
|
35
|
+
getRegexValidation,
|
|
36
|
+
getShortText
|
|
37
|
+
} from './itemControl';
|
|
31
38
|
import { structuredDataCapture } from 'fhir-sdc-helpers';
|
|
32
39
|
import type { RegexValidation } from '../interfaces/regex.interface';
|
|
40
|
+
import { parseDecimalStringToFloat } from './parseInputs';
|
|
41
|
+
import dayjs from 'dayjs';
|
|
33
42
|
|
|
34
43
|
export enum ValidationResult {
|
|
35
44
|
unknown = 'unknown', // Unknown validation result
|
|
@@ -148,7 +157,7 @@ export function validateQuestionnaire(
|
|
|
148
157
|
});
|
|
149
158
|
|
|
150
159
|
// Increment qrItemIndex
|
|
151
|
-
// If
|
|
160
|
+
// If it's a repeat group, increment by the number of instances so qrItemIndex is correct once we reach the next item
|
|
152
161
|
if (isRepeatGroup && typeof repeatGroupInstances === 'number') {
|
|
153
162
|
qrItemIndex += repeatGroupInstances;
|
|
154
163
|
} else {
|
|
@@ -335,13 +344,16 @@ function validateSingleItem(
|
|
|
335
344
|
for (const [i, answer] of qrItem.answer.entries()) {
|
|
336
345
|
// Your code here, you can use 'index' and 'answer' as needed
|
|
337
346
|
if (answer.valueString || answer.valueInteger || answer.valueDecimal || answer.valueUri) {
|
|
338
|
-
const invalidInputType = getInputInvalidType(
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
qItem
|
|
343
|
-
|
|
344
|
-
|
|
347
|
+
const invalidInputType = getInputInvalidType({
|
|
348
|
+
qItem,
|
|
349
|
+
input: getInputInString(answer),
|
|
350
|
+
regexValidation: getRegexValidation(qItem),
|
|
351
|
+
minLength: structuredDataCapture.getMinLength(qItem),
|
|
352
|
+
maxLength: qItem.maxLength,
|
|
353
|
+
maxDecimalPlaces: structuredDataCapture.getMaxDecimalPlaces(qItem),
|
|
354
|
+
minValue: getMinValue(qItem),
|
|
355
|
+
maxValue: getMaxValue(qItem)
|
|
356
|
+
});
|
|
345
357
|
|
|
346
358
|
if (invalidInputType) {
|
|
347
359
|
invalidItems[qItem.linkId] = createValidationOperationOutcome(
|
|
@@ -378,13 +390,31 @@ function getInputInString(answer?: QuestionnaireResponseItemAnswer) {
|
|
|
378
390
|
return '';
|
|
379
391
|
}
|
|
380
392
|
|
|
393
|
+
interface GetInputInvalidTypeParams {
|
|
394
|
+
qItem: QuestionnaireItem;
|
|
395
|
+
input: string;
|
|
396
|
+
regexValidation?: RegexValidation;
|
|
397
|
+
minLength?: number;
|
|
398
|
+
maxLength?: number;
|
|
399
|
+
maxDecimalPlaces?: number;
|
|
400
|
+
minValue?: string | number;
|
|
401
|
+
maxValue?: string | number;
|
|
402
|
+
}
|
|
403
|
+
|
|
381
404
|
export function getInputInvalidType(
|
|
382
|
-
|
|
383
|
-
regexValidation?: RegexValidation,
|
|
384
|
-
minLength?: number,
|
|
385
|
-
maxLength?: number,
|
|
386
|
-
maxDecimalPlaces?: number
|
|
405
|
+
getInputInvalidTypeParams: GetInputInvalidTypeParams
|
|
387
406
|
): ValidationResult | null {
|
|
407
|
+
const {
|
|
408
|
+
qItem,
|
|
409
|
+
input,
|
|
410
|
+
regexValidation,
|
|
411
|
+
minLength,
|
|
412
|
+
maxLength,
|
|
413
|
+
maxDecimalPlaces,
|
|
414
|
+
minValue,
|
|
415
|
+
maxValue
|
|
416
|
+
} = getInputInvalidTypeParams;
|
|
417
|
+
|
|
388
418
|
if (input) {
|
|
389
419
|
if (regexValidation && !regexValidation.expression.test(input)) {
|
|
390
420
|
return ValidationResult.regex;
|
|
@@ -404,6 +434,114 @@ export function getInputInvalidType(
|
|
|
404
434
|
return ValidationResult.maxDecimalPlaces;
|
|
405
435
|
}
|
|
406
436
|
}
|
|
437
|
+
|
|
438
|
+
if (minValue) {
|
|
439
|
+
const minValueError = checkMinValue(qItem, input, minValue);
|
|
440
|
+
if (minValueError !== null) {
|
|
441
|
+
return ValidationResult.minValue;
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
if (maxValue) {
|
|
446
|
+
const maxValueError = checkMaxValue(qItem, input, maxValue);
|
|
447
|
+
if (maxValueError !== null) {
|
|
448
|
+
return ValidationResult.maxValue;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
function checkMinValue(
|
|
457
|
+
qItem: QuestionnaireItem,
|
|
458
|
+
input: string,
|
|
459
|
+
minValue: string | number
|
|
460
|
+
): ValidationResult.minValue | null {
|
|
461
|
+
switch (qItem.type) {
|
|
462
|
+
case 'integer':
|
|
463
|
+
if (typeof minValue === 'number') {
|
|
464
|
+
if (parseInt(input) < minValue) {
|
|
465
|
+
return ValidationResult.minValue;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
break;
|
|
469
|
+
case 'decimal': {
|
|
470
|
+
const precision = getDecimalPrecision(qItem);
|
|
471
|
+
const decimalValue = precision
|
|
472
|
+
? parseDecimalStringToFloat(input, precision)
|
|
473
|
+
: parseFloat(input);
|
|
474
|
+
|
|
475
|
+
if (typeof minValue === 'number') {
|
|
476
|
+
if (decimalValue < minValue) {
|
|
477
|
+
return ValidationResult.minValue;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
case 'date':
|
|
483
|
+
if (typeof minValue === 'string') {
|
|
484
|
+
if (new Date(input) < new Date(minValue)) {
|
|
485
|
+
return ValidationResult.minValue;
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
break;
|
|
489
|
+
case 'dateTime':
|
|
490
|
+
if (typeof minValue === 'string') {
|
|
491
|
+
if (dayjs(input).isBefore(dayjs(minValue))) {
|
|
492
|
+
return ValidationResult.minValue;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
break;
|
|
496
|
+
default:
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
return null;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
function checkMaxValue(
|
|
504
|
+
qItem: QuestionnaireItem,
|
|
505
|
+
input: string,
|
|
506
|
+
maxValue: string | number
|
|
507
|
+
): ValidationResult.maxValue | null {
|
|
508
|
+
switch (qItem.type) {
|
|
509
|
+
case 'integer':
|
|
510
|
+
if (typeof maxValue === 'number') {
|
|
511
|
+
if (parseInt(input) > maxValue) {
|
|
512
|
+
return ValidationResult.maxValue;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
break;
|
|
516
|
+
case 'decimal': {
|
|
517
|
+
const precision = getDecimalPrecision(qItem);
|
|
518
|
+
const decimalValue = precision
|
|
519
|
+
? parseDecimalStringToFloat(input, precision)
|
|
520
|
+
: parseFloat(input);
|
|
521
|
+
|
|
522
|
+
if (typeof maxValue === 'number') {
|
|
523
|
+
if (decimalValue > maxValue) {
|
|
524
|
+
return ValidationResult.maxValue;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
break;
|
|
528
|
+
}
|
|
529
|
+
case 'date':
|
|
530
|
+
if (typeof maxValue === 'string') {
|
|
531
|
+
if (new Date(input) > new Date(maxValue)) {
|
|
532
|
+
return ValidationResult.maxValue;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
break;
|
|
536
|
+
case 'dateTime':
|
|
537
|
+
if (typeof maxValue === 'string') {
|
|
538
|
+
if (dayjs(input).isAfter(dayjs(maxValue))) {
|
|
539
|
+
return ValidationResult.maxValue;
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
break;
|
|
543
|
+
default:
|
|
544
|
+
return null;
|
|
407
545
|
}
|
|
408
546
|
|
|
409
547
|
return null;
|
|
@@ -549,6 +687,44 @@ function createValidationOperationOutcomeIssue(
|
|
|
549
687
|
};
|
|
550
688
|
}
|
|
551
689
|
|
|
690
|
+
case ValidationResult.minValue: {
|
|
691
|
+
detailsText = `${fieldDisplayText}: Expected the minimum value ${getMinValue(qItem)}, received '${getInputInString(qrItem.answer?.[answerIndex])}'`;
|
|
692
|
+
return {
|
|
693
|
+
severity: 'error',
|
|
694
|
+
code: 'business-rule',
|
|
695
|
+
expression: [locationExpression],
|
|
696
|
+
details: {
|
|
697
|
+
coding: [
|
|
698
|
+
{
|
|
699
|
+
system: errorCodeSystem,
|
|
700
|
+
code: error,
|
|
701
|
+
display: 'Too small'
|
|
702
|
+
}
|
|
703
|
+
],
|
|
704
|
+
text: detailsText
|
|
705
|
+
}
|
|
706
|
+
};
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
case ValidationResult.maxValue: {
|
|
710
|
+
detailsText = `${fieldDisplayText}: Exceeded the maximum value ${getMaxValue(qItem)}, received '${getInputInString(qrItem.answer?.[answerIndex])}'`;
|
|
711
|
+
return {
|
|
712
|
+
severity: 'error',
|
|
713
|
+
code: 'business-rule',
|
|
714
|
+
expression: [locationExpression],
|
|
715
|
+
details: {
|
|
716
|
+
coding: [
|
|
717
|
+
{
|
|
718
|
+
system: errorCodeSystem,
|
|
719
|
+
code: error,
|
|
720
|
+
display: 'Too big'
|
|
721
|
+
}
|
|
722
|
+
],
|
|
723
|
+
text: detailsText
|
|
724
|
+
}
|
|
725
|
+
};
|
|
726
|
+
}
|
|
727
|
+
|
|
552
728
|
// mark unknown issues as fatal
|
|
553
729
|
default: {
|
|
554
730
|
return {
|