protected Boolean ApplyChanges() { Boolean isModified = false; Boolean success = false; List <Int64> careInterventionIds = new List <Int64> (); // CARE INTERVENTIONS TO ADD Int64 careInterventionId = 0; Mercury.Server.Application.MemberCaseModificationResponse response; // IDENTIFY ALL REQUESTED CARE INTERVENTIONS TO ADD foreach (Telerik.Web.UI.RadTreeNode currentNode in CareInterventionTreeView.GetAllNodes()) { // VALIDATE THAT THE NODE IS CHECKED AND REQUESTED TO BE ADDED TO THE GOAL if (currentNode.Checked) { // VALIDATE THAT THE NODE IS A CARE INTERVENTION NODE if (Int64.TryParse(currentNode.Value, out careInterventionId)) { careInterventionIds.Add(careInterventionId); } } } isModified = (careInterventionIds.Count > 0); if (isModified) { success = true; foreach (Int64 currentCareInterventionId in careInterventionIds) { // TODO: ADD SINGLE INSTANCE SUPPORT HERE response = MercuryApplication.MemberCaseCarePlanGoal_AddCareIntervention(Case, MemberCaseCarePlanGoal.Id, currentCareInterventionId, false); Case = new Client.Core.Individual.Case.MemberCase(MercuryApplication, response.MemberCase); if (response.HasException) { ExceptionMessage = response.Exception.Message; success = false; // REBUILD TREE AND SET ERROR NODE ACTIVE CareInterventionTreeView.Nodes.Clear(); InitializeCareInterventionTreeView(); Telerik.Web.UI.RadTreeNode careInterventionNode = CareInterventionTreeView.FindNodeByValue(currentCareInterventionId.ToString()); if (careInterventionNode != null) { careInterventionNode.Expanded = true; careInterventionNode.ParentNode.Expanded = true; // ONLY TWO LEVELS DEEP careInterventionNode.Selected = true; } break; } } if (success) // IF ALL PROBLEMS WERE ADDED WITHOUT PROBLEMS, REFRESH TREE { CareInterventionTreeView.Nodes.Clear(); InitializeCareInterventionTreeView(); } } else { ExceptionMessage = "No Changes Detected"; success = true; } return(success); }
private void InitializeCareInterventionTreeView() { Client.Core.Individual.CarePlanGoal originalCarePlanGoal = MemberCaseCarePlanGoal.MemberCaseCarePlan.CarePlan.CarePlanGoal(MemberCaseCarePlanGoal.CarePlanGoalId); Telerik.Web.UI.RadTreeNode careInterventionNode; #region Create Root Nodes Telerik.Web.UI.RadTreeNode rootCurrentNode = new Telerik.Web.UI.RadTreeNode("Current", "RootCurrent"); rootCurrentNode.Checkable = false; rootCurrentNode.Expanded = false; CareInterventionTreeView.Nodes.Add(rootCurrentNode); Telerik.Web.UI.RadTreeNode rootRequiredNode = new Telerik.Web.UI.RadTreeNode("Required", "RootRequired"); rootRequiredNode.Checkable = false; rootRequiredNode.Expanded = true; CareInterventionTreeView.Nodes.Add(rootRequiredNode); Telerik.Web.UI.RadTreeNode rootSuggestedNode = new Telerik.Web.UI.RadTreeNode("Suggested", "RootSuggested"); rootSuggestedNode.Checkable = false; rootSuggestedNode.Expanded = true; CareInterventionTreeView.Nodes.Add(rootSuggestedNode); Telerik.Web.UI.RadTreeNode rootOptionalNode = new Telerik.Web.UI.RadTreeNode("Optional", "RootOptional"); rootOptionalNode.Checkable = false; rootOptionalNode.Expanded = false; CareInterventionTreeView.Nodes.Add(rootOptionalNode); Telerik.Web.UI.RadTreeNode rootAllNode = new Telerik.Web.UI.RadTreeNode("All Others", "RootAll"); rootAllNode.Checkable = false; rootAllNode.Expanded = false; CareInterventionTreeView.Nodes.Add(rootAllNode); #endregion List <Client.Core.Individual.CareIntervention> careInterventionsCurrent = (from currentCarePlanGoalIntervention in MemberCaseCarePlanGoal.Interventions where // ALTERED TO REMOVE THOSE WHERE CARE INTERVENTION IS NULL (currentCarePlanGoalIntervention.CareIntervention != null) && ( (currentCarePlanGoalIntervention.CareIntervention != null ? ((currentCarePlanGoalIntervention.CareIntervention.Status == Mercury.Server.Application.CaseItemStatus.UnderDevelopment) || (currentCarePlanGoalIntervention.CareIntervention.Status == Mercury.Server.Application.CaseItemStatus.Active)) : (currentCarePlanGoalIntervention.Id == currentCarePlanGoalIntervention.Id))) select currentCarePlanGoalIntervention.CareIntervention.CareIntervention ).Distinct().ToList(); foreach (Client.Core.Individual.CareIntervention currentCareIntervention in careInterventionsCurrent) { // EXISTING CARE INTERVENTIONS WILL HAVE "Checked" TRUE AND "ForeColor" System.Drawing.Color.Black // IF THE CARE INTERVENTION EXISTS AND IS ACTIVE IN THE CASE ALREADY, DO NOT ALLOW IT TO BE ADDED AGAIN careInterventionNode = new Telerik.Web.UI.RadTreeNode(currentCareIntervention.Name, currentCareIntervention.Id.ToString()); careInterventionNode.Checkable = false; careInterventionNode.ImageUrl = "/Images/Common16/Check.png"; careInterventionNode.ForeColor = System.Drawing.Color.Black; // ADD EARLY SO THAT EXPAND TO NODE WORKS (PARENT RELATIONSHIP REQUIRED) rootCurrentNode.Nodes.Add(careInterventionNode); } List <Client.Core.Individual.CareIntervention> careInterventionsAvailable = MercuryApplication.CareInterventionsAvailable(true); careInterventionsAvailable = (from currentCareIntervention in careInterventionsAvailable where (currentCareIntervention.Enabled == true) orderby currentCareIntervention.Name select currentCareIntervention).ToList(); foreach (Client.Core.Individual.CareIntervention currentCareIntervention in careInterventionsAvailable) { // MAKE SURE THAT THE NODE DOES NOT ALREADY EXIST (FROM THE "CURRENT" SELECTION) if (CareInterventionTreeView.FindNodeByValue(currentCareIntervention.Id.ToString()) == null) { Telerik.Web.UI.RadTreeNode parentNode = rootAllNode; if (originalCarePlanGoal != null) // IT IS POSSIBLE THAT THE GOAL WAS A CUSTOM CREATED GOAL // USE THE ORIGINAL CARE PLAN OF THE CARE PLAN GOAL TO CHECK TO SEE IF THE INTERVENTION IS REQUIRED/SUGGESTED/OPTIONAL IN THE ORIGINAL { Client.Core.Individual.CarePlanIntervention originalCarePlanIntervention = originalCarePlanGoal.CarePlanIntervention(currentCareIntervention.Id); if (originalCarePlanIntervention != null) { switch (originalCarePlanIntervention.Inclusion) { case Mercury.Server.Application.CarePlanItemInclusion.Required: parentNode = rootRequiredNode; break; case Mercury.Server.Application.CarePlanItemInclusion.Suggested: parentNode = rootSuggestedNode; break; case Mercury.Server.Application.CarePlanItemInclusion.Optional: parentNode = rootOptionalNode; break; } } } careInterventionNode = new Telerik.Web.UI.RadTreeNode(currentCareIntervention.Name, currentCareIntervention.Id.ToString()); parentNode.Nodes.Add(careInterventionNode); // IDENTIFY CARE INTERVENTIONS THAT ARE ALREADY IN USE BY CURRENT CARE PLAN OR OTHER CARE PLAN List <Client.Core.Individual.Case.MemberCaseProblemCarePlan> memberCaseProblemCarePlans = (from currentMemberCaseCarePlan in Case.CarePlans from currentMemberCaseCarePlanGoal in currentMemberCaseCarePlan.Goals from currentMemberCaseCarePlanGoalIntervention in currentMemberCaseCarePlanGoal.Interventions from currentProblems in currentMemberCaseCarePlanGoalIntervention.MemberCaseCarePlanGoal.MemberCaseCarePlan.Problems // ALTERED TO CHECK IF CARE INTERVENTION IS NULL where ((currentMemberCaseCarePlanGoalIntervention.CareIntervention != null) ? (currentMemberCaseCarePlanGoalIntervention.CareIntervention.CareInterventionId == currentCareIntervention.Id) && ((currentMemberCaseCarePlanGoalIntervention.CareIntervention.Status == Mercury.Server.Application.CaseItemStatus.UnderDevelopment)) || (currentMemberCaseCarePlanGoalIntervention.CareIntervention.Status == Mercury.Server.Application.CaseItemStatus.Active) : (currentMemberCaseCarePlanGoalIntervention.Id == currentMemberCaseCarePlanGoalIntervention.Id)) select currentProblems).Distinct().ToList(); foreach (Client.Core.Individual.Case.MemberCaseProblemCarePlan currentMemberCaseProblemCarePlan in memberCaseProblemCarePlans) { Telerik.Web.UI.RadTreeNode problemNode = new Telerik.Web.UI.RadTreeNode(currentMemberCaseProblemCarePlan.ProblemStatementClassificationWithName, currentCareIntervention.Id.ToString() + "|" + currentMemberCaseProblemCarePlan.Id.ToString()); problemNode.Checkable = false; careInterventionNode.Nodes.Add(problemNode); } } } return; }