public ActionResult EditSocialHistory( EditSocialHistoryModel editSocialHistoryModel )
        {
            var requestDispatcher = _requestDispatcherFactory.CreateRequestDispatcher ();
            requestDispatcher.Add ( new SaveDtoRequest<SocialHistoryDto> { DataTransferObject = editSocialHistoryModel.SocialHistory } );

            var response = requestDispatcher.Get<DtoResponse<SocialHistoryDto>> ();

            if ( response.Exception != null )
            {
                ViewBag.ErrorMessage = "Errors occured when trying to save PHQ-2.";
                return View ( editSocialHistoryModel );
            }

            editSocialHistoryModel.SocialHistory = response.DataTransferObject;

            return RedirectToAction ( "GetAllClinicalCasesWithActivitiesForSelectedClinicalCase", new { id = editSocialHistoryModel.PatientKey } );
        }
        //
        // GET: /PatientDashboard/
        //public ActionResult GetAllActivitiesByClinicalCase(long id)
        //{
        //    //TODO: DI in costructor or use a Func<IRequestHandler> parameter in the constructor, bind the constructor parameter when set up in DI container
        //    var requestDispatcherFactory = IoC.Container.Resolve<IRequestDispatcherFactory>();
        //    var patientId = id;
        //    //Get the ClinicalCases by the patient key
        //    var requestDispatcher = requestDispatcherFactory.CreateRequestDispatcher();
        //    requestDispatcher.Add(new GetAllClinicalCasesByPatientRequest { PatientKey = patientId });
        //    var getAllClinicalCasesByPatientResponse = requestDispatcher.Get<GetAllClinicalCasesByPatientResponse>();
        //    var clinicalCaseList = getAllClinicalCasesByPatientResponse.ClinicalCases;
        //    var firstClinicalCase = clinicalCaseList.FirstOrDefault();
        //    IEnumerable<ActivityDto> activityDtos = null;
        //    if (firstClinicalCase != null)
        //    {
        //        requestDispatcher = requestDispatcherFactory.CreateRequestDispatcher();
        //        requestDispatcher.Add(new GetAllActivitiesByClinicalCaseRequest() { ClinicalCaseKey = firstClinicalCase.Key });
        //        var getAllActivitiesByClinicalCaseResponse = requestDispatcher.Get<GetAllActivitiesByClinicalCaseResponse>();
        //        activityDtos = getAllActivitiesByClinicalCaseResponse.ActivityDtos;
        //    }
        //    return View(activityDtos);
        //}
        /// <summary>
        /// Edits the social history.
        /// </summary>
        /// <param name="id">The id.</param>
        /// <param name="patientId">The patient id.</param>
        /// <returns>A <see cref="System.Web.Mvc.ActionResult"/></returns>
        public ActionResult EditSocialHistory( long id, long patientId )
        {
            var socialHistoryId = id;

            var requestDispatcher = _requestDispatcherFactory.CreateRequestDispatcher ();
            requestDispatcher.Add ( new GetDtoRequest<PatientSummaryDto> { Key = patientId } );
            requestDispatcher.Add ( new GetDtoRequest<SocialHistoryDto> { Key = socialHistoryId } );

            var getPatientSummaryResponse = requestDispatcher.Get<DtoResponse<PatientSummaryDto>> ();
            var patientSummary = getPatientSummaryResponse.DataTransferObject;

            var response = requestDispatcher.Get<DtoResponse<SocialHistoryDto>> ();
            var socialHistoryDto = response.DataTransferObject;

            var model = new EditSocialHistoryModel
                { PatientKey = patientSummary.Key, PatientName = patientSummary.DisplayName, SocialHistory = socialHistoryDto };

            return View ( model );
        }