@aehrc/smart-forms-renderer 1.0.0-alpha.98 → 1.0.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/README.md +5 -1
- package/lib/api/callback.js +6 -15
- package/lib/api/callback.js.map +1 -1
- package/lib/api/smartClient.js +6 -21
- package/lib/api/smartClient.js.map +1 -1
- package/lib/components/Checkbox.styles.js +21 -19
- package/lib/components/Checkbox.styles.js.map +1 -1
- package/lib/components/ExpressionUpdateFadingGlow.styles.d.ts +2 -2
- package/lib/components/ExpressionUpdateFadingGlow.styles.js +12 -9
- package/lib/components/ExpressionUpdateFadingGlow.styles.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.d.ts +2 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.js +3 -3
- package/lib/components/FormComponents/AttachmentItem/AttachmentField.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.d.ts +2 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.js +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.d.ts +2 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.js +1 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileCollector.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.d.ts +2 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.js +4 -5
- package/lib/components/FormComponents/AttachmentItem/AttachmentFileDropBox.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js +27 -37
- package/lib/components/FormComponents/AttachmentItem/AttachmentItem.js.map +1 -1
- package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.d.ts +2 -2
- package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.js +3 -3
- package/lib/components/FormComponents/AttachmentItem/AttachmentUrlField.js.map +1 -1
- package/lib/components/FormComponents/BooleanItem/BooleanField.js +6 -7
- package/lib/components/FormComponents/BooleanItem/BooleanField.js.map +1 -1
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js +33 -24
- package/lib/components/FormComponents/BooleanItem/BooleanItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js +1 -2
- package/lib/components/FormComponents/ChoiceItems/CheckboxOptionList.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js +12 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js +17 -28
- package/lib/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js +29 -14
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js +17 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.d.ts +2 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js +12 -13
- package/lib/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js +30 -15
- package/lib/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js +32 -29
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.d.ts +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js +17 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js +15 -27
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js +9 -6
- package/lib/components/FormComponents/ChoiceItems/ChoiceRadioSingle.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js +28 -8
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js +14 -28
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js +4 -20
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.d.ts +2 -2
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js +19 -14
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.d.ts +2 -7
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js +16 -32
- package/lib/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.d.ts +2 -3
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js +9 -10
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js +17 -38
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePicker.js +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePicker.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.js +3 -3
- package/lib/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js +19 -56
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.d.ts +2 -3
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js +25 -9
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.js.map +1 -1
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.d.ts +2 -5
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.js +19 -3
- package/lib/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalField.d.ts +2 -3
- package/lib/components/FormComponents/DecimalItem/DecimalField.js +6 -6
- package/lib/components/FormComponents/DecimalItem/DecimalField.js.map +1 -1
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js +22 -45
- package/lib/components/FormComponents/DecimalItem/DecimalItem.js.map +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js +1 -1
- package/lib/components/FormComponents/DisplayItem/DisplayItem.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridGroup.d.ts +2 -2
- package/lib/components/FormComponents/GridGroup/GridGroup.js +29 -20
- package/lib/components/FormComponents/GridGroup/GridGroup.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridRow.d.ts +6 -2
- package/lib/components/FormComponents/GridGroup/GridRow.js +7 -9
- package/lib/components/FormComponents/GridGroup/GridRow.js.map +1 -1
- package/lib/components/FormComponents/GridGroup/GridTable.d.ts +6 -2
- package/lib/components/FormComponents/GridGroup/GridTable.js +7 -4
- package/lib/components/FormComponents/GridGroup/GridTable.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupHeading.js +4 -4
- package/lib/components/FormComponents/GroupItem/GroupHeading.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItem.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItem.js +8 -8
- package/lib/components/FormComponents/GroupItem/GroupItem.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js +11 -11
- package/lib/components/FormComponents/GroupItem/GroupItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/GroupItemView.d.ts +2 -2
- package/lib/components/FormComponents/GroupItem/GroupItemView.js +8 -10
- package/lib/components/FormComponents/GroupItem/GroupItemView.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/PageButtonWrapper.js +2 -2
- package/lib/components/FormComponents/GroupItem/PageButtonWrapper.js.map +1 -1
- package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js +2 -2
- package/lib/components/FormComponents/GroupItem/TabButtonsWrapper.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerField.d.ts +2 -3
- package/lib/components/FormComponents/IntegerItem/IntegerField.js +6 -6
- package/lib/components/FormComponents/IntegerItem/IntegerField.js.map +1 -1
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js +20 -40
- package/lib/components/FormComponents/IntegerItem/IntegerItem.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.d.ts +1 -1
- package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js +10 -11
- package/lib/components/FormComponents/ItemParts/CheckboxFormGroup.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/CheckboxSingle.js +10 -7
- package/lib/components/FormComponents/ItemParts/CheckboxSingle.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js +9 -7
- package/lib/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js +1 -2
- package/lib/components/FormComponents/ItemParts/ClearButtonAdornment.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ClearInputButton.d.ts +1 -1
- package/lib/components/FormComponents/ItemParts/ClearInputButton.js +9 -7
- package/lib/components/FormComponents/ItemParts/ClearInputButton.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/DisplayUnitText.js +2 -2
- package/lib/components/FormComponents/ItemParts/DisplayUnitText.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingIcon.js +6 -2
- package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingIcon.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js +3 -3
- package/lib/components/FormComponents/ItemParts/ItemFieldGrid.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemLabel.js +10 -9
- package/lib/components/FormComponents/ItemParts/ItemLabel.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemRepopulateButton.js +30 -48
- package/lib/components/FormComponents/ItemParts/ItemRepopulateButton.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js +6 -5
- package/lib/components/FormComponents/ItemParts/ItemTextSwitcher.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/OpenLabelField.js +4 -4
- package/lib/components/FormComponents/ItemParts/OpenLabelField.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RadioButtonWithOpenLabel.js +1 -1
- package/lib/components/FormComponents/ItemParts/RadioButtonWithOpenLabel.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.d.ts +1 -1
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.js +12 -13
- package/lib/components/FormComponents/ItemParts/RadioFormGroup.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RadioOptionList.js +1 -2
- package/lib/components/FormComponents/ItemParts/RadioOptionList.js.map +1 -1
- package/lib/components/FormComponents/ItemParts/RequiredAsterisk.js +4 -15
- package/lib/components/FormComponents/ItemParts/RequiredAsterisk.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js +21 -16
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js +41 -18
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js +18 -18
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.js +18 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js +18 -18
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js +28 -13
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js +26 -17
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js +18 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js +26 -17
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js +10 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js +25 -13
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.d.ts +2 -2
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js +10 -6
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.js.map +1 -1
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.d.ts +2 -7
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js +21 -12
- package/lib/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.js.map +1 -1
- package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.d.ts +2 -2
- package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js +5 -5
- package/lib/components/FormComponents/QuantityItem/QuantityComparatorField.js.map +1 -1
- package/lib/components/FormComponents/QuantityItem/QuantityField.d.ts +2 -3
- package/lib/components/FormComponents/QuantityItem/QuantityField.js +6 -6
- package/lib/components/FormComponents/QuantityItem/QuantityField.js.map +1 -1
- package/lib/components/FormComponents/QuantityItem/QuantityItem.js +31 -89
- package/lib/components/FormComponents/QuantityItem/QuantityItem.js.map +1 -1
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.d.ts +2 -2
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js +4 -4
- package/lib/components/FormComponents/QuantityItem/QuantityUnitField.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js +1 -2
- package/lib/components/FormComponents/RepeatGroup/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js +4 -6
- package/lib/components/FormComponents/RepeatGroup/RepeatGroup.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js +2 -2
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupItem.js.map +1 -1
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.d.ts +3 -4
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js +3 -4
- package/lib/components/FormComponents/RepeatGroup/RepeatGroupView.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js +1 -1
- package/lib/components/FormComponents/RepeatItem/AddItemButton.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatField.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatField.js +2 -3
- package/lib/components/FormComponents/RepeatItem/RepeatField.js.map +1 -1
- package/lib/components/FormComponents/RepeatItem/RepeatItem.d.ts +2 -2
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js +17 -13
- package/lib/components/FormComponents/RepeatItem/RepeatItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItem.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItem.js +9 -9
- package/lib/components/FormComponents/SingleItem/SingleItem.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js +54 -31
- package/lib/components/FormComponents/SingleItem/SingleItemSwitcher.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleItemView.d.ts +3 -4
- package/lib/components/FormComponents/SingleItem/SingleItemView.js +4 -5
- package/lib/components/FormComponents/SingleItem/SingleItemView.js.map +1 -1
- package/lib/components/FormComponents/SingleItem/SingleNestedItems.d.ts +2 -2
- package/lib/components/FormComponents/SingleItem/SingleNestedItems.js +8 -9
- package/lib/components/FormComponents/SingleItem/SingleNestedItems.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/Slider.styles.js +23 -21
- package/lib/components/FormComponents/SliderItem/Slider.styles.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/SliderField.d.ts +2 -2
- package/lib/components/FormComponents/SliderItem/SliderField.js +4 -4
- package/lib/components/FormComponents/SliderItem/SliderField.js.map +1 -1
- package/lib/components/FormComponents/SliderItem/SliderItem.js +10 -8
- package/lib/components/FormComponents/SliderItem/SliderItem.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringField.d.ts +2 -3
- package/lib/components/FormComponents/StringItem/StringField.js +22 -6
- package/lib/components/FormComponents/StringItem/StringField.js.map +1 -1
- package/lib/components/FormComponents/StringItem/StringItem.d.ts +2 -7
- package/lib/components/FormComponents/StringItem/StringItem.js +19 -55
- package/lib/components/FormComponents/StringItem/StringItem.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTable.d.ts +2 -2
- package/lib/components/FormComponents/Tables/GroupTable.js +33 -37
- package/lib/components/FormComponents/Tables/GroupTable.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableBody.d.ts +7 -4
- package/lib/components/FormComponents/Tables/GroupTableBody.js +4 -5
- package/lib/components/FormComponents/Tables/GroupTableBody.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRow.d.ts +7 -4
- package/lib/components/FormComponents/Tables/GroupTableRow.js +3 -3
- package/lib/components/FormComponents/Tables/GroupTableRow.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableRowCells.d.ts +6 -2
- package/lib/components/FormComponents/Tables/GroupTableRowCells.js +5 -6
- package/lib/components/FormComponents/Tables/GroupTableRowCells.js.map +1 -1
- package/lib/components/FormComponents/Tables/GroupTableView.d.ts +7 -4
- package/lib/components/FormComponents/Tables/GroupTableView.js +8 -9
- package/lib/components/FormComponents/Tables/GroupTableView.js.map +1 -1
- package/lib/components/FormComponents/Tables/SelectRowButton.js +3 -4
- package/lib/components/FormComponents/Tables/SelectRowButton.js.map +1 -1
- package/lib/components/FormComponents/Tables/Table.styles.d.ts +2 -2
- package/lib/components/FormComponents/Tables/Table.styles.js +25 -20
- package/lib/components/FormComponents/Tables/Table.styles.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextField.d.ts +0 -1
- package/lib/components/FormComponents/TextItem/TextField.js +4 -4
- package/lib/components/FormComponents/TextItem/TextField.js.map +1 -1
- package/lib/components/FormComponents/TextItem/TextItem.js +14 -34
- package/lib/components/FormComponents/TextItem/TextItem.js.map +1 -1
- package/lib/components/FormComponents/Textfield.styles.js +1 -1
- package/lib/components/FormComponents/Textfield.styles.js.map +1 -1
- package/lib/components/FormComponents/TimeItem/TimeField.d.ts +2 -2
- package/lib/components/FormComponents/TimeItem/TimeField.js +3 -2
- package/lib/components/FormComponents/TimeItem/TimeField.js.map +1 -1
- package/lib/components/FormComponents/TimeItem/TimeItem.js +8 -6
- package/lib/components/FormComponents/TimeItem/TimeItem.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlField.d.ts +2 -3
- package/lib/components/FormComponents/UrlItem/UrlField.js +5 -5
- package/lib/components/FormComponents/UrlItem/UrlField.js.map +1 -1
- package/lib/components/FormComponents/UrlItem/UrlItem.js +8 -17
- package/lib/components/FormComponents/UrlItem/UrlItem.js.map +1 -1
- package/lib/components/Radio.styles.js +21 -19
- package/lib/components/Radio.styles.js.map +1 -1
- package/lib/components/Renderer/BaseRenderer.js +11 -15
- package/lib/components/Renderer/BaseRenderer.js.map +1 -1
- package/lib/components/Renderer/FormBodyCollapsible.d.ts +2 -2
- package/lib/components/Renderer/FormBodyCollapsible.js +5 -6
- package/lib/components/Renderer/FormBodyCollapsible.js.map +1 -1
- package/lib/components/Renderer/FormBodyPageContainer.d.ts +2 -2
- package/lib/components/Renderer/FormBodyPageContainer.js +7 -9
- package/lib/components/Renderer/FormBodyPageContainer.js.map +1 -1
- package/lib/components/Renderer/FormBodyPaginated.d.ts +2 -2
- package/lib/components/Renderer/FormBodyPaginated.js +11 -15
- package/lib/components/Renderer/FormBodyPaginated.js.map +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsible.js +1 -2
- package/lib/components/Renderer/FormBodySingleCollapsible.js.map +1 -1
- package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.d.ts +2 -2
- package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js +2 -2
- package/lib/components/Renderer/FormBodySingleCollapsibleWrapper.js.map +1 -1
- package/lib/components/Renderer/FormBodyTabbed.d.ts +2 -2
- package/lib/components/Renderer/FormBodyTabbed.js +13 -15
- package/lib/components/Renderer/FormBodyTabbed.js.map +1 -1
- package/lib/components/Renderer/FormTopLevelItem.d.ts +2 -2
- package/lib/components/Renderer/FormTopLevelItem.js +12 -12
- package/lib/components/Renderer/FormTopLevelItem.js.map +1 -1
- package/lib/components/Renderer/SmartFormsRenderer.d.ts +4 -2
- package/lib/components/Renderer/SmartFormsRenderer.js +4 -2
- package/lib/components/Renderer/SmartFormsRenderer.js.map +1 -1
- package/lib/components/Tabs/FormBodySingleTab.d.ts +1 -0
- package/lib/components/Tabs/FormBodySingleTab.js +5 -2
- package/lib/components/Tabs/FormBodySingleTab.js.map +1 -1
- package/lib/components/Tabs/FormBodyTabList.js +2 -3
- package/lib/components/Tabs/FormBodyTabList.js.map +1 -1
- package/lib/hooks/index.d.ts +0 -2
- package/lib/hooks/index.js +1 -3
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useAnswerOptionsToggleExpressions.js +6 -8
- package/lib/hooks/useAnswerOptionsToggleExpressions.js.map +1 -1
- package/lib/hooks/useAttachmentUrlValidation.js +1 -1
- package/lib/hooks/useAttachmentUrlValidation.js.map +1 -1
- package/lib/hooks/useBuildForm.d.ts +13 -15
- package/lib/hooks/useBuildForm.js +26 -22
- package/lib/hooks/useBuildForm.js.map +1 -1
- package/lib/hooks/useCalculatedExpressionUpdated.d.ts +7 -0
- package/lib/hooks/useCalculatedExpressionUpdated.js +31 -0
- package/lib/hooks/useCalculatedExpressionUpdated.js.map +1 -0
- package/lib/hooks/useCodingCalculatedExpression.d.ts +0 -13
- package/lib/hooks/useCodingCalculatedExpression.js +1 -74
- package/lib/hooks/useCodingCalculatedExpression.js.map +1 -1
- package/lib/hooks/useDateCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useDateCalculatedExpression.js +1 -58
- package/lib/hooks/useDateCalculatedExpression.js.map +1 -1
- package/lib/hooks/useDateTimeCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useDateTimeCalculatedExpression.js +1 -58
- package/lib/hooks/useDateTimeCalculatedExpression.js.map +1 -1
- package/lib/hooks/useDisplayCqfAndCalculatedExpression.d.ts +13 -1
- package/lib/hooks/useDisplayCqfAndCalculatedExpression.js +14 -4
- package/lib/hooks/useDisplayCqfAndCalculatedExpression.js.map +1 -1
- package/lib/hooks/useDynamicValueSetEffect.js +6 -16
- package/lib/hooks/useDynamicValueSetEffect.js.map +1 -1
- package/lib/hooks/useHidden.js +2 -2
- package/lib/hooks/useHidden.js.map +1 -1
- package/lib/hooks/useInitialiseForm.d.ts +3 -2
- package/lib/hooks/useInitialiseForm.js +10 -3
- package/lib/hooks/useInitialiseForm.js.map +1 -1
- package/lib/hooks/useInitialiseRepeatAnswers.js +5 -5
- package/lib/hooks/useInitialiseRepeatAnswers.js.map +1 -1
- package/lib/hooks/useParseXhtml.js +2 -2
- package/lib/hooks/useParseXhtml.js.map +1 -1
- package/lib/hooks/useReadOnly.js +2 -2
- package/lib/hooks/useReadOnly.js.map +1 -1
- package/lib/hooks/useRenderingExtensions.js +11 -14
- package/lib/hooks/useRenderingExtensions.js.map +1 -1
- package/lib/hooks/useResizeColumns.d.ts +8 -0
- package/lib/hooks/useResizeColumns.js +46 -0
- package/lib/hooks/useResizeColumns.js.map +1 -0
- package/lib/hooks/useSliderExtensions.js +5 -6
- package/lib/hooks/useSliderExtensions.js.map +1 -1
- package/lib/hooks/useTerminologyServerQuery.js +2 -3
- package/lib/hooks/useTerminologyServerQuery.js.map +1 -1
- package/lib/hooks/useValidationFeedback.js +2 -3
- package/lib/hooks/useValidationFeedback.js.map +1 -1
- package/lib/hooks/useValueSetCodings.js +6 -39
- package/lib/hooks/useValueSetCodings.js.map +1 -1
- package/lib/index.d.ts +5 -7
- package/lib/index.js +3 -4
- package/lib/index.js.map +1 -1
- package/lib/interfaces/calculatedExpression.interface.d.ts +1 -1
- package/lib/interfaces/overrideComponent.interface.d.ts +2 -4
- package/lib/interfaces/renderProps.interface.d.ts +6 -31
- package/lib/interfaces/valueSet.interface.d.ts +2 -2
- package/lib/stores/formUpdateQueueStore.d.ts +6 -13
- package/lib/stores/formUpdateQueueStore.js +9 -24
- package/lib/stores/formUpdateQueueStore.js.map +1 -1
- package/lib/stores/index.d.ts +3 -3
- package/lib/stores/index.js +2 -2
- package/lib/stores/index.js.map +1 -1
- package/lib/stores/questionnaireResponseStore.d.ts +6 -9
- package/lib/stores/questionnaireResponseStore.js +22 -28
- package/lib/stores/questionnaireResponseStore.js.map +1 -1
- package/lib/stores/questionnaireStore.d.ts +39 -35
- package/lib/stores/questionnaireStore.js +136 -141
- package/lib/stores/questionnaireStore.js.map +1 -1
- package/lib/stores/{rendererStylingStore.d.ts → rendererConfigStore.d.ts} +8 -8
- package/lib/stores/rendererConfigStore.js +65 -0
- package/lib/stores/rendererConfigStore.js.map +1 -0
- package/lib/stores/smartConfigStore.d.ts +3 -3
- package/lib/stores/smartConfigStore.js +3 -3
- package/lib/stores/terminologyServerStore.d.ts +2 -2
- package/lib/stores/terminologyServerStore.js +2 -2
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.d.ts +1 -1
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js +2 -2
- package/lib/stories/storybookWrappers/InitialiseFormWrapperForStorybook.js.map +1 -1
- package/lib/stories/testUtils.d.ts +23 -0
- package/lib/stories/testUtils.js +249 -0
- package/lib/stories/testUtils.js.map +1 -0
- package/lib/theme/rendererThemeOptions.js +1 -1
- package/lib/theme/rendererThemeOptions.js.map +1 -1
- package/lib/utils/answerOptionsToggleExpressions.d.ts +1 -1
- package/lib/utils/answerOptionsToggleExpressions.js +94 -111
- package/lib/utils/answerOptionsToggleExpressions.js.map +1 -1
- package/lib/utils/calculatedExpression.d.ts +39 -3
- package/lib/utils/calculatedExpression.js +426 -191
- package/lib/utils/calculatedExpression.js.map +1 -1
- package/lib/utils/choice.js +14 -11
- package/lib/utils/choice.js.map +1 -1
- package/lib/utils/columnWidth.d.ts +28 -0
- package/lib/utils/columnWidth.js +103 -0
- package/lib/utils/columnWidth.js.map +1 -0
- package/lib/utils/computedUpdates.js +14 -12
- package/lib/utils/computedUpdates.js.map +1 -1
- package/lib/utils/enableWhen.js +6 -8
- package/lib/utils/enableWhen.js.map +1 -1
- package/lib/utils/enableWhenExpression.d.ts +1 -1
- package/lib/utils/enableWhenExpression.js +143 -163
- package/lib/utils/enableWhenExpression.js.map +1 -1
- package/lib/utils/extensions.d.ts +9 -0
- package/lib/utils/extensions.js +77 -74
- package/lib/utils/extensions.js.map +1 -1
- package/lib/utils/extractObservation.js +37 -28
- package/lib/utils/extractObservation.js.map +1 -1
- package/lib/utils/fhirpath.d.ts +27 -21
- package/lib/utils/fhirpath.js +191 -171
- package/lib/utils/fhirpath.js.map +1 -1
- package/lib/utils/fileUtils.js +21 -32
- package/lib/utils/fileUtils.js.map +1 -1
- package/lib/utils/genericRecursive.js +4 -6
- package/lib/utils/genericRecursive.js.map +1 -1
- package/lib/utils/getExpressionsFromItem.js +59 -66
- package/lib/utils/getExpressionsFromItem.js.map +1 -1
- package/lib/utils/index.d.ts +2 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/initialise.js +88 -101
- package/lib/utils/initialise.js.map +1 -1
- package/lib/utils/inputSanitization.js +6 -6
- package/lib/utils/inputSanitization.js.map +1 -1
- package/lib/utils/itemPath.d.ts +2 -2
- package/lib/utils/manageForm.d.ts +87 -9
- package/lib/utils/manageForm.js +79 -54
- package/lib/utils/manageForm.js.map +1 -1
- package/lib/utils/misc.js +9 -9
- package/lib/utils/misc.js.map +1 -1
- package/lib/utils/openChoice.js +25 -23
- package/lib/utils/openChoice.js.map +1 -1
- package/lib/utils/page.js +3 -4
- package/lib/utils/page.js.map +1 -1
- package/lib/utils/parameterisedValueSets.d.ts +1 -1
- package/lib/utils/parameterisedValueSets.js +110 -124
- package/lib/utils/parameterisedValueSets.js.map +1 -1
- package/lib/utils/populateContexts.js +4 -5
- package/lib/utils/populateContexts.js.map +1 -1
- package/lib/utils/qItem.js +9 -21
- package/lib/utils/qItem.js.map +1 -1
- package/lib/utils/qrItem.js +2 -3
- package/lib/utils/qrItem.js.map +1 -1
- package/lib/utils/quantity.js +8 -9
- package/lib/utils/quantity.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js +93 -111
- package/lib/utils/questionnaireStoreUtils/addDisplayToCodings.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionnaireModel.js +53 -64
- package/lib/utils/questionnaireStoreUtils/createQuestionnaireModel.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js +3 -5
- package/lib/utils/questionnaireStoreUtils/extractContainedValueSets.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js +1 -2
- package/lib/utils/questionnaireStoreUtils/extractLaunchContext.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js +200 -212
- package/lib/utils/questionnaireStoreUtils/extractOtherExtensions.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractTabs.js +1 -1
- package/lib/utils/questionnaireStoreUtils/extractTabs.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractTargetConstraint.js +8 -9
- package/lib/utils/questionnaireStoreUtils/extractTargetConstraint.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/extractVariables.js +4 -10
- package/lib/utils/questionnaireStoreUtils/extractVariables.js.map +1 -1
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js +28 -37
- package/lib/utils/questionnaireStoreUtils/resolveValueSets.js.map +1 -1
- package/lib/utils/readValues.js +7 -7
- package/lib/utils/readValues.js.map +1 -1
- package/lib/utils/removeEmptyAnswers.js +11 -9
- package/lib/utils/removeEmptyAnswers.js.map +1 -1
- package/lib/utils/removeRepeatId.js +17 -22
- package/lib/utils/removeRepeatId.js.map +1 -1
- package/lib/utils/repopulateIntoResponse.js +7 -5
- package/lib/utils/repopulateIntoResponse.js.map +1 -1
- package/lib/utils/repopulateItems.js +6 -11
- package/lib/utils/repopulateItems.js.map +1 -1
- package/lib/utils/slider.js +3 -6
- package/lib/utils/slider.js.map +1 -1
- package/lib/utils/tabs.js +3 -5
- package/lib/utils/tabs.js.map +1 -1
- package/lib/utils/targetConstraint.d.ts +1 -1
- package/lib/utils/targetConstraint.js +85 -102
- package/lib/utils/targetConstraint.js.map +1 -1
- package/lib/utils/ucumQuantityConversion.d.ts +44 -0
- package/lib/utils/ucumQuantityConversion.js +132 -0
- package/lib/utils/ucumQuantityConversion.js.map +1 -0
- package/lib/utils/validate.js +35 -35
- package/lib/utils/validate.js.map +1 -1
- package/lib/utils/valueSet.d.ts +10 -1
- package/lib/utils/valueSet.js +67 -55
- package/lib/utils/valueSet.js.map +1 -1
- package/package.json +19 -19
- package/src/components/ExpressionUpdateFadingGlow.styles.ts +3 -3
- package/src/components/FormComponents/AttachmentItem/AttachmentField.tsx +5 -5
- package/src/components/FormComponents/AttachmentItem/AttachmentFieldWrapper.tsx +3 -2
- package/src/components/FormComponents/AttachmentItem/AttachmentFileCollector.tsx +2 -2
- package/src/components/FormComponents/AttachmentItem/AttachmentFileDropBox.tsx +5 -5
- package/src/components/FormComponents/AttachmentItem/AttachmentUrlField.tsx +5 -5
- package/src/components/FormComponents/BooleanItem/BooleanField.tsx +4 -4
- package/src/components/FormComponents/BooleanItem/BooleanItem.tsx +7 -26
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteField.tsx +5 -5
- package/src/components/FormComponents/ChoiceItems/ChoiceAutocompleteItem.tsx +15 -31
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionFields.tsx +0 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerOptionItem.tsx +12 -32
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetFields.tsx +3 -4
- package/src/components/FormComponents/ChoiceItems/ChoiceCheckboxAnswerValueSetItem.tsx +14 -34
- package/src/components/FormComponents/ChoiceItems/ChoiceItemSwitcher.tsx +19 -43
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionFields.tsx +0 -1
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionItem.tsx +14 -59
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerOptionView.tsx +4 -4
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetFields.tsx +2 -3
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioAnswerValueSetItem.tsx +14 -52
- package/src/components/FormComponents/ChoiceItems/ChoiceRadioSingle.tsx +2 -2
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionFields.tsx +8 -8
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionItem.tsx +12 -59
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerOptionView.tsx +8 -7
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetFields.tsx +12 -11
- package/src/components/FormComponents/ChoiceItems/ChoiceSelectAnswerValueSetItem.tsx +11 -55
- package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateField.tsx +6 -11
- package/src/components/FormComponents/DateTimeItems/CustomDateItem/CustomDateItem.tsx +11 -44
- package/src/components/FormComponents/DateTimeItems/CustomDateItem/DatePickerButton.tsx +2 -2
- package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx +21 -76
- package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomTimeField.tsx +11 -15
- package/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/DateTimeField.tsx +6 -14
- package/src/components/FormComponents/DecimalItem/DecimalField.tsx +7 -10
- package/src/components/FormComponents/DecimalItem/DecimalItem.tsx +20 -65
- package/src/components/FormComponents/DisplayItem/DisplayItem.tsx +1 -0
- package/src/components/FormComponents/GridGroup/GridGroup.tsx +45 -29
- package/src/components/FormComponents/GridGroup/GridRow.tsx +13 -15
- package/src/components/FormComponents/GridGroup/GridTable.tsx +6 -7
- package/src/components/FormComponents/GroupItem/GroupHeading.tsx +2 -2
- package/src/components/FormComponents/GroupItem/GroupItem.tsx +4 -9
- package/src/components/FormComponents/GroupItem/GroupItemSwitcher.tsx +0 -13
- package/src/components/FormComponents/GroupItem/GroupItemView.tsx +1 -7
- package/src/components/FormComponents/GroupItem/PageButtonWrapper.tsx +2 -2
- package/src/components/FormComponents/GroupItem/TabButtonsWrapper.tsx +2 -2
- package/src/components/FormComponents/IntegerItem/IntegerField.tsx +7 -10
- package/src/components/FormComponents/IntegerItem/IntegerItem.tsx +18 -57
- package/src/components/FormComponents/ItemParts/CheckboxFormGroup.tsx +8 -8
- package/src/components/FormComponents/ItemParts/CheckboxSingle.tsx +2 -2
- package/src/components/FormComponents/ItemParts/CheckboxSingleWithOpenLabel.tsx +2 -2
- package/src/components/FormComponents/ItemParts/ClearInputButton.tsx +17 -16
- package/src/components/FormComponents/ItemParts/DisplayUnitText.tsx +2 -2
- package/src/components/FormComponents/ItemParts/ItemFieldGrid.tsx +2 -2
- package/src/components/FormComponents/ItemParts/ItemLabel.tsx +3 -6
- package/src/components/FormComponents/ItemParts/ItemRepopulateButton.tsx +1 -8
- package/src/components/FormComponents/ItemParts/ItemTextSwitcher.tsx +9 -4
- package/src/components/FormComponents/ItemParts/OpenLabelField.tsx +3 -3
- package/src/components/FormComponents/ItemParts/RadioFormGroup.tsx +9 -9
- package/src/components/FormComponents/ItemParts/RequiredAsterisk.tsx +3 -3
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteField.tsx +5 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceAutocompleteItem.tsx +40 -40
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionFields.tsx +1 -2
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerOptionItem.tsx +19 -37
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetFields.tsx +4 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceCheckboxAnswerValueSetItem.tsx +24 -38
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceItemSwitcher.tsx +22 -46
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionFields.tsx +0 -1
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerOptionItem.tsx +22 -33
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetFields.tsx +3 -4
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceRadioAnswerValueSetItem.tsx +27 -36
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionField.tsx +5 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerOptionItem.tsx +10 -33
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetField.tsx +5 -5
- package/src/components/FormComponents/OpenChoiceItems/OpenChoiceSelectAnswerValueSetItem.tsx +11 -30
- package/src/components/FormComponents/QuantityItem/QuantityComparatorField.tsx +6 -6
- package/src/components/FormComponents/QuantityItem/QuantityField.tsx +7 -10
- package/src/components/FormComponents/QuantityItem/QuantityItem.tsx +15 -105
- package/src/components/FormComponents/QuantityItem/QuantityUnitField.tsx +11 -6
- package/src/components/FormComponents/RepeatGroup/RepeatGroup.tsx +8 -21
- package/src/components/FormComponents/RepeatGroup/RepeatGroupItem.tsx +0 -4
- package/src/components/FormComponents/RepeatGroup/RepeatGroupView.tsx +5 -19
- package/src/components/FormComponents/RepeatItem/RepeatField.tsx +0 -4
- package/src/components/FormComponents/RepeatItem/RepeatItem.tsx +9 -27
- package/src/components/FormComponents/SingleItem/SingleItem.tsx +7 -12
- package/src/components/FormComponents/SingleItem/SingleItemSwitcher.tsx +56 -36
- package/src/components/FormComponents/SingleItem/SingleItemView.tsx +3 -15
- package/src/components/FormComponents/SingleItem/SingleNestedItems.tsx +5 -10
- package/src/components/FormComponents/SliderItem/SliderField.tsx +5 -5
- package/src/components/FormComponents/SliderItem/SliderItem.tsx +1 -0
- package/src/components/FormComponents/StringItem/StringField.tsx +7 -10
- package/src/components/FormComponents/StringItem/StringItem.tsx +19 -79
- package/src/components/FormComponents/Tables/GroupTable.tsx +69 -45
- package/src/components/FormComponents/Tables/GroupTableBody.tsx +7 -16
- package/src/components/FormComponents/Tables/GroupTableRow.tsx +7 -17
- package/src/components/FormComponents/Tables/GroupTableRowCells.tsx +5 -12
- package/src/components/FormComponents/Tables/GroupTableView.tsx +9 -13
- package/src/components/FormComponents/Tables/SelectRowButton.tsx +2 -2
- package/src/components/FormComponents/Tables/Table.styles.tsx +13 -8
- package/src/components/FormComponents/TextItem/TextField.tsx +3 -6
- package/src/components/FormComponents/TextItem/TextItem.tsx +11 -50
- package/src/components/FormComponents/Textfield.styles.ts +1 -1
- package/src/components/FormComponents/TimeItem/TimeField.tsx +5 -4
- package/src/components/FormComponents/TimeItem/TimeItem.tsx +6 -2
- package/src/components/FormComponents/UrlItem/UrlField.tsx +6 -9
- package/src/components/FormComponents/UrlItem/UrlItem.tsx +4 -19
- package/src/components/Renderer/BaseRenderer.tsx +18 -26
- package/src/components/Renderer/FormBodyCollapsible.tsx +3 -8
- package/src/components/Renderer/FormBodyPageContainer.tsx +3 -8
- package/src/components/Renderer/FormBodyPaginated.tsx +3 -11
- package/src/components/Renderer/FormBodySingleCollapsibleWrapper.tsx +2 -13
- package/src/components/Renderer/FormBodyTabbed.tsx +5 -10
- package/src/components/Renderer/FormTopLevelItem.tsx +3 -14
- package/src/components/Renderer/SmartFormsRenderer.tsx +4 -2
- package/src/components/Tabs/FormBodySingleTab.tsx +9 -2
- package/src/components/Tabs/FormBodyTabList.tsx +1 -0
- package/src/hooks/index.ts +1 -6
- package/src/hooks/useBuildForm.ts +31 -39
- package/src/hooks/useCalculatedExpressionUpdated.ts +39 -0
- package/src/hooks/useCodingCalculatedExpression.ts +0 -110
- package/src/hooks/useDateCalculatedExpression.ts +0 -90
- package/src/hooks/useDateTimeCalculatedExpression.ts +0 -90
- package/src/hooks/useDisplayCqfAndCalculatedExpression.ts +18 -2
- package/src/hooks/useHidden.ts +2 -2
- package/src/hooks/useInitialiseForm.ts +6 -5
- package/src/hooks/useReadOnly.ts +2 -2
- package/src/hooks/useResizeColumns.ts +53 -0
- package/src/hooks/useValueSetCodings.ts +5 -27
- package/src/index.ts +6 -12
- package/src/interfaces/calculatedExpression.interface.ts +1 -1
- package/src/interfaces/overrideComponent.interface.ts +2 -4
- package/src/interfaces/renderProps.interface.ts +8 -34
- package/src/interfaces/valueSet.interface.ts +2 -2
- package/src/stores/formUpdateQueueStore.ts +13 -29
- package/src/stores/index.ts +3 -3
- package/src/stores/questionnaireResponseStore.ts +28 -37
- package/src/stores/questionnaireStore.ts +230 -199
- package/src/stores/{rendererStylingStore.ts → rendererConfigStore.ts} +8 -8
- package/src/stores/smartConfigStore.ts +3 -3
- package/src/stores/terminologyServerStore.ts +2 -2
- package/src/theme/rendererThemeOptions.ts +1 -1
- package/src/utils/answerOptionsToggleExpressions.ts +12 -9
- package/src/utils/calculatedExpression.ts +466 -97
- package/src/utils/columnWidth.test.ts +75 -0
- package/src/utils/columnWidth.ts +110 -0
- package/src/utils/enableWhenExpression.ts +10 -6
- package/src/utils/extensions.ts +30 -0
- package/src/utils/extractObservation.ts +2 -1
- package/src/utils/fhirpath.ts +140 -115
- package/src/utils/getExpressionsFromItem.ts +33 -2
- package/src/utils/index.ts +2 -0
- package/src/utils/inputSanitization.ts +6 -6
- package/src/utils/manageForm.ts +148 -24
- package/src/utils/parameterisedValueSets.ts +20 -9
- package/src/utils/targetConstraint.ts +12 -9
- package/src/utils/ucumQuantityConversion.ts +195 -0
- package/src/utils/validate.ts +8 -3
- package/src/utils/valueSet.ts +44 -1
- package/src/vite-env.d.ts +2 -1
- package/tsconfig.json +2 -2
- package/vite.config.ts +5 -1
- package/lib/api/callbacks.d.ts +0 -8
- package/lib/api/callbacks.js +0 -52
- package/lib/api/callbacks.js.map +0 -1
- package/lib/api/xFhirQuerySync.d.ts +0 -1
- package/lib/api/xFhirQuerySync.js +0 -61
- package/lib/api/xFhirQuerySync.js.map +0 -1
- package/lib/components/ExpressionUpdateFadingGlow.d.ts +0 -0
- package/lib/components/ExpressionUpdateFadingGlow.js +0 -2
- package/lib/components/ExpressionUpdateFadingGlow.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.d.ts +0 -0
- package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.js +0 -2
- package/lib/components/FormComponents/ItemParts/ExpressionUpdateFadingGlow.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js +0 -26
- package/lib/components/FormComponents/ItemParts/FadingCheckIcon.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.d.ts +0 -0
- package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.js +0 -2
- package/lib/components/FormComponents/ItemParts/FadingGlowExpressionUpdate.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.js +0 -130
- package/lib/components/FormComponents/ItemParts/GranularRepopulateButton.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.js +0 -126
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButton.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.js +0 -118
- package/lib/components/FormComponents/ItemParts/GranularRepopulateSyncButtonStates.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelText.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js +0 -63
- package/lib/components/FormComponents/ItemParts/ItemLabelText.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.d.ts +0 -8
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js +0 -53
- package/lib/components/FormComponents/ItemParts/ItemLabelWrapper.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.d.ts +0 -0
- package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.js +0 -2
- package/lib/components/FormComponents/ItemParts/SrOnlyCheckboxLabel.js.map +0 -1
- package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.d.ts +0 -7
- package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.js +0 -95
- package/lib/components/FormComponents/ItemParts/TempCalculatedExpressionSyncButton.js.map +0 -1
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.d.ts +0 -10
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js +0 -30
- package/lib/components/FormComponents/RepeatGroup/DeleteItemButton.js.map +0 -1
- package/lib/components/FormComponents/Tables/GroupTableRowCell.d.ts +0 -9
- package/lib/components/FormComponents/Tables/GroupTableRowCell.js +0 -15
- package/lib/components/FormComponents/Tables/GroupTableRowCell.js.map +0 -1
- package/lib/components/Iconify/Iconify.d.ts +0 -10
- package/lib/components/Iconify/Iconify.js +0 -26
- package/lib/components/Iconify/Iconify.js.map +0 -1
- package/lib/components/Renderer/FormBodyPage.d.ts +0 -9
- package/lib/components/Renderer/FormBodyPage.js +0 -43
- package/lib/components/Renderer/FormBodyPage.js.map +0 -1
- package/lib/components/Renderer/FormTitle.d.ts +0 -7
- package/lib/components/Renderer/FormTitle.js +0 -30
- package/lib/components/Renderer/FormTitle.js.map +0 -1
- package/lib/components/Renderer/FormTopLevelPage.d.ts +0 -9
- package/lib/components/Renderer/FormTopLevelPage.js +0 -29
- package/lib/components/Renderer/FormTopLevelPage.js.map +0 -1
- package/lib/hooks/useBooleanCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useBooleanCalculatedExpression.js +0 -53
- package/lib/hooks/useBooleanCalculatedExpression.js.map +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.d.ts +0 -1
- package/lib/hooks/useCalculatedExpressionAnimating.js +0 -18
- package/lib/hooks/useCalculatedExpressionAnimating.js.map +0 -1
- package/lib/hooks/useCalculatedExpressionAnimation.d.ts +0 -1
- package/lib/hooks/useCalculatedExpressionAnimation.js +0 -18
- package/lib/hooks/useCalculatedExpressionAnimation.js.map +0 -1
- package/lib/hooks/useCqfAnswerValueSet.d.ts +0 -4
- package/lib/hooks/useCqfAnswerValueSet.js +0 -86
- package/lib/hooks/useCqfAnswerValueSet.js.map +0 -1
- package/lib/hooks/useCqfAnswerValueSetEffect.d.ts +0 -3
- package/lib/hooks/useCqfAnswerValueSetEffect.js +0 -111
- package/lib/hooks/useCqfAnswerValueSetEffect.js.map +0 -1
- package/lib/hooks/useDecimalCalculatedExpression.d.ts +0 -13
- package/lib/hooks/useDecimalCalculatedExpression.js +0 -64
- package/lib/hooks/useDecimalCalculatedExpression.js.map +0 -1
- package/lib/hooks/useIntegerCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useIntegerCalculatedExpression.js +0 -61
- package/lib/hooks/useIntegerCalculatedExpression.js.map +0 -1
- package/lib/hooks/useQuantityCalculatedExpression.d.ts +0 -14
- package/lib/hooks/useQuantityCalculatedExpression.js +0 -115
- package/lib/hooks/useQuantityCalculatedExpression.js.map +0 -1
- package/lib/hooks/useShowDateTimeFeedback.d.ts +0 -13
- package/lib/hooks/useShowDateTimeFeedback.js +0 -40
- package/lib/hooks/useShowDateTimeFeedback.js.map +0 -1
- package/lib/hooks/useShowFeedback.d.ts +0 -11
- package/lib/hooks/useShowFeedback.js +0 -33
- package/lib/hooks/useShowFeedback.js.map +0 -1
- package/lib/hooks/useStringCalculatedExpression.d.ts +0 -12
- package/lib/hooks/useStringCalculatedExpression.js +0 -63
- package/lib/hooks/useStringCalculatedExpression.js.map +0 -1
- package/lib/hooks/useTempCalculatedExpressionsSyncButton.d.ts +0 -1
- package/lib/hooks/useTempCalculatedExpressionsSyncButton.js +0 -24
- package/lib/hooks/useTempCalculatedExpressionsSyncButton.js.map +0 -1
- package/lib/interfaces/fhirPathContext.interface.d.ts +0 -0
- package/lib/interfaces/fhirPathContext.interface.js +0 -2
- package/lib/interfaces/fhirPathContext.interface.js.map +0 -1
- package/lib/interfaces/itemDetails.interface.d.ts +0 -2
- package/lib/interfaces/itemDetails.interface.js +0 -2
- package/lib/interfaces/itemDetails.interface.js.map +0 -1
- package/lib/interfaces/itemMetadata.d.ts +0 -0
- package/lib/interfaces/itemMetadata.interface.d.ts +0 -6
- package/lib/interfaces/itemMetadata.interface.js +0 -2
- package/lib/interfaces/itemMetadata.interface.js.map +0 -1
- package/lib/interfaces/itemMetadata.js +0 -2
- package/lib/interfaces/itemMetadata.js.map +0 -1
- package/lib/interfaces/itemPath.d.ts +0 -31
- package/lib/interfaces/itemPath.js +0 -2
- package/lib/interfaces/itemPath.js.map +0 -1
- package/lib/stores/callbackStore.d.ts +0 -0
- package/lib/stores/callbackStore.js +0 -2
- package/lib/stores/callbackStore.js.map +0 -1
- package/lib/stores/extractOperationStore.d.ts +0 -26
- package/lib/stores/extractOperationStore.js +0 -20
- package/lib/stores/extractOperationStore.js.map +0 -1
- package/lib/stores/rendererStylingStore.js +0 -68
- package/lib/stores/rendererStylingStore.js.map +0 -1
- package/lib/stories/storybookWrappers/populateCallbackForStorybook.d.ts +0 -8
- package/lib/stories/storybookWrappers/populateCallbackForStorybook.js +0 -52
- package/lib/stories/storybookWrappers/populateCallbackForStorybook.js.map +0 -1
- package/lib/templates/bloodPressureTemplate.d.ts +0 -23
- package/lib/templates/bloodPressureTemplate.js +0 -80
- package/lib/templates/bloodPressureTemplate.js.map +0 -1
- package/lib/theme/RendererDynamicThemeProvider.d.ts +0 -24
- package/lib/theme/RendererDynamicThemeProvider.js +0 -65
- package/lib/theme/RendererDynamicThemeProvider.js.map +0 -1
- package/lib/theme/RendererThemeToggle.d.ts +0 -6
- package/lib/theme/RendererThemeToggle.js +0 -45
- package/lib/theme/RendererThemeToggle.js.map +0 -1
- package/lib/theme/Theme.d.ts +0 -44
- package/lib/theme/Theme.js +0 -43
- package/lib/theme/Theme.js.map +0 -1
- package/lib/theme/customGlobalStyles.d.ts +0 -1
- package/lib/theme/customGlobalStyles.js +0 -45
- package/lib/theme/customGlobalStyles.js.map +0 -1
- package/lib/theme/overrides/Accordion.d.ts +0 -14
- package/lib/theme/overrides/Accordion.js +0 -32
- package/lib/theme/overrides/Accordion.js.map +0 -1
- package/lib/theme/overrides/Autocomplete.d.ts +0 -10
- package/lib/theme/overrides/Autocomplete.js +0 -28
- package/lib/theme/overrides/Autocomplete.js.map +0 -1
- package/lib/theme/overrides/Button.d.ts +0 -33
- package/lib/theme/overrides/Button.js +0 -52
- package/lib/theme/overrides/Button.js.map +0 -1
- package/lib/theme/overrides/Card.d.ts +0 -35
- package/lib/theme/overrides/Card.js +0 -49
- package/lib/theme/overrides/Card.js.map +0 -1
- package/lib/theme/overrides/Input.d.ts +0 -64
- package/lib/theme/overrides/Input.js +0 -81
- package/lib/theme/overrides/Input.js.map +0 -1
- package/lib/theme/overrides/Overrides.d.ts +0 -3
- package/lib/theme/overrides/Overrides.js +0 -29
- package/lib/theme/overrides/Overrides.js.map +0 -1
- package/lib/theme/overrides/Paper.d.ts +0 -12
- package/lib/theme/overrides/Paper.js +0 -31
- package/lib/theme/overrides/Paper.js.map +0 -1
- package/lib/theme/overrides/SpeedDial.d.ts +0 -16
- package/lib/theme/overrides/SpeedDial.js +0 -34
- package/lib/theme/overrides/SpeedDial.js.map +0 -1
- package/lib/theme/overrides/Table.d.ts +0 -12
- package/lib/theme/overrides/Table.js +0 -30
- package/lib/theme/overrides/Table.js.map +0 -1
- package/lib/theme/overrides/rendererThemeComponentOverride.d.ts +0 -2
- package/lib/theme/overrides/rendererThemeComponentOverride.js +0 -28
- package/lib/theme/overrides/rendererThemeComponentOverride.js.map +0 -1
- package/lib/theme/overrides/rendererThemeComponentsOverride.d.ts +0 -2
- package/lib/theme/overrides/rendererThemeComponentsOverride.js +0 -28
- package/lib/theme/overrides/rendererThemeComponentsOverride.js.map +0 -1
- package/lib/theme/overrides/rendererThemeComponentsOverrides.d.ts +0 -2
- package/lib/theme/overrides/rendererThemeComponentsOverrides.js +0 -28
- package/lib/theme/overrides/rendererThemeComponentsOverrides.js.map +0 -1
- package/lib/theme/palette.d.ts +0 -27
- package/lib/theme/palette.js +0 -63
- package/lib/theme/palette.js.map +0 -1
- package/lib/theme/shadows.d.ts +0 -2
- package/lib/theme/shadows.js +0 -52
- package/lib/theme/shadows.js.map +0 -1
- package/lib/theme/themeOptions.d.ts +0 -2
- package/lib/theme/themeOptions.js +0 -85
- package/lib/theme/themeOptions.js.map +0 -1
- package/lib/theme/useRendererTheme.d.ts +0 -5
- package/lib/theme/useRendererTheme.js +0 -30
- package/lib/theme/useRendererTheme.js.map +0 -1
- package/lib/utils/FhirPathEvaluateParams.d.ts +0 -20
- package/lib/utils/FhirPathEvaluateParams.js +0 -35
- package/lib/utils/FhirPathEvaluateParams.js.map +0 -1
- package/lib/utils/dayjsExtend.d.ts +0 -1
- package/lib/utils/dayjsExtend.js +0 -22
- package/lib/utils/dayjsExtend.js.map +0 -1
- package/lib/utils/dayjsSetup.d.ts +0 -2
- package/lib/utils/dayjsSetup.js +0 -23
- package/lib/utils/dayjsSetup.js.map +0 -1
- package/lib/utils/extractTemplate.d.ts +0 -0
- package/lib/utils/extractTemplate.js +0 -1107
- package/lib/utils/extractTemplate.js.map +0 -1
- package/lib/utils/fhirathEvaluate.d.ts +0 -20
- package/lib/utils/fhirathEvaluate.js +0 -35
- package/lib/utils/fhirathEvaluate.js.map +0 -1
- package/lib/utils/fhirpathEvaluate.d.ts +0 -30
- package/lib/utils/fhirpathEvaluate.js +0 -68
- package/lib/utils/fhirpathEvaluate.js.map +0 -1
- package/lib/utils/find_item_no_text.d.ts +0 -1
- package/lib/utils/find_item_no_text.js +0 -65
- package/lib/utils/find_item_no_text.js.map +0 -1
- package/lib/utils/generateId.d.ts +0 -3
- package/lib/utils/generateId.js +0 -28
- package/lib/utils/generateId.js.map +0 -1
- package/lib/utils/granularRepopulateSync.d.ts +0 -1
- package/lib/utils/granularRepopulateSync.js +0 -70
- package/lib/utils/granularRepopulateSync.js.map +0 -1
- package/lib/utils/itemControl.d.ts +0 -103
- package/lib/utils/itemControl.js +0 -350
- package/lib/utils/itemControl.js.map +0 -1
- package/lib/utils/itemText.d.ts +0 -2
- package/lib/utils/itemText.js +0 -12
- package/lib/utils/itemText.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.d.ts +0 -2
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js +0 -43
- package/lib/utils/questionnaireStoreUtils/addAdditionalVariables.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.d.ts +0 -3
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js +0 -114
- package/lib/utils/questionnaireStoreUtils/createQuestionaireModel.js.map +0 -1
- package/lib/utils/questionnaireStoreUtils/itemDetails.d.ts +0 -5
- package/lib/utils/questionnaireStoreUtils/itemDetails.js +0 -2
- package/lib/utils/questionnaireStoreUtils/itemDetails.js.map +0 -1
- package/lib/utils/readItem.d.ts +0 -28
- package/lib/utils/readItem.js +0 -67
- package/lib/utils/readItem.js.map +0 -1
- package/lib/utils/syncInitialExpression.d.ts +0 -23
- package/lib/utils/syncInitialExpression.js +0 -407
- package/lib/utils/syncInitialExpression.js.map +0 -1
- package/lib/utils/templateMatching.d.ts +0 -15
- package/lib/utils/templateMatching.js +0 -56
- package/lib/utils/templateMatching.js.map +0 -1
- package/lib/utils/updateCodingsDynamic.d.ts +0 -1
- package/lib/utils/updateCodingsDynamic.js +0 -54
- package/lib/utils/updateCodingsDynamic.js.map +0 -1
- package/lib/utils/validateQuestionnaire.d.ts +0 -66
- package/lib/utils/validateQuestionnaire.js +0 -559
- package/lib/utils/validateQuestionnaire.js.map +0 -1
- package/src/hooks/useBooleanCalculatedExpression.ts +0 -83
- package/src/hooks/useDecimalCalculatedExpression.ts +0 -103
- package/src/hooks/useIntegerCalculatedExpression.ts +0 -93
- package/src/hooks/useQuantityCalculatedExpression.ts +0 -196
- package/src/hooks/useShowFeedback.ts +0 -36
- package/src/hooks/useStringCalculatedExpression.ts +0 -95
- package/src/interfaces/itemPath.interface.ts +0 -33
- package/src/utils/itemPath.ts +0 -79
- package/src/utils/questionnaireStoreUtils/addAdditionalVariables.ts +0 -52
|
@@ -75,8 +75,7 @@ export function getCalculatedExpressions(qItem: QuestionnaireItem): CalculatedEx
|
|
|
75
75
|
)
|
|
76
76
|
.filter((calculatedExpression) => calculatedExpression.expression !== '');
|
|
77
77
|
|
|
78
|
-
// For item._text -
|
|
79
|
-
// FIXME this is a band aid addition, eventually we want to fully support cqfExpressions
|
|
78
|
+
// For item._text - cqfExpressions and calculatedExpressions (for backwards compatibility)
|
|
80
79
|
const calculatedAndCqfExpressionsInText = [
|
|
81
80
|
...findCqfExpressionsInExtensions(qItem._text?.extension ?? []),
|
|
82
81
|
...findCalculatedExpressionsInExtensions(qItem._text?.extension ?? [])
|
|
@@ -89,6 +88,18 @@ export function getCalculatedExpressions(qItem: QuestionnaireItem): CalculatedEx
|
|
|
89
88
|
)
|
|
90
89
|
.filter((calculatedExpression) => calculatedExpression.expression !== '');
|
|
91
90
|
|
|
91
|
+
// For item._text.aria-label - ItemTextAriaLabelExpression
|
|
92
|
+
const itemTextAriaLabelExpressionInText = findItemTextAriaLabelExpressionInExtensions(
|
|
93
|
+
qItem._text?.extension ?? []
|
|
94
|
+
)
|
|
95
|
+
.map(
|
|
96
|
+
(calculatedExpression): CalculatedExpression => ({
|
|
97
|
+
expression: calculatedExpression.valueExpression?.expression ?? '',
|
|
98
|
+
from: 'item._text.aria-label'
|
|
99
|
+
})
|
|
100
|
+
)
|
|
101
|
+
.filter((calculatedExpression) => calculatedExpression.expression !== '');
|
|
102
|
+
|
|
92
103
|
// For item._answerValueSet - cqfExpressions
|
|
93
104
|
const cqfExpressionsInAnswerValueSet = [
|
|
94
105
|
...findCqfExpressionsInExtensions(qItem._answerValueSet?.extension ?? [])
|
|
@@ -104,6 +115,7 @@ export function getCalculatedExpressions(qItem: QuestionnaireItem): CalculatedEx
|
|
|
104
115
|
return [
|
|
105
116
|
...calculatedExpressionsInItem,
|
|
106
117
|
...calculatedAndCqfExpressionsInText,
|
|
118
|
+
...itemTextAriaLabelExpressionInText,
|
|
107
119
|
...cqfExpressionsInAnswerValueSet
|
|
108
120
|
];
|
|
109
121
|
}
|
|
@@ -125,6 +137,25 @@ function findCqfExpressionsInExtensions(extensions: Extension[]): Extension[] {
|
|
|
125
137
|
);
|
|
126
138
|
}
|
|
127
139
|
|
|
140
|
+
/**
|
|
141
|
+
* Find all FHIRPath aria-label expression custom extensions within a list of extensions.
|
|
142
|
+
*
|
|
143
|
+
* This looks for extensions with the custom
|
|
144
|
+
* `QuestionnaireItemTextAriaLabelExpression` URL and ensures their
|
|
145
|
+
* `valueExpression.language` is `text/fhirpath`.
|
|
146
|
+
*
|
|
147
|
+
* @param {Extension[]} extensions - The list of extensions to search.
|
|
148
|
+
* @returns {Extension[]} An array of matching extensions (empty if none found).
|
|
149
|
+
*/
|
|
150
|
+
function findItemTextAriaLabelExpressionInExtensions(extensions: Extension[]): Extension[] {
|
|
151
|
+
return extensions.filter(
|
|
152
|
+
(extension) =>
|
|
153
|
+
extension.url ===
|
|
154
|
+
'https://smartforms.csiro.au/ig/StructureDefinition/QuestionnaireItemTextAriaLabelExpression' &&
|
|
155
|
+
extension.valueExpression?.language === 'text/fhirpath'
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
128
159
|
/**
|
|
129
160
|
* Get answerExpression.valueExpression if its present in item
|
|
130
161
|
*
|
package/src/utils/index.ts
CHANGED
|
@@ -55,12 +55,12 @@ const DANGEROUS_PATTERNS = [
|
|
|
55
55
|
/onmousemove/i,
|
|
56
56
|
|
|
57
57
|
// Alert and other dangerous functions
|
|
58
|
-
/alert\
|
|
59
|
-
/confirm\
|
|
60
|
-
/prompt\
|
|
61
|
-
/eval\
|
|
62
|
-
/setTimeout\
|
|
63
|
-
/setInterval\
|
|
58
|
+
/alert\(/i,
|
|
59
|
+
/confirm\(/i,
|
|
60
|
+
/prompt\(/i,
|
|
61
|
+
/eval\(/i,
|
|
62
|
+
/setTimeout\(/i,
|
|
63
|
+
/setInterval\(/i,
|
|
64
64
|
|
|
65
65
|
// HTML encoded characters that could be used for bypassing
|
|
66
66
|
/%3C/i, // <
|
package/src/utils/manageForm.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Questionnaire, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
|
|
2
|
+
import type { RendererConfig } from '../stores';
|
|
2
3
|
import {
|
|
3
4
|
questionnaireResponseStore,
|
|
4
5
|
questionnaireStore,
|
|
6
|
+
rendererConfigStore,
|
|
5
7
|
smartConfigStore,
|
|
6
8
|
terminologyServerStore
|
|
7
9
|
} from '../stores';
|
|
@@ -13,31 +15,100 @@ import { updateQuestionnaireResponse } from './genericRecursive';
|
|
|
13
15
|
import { removeInternalRepeatIdsRecursive } from './removeRepeatId';
|
|
14
16
|
import type { ComponentType } from 'react';
|
|
15
17
|
import type { QItemOverrideComponentProps, SdcUiOverrideComponentProps } from '../interfaces';
|
|
18
|
+
import { formUpdateQueueStore } from '../stores/formUpdateQueueStore';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Parameters for `buildForm()`.
|
|
22
|
+
*/
|
|
23
|
+
export interface BuildFormParams {
|
|
24
|
+
/**
|
|
25
|
+
* The Questionnaire resource to be rendered.
|
|
26
|
+
*/
|
|
27
|
+
questionnaire: Questionnaire;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* An optional pre-populated, draft, or loaded QuestionnaireResponse to initialise the form with.
|
|
31
|
+
* If not provided, an empty QuestionnaireResponse will be created.
|
|
32
|
+
*/
|
|
33
|
+
questionnaireResponse?: QuestionnaireResponse;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Whether to apply read-only mode to all items in the form view.
|
|
37
|
+
*/
|
|
38
|
+
readOnly?: boolean;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* A terminology server URL to fetch terminology data.
|
|
42
|
+
* If available, preferredTerminologyServer SDC extension still takes precedence over this.
|
|
43
|
+
* If not provided, a fallback public Ontoserver terminology server will be used.
|
|
44
|
+
*/
|
|
45
|
+
terminologyServerUrl?: string;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Additional key-value pairs of SDC variables and values to feed into the renderer's FhirPathContext.
|
|
49
|
+
* Likely used for passing in data from a pre-population module.
|
|
50
|
+
* Example: `{ 'ObsBodyHeight': <Bundle of height observations> }`.
|
|
51
|
+
*/
|
|
52
|
+
additionalContext?: Record<string, any>;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Whether to preserve the current navigation state (e.g. current page in paged forms, current tab in tabbed forms) when rebuilding the form.
|
|
56
|
+
* This is useful when you want to perform re-population or other updates without losing the user's current position in the form.
|
|
57
|
+
*/
|
|
58
|
+
preserveNavigationState?: boolean;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Optional renderer styling and behavioural configurations to have fine-grained control over the styling and behaviour of the renderer.
|
|
62
|
+
*/
|
|
63
|
+
rendererConfigOptions?: RendererConfig;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Key-value pairs of React component overrides for specific Questionnaire Items via linkId.
|
|
67
|
+
* Example: `{ 'linkId123': MyCustomComponent }`
|
|
68
|
+
*/
|
|
69
|
+
qItemOverrideComponents?: Record<string, ComponentType<QItemOverrideComponentProps>>;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Key-value pairs of React component overrides for SDC UI Controls, as defined in:
|
|
73
|
+
* https://hl7.org/fhir/extensions/ValueSet-questionnaire-item-control.html
|
|
74
|
+
* Example: `{ 'example-code': MyCustomUIComponent }`
|
|
75
|
+
*/
|
|
76
|
+
sdcUiOverrideComponents?: Record<string, ComponentType<SdcUiOverrideComponentProps>>;
|
|
77
|
+
}
|
|
16
78
|
|
|
17
79
|
/**
|
|
18
80
|
* Build the form with an initial Questionnaire and an optional filled QuestionnaireResponse.
|
|
19
81
|
* If a QuestionnaireResponse is not provided, an empty QuestionnaireResponse is set as the initial QuestionnaireResponse.
|
|
20
|
-
* There are other optional properties such as applying readOnly, providing a terminology server url and additional variables.
|
|
21
82
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
83
|
+
* The build process also supports:
|
|
84
|
+
* - Applying readOnly mode to all items in the form view
|
|
85
|
+
* - Providing a default terminology server URL (fallbacks to a public Ontoserver instance if not provided)
|
|
86
|
+
* - Passing additional SDC variables into the FhirPathContext (e.g. for pre-population purposes)
|
|
87
|
+
* - Adjusting renderer styling and behaviour via `rendererConfigStore`
|
|
88
|
+
* - Overriding QuestionnaireItem rendering via `qItemOverrideComponents`
|
|
89
|
+
* - Overriding SDC UI controls via `sdcUiOverrideComponents`
|
|
90
|
+
*
|
|
91
|
+
* @param params - {@link BuildFormParams} containing the configuration for building the form
|
|
29
92
|
*
|
|
30
93
|
* @author Sean Fong
|
|
31
94
|
*/
|
|
32
|
-
export async function buildForm(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
95
|
+
export async function buildForm(params: BuildFormParams): Promise<void> {
|
|
96
|
+
const {
|
|
97
|
+
questionnaire,
|
|
98
|
+
questionnaireResponse,
|
|
99
|
+
readOnly = false,
|
|
100
|
+
terminologyServerUrl,
|
|
101
|
+
additionalContext,
|
|
102
|
+
rendererConfigOptions,
|
|
103
|
+
qItemOverrideComponents,
|
|
104
|
+
sdcUiOverrideComponents
|
|
105
|
+
} = params;
|
|
106
|
+
|
|
107
|
+
// Destroy previous questionnaire and questionnaireResponse state before building a new one
|
|
108
|
+
if (rendererConfigOptions) {
|
|
109
|
+
rendererConfigStore.getState().setRendererConfig(rendererConfigOptions);
|
|
110
|
+
}
|
|
111
|
+
|
|
41
112
|
// Reset terminology server
|
|
42
113
|
if (terminologyServerUrl) {
|
|
43
114
|
terminologyServerStore.getState().setUrl(terminologyServerUrl);
|
|
@@ -51,26 +122,79 @@ export async function buildForm(
|
|
|
51
122
|
.buildSourceQuestionnaire(
|
|
52
123
|
questionnaire,
|
|
53
124
|
undefined,
|
|
54
|
-
|
|
125
|
+
additionalContext,
|
|
55
126
|
terminologyServerUrl,
|
|
56
|
-
|
|
127
|
+
readOnly,
|
|
57
128
|
qItemOverrideComponents,
|
|
58
129
|
sdcUiOverrideComponents
|
|
59
130
|
);
|
|
60
131
|
|
|
132
|
+
// Initialise an empty questionnaireResponse from a given questionnaire
|
|
133
|
+
// Optionally takes in an existing questionnaireResponse to be initialised
|
|
61
134
|
const initialisedQuestionnaireResponse = initialiseQuestionnaireResponse(
|
|
62
135
|
questionnaire,
|
|
63
136
|
questionnaireResponse
|
|
64
137
|
);
|
|
65
|
-
questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
|
|
66
|
-
await questionnaireStore.getState().updatePopulatedProperties(initialisedQuestionnaireResponse);
|
|
67
138
|
|
|
68
|
-
//
|
|
139
|
+
// Set initialised QuestionnaireResponse as the source response in the store
|
|
69
140
|
questionnaireResponseStore.getState().buildSourceResponse(initialisedQuestionnaireResponse);
|
|
70
141
|
|
|
71
|
-
|
|
72
|
-
|
|
142
|
+
// Process expressions asynchronously
|
|
143
|
+
await questionnaireStore.getState().updateExpressions(initialisedQuestionnaireResponse, true);
|
|
144
|
+
|
|
145
|
+
// Reset tabs and pages to the first tab/page if needed
|
|
146
|
+
// If anyone requests for an option to preserve navigation state in the future, we can add a parameter for it
|
|
147
|
+
const { currentTabIndex, currentPageIndex } = questionnaireStore.getState();
|
|
148
|
+
if (currentTabIndex !== 0) {
|
|
149
|
+
questionnaireStore.getState().resetToFirstVisibleTab();
|
|
150
|
+
}
|
|
151
|
+
if (currentPageIndex !== 0) {
|
|
152
|
+
questionnaireStore.getState().resetToFirstVisiblePage();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Parameters for `repopulateForm()`.
|
|
158
|
+
*/
|
|
159
|
+
export interface RepopulateFormParams {
|
|
160
|
+
/**
|
|
161
|
+
* The re-populated QuestionnaireResponse to set as the new source response.
|
|
162
|
+
*/
|
|
163
|
+
questionnaireResponse: QuestionnaireResponse;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Optional additional key-value pairs of SDC variables and values to feed into the renderer's FhirPathContext.
|
|
167
|
+
* Useful for pre-population or enriching the context used by calculatedExpressions.
|
|
168
|
+
* Example: `{ 'ObsBloodPressure': <Bundle of BP observations> }`
|
|
169
|
+
*/
|
|
170
|
+
additionalContext?: Record<string, any>;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Re-populate the form with a provided (already filled) QuestionnaireResponse.
|
|
175
|
+
*
|
|
176
|
+
* This function does not modify the Questionnaire state.
|
|
177
|
+
* It replaces the current QuestionnaireResponse state in the store and triggers a form update so that SDC expressions are re-evaluated against the new response.
|
|
178
|
+
*
|
|
179
|
+
* @param params - {@link RepopulateFormParams} containing the configuration for repopulating the form
|
|
180
|
+
*
|
|
181
|
+
* @author Sean Fong
|
|
182
|
+
*/
|
|
183
|
+
export function repopulateForm(params: RepopulateFormParams): void {
|
|
184
|
+
const { questionnaireResponse, additionalContext } = params;
|
|
185
|
+
|
|
186
|
+
// Update additionalContext if provided
|
|
187
|
+
if (additionalContext) {
|
|
188
|
+
questionnaireStore.getState().setAdditionalContext(additionalContext);
|
|
73
189
|
}
|
|
190
|
+
|
|
191
|
+
// Set re-populated QuestionnaireResponse as the source response in the store
|
|
192
|
+
questionnaireResponseStore.getState().buildSourceResponse(questionnaireResponse);
|
|
193
|
+
|
|
194
|
+
// Enqueue an initial form update to process expressions
|
|
195
|
+
formUpdateQueueStore.getState().enqueueFormUpdate({
|
|
196
|
+
questionnaireResponse: questionnaireResponse
|
|
197
|
+
});
|
|
74
198
|
}
|
|
75
199
|
|
|
76
200
|
/**
|
|
@@ -6,7 +6,12 @@ import type {
|
|
|
6
6
|
} from 'fhir/r4';
|
|
7
7
|
import type { BindingParameter, ProcessedValueSet } from '../interfaces/valueSet.interface';
|
|
8
8
|
import type { Variables } from '../interfaces';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
cacheTerminologyResult,
|
|
11
|
+
createFhirPathContext,
|
|
12
|
+
handleFhirPathResult,
|
|
13
|
+
isExpressionCached
|
|
14
|
+
} from './fhirpath';
|
|
10
15
|
import fhirpath from 'fhirpath';
|
|
11
16
|
import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
|
|
12
17
|
import type { ComputedNewAnswers } from '../interfaces/computedUpdates.interface';
|
|
@@ -143,8 +148,7 @@ export async function evaluateInitialDynamicValueSets(
|
|
|
143
148
|
|
|
144
149
|
for (const bindingParameter of processedValueSet.bindingParameters) {
|
|
145
150
|
if (bindingParameter.fhirPathExpression) {
|
|
146
|
-
|
|
147
|
-
if (fhirPathTerminologyCache[cacheKey]) {
|
|
151
|
+
if (isExpressionCached(bindingParameter.fhirPathExpression, fhirPathTerminologyCache)) {
|
|
148
152
|
continue;
|
|
149
153
|
}
|
|
150
154
|
|
|
@@ -163,7 +167,11 @@ export async function evaluateInitialDynamicValueSets(
|
|
|
163
167
|
|
|
164
168
|
// If fhirPathResult is an async terminology call, cache the result
|
|
165
169
|
if (fhirPathResult instanceof Promise) {
|
|
166
|
-
|
|
170
|
+
cacheTerminologyResult(
|
|
171
|
+
bindingParameter.fhirPathExpression,
|
|
172
|
+
result,
|
|
173
|
+
fhirPathTerminologyCache
|
|
174
|
+
);
|
|
167
175
|
}
|
|
168
176
|
|
|
169
177
|
/*
|
|
@@ -208,7 +216,7 @@ export async function evaluateDynamicValueSets(
|
|
|
208
216
|
processedValueSets: Record<string, ProcessedValueSet>,
|
|
209
217
|
terminologyServerUrl: string
|
|
210
218
|
): Promise<{
|
|
211
|
-
|
|
219
|
+
isUpdated: boolean;
|
|
212
220
|
updatedProcessedValueSets: Record<string, ProcessedValueSet>;
|
|
213
221
|
computedNewAnswers: ComputedNewAnswers;
|
|
214
222
|
}> {
|
|
@@ -222,8 +230,7 @@ export async function evaluateDynamicValueSets(
|
|
|
222
230
|
|
|
223
231
|
for (const bindingParameter of processedValueSet.bindingParameters) {
|
|
224
232
|
if (bindingParameter.fhirPathExpression) {
|
|
225
|
-
|
|
226
|
-
if (fhirPathTerminologyCache[cacheKey]) {
|
|
233
|
+
if (isExpressionCached(bindingParameter.fhirPathExpression, fhirPathTerminologyCache)) {
|
|
227
234
|
continue;
|
|
228
235
|
}
|
|
229
236
|
|
|
@@ -242,7 +249,11 @@ export async function evaluateDynamicValueSets(
|
|
|
242
249
|
|
|
243
250
|
// If fhirPathResult is an async terminology call, cache the result
|
|
244
251
|
if (fhirPathResult instanceof Promise) {
|
|
245
|
-
|
|
252
|
+
cacheTerminologyResult(
|
|
253
|
+
bindingParameter.fhirPathExpression,
|
|
254
|
+
result,
|
|
255
|
+
fhirPathTerminologyCache
|
|
256
|
+
);
|
|
246
257
|
}
|
|
247
258
|
|
|
248
259
|
/*
|
|
@@ -281,7 +292,7 @@ export async function evaluateDynamicValueSets(
|
|
|
281
292
|
}
|
|
282
293
|
|
|
283
294
|
return {
|
|
284
|
-
|
|
295
|
+
isUpdated,
|
|
285
296
|
updatedProcessedValueSets: processedValueSets,
|
|
286
297
|
computedNewAnswers
|
|
287
298
|
};
|
|
@@ -16,7 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import type { Questionnaire, QuestionnaireResponse, QuestionnaireResponseItem } from 'fhir/r4';
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
cacheTerminologyResult,
|
|
21
|
+
createFhirPathContext,
|
|
22
|
+
handleFhirPathResult,
|
|
23
|
+
isExpressionCached
|
|
24
|
+
} from './fhirpath';
|
|
20
25
|
import fhirpath from 'fhirpath';
|
|
21
26
|
import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
|
|
22
27
|
import type { TargetConstraint } from '../interfaces/targetConstraint.interface';
|
|
@@ -67,8 +72,7 @@ export async function evaluateInitialTargetConstraints(
|
|
|
67
72
|
continue;
|
|
68
73
|
}
|
|
69
74
|
|
|
70
|
-
|
|
71
|
-
if (fhirPathTerminologyCache[cacheKey]) {
|
|
75
|
+
if (isExpressionCached(expression, fhirPathTerminologyCache)) {
|
|
72
76
|
continue;
|
|
73
77
|
}
|
|
74
78
|
|
|
@@ -103,7 +107,7 @@ export async function evaluateInitialTargetConstraints(
|
|
|
103
107
|
|
|
104
108
|
// If fhirPathResult is an async terminology call, cache the result
|
|
105
109
|
if (fhirPathResult instanceof Promise) {
|
|
106
|
-
|
|
110
|
+
cacheTerminologyResult(expression, result, fhirPathTerminologyCache);
|
|
107
111
|
}
|
|
108
112
|
} catch (e) {
|
|
109
113
|
console.warn(e.message, `Target Constraint Key: ${key}\nExpression: ${expression}`);
|
|
@@ -123,7 +127,7 @@ export async function evaluateTargetConstraints(
|
|
|
123
127
|
targetConstraints: Record<string, TargetConstraint>,
|
|
124
128
|
terminologyServerUrl: string
|
|
125
129
|
): Promise<{
|
|
126
|
-
|
|
130
|
+
isUpdated: boolean;
|
|
127
131
|
updatedTargetConstraints: Record<string, TargetConstraint>;
|
|
128
132
|
}> {
|
|
129
133
|
let isUpdated = false;
|
|
@@ -134,8 +138,7 @@ export async function evaluateTargetConstraints(
|
|
|
134
138
|
continue;
|
|
135
139
|
}
|
|
136
140
|
|
|
137
|
-
|
|
138
|
-
if (fhirPathTerminologyCache[cacheKey]) {
|
|
141
|
+
if (isExpressionCached(expression, fhirPathTerminologyCache)) {
|
|
139
142
|
continue;
|
|
140
143
|
}
|
|
141
144
|
|
|
@@ -167,7 +170,7 @@ export async function evaluateTargetConstraints(
|
|
|
167
170
|
|
|
168
171
|
// If fhirPathResult is an async terminology call, cache the result
|
|
169
172
|
if (fhirPathResult instanceof Promise) {
|
|
170
|
-
|
|
173
|
+
cacheTerminologyResult(expression, result, fhirPathTerminologyCache);
|
|
171
174
|
}
|
|
172
175
|
} catch (e) {
|
|
173
176
|
console.warn(e.message, `Target Constraint Key: ${key}\nExpression: ${expression}`);
|
|
@@ -175,7 +178,7 @@ export async function evaluateTargetConstraints(
|
|
|
175
178
|
}
|
|
176
179
|
|
|
177
180
|
return {
|
|
178
|
-
|
|
181
|
+
isUpdated: isUpdated,
|
|
179
182
|
updatedTargetConstraints: targetConstraints
|
|
180
183
|
};
|
|
181
184
|
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2025 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
|
+
|
|
18
|
+
import type { CalculatedExpression } from '../interfaces';
|
|
19
|
+
import type { Quantity, QuestionnaireItem } from 'fhir/r4';
|
|
20
|
+
import { getItemTerminologyServerToUse } from './preferredTerminologyServer';
|
|
21
|
+
import { validateCodePromise } from './valueSet';
|
|
22
|
+
import type {
|
|
23
|
+
CodeParameter,
|
|
24
|
+
DisplayParameter,
|
|
25
|
+
SystemParameter,
|
|
26
|
+
ValidateCodeResponse
|
|
27
|
+
} from '../interfaces/valueSet.interface';
|
|
28
|
+
|
|
29
|
+
const UCUM_VALUE_SET_URL = 'http://hl7.org/fhir/ValueSet/ucum-units';
|
|
30
|
+
const UCUM_SYSTEM = 'http://unitsofmeasure.org';
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Validates if a value represents a quantity with a unit enclosed in single quotes,
|
|
34
|
+
* supporting escaped single quotes within the unit.
|
|
35
|
+
*
|
|
36
|
+
* @param input - The value to validate.
|
|
37
|
+
* @returns {boolean} Returns true if the input matches the pattern: a number followed by a space and a unit enclosed in single quotes, (allowing escaped single quotes); otherwise, false.
|
|
38
|
+
*/
|
|
39
|
+
export function isQuantityString(input: unknown): input is string {
|
|
40
|
+
const regex = /^\d+(?:\.\d+)?\s+'(?:\\'|[^'])*'$/;
|
|
41
|
+
return typeof input === 'string' && regex.test(input);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
interface UcumQuantityPromise {
|
|
45
|
+
numericValueString: string;
|
|
46
|
+
promise: Promise<ValidateCodeResponse | null>;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Validates a UCUM unit code from a FHIR Quantity string using a terminology server.
|
|
51
|
+
* Based on https://hl7.org/fhirpath/N1/#toquantityunit-string-quantity.
|
|
52
|
+
*
|
|
53
|
+
* @param rawValue - Quantity string (e.g. "10 'mg'").
|
|
54
|
+
* @param qItem - The QuestionnaireItem metadata.
|
|
55
|
+
* @param itemPreferredTerminologyServers - Map of item-specific terminology servers.
|
|
56
|
+
* @param defaultTerminologyServerUrl - Fallback terminology server URL.
|
|
57
|
+
* @returns Promise resolving to a ValidateCodeResponse or null.
|
|
58
|
+
*/
|
|
59
|
+
export function validateQuantityUcumCode(
|
|
60
|
+
rawValue: string,
|
|
61
|
+
qItem: Omit<QuestionnaireItem, 'item'>,
|
|
62
|
+
itemPreferredTerminologyServers: Record<string, string>,
|
|
63
|
+
defaultTerminologyServerUrl: string
|
|
64
|
+
): UcumQuantityPromise {
|
|
65
|
+
// Based on https://hl7.org/fhirpath/N1/#toquantityunit-string-quantity
|
|
66
|
+
const [numericValueString, unitCode] = rawValue.split(' ');
|
|
67
|
+
const unitCodeFormatted = unitCode.replace(/'/g, '');
|
|
68
|
+
|
|
69
|
+
const terminologyServerUrl = getItemTerminologyServerToUse(
|
|
70
|
+
qItem,
|
|
71
|
+
itemPreferredTerminologyServers,
|
|
72
|
+
defaultTerminologyServerUrl
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
return {
|
|
76
|
+
numericValueString,
|
|
77
|
+
promise: validateCodePromise(
|
|
78
|
+
UCUM_VALUE_SET_URL,
|
|
79
|
+
UCUM_SYSTEM,
|
|
80
|
+
unitCodeFormatted,
|
|
81
|
+
terminologyServerUrl
|
|
82
|
+
)
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Parse and convert calculatedExpression values of type `quantity` into valid UCUM-coded `Quantity` objects.
|
|
88
|
+
*
|
|
89
|
+
* This function:
|
|
90
|
+
* - Iterates over calculatedExpressions grouped by `linkId`
|
|
91
|
+
* - Identifies expressions with `from: "item"` and valid quantity strings (e.g. `"10 'mg'"`)
|
|
92
|
+
* - Validates the UCUM unit code against a terminology server
|
|
93
|
+
* - Converts validated expressions into FHIR `Quantity` objects with `value`, `system`, `code`, and `unit`
|
|
94
|
+
* - Leaves non-quantity or invalid expressions unchanged
|
|
95
|
+
*
|
|
96
|
+
* @param diffCalculatedExpressions - Map of `linkId` → calculatedExpressions to process
|
|
97
|
+
* @param questionnaireItemMap - Map of `linkId` → QuestionnaireItem metadata
|
|
98
|
+
* @param itemPreferredTerminologyServers - Map of `linkId` → preferred terminology server URL
|
|
99
|
+
* @param defaultTerminologyServerUrl - Default terminology server URL if no item-specific server is defined
|
|
100
|
+
* @returns A promise resolving to the same structure as `diffCalculatedExpressions`, with quantity expressions converted to FHIR `Quantity` objects where possible
|
|
101
|
+
*/
|
|
102
|
+
export async function parseAndConvertUcumQuantities(
|
|
103
|
+
diffCalculatedExpressions: Record<string, CalculatedExpression[]>,
|
|
104
|
+
questionnaireItemMap: Record<string, Omit<QuestionnaireItem, 'item'>>,
|
|
105
|
+
itemPreferredTerminologyServers: Record<string, string>,
|
|
106
|
+
defaultTerminologyServerUrl: string
|
|
107
|
+
): Promise<Record<string, CalculatedExpression[]>> {
|
|
108
|
+
/* Store Quantity calculatedExpressions with UCUM unit codes in promises to be executed in parallel */
|
|
109
|
+
const promisesMap = new Map<string, UcumQuantityPromise>();
|
|
110
|
+
|
|
111
|
+
for (const [linkId, calcExpressions] of Object.entries(diffCalculatedExpressions)) {
|
|
112
|
+
const qItem = questionnaireItemMap[linkId];
|
|
113
|
+
// Skip if qItem is not a quantity item
|
|
114
|
+
if (!qItem || qItem.type !== 'quantity') {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Skip if no calculated expression
|
|
119
|
+
const calcExpression = calcExpressions.find((exp) => exp.from === 'item');
|
|
120
|
+
if (!calcExpression) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Skip if calculated expression value is not a valid quantity string
|
|
125
|
+
if (!isQuantityString(calcExpression.value)) {
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Validate the unit code and convert if valid
|
|
130
|
+
const ucumQuantityPromise = validateQuantityUcumCode(
|
|
131
|
+
calcExpression.value,
|
|
132
|
+
qItem,
|
|
133
|
+
itemPreferredTerminologyServers,
|
|
134
|
+
defaultTerminologyServerUrl
|
|
135
|
+
);
|
|
136
|
+
promisesMap.set(linkId, ucumQuantityPromise);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/* Execute all promises in parallel and convert to Quantity objects */
|
|
140
|
+
const promisesTuples = Array.from(promisesMap.entries());
|
|
141
|
+
try {
|
|
142
|
+
const settledPromises = await Promise.allSettled(promisesTuples.map(([, p]) => p.promise));
|
|
143
|
+
for (const [i, settledPromise] of settledPromises.entries()) {
|
|
144
|
+
// Skip rejected promises
|
|
145
|
+
if (settledPromise.status === 'rejected') {
|
|
146
|
+
console.warn(
|
|
147
|
+
`UCUM Quantity conversion network error: Details below:` + settledPromise.reason
|
|
148
|
+
);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Skip null or invalid responses
|
|
153
|
+
const validateCodeResponse = settledPromise.value;
|
|
154
|
+
if (!validateCodeResponse?.parameter) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Get corresponding linkId and calculatedExpression
|
|
159
|
+
const [linkId, originalPromise] = promisesTuples[i];
|
|
160
|
+
const numericValueString = originalPromise.numericValueString;
|
|
161
|
+
const calcExpression = diffCalculatedExpressions[linkId].find((exp) => exp.from === 'item');
|
|
162
|
+
if (!calcExpression) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Extract system, code, and display from the response parameters
|
|
167
|
+
const systemParameter = validateCodeResponse.parameter.find(
|
|
168
|
+
(p) => p.name === 'system'
|
|
169
|
+
) as SystemParameter;
|
|
170
|
+
const codeParameter = validateCodeResponse.parameter.find(
|
|
171
|
+
(p) => p.name === 'code'
|
|
172
|
+
) as CodeParameter;
|
|
173
|
+
const displayParameter = validateCodeResponse.parameter.find(
|
|
174
|
+
(p) => p.name === 'display'
|
|
175
|
+
) as DisplayParameter;
|
|
176
|
+
|
|
177
|
+
if (systemParameter.valueUri && codeParameter.valueCode && displayParameter.valueString) {
|
|
178
|
+
calcExpression.value = {
|
|
179
|
+
value: parseFloat(numericValueString),
|
|
180
|
+
system: systemParameter.valueUri,
|
|
181
|
+
code: codeParameter.valueCode,
|
|
182
|
+
unit: displayParameter.valueString
|
|
183
|
+
} as Quantity;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
} catch (e) {
|
|
187
|
+
// e is not thrown as an Error type in fhirpath.js, so we can't use `if (e instanceof Error)` here
|
|
188
|
+
console.warn(
|
|
189
|
+
'UCUM Quantity conversion error: fhirpath evaluation for calculatedExpression failed. Details below:',
|
|
190
|
+
e
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return diffCalculatedExpressions;
|
|
195
|
+
}
|