public GetPatientActionDetailsDataResponse GetActionDetails(GetPatientActionDetailsDataRequest request) { try { GetPatientActionDetailsDataResponse response = new GetPatientActionDetailsDataResponse(); IProgramRepository repo = Factory.GetRepository(request, RepositoryType.PatientProgram);//.GetPatientProgramRepository(request); MEPatientProgram mepp = repo.FindByID(request.PatientProgramId) as MEPatientProgram; IProgramRepository respRepo = Factory.GetRepository(request, RepositoryType.PatientProgramResponse); var stepIds = mepp.Modules.SelectMany(m => m.Actions.SelectMany(a => a.Steps.Select(s => s.Id))).ToList(); DTOUtility.ResponsesBag = respRepo.Find(stepIds).Cast <MEPatientProgramResponse>().ToList(); Module meModule = mepp.Modules.Where(m => m.Id == ObjectId.Parse(request.PatientModuleId)).FirstOrDefault(); if (meModule != null) { MongoDB.DTO.Action meAction = meModule.Actions.Where(a => a.Id == ObjectId.Parse(request.PatientActionId)).FirstOrDefault(); if (meAction != null) { List <Module> tMods = DTOUtility.GetTemplateModulesList(mepp.SourceId.ToString(), request.ContractNumber, request.UserId); Module tmodule = tMods.Find(tm => tm.SourceId == meModule.SourceId); if (tmodule != null) { meAction.Objectives = DTOUtility.GetTemplateObjectives(meAction.SourceId, tmodule); } response.ActionData = DTOUtility.GetAction(request.ContractNumber, request.UserId, meAction); } } return(response); } catch (Exception ex) { DTOUtility.ResponsesBag = null; throw new Exception("DD:DataProgramManager:GetActionDetails()::" + ex.Message, ex.InnerException); } finally { DTOUtility.ResponsesBag = null; } }