private async Task <DialogTurnResult> PromptForPhysicalTherapyHistoryAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            var psychiatricCare = (bool)stepContext.Result;

            demographics.PsychiatricCare = BackPainTranslations.YesNo(psychiatricCare);
            if (psychiatricCare)
            {
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("I know that can be hard to admit some times, but sharing that information will definitely help us with the diagnosis."), cancellationToken);

                await Task.Delay(150, cancellationToken);
            }

            return(await stepContext.PromptAsync(
                       Prompts.PhysicalTherapyHistory,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("Have you ever had physical therapy?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForOpioidUseAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.FecalIncontinence = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.OpioidUse,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("Are you, or have you recently been an opioid user?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForFecalIncontinenceHistoryAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.Fever = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.FecalIncontinenceHistory,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("I know the next question stinks, but I have to ask. Have you suffered from fecal incontinence in association with your back pain?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForFeverHistoryAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.PreviousBackSurgery = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.FeverHistory,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("Is or was your back pain associated with fever?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForPreviousBackSurgeryHistoryAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.CognitiveBehavioralTherapy = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.PreviousBackSurgeryHistory,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("Have you had back surgery before?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForPsychCareHistoryAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.CancerHistory = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.PsychCareHistory,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("Have you ever received psychiatric care?"),
            },
                       cancellationToken));
        }
        private async Task <DialogTurnResult> PromptForLevelOfPainAsync(
            WaterfallStepContext stepContext,
            CancellationToken cancellationToken)
        {
            var demographics = await _accessors.BackPainDemographics.GetAsync(
                stepContext.Context,
                () => new BackPainDemographics(),
                cancellationToken);

            demographics.OpioidUse = BackPainTranslations.YesNo((bool)stepContext.Result);
            return(await stepContext.PromptAsync(
                       Prompts.LevelOfPain,
                       new PromptOptions
            {
                Prompt = MessageFactory.Text("How much pain are you in (1 is lowest, 10 is highest)?"),
                Choices = BackPainTranslations.PainLevelOptions,
            },
                       cancellationToken));
        }