-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #802 from aehrc/issue/692
Issue/692
- Loading branch information
Showing
48 changed files
with
745 additions
and
189 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
export { default as useHidden } from './useHidden'; | ||
export { default as useBuildForm } from './useBuildForm'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,96 +1,47 @@ | ||
import { questionnaireResponseStore, questionnaireStore } from './stores'; | ||
import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4'; | ||
import { removeEmptyAnswers } from './utils/removeEmptyAnswers'; | ||
import type { ItemToRepopulate } from './utils/repopulateItems'; | ||
import { getItemsToRepopulate } from './utils/repopulateItems'; | ||
import { repopulateItemsIntoResponse } from './utils/repopulateIntoResponse'; | ||
|
||
export * from './components'; | ||
export * from './stores'; | ||
export * from './hooks'; | ||
export * from './utils'; | ||
export * from './interfaces'; | ||
export type { ItemToRepopulate }; | ||
|
||
/** | ||
* Destroy the form to clean up the questionnaire and questionnaireResponse stores. | ||
* | ||
* @author Sean Fong | ||
*/ | ||
export function destroyForm(): void { | ||
questionnaireStore.getState().destroySourceQuestionnaire(); | ||
questionnaireResponseStore.getState().destroySourceResponse(); | ||
} | ||
|
||
/** | ||
* Get the filled QuestionnaireResponse at its current state. | ||
* If no changes have been made to the form, the initial QuestionnaireResponse is returned. | ||
* | ||
* @author Sean Fong | ||
*/ | ||
export function getResponse(): QuestionnaireResponse { | ||
return questionnaireResponseStore.getState().updatableResponse; | ||
} | ||
|
||
/** | ||
* Remove all hidden answers from the filled QuestionnaireResponse. | ||
* This takes into account the questionnaire-hidden extension, enableWhens, enableWhenExpressions and empty strings. | ||
* | ||
* @author Sean Fong | ||
*/ | ||
export function removeEmptyAnswersFromResponse( | ||
questionnaire: Questionnaire, | ||
questionnaireResponse: QuestionnaireResponse | ||
): QuestionnaireResponse { | ||
const enableWhenIsActivated = questionnaireStore.getState().enableWhenIsActivated; | ||
const enableWhenItems = questionnaireStore.getState().enableWhenItems; | ||
const enableWhenExpressions = questionnaireStore.getState().enableWhenExpressions; | ||
|
||
return removeEmptyAnswers({ | ||
questionnaire, | ||
questionnaireResponse, | ||
enableWhenIsActivated, | ||
enableWhenItems, | ||
enableWhenExpressions | ||
}); | ||
} | ||
|
||
/** | ||
* Compare latest data from the server with the current QuestionnaireResponse and decide items to re-populate. | ||
* | ||
* @author Sean Fong | ||
*/ | ||
export function generateItemsToRepopulate(populatedResponse: QuestionnaireResponse) { | ||
const sourceQuestionnaire = questionnaireStore.getState().sourceQuestionnaire; | ||
const tabs = questionnaireStore.getState().tabs; | ||
const updatableResponse = questionnaireResponseStore.getState().updatableResponse; | ||
const enableWhenIsActivated = questionnaireStore.getState().enableWhenIsActivated; | ||
const enableWhenItems = questionnaireStore.getState().enableWhenItems; | ||
const enableWhenExpressions = questionnaireStore.getState().enableWhenExpressions; | ||
|
||
return getItemsToRepopulate({ | ||
sourceQuestionnaire, | ||
tabs, | ||
populatedResponse, | ||
updatableResponse, | ||
enableWhenIsActivated, | ||
enableWhenItems, | ||
enableWhenExpressions | ||
}); | ||
} | ||
|
||
/** | ||
* Re-populate checked items in the re-population dialog into the current QuestionnaireResponse. | ||
* | ||
* @author Sean Fong | ||
*/ | ||
export function repopulateResponse(checkedItemsToRepopulate: Record<string, ItemToRepopulate>) { | ||
const sourceQuestionnaire = questionnaireStore.getState().sourceQuestionnaire; | ||
const updatableResponse = questionnaireResponseStore.getState().updatableResponse; | ||
|
||
return repopulateItemsIntoResponse( | ||
sourceQuestionnaire, | ||
updatableResponse, | ||
checkedItemsToRepopulate | ||
); | ||
} | ||
// interface exports | ||
export type { Tab, Tabs, Variables, VariableXFhirQuery, LaunchContext } from './interfaces'; | ||
|
||
// component exports | ||
export type { SmartFormsRendererProps } from './components'; | ||
export { | ||
SmartFormsRenderer, | ||
BaseRenderer, | ||
SingleItem, | ||
RepeatItem, | ||
RepeatGroup, | ||
GroupTable, | ||
GridGroup, | ||
parseFhirDateToDisplayDate | ||
} from './components'; | ||
|
||
// state management store exports | ||
export { | ||
questionnaireStore, | ||
useQuestionnaireStore, | ||
questionnaireResponseStore, | ||
useQuestionnaireResponseStore, | ||
smartConfigStore, | ||
useSmartConfigStore, | ||
terminologyServerStore, | ||
useTerminologyServerStore | ||
} from './stores'; | ||
|
||
// hooks exports | ||
export { useHidden, useBuildForm } from './hooks'; | ||
|
||
// utils exports | ||
export type { ItemToRepopulate } from './utils'; | ||
export { | ||
buildForm, | ||
destroyForm, | ||
getResponse, | ||
removeEmptyAnswersFromResponse, | ||
isSpecificItemControl, | ||
isRepeatItemAndNotCheckbox, | ||
initialiseQuestionnaireResponse, | ||
generateItemsToRepopulate, | ||
repopulateResponse | ||
} from './utils'; | ||
|
||
// theme provider exports | ||
export { RendererThemeProvider } from './theme'; |
24 changes: 24 additions & 0 deletions
24
packages/smart-forms-renderer/src/interfaces/calculatedExpression.interface.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.