From be344c5dd4c6a69933b611c25c5e326c8e1df106 Mon Sep 17 00:00:00 2001 From: Robi Scalfani Date: Wed, 27 Jul 2022 15:11:44 -0400 Subject: [PATCH 1/2] Fixed an issue where previous in-progress forms were non-selectable. --- .../QuestionnaireForm/QuestionnaireForm.jsx | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/components/QuestionnaireForm/QuestionnaireForm.jsx b/src/components/QuestionnaireForm/QuestionnaireForm.jsx index 0e6c5f52..e758980f 100644 --- a/src/components/QuestionnaireForm/QuestionnaireForm.jsx +++ b/src/components/QuestionnaireForm/QuestionnaireForm.jsx @@ -56,10 +56,9 @@ export default class QuestionnaireForm extends Component { this.getDisplayButtons = this.getDisplayButtons.bind(this); this.isAdaptiveFormWithoutItem = this.isAdaptiveFormWithoutItem.bind(this); this.isAdaptiveFormWithItem = this.isAdaptiveFormWithItem.bind(this); + this.loadPreviousForm = this.loadPreviousForm.bind(this); } - - componentWillMount() { // search for any partially completed QuestionnaireResponses if (this.props.standalone) { @@ -73,15 +72,8 @@ export default class QuestionnaireForm extends Component { savedResponse: mergedResponse }) } else { - this.smart.request(this.getRetrieveSaveQuestionnaireUrl() + - "&status=in-progress" + - "&subject=" + this.getPatient()).then((result) => { - this.popupClear("Would you like to continue an in-process questionnaire?", "Cancel", false); - this.processSavedQuestionnaireResponses(result, false); - }, ((result) => { - this.popupClear("Error: failed to load in-process questionnaires", "OK", true); - this.popupLaunch(); - })).catch(console.error); + + this.loadPreviousForm(); // If not using saved QuestionnaireResponse, create a new one let newResponse = { @@ -177,18 +169,20 @@ export default class QuestionnaireForm extends Component { // read configuration let updateDate = new Date(); updateDate.setDate(updateDate.getDate() - ConfigData.QUESTIONNAIRE_EXPIRATION_DAYS); - return "QuestionnaireResponse?" + "_lastUpdated=gt" + updateDate.toISOString().split('T')[0]; + return `QuestionnaireResponse?_lastUpdated=gt${updateDate.toISOString().split('T')[0]}&status=in-progress` } loadPreviousForm() { // search for any QuestionnaireResponses - this.smart.request(this.getRetrieveSaveQuestionnaireUrl() + - "&subject=" + this.getPatient()).then((result) => { + let questionnaireResponseUrl = this.getRetrieveSaveQuestionnaireUrl(); + questionnaireResponseUrl = questionnaireResponseUrl + "&subject=" + this.getPatient(); + console.log("Using URL " + questionnaireResponseUrl); - this.popupClear("Would you like to load a previous form?", "Cancel", false); + this.smart.request(questionnaireResponseUrl).then((result) => { + this.popupClear("Would you like to load a previously in-progress form?", "Cancel", false); this.processSavedQuestionnaireResponses(result, true); }, ((result) => { - this.popupClear("Error: failed to load previous forms", "OK", true); + this.popupClear("Error: failed to load previous in-progress forms", "OK", true); this.popupLaunch(); })).catch(console.error); } @@ -235,16 +229,19 @@ export default class QuestionnaireForm extends Component { let count = 0; - partialResponses.entry.forEach(r => { - if (this.props.qform.id == r.resource.questionnaire) { + partialResponses.entry.forEach(bundleEntry => { + const questionnaireId = bundleEntry.resource.contained[0].id; + const questionaireIdUrl = bundleEntry.resource.questionnaire; + + if (this.props.qform.id == questionnaireId || this.props.qform.id.contains(questionaireIdUrl)) { count = count + 1; // add the option to the popupOptions - let date = new Date(r.resource.authored); - let option = date.toLocaleDateString(undefined, options) + " (" + r.resource.status + ")"; + let date = new Date(bundleEntry.resource.authored); + let option = date.toLocaleDateString(undefined, options) + " (" + bundleEntry.resource.status + ")"; this.setState({ popupOptions: [...this.state.popupOptions, option] }); - this.partialForms[option] = r.resource; + this.partialForms[option] = bundleEntry.resource; } }); console.log(this.state.popupOptions); From e993cbc8c3f6a34c4452e346096aa820bab0332a Mon Sep 17 00:00:00 2001 From: Robert Scalfani Date: Thu, 28 Jul 2022 13:45:38 -0400 Subject: [PATCH 2/2] Updated == equality to use === --- src/components/QuestionnaireForm/QuestionnaireForm.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/QuestionnaireForm/QuestionnaireForm.jsx b/src/components/QuestionnaireForm/QuestionnaireForm.jsx index e758980f..05cff169 100644 --- a/src/components/QuestionnaireForm/QuestionnaireForm.jsx +++ b/src/components/QuestionnaireForm/QuestionnaireForm.jsx @@ -233,7 +233,7 @@ export default class QuestionnaireForm extends Component { const questionnaireId = bundleEntry.resource.contained[0].id; const questionaireIdUrl = bundleEntry.resource.questionnaire; - if (this.props.qform.id == questionnaireId || this.props.qform.id.contains(questionaireIdUrl)) { + if (this.props.qform.id === questionnaireId || this.props.qform.id.contains(questionaireIdUrl)) { count = count + 1; // add the option to the popupOptions let date = new Date(bundleEntry.resource.authored);