diff --git a/apps/smart-forms-app/package.json b/apps/smart-forms-app/package.json index 915be1f2..56d439dd 100644 --- a/apps/smart-forms-app/package.json +++ b/apps/smart-forms-app/package.json @@ -27,8 +27,8 @@ "homepage": "https://github.com/aehrc/smart-forms#readme", "dependencies": { "@aehrc/sdc-assemble": "^1.2.0", - "@aehrc/sdc-populate": "^2.2.2", - "@aehrc/smart-forms-renderer": "^0.35.6", + "@aehrc/sdc-populate": "^2.2.3", + "@aehrc/smart-forms-renderer": "^0.35.7", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", "@fontsource/material-icons": "^5.0.16", diff --git a/package-lock.json b/package-lock.json index 073fee32..54c9858d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,8 +25,8 @@ "license": "Apache-2.0", "dependencies": { "@aehrc/sdc-assemble": "^1.2.0", - "@aehrc/sdc-populate": "^2.2.2", - "@aehrc/smart-forms-renderer": "^0.35.6", + "@aehrc/sdc-populate": "^2.2.3", + "@aehrc/smart-forms-renderer": "^0.35.7", "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", "@fontsource/material-icons": "^5.0.16", @@ -41613,7 +41613,7 @@ }, "packages/sdc-populate": { "name": "@aehrc/sdc-populate", - "version": "2.2.2", + "version": "2.2.3", "license": "Apache-2.0", "dependencies": { "dayjs": "^1.11.10", @@ -41661,10 +41661,10 @@ }, "packages/smart-forms-renderer": { "name": "@aehrc/smart-forms-renderer", - "version": "0.35.6", + "version": "0.35.7", "license": "Apache-2.0", "dependencies": { - "@aehrc/sdc-populate": "^2.2.2", + "@aehrc/sdc-populate": "^2.2.3", "@iconify/react": "^4.1.1", "dayjs": "^1.11.10", "deep-diff": "^1.0.2", diff --git a/packages/sdc-populate/package.json b/packages/sdc-populate/package.json index fc7b14a7..a351bbd4 100644 --- a/packages/sdc-populate/package.json +++ b/packages/sdc-populate/package.json @@ -1,6 +1,6 @@ { "name": "@aehrc/sdc-populate", - "version": "2.2.2", + "version": "2.2.3", "description": "Performs the $populate operation from the HL7 FHIR SDC (Structured Data Capture) specification: http://hl7.org/fhir/uv/sdc", "main": "lib/index.js", "scripts": { diff --git a/packages/sdc-populate/src/SDCPopulateQuestionnaireOperation/utils/parse.ts b/packages/sdc-populate/src/SDCPopulateQuestionnaireOperation/utils/parse.ts index 682baae6..1c040d62 100644 --- a/packages/sdc-populate/src/SDCPopulateQuestionnaireOperation/utils/parse.ts +++ b/packages/sdc-populate/src/SDCPopulateQuestionnaireOperation/utils/parse.ts @@ -26,35 +26,35 @@ import { checkIsDateTime, checkIsTime, convertDateTimeToDate } from './construct export function parseItemInitialToAnswer( initial: QuestionnaireItemInitial ): QuestionnaireResponseItemAnswer | null { - if (initial.valueBoolean) { + if (typeof initial.valueBoolean === 'boolean') { return { valueBoolean: initial.valueBoolean }; } - if (initial.valueDecimal) { + if (typeof initial.valueDecimal === 'number') { return { valueDecimal: initial.valueDecimal }; } - if (initial.valueInteger) { + if (typeof initial.valueInteger === 'number') { return { valueInteger: initial.valueInteger }; } - if (initial.valueDate) { + if (typeof initial.valueDate === 'string') { return { valueDate: initial.valueDate }; } - if (initial.valueDateTime) { + if (typeof initial.valueDateTime === 'string') { return { valueDateTime: initial.valueDateTime }; } - if (initial.valueTime) { + if (typeof initial.valueTime === 'string') { return { valueTime: initial.valueTime }; } - if (initial.valueString) { + if (typeof initial.valueString === 'string') { return { valueString: initial.valueString }; } - if (initial.valueUri) { + if (typeof initial.valueUri === 'string') { return { valueUri: initial.valueUri }; } diff --git a/packages/smart-forms-renderer/package.json b/packages/smart-forms-renderer/package.json index 44da8520..66c12be7 100644 --- a/packages/smart-forms-renderer/package.json +++ b/packages/smart-forms-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@aehrc/smart-forms-renderer", - "version": "0.35.6", + "version": "0.35.7", "description": "FHIR Structured Data Captured (SDC) rendering engine for Smart Forms", "main": "lib/index.js", "scripts": { @@ -27,7 +27,7 @@ }, "homepage": "https://github.com/aehrc/smart-forms#readme", "dependencies": { - "@aehrc/sdc-populate": "^2.2.2", + "@aehrc/sdc-populate": "^2.2.3", "@iconify/react": "^4.1.1", "dayjs": "^1.11.10", "deep-diff": "^1.0.2", diff --git a/packages/smart-forms-renderer/src/components/FormComponents/BooleanItem/BooleanItem.tsx b/packages/smart-forms-renderer/src/components/FormComponents/BooleanItem/BooleanItem.tsx index 33739397..9894b253 100644 --- a/packages/smart-forms-renderer/src/components/FormComponents/BooleanItem/BooleanItem.tsx +++ b/packages/smart-forms-renderer/src/components/FormComponents/BooleanItem/BooleanItem.tsx @@ -48,7 +48,10 @@ function BooleanItem(props: BooleanItemProps) { const readOnly = useReadOnly(qItem, parentIsReadOnly); - const valueBoolean = qrItem?.answer && qrItem.answer[0].valueBoolean; + let valueBoolean: boolean | undefined = undefined; + if (qrItem?.answer?.[0]?.valueBoolean !== undefined) { + valueBoolean = qrItem.answer[0].valueBoolean; + } // Process calculated expressions const { calcExpUpdated } = useBooleanCalculatedExpression({ diff --git a/packages/smart-forms-renderer/src/utils/initialise.ts b/packages/smart-forms-renderer/src/utils/initialise.ts index 0f3d0ceb..b4b6c741 100644 --- a/packages/smart-forms-renderer/src/utils/initialise.ts +++ b/packages/smart-forms-renderer/src/utils/initialise.ts @@ -211,7 +211,7 @@ function getInitialValueAnswers(qItem: QuestionnaireItem): QuestionnaireResponse } return initialValues - .map((initialValue) => initialValueSwitcher(initialValue)) + .map((initialValue) => parseItemInitialToAnswer(initialValue)) .filter((item): item is QuestionnaireResponseItemAnswer => item !== null); } @@ -231,55 +231,55 @@ function getInitialValueAnswersFromRepeatGroup(qItem: QuestionnaireItem) { .filter((childQRItem) => childQRItem.answer && childQRItem.answer.length > 0); } -function initialValueSwitcher( - initialValue: QuestionnaireItemInitial +export function parseItemInitialToAnswer( + initial: QuestionnaireItemInitial ): QuestionnaireResponseItemAnswer | null { - if (initialValue.valueBoolean) { - return { valueBoolean: initialValue.valueBoolean }; + if (typeof initial.valueBoolean === 'boolean') { + return { valueBoolean: initial.valueBoolean }; } - if (initialValue.valueDecimal) { - return { valueDecimal: initialValue.valueDecimal }; + if (typeof initial.valueDecimal === 'number') { + return { valueDecimal: initial.valueDecimal }; } - if (initialValue.valueInteger) { - return { valueInteger: initialValue.valueInteger }; + if (typeof initial.valueInteger === 'number') { + return { valueInteger: initial.valueInteger }; } - if (initialValue.valueDate) { - return { valueDate: initialValue.valueDate }; + if (typeof initial.valueDate === 'string') { + return { valueDate: initial.valueDate }; } - if (initialValue.valueDateTime) { - return { valueDateTime: initialValue.valueDateTime }; + if (typeof initial.valueDateTime === 'string') { + return { valueDateTime: initial.valueDateTime }; } - if (initialValue.valueTime) { - return { valueTime: initialValue.valueTime }; + if (typeof initial.valueTime === 'string') { + return { valueTime: initial.valueTime }; } - if (initialValue.valueString) { - return { valueString: initialValue.valueString }; + if (typeof initial.valueString === 'string') { + return { valueString: initial.valueString }; } - if (initialValue.valueUri) { - return { valueUri: initialValue.valueUri }; + if (typeof initial.valueUri === 'string') { + return { valueUri: initial.valueUri }; } - if (initialValue.valueAttachment) { - return { valueAttachment: initialValue.valueAttachment }; + if (initial.valueAttachment) { + return { valueAttachment: initial.valueAttachment }; } - if (initialValue.valueCoding) { - return { valueCoding: initialValue.valueCoding }; + if (initial.valueCoding) { + return { valueCoding: initial.valueCoding }; } - if (initialValue.valueQuantity) { - return { valueQuantity: initialValue.valueQuantity }; + if (initial.valueQuantity) { + return { valueQuantity: initial.valueQuantity }; } - if (initialValue.valueReference) { - return { valueReference: initialValue.valueReference }; + if (initial.valueReference) { + return { valueReference: initial.valueReference }; } return null;