public Client( ClientData client, RiskMap riskMap, IList<ProjectQuestionData> projectQuestions, IList<ReferralAgency> referralAgencies) : base(client) { client.RiskAssessments.Sort(RiskSort); riskAssessment_ = new RiskAssessment(client.RiskAssessments, riskMap); questions_ = prepareQuestionAnswers(client, projectQuestions); referrals_ = prepareReferrals(client, referralAgencies); if (client_.Notes == null) return; generalNote_ = client_.Notes. Where(n => n.Type == NoteType.General). OrderByDescending(n => n.Timestamp). Select(n => n.Text). FirstOrDefault(); timeLine_ = buildTimeLine(client.Notes, client.RiskAssessments, riskMap); files_ = client.Notes. Where(n => n.Type == NoteType.File). OrderByDescending(n => n.Timestamp). ToList(); } // Client
} // RiskAssessment private void setInitialScores(RiskAssessment initial) { foreach (var theme in themeAssessments_) { var initialTheme = initial.ThemeAssessments.Where(t => t.Title == theme.Title).Single(); theme.InitialScore = initialTheme.Score; theme.InitialRiskCount = initialTheme.RiskCount; } // foreach } // setInitialScores
} // RiskSort private static List<TimelineEntry> buildTimeLine(List<NoteData> notes, List<RiskAssessmentData> riskAssessments, RiskMap riskMap) { Dictionary<DateTime, TimelineEntry> timeLineEntries = new Dictionary<DateTime, TimelineEntry>(); foreach (var nd in notes.OrderByDescending(n => n.Timestamp)) { DateTime date = nd.Timestamp.Date; if (!timeLineEntries.Keys.Contains(date)) timeLineEntries.Add(date, new TimelineEntry(date)); TimelineEntry tle = timeLineEntries[date]; if (nd.Type == NoteType.Narrative) tle.addNote(nd); if ((nd.Type == NoteType.Registered) || (nd.Type == NoteType.Reopen) || (nd.Type == NoteType.DidNotAttend) || (nd.Type == NoteType.Discharged)) tle.addNote(nd.Text); if (nd.Type == NoteType.File) tle.addNote("Uploaded " + nd.Text); if ((nd.Type == NoteType.Event) || (nd.Type == NoteType.Referral)) tle.addAction(nd.Text); } // foreach note foreach (var rad in riskAssessments.OrderByDescending(rad => rad.Timestamp)) { DateTime date = rad.Timestamp.Date; if (!timeLineEntries.Keys.Contains(date)) timeLineEntries.Add(date, new TimelineEntry(date)); TimelineEntry tle = timeLineEntries[date]; RiskAssessment ra = new RiskAssessment(rad, riskMap); tle.addRiskAssessment(ra); } // foreach riskassessment List<TimelineEntry> timeLine = timeLineEntries.Values.OrderByDescending(tle => tle.Datestamp).ToList(); if (timeLine.Count > 0) { TimelineEntry last = timeLine.Last(); if (last.RiskScores == null) last.defaultRiskScores(riskMap); List<TimelineEntry.RiskScore> riskScore = last.RiskScores; for (int i = timeLine.Count - 1; i >= 0; --i) { TimelineEntry tle = timeLine[i]; if (tle.RiskScores == null) tle.RiskScores = riskScore; else riskScore = tle.RiskScores; } // foreach } // if ... return timeLine; } //
public void addRiskAssessment(RiskAssessment ra) { riskScores_ = ra.ThemeAssessments. Select(ta => new RiskScore { Title = ta.Title, Score = ta.Score }). ToList(); } // addRiskAssessment