@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
|
@@ -1,1107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// import type {
|
|
3
|
-
// Element,
|
|
4
|
-
// Extension,
|
|
5
|
-
// Observation,
|
|
6
|
-
// Questionnaire,
|
|
7
|
-
// QuestionnaireItem,
|
|
8
|
-
// QuestionnaireResponse,
|
|
9
|
-
// QuestionnaireResponseItem
|
|
10
|
-
// } from 'fhir/r4';
|
|
11
|
-
// import fhirpath from 'fhirpath';
|
|
12
|
-
// import fhirpath_r4_model from 'fhirpath/fhir-context/r4';
|
|
13
|
-
// import { FHIR_TEMPLATE_EXTRACT_EXTENSION, findMatchingItem } from './templateMatching';
|
|
14
|
-
//
|
|
15
|
-
// const FHIR_TEMPLATE_REFERENCE_EXTENSION =
|
|
16
|
-
// 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateReference';
|
|
17
|
-
//
|
|
18
|
-
// const TEMPLATE_EXTRACT_VALUE_EXTENSION =
|
|
19
|
-
// 'http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-templateExtractValue';
|
|
20
|
-
//
|
|
21
|
-
// interface DebugInfo {
|
|
22
|
-
// contentAnalysis: {
|
|
23
|
-
// detectedTemplates: string[];
|
|
24
|
-
// patterns: string[];
|
|
25
|
-
// confidence: string;
|
|
26
|
-
// };
|
|
27
|
-
// fieldMapping: {
|
|
28
|
-
// mappedFields: Record<string, any>;
|
|
29
|
-
// assumptions: string[];
|
|
30
|
-
// alternatives: string[];
|
|
31
|
-
// };
|
|
32
|
-
// valueProcessing: {
|
|
33
|
-
// values: Record<string, any>;
|
|
34
|
-
// transformations: string[];
|
|
35
|
-
// qualityChecks: Array<{
|
|
36
|
-
// check: string;
|
|
37
|
-
// passed: boolean;
|
|
38
|
-
// message: string;
|
|
39
|
-
// }>;
|
|
40
|
-
// datetime?: {
|
|
41
|
-
// source: 'static' | 'dynamic' | 'fallback';
|
|
42
|
-
// expression?: string;
|
|
43
|
-
// value?: string;
|
|
44
|
-
// originalValue?: string;
|
|
45
|
-
// };
|
|
46
|
-
// };
|
|
47
|
-
// resultGeneration: {
|
|
48
|
-
// status: string;
|
|
49
|
-
// observations: Observation[];
|
|
50
|
-
// warnings?: string[];
|
|
51
|
-
// };
|
|
52
|
-
// }
|
|
53
|
-
//
|
|
54
|
-
// interface ExtendedElement extends Element {
|
|
55
|
-
// extension?: Extension[];
|
|
56
|
-
// }
|
|
57
|
-
//
|
|
58
|
-
// interface ExtendedObservation extends Observation {
|
|
59
|
-
// _effectiveDateTime?: ExtendedElement;
|
|
60
|
-
// _issued?: ExtendedElement;
|
|
61
|
-
// _valueBoolean?: ExtendedElement;
|
|
62
|
-
// }
|
|
63
|
-
//
|
|
64
|
-
// function evaluateTemplateExpression(
|
|
65
|
-
// questionnaireResponse: QuestionnaireResponse,
|
|
66
|
-
// expression: string,
|
|
67
|
-
// context?: QuestionnaireResponseItem | QuestionnaireResponseItem[]
|
|
68
|
-
// ): any {
|
|
69
|
-
// try {
|
|
70
|
-
// // If we have a context, use it as the starting point for evaluation
|
|
71
|
-
// const evaluationContext = context || questionnaireResponse;
|
|
72
|
-
//
|
|
73
|
-
// // Handle special cases for nested structures
|
|
74
|
-
// if (expression.includes('item.where')) {
|
|
75
|
-
// // Process nested item expressions
|
|
76
|
-
// const result = fhirpath.evaluate(
|
|
77
|
-
// evaluationContext,
|
|
78
|
-
// expression,
|
|
79
|
-
// {}, // Empty context object
|
|
80
|
-
// fhirpath_r4_model,
|
|
81
|
-
// {
|
|
82
|
-
// async: false
|
|
83
|
-
// }
|
|
84
|
-
// );
|
|
85
|
-
//
|
|
86
|
-
// if (Array.isArray(result)) {
|
|
87
|
-
// if (result.length === 0) return null;
|
|
88
|
-
// if (result.length === 1) return result[0];
|
|
89
|
-
// return result;
|
|
90
|
-
// }
|
|
91
|
-
//
|
|
92
|
-
// return result;
|
|
93
|
-
// }
|
|
94
|
-
//
|
|
95
|
-
// // Handle direct value references
|
|
96
|
-
// const result = fhirpath.evaluate(
|
|
97
|
-
// evaluationContext,
|
|
98
|
-
// expression,
|
|
99
|
-
// {}, // Empty context object
|
|
100
|
-
// fhirpath_r4_model,
|
|
101
|
-
// {
|
|
102
|
-
// async: false
|
|
103
|
-
// }
|
|
104
|
-
// );
|
|
105
|
-
//
|
|
106
|
-
// return result;
|
|
107
|
-
// } catch (error) {
|
|
108
|
-
// console.error('Error evaluating FHIRPath expression:', error);
|
|
109
|
-
// return null;
|
|
110
|
-
// }
|
|
111
|
-
// }
|
|
112
|
-
//
|
|
113
|
-
// function findNestedItem(
|
|
114
|
-
// items: QuestionnaireResponseItem[] | undefined,
|
|
115
|
-
// linkId: string
|
|
116
|
-
// ): QuestionnaireResponseItem | null {
|
|
117
|
-
// if (!items) return null;
|
|
118
|
-
//
|
|
119
|
-
// for (const item of items) {
|
|
120
|
-
// if (item.linkId === linkId) {
|
|
121
|
-
// return item;
|
|
122
|
-
// }
|
|
123
|
-
// if (item.item) {
|
|
124
|
-
// const nested = findNestedItem(item.item, linkId);
|
|
125
|
-
// if (nested) return nested;
|
|
126
|
-
// }
|
|
127
|
-
// }
|
|
128
|
-
// return null;
|
|
129
|
-
// }
|
|
130
|
-
//
|
|
131
|
-
// function getNestedAnswerValue(
|
|
132
|
-
// response: QuestionnaireResponse,
|
|
133
|
-
// linkId: string,
|
|
134
|
-
// parentLinkId?: string
|
|
135
|
-
// ): any {
|
|
136
|
-
// console.log(`Looking for value at linkId: ${linkId} (parent: ${parentLinkId || 'none'})`);
|
|
137
|
-
//
|
|
138
|
-
// // More flexible recursive item finder
|
|
139
|
-
// const findItem = (
|
|
140
|
-
// items: QuestionnaireResponseItem[] | undefined,
|
|
141
|
-
// currentLevel: number = 0
|
|
142
|
-
// ): QuestionnaireResponseItem | null => {
|
|
143
|
-
// if (!items) return null;
|
|
144
|
-
//
|
|
145
|
-
// for (const item of items) {
|
|
146
|
-
// console.log(`${' '.repeat(currentLevel * 2)}Checking item: ${item.linkId}`);
|
|
147
|
-
//
|
|
148
|
-
// // Direct match
|
|
149
|
-
// if (item.linkId === linkId) {
|
|
150
|
-
// console.log(`${' '.repeat(currentLevel * 2)}✅ Found direct match: ${item.linkId}`);
|
|
151
|
-
// return item;
|
|
152
|
-
// }
|
|
153
|
-
//
|
|
154
|
-
// // Parent match, check children
|
|
155
|
-
// if (parentLinkId && item.linkId === parentLinkId && item.item) {
|
|
156
|
-
// console.log(
|
|
157
|
-
// `${' '.repeat(currentLevel * 2)}Found parent: ${item.linkId}, checking children...`
|
|
158
|
-
// );
|
|
159
|
-
// for (const childItem of item.item) {
|
|
160
|
-
// if (childItem.linkId === linkId) {
|
|
161
|
-
// console.log(`${' '.repeat(currentLevel * 2)}✅ Found child match: ${childItem.linkId}`);
|
|
162
|
-
// return childItem;
|
|
163
|
-
// }
|
|
164
|
-
// }
|
|
165
|
-
// }
|
|
166
|
-
//
|
|
167
|
-
// // Recursive search in children
|
|
168
|
-
// if (item.item) {
|
|
169
|
-
// const foundItem = findItem(item.item, currentLevel + 1);
|
|
170
|
-
// if (foundItem) return foundItem;
|
|
171
|
-
// }
|
|
172
|
-
// }
|
|
173
|
-
//
|
|
174
|
-
// return null;
|
|
175
|
-
// };
|
|
176
|
-
//
|
|
177
|
-
// const item = findItem(response.item);
|
|
178
|
-
// if (!item || !item.answer || item.answer.length === 0) {
|
|
179
|
-
// console.log(`❌ No answer found for linkId: ${linkId}`);
|
|
180
|
-
// return null;
|
|
181
|
-
// }
|
|
182
|
-
//
|
|
183
|
-
// const answer = item.answer[0];
|
|
184
|
-
//
|
|
185
|
-
// // Extract the value based on its type
|
|
186
|
-
// if (answer.valueDecimal !== undefined) return answer.valueDecimal;
|
|
187
|
-
// if (answer.valueInteger !== undefined) return answer.valueInteger;
|
|
188
|
-
// if (answer.valueString !== undefined) return answer.valueString;
|
|
189
|
-
// if (answer.valueBoolean !== undefined) return answer.valueBoolean;
|
|
190
|
-
// if (answer.valueQuantity?.value !== undefined) return answer.valueQuantity.value;
|
|
191
|
-
//
|
|
192
|
-
// console.log(`❌ No supported value type found in answer for linkId: ${linkId}`);
|
|
193
|
-
// return null;
|
|
194
|
-
// }
|
|
195
|
-
//
|
|
196
|
-
// function hasTemplateExtractExtension(item: QuestionnaireItem | Questionnaire): boolean {
|
|
197
|
-
// // Enhanced detection with detailed logging
|
|
198
|
-
// console.log(
|
|
199
|
-
// `Checking for template extraction extension in item with linkId: ${(item as QuestionnaireItem).linkId || 'root questionnaire'}`
|
|
200
|
-
// );
|
|
201
|
-
//
|
|
202
|
-
// if (!item.extension || item.extension.length === 0) {
|
|
203
|
-
// console.log(
|
|
204
|
-
// `No extensions found for item ${(item as QuestionnaireItem).linkId || 'root questionnaire'}`
|
|
205
|
-
// );
|
|
206
|
-
// return false;
|
|
207
|
-
// }
|
|
208
|
-
//
|
|
209
|
-
// for (const ext of item.extension) {
|
|
210
|
-
// console.log(`Examining extension with URL: ${ext.url}`);
|
|
211
|
-
//
|
|
212
|
-
// if (ext.url === FHIR_TEMPLATE_EXTRACT_EXTENSION) {
|
|
213
|
-
// // Check for direct boolean value
|
|
214
|
-
// if (ext.valueBoolean !== undefined) {
|
|
215
|
-
// console.log(`Found template extraction extension with valueBoolean: ${ext.valueBoolean}`);
|
|
216
|
-
// return ext.valueBoolean;
|
|
217
|
-
// }
|
|
218
|
-
//
|
|
219
|
-
// // Check for nested template reference
|
|
220
|
-
// if (ext.extension) {
|
|
221
|
-
// for (const subExt of ext.extension) {
|
|
222
|
-
// if (subExt.url === 'template' && subExt.valueReference?.reference) {
|
|
223
|
-
// console.log(`Found template reference: ${subExt.valueReference.reference}`);
|
|
224
|
-
// return true;
|
|
225
|
-
// }
|
|
226
|
-
// }
|
|
227
|
-
// }
|
|
228
|
-
// }
|
|
229
|
-
// }
|
|
230
|
-
//
|
|
231
|
-
// return false;
|
|
232
|
-
// }
|
|
233
|
-
//
|
|
234
|
-
// /**
|
|
235
|
-
// * Processes datetime extraction from templates, handling both static values and expressions
|
|
236
|
-
// * @param template The template containing datetime fields
|
|
237
|
-
// * @param response The questionnaire response to extract values from
|
|
238
|
-
// * @returns An ISO formatted datetime string
|
|
239
|
-
// */
|
|
240
|
-
// function processDateTimeExtraction(
|
|
241
|
-
// template: any,
|
|
242
|
-
// response: QuestionnaireResponse,
|
|
243
|
-
// debugInfo: DebugInfo
|
|
244
|
-
// ): string {
|
|
245
|
-
// // Check if we have an effectiveDateTime with extraction extension
|
|
246
|
-
// const effectiveDateTime = template.effectiveDateTime;
|
|
247
|
-
// const effectiveDateTimeExt = template._effectiveDateTime?.extension?.find(
|
|
248
|
-
// (ext: Extension) => ext.url === TEMPLATE_EXTRACT_VALUE_EXTENSION
|
|
249
|
-
// );
|
|
250
|
-
//
|
|
251
|
-
// // Initialize datetime debug info
|
|
252
|
-
// debugInfo.valueProcessing.datetime = {
|
|
253
|
-
// source: 'fallback',
|
|
254
|
-
// value: ''
|
|
255
|
-
// };
|
|
256
|
-
//
|
|
257
|
-
// if (effectiveDateTimeExt?.valueString) {
|
|
258
|
-
// // Handle specific extraction expressions
|
|
259
|
-
// if (effectiveDateTimeExt.valueString === 'now()') {
|
|
260
|
-
// // Use current date/time
|
|
261
|
-
// const now = new Date().toISOString();
|
|
262
|
-
// console.log(`Processing datetime with now() function: ${now}`);
|
|
263
|
-
//
|
|
264
|
-
// // Update datetime debug info
|
|
265
|
-
// debugInfo.valueProcessing.datetime = {
|
|
266
|
-
// source: 'dynamic',
|
|
267
|
-
// expression: 'now()',
|
|
268
|
-
// value: now,
|
|
269
|
-
// originalValue: effectiveDateTime
|
|
270
|
-
// };
|
|
271
|
-
//
|
|
272
|
-
// return now;
|
|
273
|
-
// } else {
|
|
274
|
-
// // Try to evaluate as a FHIRPath expression
|
|
275
|
-
// const extractedDateTime = evaluateTemplateExpression(
|
|
276
|
-
// response,
|
|
277
|
-
// effectiveDateTimeExt.valueString
|
|
278
|
-
// );
|
|
279
|
-
// if (extractedDateTime) {
|
|
280
|
-
// console.log(`Extracted datetime using expression: ${extractedDateTime}`);
|
|
281
|
-
//
|
|
282
|
-
// // Update datetime debug info
|
|
283
|
-
// debugInfo.valueProcessing.datetime = {
|
|
284
|
-
// source: 'dynamic',
|
|
285
|
-
// expression: effectiveDateTimeExt.valueString,
|
|
286
|
-
// value: extractedDateTime,
|
|
287
|
-
// originalValue: effectiveDateTime
|
|
288
|
-
// };
|
|
289
|
-
//
|
|
290
|
-
// return extractedDateTime;
|
|
291
|
-
// }
|
|
292
|
-
// }
|
|
293
|
-
// }
|
|
294
|
-
//
|
|
295
|
-
// // Default to template's static value if available
|
|
296
|
-
// if (effectiveDateTime) {
|
|
297
|
-
// console.log(`Using template's static datetime: ${effectiveDateTime}`);
|
|
298
|
-
//
|
|
299
|
-
// // Update datetime debug info
|
|
300
|
-
// debugInfo.valueProcessing.datetime = {
|
|
301
|
-
// source: 'static',
|
|
302
|
-
// value: effectiveDateTime
|
|
303
|
-
// };
|
|
304
|
-
//
|
|
305
|
-
// return effectiveDateTime;
|
|
306
|
-
// }
|
|
307
|
-
//
|
|
308
|
-
// // Final fallback to current date/time
|
|
309
|
-
// const fallbackTime = new Date().toISOString();
|
|
310
|
-
// console.log(`No datetime information found, using current time: ${fallbackTime}`);
|
|
311
|
-
//
|
|
312
|
-
// // Update datetime debug info
|
|
313
|
-
// debugInfo.valueProcessing.datetime = {
|
|
314
|
-
// source: 'fallback',
|
|
315
|
-
// value: fallbackTime
|
|
316
|
-
// };
|
|
317
|
-
//
|
|
318
|
-
// return fallbackTime;
|
|
319
|
-
// }
|
|
320
|
-
//
|
|
321
|
-
// export async function extractTemplateBased(
|
|
322
|
-
// questionnaire: Questionnaire,
|
|
323
|
-
// response: QuestionnaireResponse
|
|
324
|
-
// ): Promise<{ result: Observation[] | null; error: string | null; debugInfo: DebugInfo }> {
|
|
325
|
-
// const debugInfo: DebugInfo = {
|
|
326
|
-
// contentAnalysis: {
|
|
327
|
-
// detectedTemplates: [],
|
|
328
|
-
// confidence: 'Valid',
|
|
329
|
-
// patterns: []
|
|
330
|
-
// },
|
|
331
|
-
// fieldMapping: {
|
|
332
|
-
// mappedFields: {},
|
|
333
|
-
// assumptions: [],
|
|
334
|
-
// alternatives: []
|
|
335
|
-
// },
|
|
336
|
-
// valueProcessing: {
|
|
337
|
-
// values: {},
|
|
338
|
-
// transformations: [],
|
|
339
|
-
// qualityChecks: []
|
|
340
|
-
// },
|
|
341
|
-
// resultGeneration: {
|
|
342
|
-
// status: 'Pending',
|
|
343
|
-
// observations: []
|
|
344
|
-
// }
|
|
345
|
-
// };
|
|
346
|
-
//
|
|
347
|
-
// console.log('=== Template Extraction Debug ===');
|
|
348
|
-
// console.log('Stage 1: Initial Validation');
|
|
349
|
-
//
|
|
350
|
-
// // Enhanced validation with more detailed error reporting
|
|
351
|
-
// if (!questionnaire) {
|
|
352
|
-
// console.log('❌ Failed: Questionnaire is undefined or null');
|
|
353
|
-
// debugInfo.contentAnalysis.confidence = 'Invalid';
|
|
354
|
-
// return {
|
|
355
|
-
// result: null,
|
|
356
|
-
// error: 'Missing questionnaire',
|
|
357
|
-
// debugInfo
|
|
358
|
-
// };
|
|
359
|
-
// }
|
|
360
|
-
//
|
|
361
|
-
// if (!questionnaire.item) {
|
|
362
|
-
// console.log('❌ Failed: Questionnaire has no items');
|
|
363
|
-
// debugInfo.contentAnalysis.confidence = 'Invalid';
|
|
364
|
-
// return {
|
|
365
|
-
// result: null,
|
|
366
|
-
// error: 'Questionnaire has no items',
|
|
367
|
-
// debugInfo
|
|
368
|
-
// };
|
|
369
|
-
// }
|
|
370
|
-
//
|
|
371
|
-
// if (!questionnaire.contained || questionnaire.contained.length === 0) {
|
|
372
|
-
// console.log('❌ Failed: Questionnaire has no contained resources for templates');
|
|
373
|
-
// debugInfo.contentAnalysis.confidence = 'Invalid';
|
|
374
|
-
// return {
|
|
375
|
-
// result: null,
|
|
376
|
-
// error: 'Questionnaire has no contained resources for templates',
|
|
377
|
-
// debugInfo
|
|
378
|
-
// };
|
|
379
|
-
// }
|
|
380
|
-
//
|
|
381
|
-
// if (!response.item) {
|
|
382
|
-
// console.log('❌ Failed: Response has no items');
|
|
383
|
-
// debugInfo.contentAnalysis.confidence = 'Invalid';
|
|
384
|
-
// return {
|
|
385
|
-
// result: null,
|
|
386
|
-
// error: 'Response has no items',
|
|
387
|
-
// debugInfo
|
|
388
|
-
// };
|
|
389
|
-
// }
|
|
390
|
-
//
|
|
391
|
-
// console.log('✅ Passed: Required items present');
|
|
392
|
-
//
|
|
393
|
-
// // Check for template extraction extension at questionnaire or item level
|
|
394
|
-
// console.log('\nStage 2: Template Extraction Extension Check');
|
|
395
|
-
//
|
|
396
|
-
// // Enhanced template detection with recursive item checking
|
|
397
|
-
// const hasTemplateExtract = hasTemplateExtractExtension(questionnaire);
|
|
398
|
-
// let itemsWithTemplates: string[] = [];
|
|
399
|
-
//
|
|
400
|
-
// const checkItemsForTemplates = (items: QuestionnaireItem[]): boolean => {
|
|
401
|
-
// let found = false;
|
|
402
|
-
// for (const item of items) {
|
|
403
|
-
// if (hasTemplateExtractExtension(item)) {
|
|
404
|
-
// found = true;
|
|
405
|
-
// itemsWithTemplates.push(item.linkId);
|
|
406
|
-
// }
|
|
407
|
-
//
|
|
408
|
-
// if (item.item && checkItemsForTemplates(item.item)) {
|
|
409
|
-
// found = true;
|
|
410
|
-
// }
|
|
411
|
-
// }
|
|
412
|
-
// return found;
|
|
413
|
-
// };
|
|
414
|
-
//
|
|
415
|
-
// const hasItemTemplates = checkItemsForTemplates(questionnaire.item);
|
|
416
|
-
//
|
|
417
|
-
// if (!hasTemplateExtract && !hasItemTemplates) {
|
|
418
|
-
// console.log('❌ Failed: No template extraction extension found');
|
|
419
|
-
// debugInfo.contentAnalysis.confidence = 'Invalid';
|
|
420
|
-
// debugInfo.contentAnalysis.detectedTemplates.push('No template type detected');
|
|
421
|
-
//
|
|
422
|
-
// // Enhanced debug information for template detection failure
|
|
423
|
-
// if (questionnaire.extension && questionnaire.extension.length > 0) {
|
|
424
|
-
// const urls = questionnaire.extension.map((e) => e.url).join(', ');
|
|
425
|
-
// debugInfo.fieldMapping.assumptions.push(
|
|
426
|
-
// `Found extensions but none match template extraction: ${urls}`
|
|
427
|
-
// );
|
|
428
|
-
// } else {
|
|
429
|
-
// debugInfo.fieldMapping.assumptions.push('No extensions found at questionnaire level');
|
|
430
|
-
// }
|
|
431
|
-
//
|
|
432
|
-
// if (itemsWithTemplates.length > 0) {
|
|
433
|
-
// debugInfo.fieldMapping.assumptions.push(
|
|
434
|
-
// `Found items with extensions: ${itemsWithTemplates.join(', ')}`
|
|
435
|
-
// );
|
|
436
|
-
// }
|
|
437
|
-
//
|
|
438
|
-
// return {
|
|
439
|
-
// result: null,
|
|
440
|
-
// error: 'Questionnaire is not configured for template extraction',
|
|
441
|
-
// debugInfo
|
|
442
|
-
// };
|
|
443
|
-
// }
|
|
444
|
-
//
|
|
445
|
-
// if (hasTemplateExtract) {
|
|
446
|
-
// console.log('✅ Passed: Template extraction extension found at questionnaire level');
|
|
447
|
-
// }
|
|
448
|
-
//
|
|
449
|
-
// if (hasItemTemplates) {
|
|
450
|
-
// console.log(
|
|
451
|
-
// `✅ Passed: Template extraction extensions found at item level: ${itemsWithTemplates.join(', ')}`
|
|
452
|
-
// );
|
|
453
|
-
// }
|
|
454
|
-
//
|
|
455
|
-
// const templates = questionnaire.contained;
|
|
456
|
-
// console.log('\nStage 3: Template Analysis');
|
|
457
|
-
// console.log(`Found ${templates.length} templates:`);
|
|
458
|
-
//
|
|
459
|
-
// // Enhanced template analysis
|
|
460
|
-
// const observationTemplates = templates.filter((t) => t.resourceType === 'Observation');
|
|
461
|
-
// const patientTemplates = templates.filter((t) => t.resourceType === 'Patient');
|
|
462
|
-
// const otherTemplates = templates.filter(
|
|
463
|
-
// (t) => !['Observation', 'Patient'].includes(t.resourceType)
|
|
464
|
-
// );
|
|
465
|
-
//
|
|
466
|
-
// console.log(`- ${observationTemplates.length} Observation templates`);
|
|
467
|
-
// console.log(`- ${patientTemplates.length} Patient templates`);
|
|
468
|
-
// console.log(`- ${otherTemplates.length} Other templates`);
|
|
469
|
-
//
|
|
470
|
-
// templates.forEach((template) => {
|
|
471
|
-
// const templateId = template.id || 'unnamed';
|
|
472
|
-
// console.log(`- ${template.resourceType}: ${templateId}`);
|
|
473
|
-
// debugInfo.contentAnalysis.detectedTemplates.push(templateId);
|
|
474
|
-
// });
|
|
475
|
-
//
|
|
476
|
-
// const observations: Observation[] = [];
|
|
477
|
-
//
|
|
478
|
-
// // Initialize field mapping with template information
|
|
479
|
-
// console.log('\nStage 4: Field Mapping');
|
|
480
|
-
// debugInfo.fieldMapping.mappedFields = templates.reduce(
|
|
481
|
-
// (acc, template) => {
|
|
482
|
-
// if (template.resourceType === 'Observation') {
|
|
483
|
-
// const code = template.code?.coding?.[0]?.code;
|
|
484
|
-
// if (code) {
|
|
485
|
-
// // Skip the boolean observation for now
|
|
486
|
-
// if ((template as ExtendedObservation)._valueBoolean) return acc;
|
|
487
|
-
//
|
|
488
|
-
// // Find the corresponding item in the questionnaire using the enhanced matcher
|
|
489
|
-
// const item = findMatchingItem(
|
|
490
|
-
// questionnaire.item,
|
|
491
|
-
// template.id || 'unknown',
|
|
492
|
-
// template.resourceType,
|
|
493
|
-
// template.code?.coding
|
|
494
|
-
// );
|
|
495
|
-
//
|
|
496
|
-
// if (!item) {
|
|
497
|
-
// console.log(
|
|
498
|
-
// `❌ Failed to find corresponding item in questionnaire for template: ${template.id}`
|
|
499
|
-
// );
|
|
500
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
501
|
-
// check: `Process ${template.id || 'unknown'}`,
|
|
502
|
-
// passed: false,
|
|
503
|
-
// message: 'Failed to find corresponding item in questionnaire'
|
|
504
|
-
// });
|
|
505
|
-
// return acc;
|
|
506
|
-
// }
|
|
507
|
-
//
|
|
508
|
-
// // Enhanced path detection with better support for different questionnaire structures
|
|
509
|
-
// let valuePath = '';
|
|
510
|
-
//
|
|
511
|
-
// // Check for parent hierarchy to build proper path
|
|
512
|
-
// const buildPath = (
|
|
513
|
-
// items: QuestionnaireItem[] | undefined,
|
|
514
|
-
// targetLinkId: string,
|
|
515
|
-
// path: string = ''
|
|
516
|
-
// ): string => {
|
|
517
|
-
// if (!items) return '';
|
|
518
|
-
//
|
|
519
|
-
// for (const i of items) {
|
|
520
|
-
// if (i.linkId === targetLinkId)
|
|
521
|
-
// return path
|
|
522
|
-
// ? `${path}.item.where(linkId='${targetLinkId}')`
|
|
523
|
-
// : `item.where(linkId='${targetLinkId}')`;
|
|
524
|
-
//
|
|
525
|
-
// if (i.item) {
|
|
526
|
-
// const newPath = path
|
|
527
|
-
// ? `${path}.item.where(linkId='${i.linkId}')`
|
|
528
|
-
// : `item.where(linkId='${i.linkId}')`;
|
|
529
|
-
// const result = buildPath(i.item, targetLinkId, newPath);
|
|
530
|
-
// if (result) return result;
|
|
531
|
-
// }
|
|
532
|
-
// }
|
|
533
|
-
//
|
|
534
|
-
// return '';
|
|
535
|
-
// };
|
|
536
|
-
//
|
|
537
|
-
// valuePath = buildPath(questionnaire.item, item.linkId);
|
|
538
|
-
// if (!valuePath) {
|
|
539
|
-
// valuePath = `item.where(linkId='${item.linkId}')`;
|
|
540
|
-
// }
|
|
541
|
-
//
|
|
542
|
-
// // Add answer type based on item type
|
|
543
|
-
// switch (item.type) {
|
|
544
|
-
// case 'decimal':
|
|
545
|
-
// valuePath += '.answer.valueDecimal';
|
|
546
|
-
// break;
|
|
547
|
-
// case 'integer':
|
|
548
|
-
// valuePath += '.answer.valueInteger';
|
|
549
|
-
// break;
|
|
550
|
-
// case 'boolean':
|
|
551
|
-
// valuePath += '.answer.valueBoolean';
|
|
552
|
-
// break;
|
|
553
|
-
// case 'string':
|
|
554
|
-
// valuePath += '.answer.valueString';
|
|
555
|
-
// break;
|
|
556
|
-
// case 'quantity':
|
|
557
|
-
// valuePath += '.answer.valueQuantity.value';
|
|
558
|
-
// break;
|
|
559
|
-
// default:
|
|
560
|
-
// valuePath += '.answer.value';
|
|
561
|
-
// }
|
|
562
|
-
//
|
|
563
|
-
// acc[code] = {
|
|
564
|
-
// templateId: template.id,
|
|
565
|
-
// type: template.resourceType,
|
|
566
|
-
// valuePath: valuePath,
|
|
567
|
-
// itemType: item.type,
|
|
568
|
-
// itemLinkId: item.linkId,
|
|
569
|
-
// itemText: item.text || 'No text'
|
|
570
|
-
// };
|
|
571
|
-
//
|
|
572
|
-
// console.log(`Mapped field: ${code} -> ${template.id} (${valuePath})`);
|
|
573
|
-
// }
|
|
574
|
-
// }
|
|
575
|
-
// return acc;
|
|
576
|
-
// },
|
|
577
|
-
// {} as Record<string, any>
|
|
578
|
-
// );
|
|
579
|
-
//
|
|
580
|
-
// // Add relevant assumptions about the mapping based on found patterns
|
|
581
|
-
// if (Object.keys(debugInfo.fieldMapping.mappedFields).length === 0) {
|
|
582
|
-
// debugInfo.fieldMapping.assumptions.push(
|
|
583
|
-
// 'No fields could be mapped between templates and questionnaire items'
|
|
584
|
-
// );
|
|
585
|
-
// } else {
|
|
586
|
-
// debugInfo.fieldMapping.assumptions.push(
|
|
587
|
-
// `Successfully mapped ${Object.keys(debugInfo.fieldMapping.mappedFields).length} fields`
|
|
588
|
-
// );
|
|
589
|
-
// }
|
|
590
|
-
//
|
|
591
|
-
// // Check for specific patterns in the template (like height, weight, blood pressure)
|
|
592
|
-
// const hasHeight = observationTemplates.some((t) =>
|
|
593
|
-
// t.code?.coding?.some((c) => c.code === '8302-2' || c.display?.toLowerCase().includes('height'))
|
|
594
|
-
// );
|
|
595
|
-
//
|
|
596
|
-
// const hasWeight = observationTemplates.some((t) =>
|
|
597
|
-
// t.code?.coding?.some((c) => c.code === '29463-7' || c.display?.toLowerCase().includes('weight'))
|
|
598
|
-
// );
|
|
599
|
-
//
|
|
600
|
-
// // More precise BP detection to avoid false positives
|
|
601
|
-
// const hasBpLoinc = observationTemplates.some(
|
|
602
|
-
// (t) => t.code?.coding?.some((c) => c.code === '85354-9') // Blood pressure panel with all children optional
|
|
603
|
-
// );
|
|
604
|
-
//
|
|
605
|
-
// const hasSystolicComponent = observationTemplates.some((t) =>
|
|
606
|
-
// t.component?.some((comp) =>
|
|
607
|
-
// comp.code?.coding?.some(
|
|
608
|
-
// (c) => c.code === '8480-6' || c.display?.toLowerCase().includes('systolic')
|
|
609
|
-
// )
|
|
610
|
-
// )
|
|
611
|
-
// );
|
|
612
|
-
//
|
|
613
|
-
// const hasDiastolicComponent = observationTemplates.some((t) =>
|
|
614
|
-
// t.component?.some((comp) =>
|
|
615
|
-
// comp.code?.coding?.some(
|
|
616
|
-
// (c) => c.code === '8462-4' || c.display?.toLowerCase().includes('diastolic')
|
|
617
|
-
// )
|
|
618
|
-
// )
|
|
619
|
-
// );
|
|
620
|
-
//
|
|
621
|
-
// // Separate standalone templates with BP codes
|
|
622
|
-
// const hasSystolicTemplate = observationTemplates.some((t) =>
|
|
623
|
-
// t.code?.coding?.some(
|
|
624
|
-
// (c) => c.code === '8480-6' || c.display?.toLowerCase().includes('systolic')
|
|
625
|
-
// )
|
|
626
|
-
// );
|
|
627
|
-
//
|
|
628
|
-
// const hasDiastolicTemplate = observationTemplates.some((t) =>
|
|
629
|
-
// t.code?.coding?.some(
|
|
630
|
-
// (c) => c.code === '8462-4' || c.display?.toLowerCase().includes('diastolic')
|
|
631
|
-
// )
|
|
632
|
-
// );
|
|
633
|
-
//
|
|
634
|
-
// // Content-driven pattern detection
|
|
635
|
-
// // Instead of fixed assumptions, detect patterns dynamically based on content
|
|
636
|
-
// const patterns = [];
|
|
637
|
-
// const assumptions = [];
|
|
638
|
-
//
|
|
639
|
-
// if (observationTemplates.length > 0) {
|
|
640
|
-
// assumptions.push(`Found ${observationTemplates.length} observation templates`);
|
|
641
|
-
// }
|
|
642
|
-
//
|
|
643
|
-
// if (hasHeight) {
|
|
644
|
-
// patterns.push('Height Measurement');
|
|
645
|
-
// if (hasWeight) {
|
|
646
|
-
// // Both height and weight together form a pattern
|
|
647
|
-
// assumptions.push('Detected height and weight template pattern');
|
|
648
|
-
// } else {
|
|
649
|
-
// // Just height alone
|
|
650
|
-
// assumptions.push('Detected height measurement template');
|
|
651
|
-
// }
|
|
652
|
-
// } else if (hasWeight) {
|
|
653
|
-
// // Just weight alone
|
|
654
|
-
// patterns.push('Weight Measurement');
|
|
655
|
-
// assumptions.push('Detected weight measurement template');
|
|
656
|
-
// }
|
|
657
|
-
//
|
|
658
|
-
// // Only detect BP if we have a proper complete BP pattern
|
|
659
|
-
// const isCompleteBpPattern =
|
|
660
|
-
// hasBpLoinc ||
|
|
661
|
-
// (hasSystolicComponent && hasDiastolicComponent) ||
|
|
662
|
-
// (hasSystolicTemplate && hasDiastolicTemplate);
|
|
663
|
-
//
|
|
664
|
-
// if (isCompleteBpPattern) {
|
|
665
|
-
// patterns.push('Blood Pressure Measurement');
|
|
666
|
-
// assumptions.push('Detected complete blood pressure template pattern');
|
|
667
|
-
// } else if (hasSystolicTemplate && !hasDiastolicTemplate) {
|
|
668
|
-
// // Just systolic without diastolic - not a complete BP pattern
|
|
669
|
-
// patterns.push('Systolic Measurement');
|
|
670
|
-
// assumptions.push('Detected systolic pressure template (incomplete BP pattern)');
|
|
671
|
-
// } else if (!hasSystolicTemplate && hasDiastolicTemplate) {
|
|
672
|
-
// // Just diastolic without systolic - not a complete BP pattern
|
|
673
|
-
// patterns.push('Diastolic Measurement');
|
|
674
|
-
// assumptions.push('Detected diastolic pressure template (incomplete BP pattern)');
|
|
675
|
-
// }
|
|
676
|
-
//
|
|
677
|
-
// // Add the detected patterns to debug info
|
|
678
|
-
// debugInfo.contentAnalysis.patterns.push(...patterns);
|
|
679
|
-
//
|
|
680
|
-
// // Add the assumptions to debug info
|
|
681
|
-
// debugInfo.fieldMapping.assumptions.push(...assumptions);
|
|
682
|
-
//
|
|
683
|
-
// // Update debug info with resource types
|
|
684
|
-
// debugInfo.contentAnalysis.patterns.push(
|
|
685
|
-
// ...templates.map((template) => `${template.resourceType}: ${template.id || 'unnamed'}`)
|
|
686
|
-
// );
|
|
687
|
-
//
|
|
688
|
-
// console.log('\nStage 5: Template Processing');
|
|
689
|
-
// // Process each template
|
|
690
|
-
// for (const template of templates) {
|
|
691
|
-
// try {
|
|
692
|
-
// if (template.resourceType === 'Observation') {
|
|
693
|
-
// const templateId = template.id || 'unnamed';
|
|
694
|
-
// console.log(`\nProcessing template: ${templateId}`);
|
|
695
|
-
//
|
|
696
|
-
// // Skip the boolean observation for now
|
|
697
|
-
// if ((template as ExtendedObservation)._valueBoolean) continue;
|
|
698
|
-
//
|
|
699
|
-
// const observation: ExtendedObservation = {
|
|
700
|
-
// ...template,
|
|
701
|
-
// id: undefined // Remove template ID
|
|
702
|
-
// };
|
|
703
|
-
//
|
|
704
|
-
// // Find the corresponding item in the questionnaire using the enhanced matcher
|
|
705
|
-
// const item = findMatchingItem(
|
|
706
|
-
// questionnaire.item,
|
|
707
|
-
// template.id || 'unknown',
|
|
708
|
-
// template.resourceType,
|
|
709
|
-
// template.code?.coding
|
|
710
|
-
// );
|
|
711
|
-
//
|
|
712
|
-
// if (!item) {
|
|
713
|
-
// console.log(
|
|
714
|
-
// `❌ Failed to find corresponding item in questionnaire for template: ${template.id}`
|
|
715
|
-
// );
|
|
716
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
717
|
-
// check: `Process ${template.id || 'unknown'}`,
|
|
718
|
-
// passed: false,
|
|
719
|
-
// message: 'Failed to find corresponding item in questionnaire'
|
|
720
|
-
// });
|
|
721
|
-
// continue;
|
|
722
|
-
// }
|
|
723
|
-
//
|
|
724
|
-
// // Process datetime values for the observation
|
|
725
|
-
// const originalDateTime = template.effectiveDateTime;
|
|
726
|
-
// observation.effectiveDateTime = processDateTimeExtraction(template, response, debugInfo);
|
|
727
|
-
//
|
|
728
|
-
// // Add information to debug info
|
|
729
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
730
|
-
// `Set effectiveDateTime to ${observation.effectiveDateTime} for ${templateId}`
|
|
731
|
-
// );
|
|
732
|
-
//
|
|
733
|
-
// // Remove the extraction extension since it's been processed
|
|
734
|
-
// if (observation._effectiveDateTime) {
|
|
735
|
-
// delete observation._effectiveDateTime;
|
|
736
|
-
// }
|
|
737
|
-
//
|
|
738
|
-
// // Process value extraction with improved nested handling
|
|
739
|
-
// if (template.valueQuantity) {
|
|
740
|
-
// // First try direct extension on valueQuantity (common in test files)
|
|
741
|
-
// let valueExt = template.valueQuantity.extension?.find(
|
|
742
|
-
// (ext: Extension) => ext.url === TEMPLATE_EXTRACT_VALUE_EXTENSION
|
|
743
|
-
// );
|
|
744
|
-
//
|
|
745
|
-
// // If not found, try the nested structure from HL7 SDC examples
|
|
746
|
-
// if (!valueExt && (template.valueQuantity as any)._value?.extension) {
|
|
747
|
-
// valueExt = (template.valueQuantity as any)._value.extension.find(
|
|
748
|
-
// (ext: Extension) => ext.url === TEMPLATE_EXTRACT_VALUE_EXTENSION
|
|
749
|
-
// );
|
|
750
|
-
// console.log('Using nested _value extension structure from HL7 SDC example');
|
|
751
|
-
// }
|
|
752
|
-
//
|
|
753
|
-
// if (valueExt?.valueString) {
|
|
754
|
-
// console.log(`Extracting value with expression: ${valueExt.valueString}`);
|
|
755
|
-
// let value;
|
|
756
|
-
//
|
|
757
|
-
// // Handle direct answer value references
|
|
758
|
-
// if (valueExt.valueString.includes('answer.value')) {
|
|
759
|
-
// value = getNestedAnswerValue(response, item.linkId);
|
|
760
|
-
// if (value !== null) {
|
|
761
|
-
// // Improved unit detection and value conversion based on context
|
|
762
|
-
// const isHeightTemplate = template.code?.coding?.some(
|
|
763
|
-
// (c) => c.code === '8302-2' || c.display?.toLowerCase().includes('height')
|
|
764
|
-
// );
|
|
765
|
-
//
|
|
766
|
-
// // Check if a unit conversion is needed
|
|
767
|
-
// if (isHeightTemplate) {
|
|
768
|
-
// console.log(`Processing height value: ${value}`);
|
|
769
|
-
//
|
|
770
|
-
// // Determine the source unit from the questionnaire item
|
|
771
|
-
// const unitExtension = item.extension?.find(
|
|
772
|
-
// (ext) =>
|
|
773
|
-
// ext.url === 'http://hl7.org/fhir/StructureDefinition/questionnaire-unit'
|
|
774
|
-
// );
|
|
775
|
-
// const sourceUnit = unitExtension?.valueCoding?.code || 'm';
|
|
776
|
-
//
|
|
777
|
-
// // Extract target unit from template
|
|
778
|
-
// const targetUnit = template.valueQuantity.unit || 'cm';
|
|
779
|
-
//
|
|
780
|
-
// // Intelligence for unit conversion
|
|
781
|
-
// if (sourceUnit === 'm' && targetUnit === 'cm') {
|
|
782
|
-
// // Smart unit conversion - only apply if the value looks like meters
|
|
783
|
-
// if (value < 3) {
|
|
784
|
-
// const originalValue = value;
|
|
785
|
-
// value = value * 100;
|
|
786
|
-
// console.log(`Converting height from ${originalValue}m to ${value}cm`);
|
|
787
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
788
|
-
// `Converted height from ${originalValue}m to ${value}cm for ${templateId}`
|
|
789
|
-
// );
|
|
790
|
-
// } else {
|
|
791
|
-
// // Value is likely already in cm
|
|
792
|
-
// console.log(
|
|
793
|
-
// `Height value ${value} appears to already be in cm, no conversion needed`
|
|
794
|
-
// );
|
|
795
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
796
|
-
// `Height value ${value} appears to already be in cm, no conversion needed for ${templateId}`
|
|
797
|
-
// );
|
|
798
|
-
// }
|
|
799
|
-
// }
|
|
800
|
-
// } else {
|
|
801
|
-
// // Not a height template, just extract the value
|
|
802
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
803
|
-
// `Extracted value ${value} for ${templateId}`
|
|
804
|
-
// );
|
|
805
|
-
// }
|
|
806
|
-
//
|
|
807
|
-
// observation.valueQuantity = {
|
|
808
|
-
// value: value,
|
|
809
|
-
// unit: template.valueQuantity.unit,
|
|
810
|
-
// system: template.valueQuantity.system,
|
|
811
|
-
// code: template.valueQuantity.code
|
|
812
|
-
// };
|
|
813
|
-
//
|
|
814
|
-
// debugInfo.valueProcessing.values[templateId] = value;
|
|
815
|
-
// console.log(`✅ Value extracted: ${value}`);
|
|
816
|
-
//
|
|
817
|
-
// // Enhanced quality checks based on value type
|
|
818
|
-
// if (isHeightTemplate) {
|
|
819
|
-
// const inReasonableRange = value > 30 && value < 250;
|
|
820
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
821
|
-
// check: `Height value in reasonable range (${value}cm)`,
|
|
822
|
-
// passed: inReasonableRange,
|
|
823
|
-
// message: inReasonableRange
|
|
824
|
-
// ? 'Height within expected range'
|
|
825
|
-
// : 'Height outside normal range, verify input'
|
|
826
|
-
// });
|
|
827
|
-
// } else if (
|
|
828
|
-
// template.code?.coding?.some(
|
|
829
|
-
// (c) => c.code === '29463-7' || c.display?.toLowerCase().includes('weight')
|
|
830
|
-
// )
|
|
831
|
-
// ) {
|
|
832
|
-
// const inReasonableRange = value > 0.1 && value < 300;
|
|
833
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
834
|
-
// check: `Weight value in reasonable range (${value}kg)`,
|
|
835
|
-
// passed: inReasonableRange,
|
|
836
|
-
// message: inReasonableRange
|
|
837
|
-
// ? 'Weight within expected range'
|
|
838
|
-
// : 'Weight outside normal range, verify input'
|
|
839
|
-
// });
|
|
840
|
-
// }
|
|
841
|
-
//
|
|
842
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
843
|
-
// check: `Process ${templateId}`,
|
|
844
|
-
// passed: true,
|
|
845
|
-
// message: 'Successfully processed observation'
|
|
846
|
-
// });
|
|
847
|
-
// } else {
|
|
848
|
-
// console.log('❌ Failed to extract value');
|
|
849
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
850
|
-
// check: `Process ${templateId}`,
|
|
851
|
-
// passed: false,
|
|
852
|
-
// message: 'Failed to extract value from questionnaire response'
|
|
853
|
-
// });
|
|
854
|
-
// continue; // Skip this observation if value extraction failed
|
|
855
|
-
// }
|
|
856
|
-
// } else {
|
|
857
|
-
// // Handle complex FHIRPath expressions
|
|
858
|
-
// value = evaluateTemplateExpression(response, valueExt.valueString);
|
|
859
|
-
// if (value !== null) {
|
|
860
|
-
// observation.valueQuantity = {
|
|
861
|
-
// value: value,
|
|
862
|
-
// unit: template.valueQuantity.unit,
|
|
863
|
-
// system: template.valueQuantity.system,
|
|
864
|
-
// code: template.valueQuantity.code
|
|
865
|
-
// };
|
|
866
|
-
//
|
|
867
|
-
// debugInfo.valueProcessing.values[templateId] = value;
|
|
868
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
869
|
-
// `Extracted value ${value} for ${templateId} using expression`
|
|
870
|
-
// );
|
|
871
|
-
// console.log(`✅ Value extracted with expression: ${value}`);
|
|
872
|
-
//
|
|
873
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
874
|
-
// check: `Process ${templateId}`,
|
|
875
|
-
// passed: true,
|
|
876
|
-
// message: 'Successfully processed observation'
|
|
877
|
-
// });
|
|
878
|
-
// } else {
|
|
879
|
-
// console.log('❌ Failed to extract value with expression');
|
|
880
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
881
|
-
// check: `Process ${templateId}`,
|
|
882
|
-
// passed: false,
|
|
883
|
-
// message: 'Failed to extract value using expression'
|
|
884
|
-
// });
|
|
885
|
-
// continue;
|
|
886
|
-
// }
|
|
887
|
-
// }
|
|
888
|
-
// } else {
|
|
889
|
-
// console.log('❌ No template extraction value extension found');
|
|
890
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
891
|
-
// check: `Process ${templateId}`,
|
|
892
|
-
// passed: false,
|
|
893
|
-
// message: 'No template extraction value extension found'
|
|
894
|
-
// });
|
|
895
|
-
// continue;
|
|
896
|
-
// }
|
|
897
|
-
// } else if ((template as ExtendedObservation)._valueBoolean) {
|
|
898
|
-
// // Handle boolean observations
|
|
899
|
-
// console.log('Processing boolean observation template');
|
|
900
|
-
//
|
|
901
|
-
// // Get the template extraction expression from the boolean extension
|
|
902
|
-
// const booleanExt = (template as ExtendedObservation)._valueBoolean?.extension?.find(
|
|
903
|
-
// (ext: Extension) => ext.url === TEMPLATE_EXTRACT_VALUE_EXTENSION
|
|
904
|
-
// );
|
|
905
|
-
//
|
|
906
|
-
// if (!booleanExt?.valueString) {
|
|
907
|
-
// console.log('❌ No template extraction value extension found for boolean value');
|
|
908
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
909
|
-
// check: `Process ${templateId}`,
|
|
910
|
-
// passed: false,
|
|
911
|
-
// message: 'No template extraction value extension found for boolean value'
|
|
912
|
-
// });
|
|
913
|
-
// continue;
|
|
914
|
-
// }
|
|
915
|
-
//
|
|
916
|
-
// console.log(`Boolean extraction expression: ${booleanExt.valueString}`);
|
|
917
|
-
//
|
|
918
|
-
// // Use the extraction expression
|
|
919
|
-
// if (booleanExt.valueString.includes('answer.value')) {
|
|
920
|
-
// const boolValue = getNestedAnswerValue(response, item.linkId);
|
|
921
|
-
//
|
|
922
|
-
// if (boolValue !== null) {
|
|
923
|
-
// observation.valueBoolean = boolValue === true || boolValue === 'true';
|
|
924
|
-
//
|
|
925
|
-
// debugInfo.valueProcessing.values[templateId] = boolValue;
|
|
926
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
927
|
-
// `Extracted boolean value ${boolValue} for ${templateId}`
|
|
928
|
-
// );
|
|
929
|
-
// console.log(`✅ Boolean value extracted: ${boolValue}`);
|
|
930
|
-
//
|
|
931
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
932
|
-
// check: `Process ${templateId}`,
|
|
933
|
-
// passed: true,
|
|
934
|
-
// message: 'Successfully processed boolean observation'
|
|
935
|
-
// });
|
|
936
|
-
// } else {
|
|
937
|
-
// console.log('❌ Failed to extract boolean value');
|
|
938
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
939
|
-
// check: `Process ${templateId}`,
|
|
940
|
-
// passed: false,
|
|
941
|
-
// message: 'Failed to extract boolean value from questionnaire response'
|
|
942
|
-
// });
|
|
943
|
-
// continue;
|
|
944
|
-
// }
|
|
945
|
-
// } else {
|
|
946
|
-
// // Handle complex FHIRPath expressions
|
|
947
|
-
// const boolValue = evaluateTemplateExpression(response, booleanExt.valueString);
|
|
948
|
-
//
|
|
949
|
-
// if (boolValue !== null) {
|
|
950
|
-
// observation.valueBoolean = boolValue === true || boolValue === 'true';
|
|
951
|
-
//
|
|
952
|
-
// debugInfo.valueProcessing.values[templateId] = boolValue;
|
|
953
|
-
// debugInfo.valueProcessing.transformations.push(
|
|
954
|
-
// `Extracted boolean value ${boolValue} for ${templateId} using expression`
|
|
955
|
-
// );
|
|
956
|
-
// console.log(`✅ Boolean value extracted with expression: ${boolValue}`);
|
|
957
|
-
//
|
|
958
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
959
|
-
// check: `Process ${templateId}`,
|
|
960
|
-
// passed: true,
|
|
961
|
-
// message: 'Successfully processed boolean observation'
|
|
962
|
-
// });
|
|
963
|
-
// } else {
|
|
964
|
-
// console.log('❌ Failed to extract boolean value with expression');
|
|
965
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
966
|
-
// check: `Process ${templateId}`,
|
|
967
|
-
// passed: false,
|
|
968
|
-
// message: 'Failed to extract boolean value using expression'
|
|
969
|
-
// });
|
|
970
|
-
// continue;
|
|
971
|
-
// }
|
|
972
|
-
// }
|
|
973
|
-
// } else {
|
|
974
|
-
// console.log('❌ Template has unsupported value type');
|
|
975
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
976
|
-
// check: `Process ${templateId}`,
|
|
977
|
-
// passed: false,
|
|
978
|
-
// message: 'Template has unsupported value type'
|
|
979
|
-
// });
|
|
980
|
-
// continue;
|
|
981
|
-
// }
|
|
982
|
-
//
|
|
983
|
-
// observations.push(observation);
|
|
984
|
-
// }
|
|
985
|
-
// } catch (error) {
|
|
986
|
-
// console.error(`Error processing template ${template.id}:`, error);
|
|
987
|
-
// debugInfo.valueProcessing.qualityChecks.push({
|
|
988
|
-
// check: `Process ${template.id || 'unknown'}`,
|
|
989
|
-
// passed: false,
|
|
990
|
-
// message: `Error: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
991
|
-
// });
|
|
992
|
-
// }
|
|
993
|
-
// }
|
|
994
|
-
//
|
|
995
|
-
// // Stage 6: Generate result
|
|
996
|
-
// if (observations.length > 0) {
|
|
997
|
-
// debugInfo.resultGeneration.status = 'Success';
|
|
998
|
-
// debugInfo.resultGeneration.observations = observations;
|
|
999
|
-
// console.log(`✅ Successfully extracted ${observations.length} observations`);
|
|
1000
|
-
// } else {
|
|
1001
|
-
// debugInfo.resultGeneration.status = 'Failed';
|
|
1002
|
-
// debugInfo.resultGeneration.warnings = ['No observations could be extracted'];
|
|
1003
|
-
// console.log('❌ No observations could be extracted');
|
|
1004
|
-
// }
|
|
1005
|
-
//
|
|
1006
|
-
// return {
|
|
1007
|
-
// result: observations.length > 0 ? observations : null,
|
|
1008
|
-
// error: observations.length === 0 ? 'No observations could be extracted' : null,
|
|
1009
|
-
// debugInfo
|
|
1010
|
-
// };
|
|
1011
|
-
// }
|
|
1012
|
-
//
|
|
1013
|
-
// export type TemplateExtractable = {
|
|
1014
|
-
// extractable: boolean;
|
|
1015
|
-
// templateReference?: string;
|
|
1016
|
-
// };
|
|
1017
|
-
//
|
|
1018
|
-
// export function mapQItemsTemplate(
|
|
1019
|
-
// questionnaire: Questionnaire
|
|
1020
|
-
// ): Record<string, TemplateExtractable> {
|
|
1021
|
-
// if (!questionnaire.item || questionnaire.item.length === 0) {
|
|
1022
|
-
// return {};
|
|
1023
|
-
// }
|
|
1024
|
-
//
|
|
1025
|
-
// const initialExtension = questionnaire.extension?.find(
|
|
1026
|
-
// (e) => e.url === FHIR_TEMPLATE_EXTRACT_EXTENSION
|
|
1027
|
-
// );
|
|
1028
|
-
//
|
|
1029
|
-
// const templateReference = questionnaire.extension?.find(
|
|
1030
|
-
// (e) => e.url === FHIR_TEMPLATE_REFERENCE_EXTENSION
|
|
1031
|
-
// )?.valueString;
|
|
1032
|
-
//
|
|
1033
|
-
// const initialTemplateMap: Record<string, TemplateExtractable> = {
|
|
1034
|
-
// [questionnaire.id ?? 'root']: {
|
|
1035
|
-
// extractable: initialExtension?.valueBoolean ?? false,
|
|
1036
|
-
// templateReference
|
|
1037
|
-
// }
|
|
1038
|
-
// };
|
|
1039
|
-
//
|
|
1040
|
-
// transverseQuestionnaire(questionnaire, mapQItemsTemplateRecursive, initialTemplateMap);
|
|
1041
|
-
//
|
|
1042
|
-
// return initialTemplateMap;
|
|
1043
|
-
// }
|
|
1044
|
-
//
|
|
1045
|
-
// function mapQItemsTemplateRecursive(
|
|
1046
|
-
// qItem: QuestionnaireItem,
|
|
1047
|
-
// root?: Questionnaire,
|
|
1048
|
-
// parent?: QuestionnaireItem,
|
|
1049
|
-
// qItemTemplateMap?: Record<string, TemplateExtractable>
|
|
1050
|
-
// ): void {
|
|
1051
|
-
// if (!qItemTemplateMap) return;
|
|
1052
|
-
//
|
|
1053
|
-
// if (!qItemTemplateMap[qItem.linkId]) {
|
|
1054
|
-
// qItemTemplateMap[qItem.linkId] = { extractable: false };
|
|
1055
|
-
// }
|
|
1056
|
-
//
|
|
1057
|
-
// // Check if questionnaire extractable
|
|
1058
|
-
// const extension = qItem.extension?.find(
|
|
1059
|
-
// (e: Extension) => e.url === FHIR_TEMPLATE_EXTRACT_EXTENSION
|
|
1060
|
-
// );
|
|
1061
|
-
// const templateReference = qItem.extension?.find(
|
|
1062
|
-
// (e: Extension) => e.url === FHIR_TEMPLATE_REFERENCE_EXTENSION
|
|
1063
|
-
// )?.valueString;
|
|
1064
|
-
//
|
|
1065
|
-
// if (extension?.valueBoolean || extension?.valueBoolean === false) {
|
|
1066
|
-
// qItemTemplateMap[qItem.linkId].extractable = extension?.valueBoolean ?? false;
|
|
1067
|
-
// } else if (parent && qItemTemplateMap[parent.linkId]) {
|
|
1068
|
-
// qItemTemplateMap[qItem.linkId].extractable = qItemTemplateMap[parent.linkId].extractable;
|
|
1069
|
-
// } else if (root && qItemTemplateMap[root.id ?? 'root']) {
|
|
1070
|
-
// qItemTemplateMap[qItem.linkId].extractable = qItemTemplateMap[root?.id ?? 'root'].extractable;
|
|
1071
|
-
// } else {
|
|
1072
|
-
// qItemTemplateMap[qItem.linkId].extractable = false;
|
|
1073
|
-
// }
|
|
1074
|
-
//
|
|
1075
|
-
// if (templateReference) {
|
|
1076
|
-
// qItemTemplateMap[qItem.linkId].templateReference = templateReference;
|
|
1077
|
-
// }
|
|
1078
|
-
//
|
|
1079
|
-
// if (qItem.item && qItem.item.length !== 0) {
|
|
1080
|
-
// for (const qChildItem of qItem.item) {
|
|
1081
|
-
// mapQItemsTemplateRecursive(qChildItem, root, qItem, qItemTemplateMap);
|
|
1082
|
-
// }
|
|
1083
|
-
// }
|
|
1084
|
-
// }
|
|
1085
|
-
//
|
|
1086
|
-
// function transverseQuestionnaire(
|
|
1087
|
-
// questionnaire: Questionnaire,
|
|
1088
|
-
// callback: (
|
|
1089
|
-
// qItem: QuestionnaireItem,
|
|
1090
|
-
// root?: Questionnaire,
|
|
1091
|
-
// parent?: QuestionnaireItem,
|
|
1092
|
-
// qItemTemplateMap?: Record<string, TemplateExtractable>
|
|
1093
|
-
// ) => void,
|
|
1094
|
-
// qItemTemplateMap?: Record<string, TemplateExtractable>
|
|
1095
|
-
// ): void {
|
|
1096
|
-
// if (!questionnaire.item) return;
|
|
1097
|
-
//
|
|
1098
|
-
// for (const item of questionnaire.item) {
|
|
1099
|
-
// callback(item, questionnaire, undefined, qItemTemplateMap);
|
|
1100
|
-
// if (item.item) {
|
|
1101
|
-
// for (const childItem of item.item) {
|
|
1102
|
-
// callback(childItem, questionnaire, item, qItemTemplateMap);
|
|
1103
|
-
// }
|
|
1104
|
-
// }
|
|
1105
|
-
// }
|
|
1106
|
-
// }
|
|
1107
|
-
//# sourceMappingURL=extractTemplate.js.map
|