private void butAudit_Click(object sender, EventArgs e) { FormAuditOrtho FormAO = new FormAuditOrtho(); SecurityLog[] orthoChartLogs = SecurityLogs.Refresh(_patCur.PatNum, new List <Permissions> { Permissions.OrthoChartEditFull }, null, checkIncludeArchived.Checked); SecurityLog[] patientFieldLogs = SecurityLogs.Refresh(new DateTime(1, 1, 1), DateTime.Today, Permissions.PatientFieldEdit, _patCur.PatNum, 0, DateTime.MinValue, DateTime.Today, checkIncludeArchived.Checked); SortedDictionary <DateTime, List <SecurityLog> > dictDatesOfServiceLogEntries = new SortedDictionary <DateTime, List <SecurityLog> >(); //Add all dates from grid first, some may not have audit trail entries, but should be selectable from FormAO for (int i = 0; i < gridMain.Rows.Count; i++) { DateTime dtCur = GetOrthoDate(i); if (dictDatesOfServiceLogEntries.ContainsKey(dtCur)) { continue; } dictDatesOfServiceLogEntries.Add(dtCur, new List <SecurityLog>()); } //Add Ortho Audit Trail Entries for (int i = 0; i < orthoChartLogs.Length; i++) { DateTime dtCur = OrthoCharts.GetOrthoDateFromLog(orthoChartLogs[i]); if (!dictDatesOfServiceLogEntries.ContainsKey(dtCur)) { dictDatesOfServiceLogEntries.Add(dtCur, new List <SecurityLog>()); } dictDatesOfServiceLogEntries[dtCur].Add(orthoChartLogs[i]); //add entry to existing list. } FormAO.DictDateOrthoLogs = dictDatesOfServiceLogEntries; FormAO.PatientFieldLogs.AddRange(patientFieldLogs); FormAO.ShowDialog(); }
private void FillGrid() { SecurityLog[] logList = SecurityLogs.Refresh(PatNum, PermTypes, FKey); grid.BeginUpdate(); grid.Columns.Clear(); ODGridColumn col; col = new ODGridColumn(Lan.g("TableAudit", "Date Time"), 120); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "User"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Permission"), 110); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Log Text"), 569); grid.Columns.Add(col); grid.Rows.Clear(); ODGridRow row; for (int i = 0; i < logList.Length; i++) { row = new ODGridRow(); row.Cells.Add(logList[i].LogDateTime.ToShortDateString() + " " + logList[i].LogDateTime.ToShortTimeString()); row.Cells.Add(Userods.GetUser(logList[i].UserNum).UserName); row.Cells.Add(logList[i].PermType.ToString()); row.Cells.Add(logList[i].LogText); grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { try { LogList = SecurityLogs.Refresh(PatNum, PermTypes, FKey); } catch (Exception ex) { FriendlyException.Show(Lan.g(this, "There was a problem refreshing the Audit Trail with the current filters."), ex); LogList = new SecurityLog[0]; } grid.BeginUpdate(); grid.ListGridColumns.Clear(); GridColumn col; col = new GridColumn(Lan.g("TableAudit", "Date Time"), 120); grid.ListGridColumns.Add(col); col = new GridColumn(Lan.g("TableAudit", "User"), 70); grid.ListGridColumns.Add(col); col = new GridColumn(Lan.g("TableAudit", "Permission"), 170); grid.ListGridColumns.Add(col); col = new GridColumn(Lan.g("TableAudit", "Log Text"), 510); grid.ListGridColumns.Add(col); grid.ListGridRows.Clear(); GridRow row; Userod user; foreach (SecurityLog logCur in LogList) { row = new GridRow(); row.Cells.Add(logCur.LogDateTime.ToShortDateString() + " " + logCur.LogDateTime.ToShortTimeString()); user = Userods.GetUser(logCur.UserNum); if (user == null) //Will be null for audit trails made by outside entities that do not require users to be logged in. E.g. Web Sched. { row.Cells.Add("unknown"); } else { row.Cells.Add(user.UserName); } row.Cells.Add(logCur.PermType.ToString()); row.Cells.Add(logCur.LogText); grid.ListGridRows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { //Fill the log if it wasn't filled outside of this window. if (LogList == null) { LogList = SecurityLogs.Refresh(PatNum, PermTypes, FKey, checkIncludeArchived.Checked); } grid.BeginUpdate(); grid.Columns.Clear(); ODGridColumn col; col = new ODGridColumn(Lan.g("TableAudit", "Date Time"), 120); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "User"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Permission"), 170); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Log Text"), 510); grid.Columns.Add(col); grid.Rows.Clear(); ODGridRow row; Userod user; for (int i = 0; i < LogList.Length; i++) { row = new ODGridRow(); row.Cells.Add(LogList[i].LogDateTime.ToShortDateString() + " " + LogList[i].LogDateTime.ToShortTimeString()); user = Userods.GetUser(LogList[i].UserNum); if (user == null) //Will be null for audit trails made by outside entities that do not require users to be logged in. E.g. Web Sched. { row.Cells.Add("unknown"); } else { row.Cells.Add(user.UserName); } row.Cells.Add(LogList[i].PermType.ToString()); row.Cells.Add(LogList[i].LogText); grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { SecurityLog[] logList = SecurityLogs.Refresh(PatNum, PermTypes); grid.BeginUpdate(); grid.Rows.Clear(); ODGridRow row; for (int i = 0; i < logList.Length; i++) { row = new ODGridRow(); row.Cells.Add(logList[i].LogDateTime.ToShortDateString() + " " + logList[i].LogDateTime.ToShortTimeString()); row.Cells.Add(UserodB.GetUser(logList[i].UserNum).UserName); row.Cells.Add(logList[i].PermType.ToString()); row.Cells.Add(logList[i].LogText); grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { int userNum = 0; if (comboUser.SelectedIndex > 0) { userNum = Userods.Listt[comboUser.SelectedIndex - 1].UserNum; } SecurityLog[] logList = SecurityLogs.Refresh(PIn.PDate(textDateFrom.Text), PIn.PDate(textDateTo.Text), (Permissions)comboPermission.SelectedIndex, PatNum, userNum); grid.BeginUpdate(); grid.Columns.Clear(); ODGridColumn col = new ODGridColumn(Lan.g("TableAudit", "Date Time"), 120); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "User"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Permission"), 110); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Log Text"), 570); grid.Columns.Add(col); grid.Rows.Clear(); ODGridRow row; for (int i = 0; i < logList.Length; i++) { row = new ODGridRow(); row.Cells.Add(logList[i].LogDateTime.ToShortDateString() + " " + logList[i].LogDateTime.ToShortTimeString()); row.Cells.Add(UserodB.GetUser(logList[i].UserNum).UserName); row.Cells.Add(logList[i].PermType.ToString()); row.Cells.Add(logList[i].LogText); grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { long userNum = 0; if (comboUser.SelectedIndex > 0) { userNum = UserodC.Listt[comboUser.SelectedIndex - 1].UserNum; } SecurityLog[] logList = null; if (comboPermission.SelectedIndex == 0) { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), Permissions.None, PatNum, userNum); } else { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), (Permissions)Enum.Parse(typeof(Permissions), comboPermission.SelectedItem.ToString()), PatNum, userNum); } grid.BeginUpdate(); grid.Columns.Clear(); ODGridColumn col = new ODGridColumn(Lan.g("TableAudit", "Date"), 70); col.SortingStrategy = GridSortingStrategy.DateParse; grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Time"), 60); col.SortingStrategy = GridSortingStrategy.DateParse; grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Patient"), 100); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "User"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Permission"), 110); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Computer"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Log Text"), 560); grid.Columns.Add(col); grid.Rows.Clear(); ODGridRow row; Userod user; for (int i = 0; i < logList.Length; i++) { row = new ODGridRow(); row.Cells.Add(logList[i].LogDateTime.ToShortDateString()); row.Cells.Add(logList[i].LogDateTime.ToShortTimeString()); row.Cells.Add(logList[i].PatientName); user = Userods.GetUser(logList[i].UserNum); //user might be null due to old bugs. if (user == null) { row.Cells.Add("unknown"); } else { row.Cells.Add(Userods.GetUser(logList[i].UserNum).UserName); } if (logList[i].PermType == Permissions.ChartModule) { row.Cells.Add("ChartModuleViewed"); } else if (logList[i].PermType == Permissions.FamilyModule) { row.Cells.Add("FamilyModuleViewed"); } else if (logList[i].PermType == Permissions.AccountModule) { row.Cells.Add("AccountModuleViewed"); } else if (logList[i].PermType == Permissions.ImagesModule) { row.Cells.Add("ImagesModuleViewed"); } else if (logList[i].PermType == Permissions.TPModule) { row.Cells.Add("TreatmentPlanModuleViewed"); } else { row.Cells.Add(logList[i].PermType.ToString()); } row.Cells.Add(logList[i].CompName); row.Cells.Add(logList[i].LogText); //Get the hash for the audit log entry from the database and rehash to compare string newHash = SecurityLogHashes.GetHashString(logList[i]); if (logList[i].LogHash != newHash) { row.ColorText = Color.Red; //Bad hash or no hash entry at all. This prevents users from deleting the entire hash table to make the audit trail look valid and encrypted. //historical entries will show as red. } grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { long userNum = 0; if (comboUser.SelectedIndex > 0) { userNum = UserodC.Listt[comboUser.SelectedIndex - 1].UserNum; } SecurityLog[] logList = null; if (comboPermission.SelectedIndex == 0) { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), Permissions.None, PatNum, userNum); } else { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), (Permissions)Enum.Parse(typeof(Permissions), comboPermission.SelectedItem.ToString()), PatNum, userNum); } grid.BeginUpdate(); grid.Columns.Clear(); ODGridColumn col = new ODGridColumn(Lan.g("TableAudit", "Date"), 70); col.SortingStrategy = GridSortingStrategy.DateParse; grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Time"), 60); col.SortingStrategy = GridSortingStrategy.DateParse; grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Patient"), 100); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "User"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Permission"), 110); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Computer"), 70); grid.Columns.Add(col); col = new ODGridColumn(Lan.g("TableAudit", "Log Text"), 560); grid.Columns.Add(col); grid.Rows.Clear(); ODGridRow row; Userod user; for (int i = 0; i < logList.Length; i++) { row = new ODGridRow(); row.Cells.Add(logList[i].LogDateTime.ToShortDateString()); row.Cells.Add(logList[i].LogDateTime.ToShortTimeString()); row.Cells.Add(logList[i].PatientName); user = Userods.GetUser(logList[i].UserNum); //user might be null due to old bugs. if (user == null) { row.Cells.Add("unknown"); } else { row.Cells.Add(Userods.GetUser(logList[i].UserNum).UserName); } if (logList[i].PermType == Permissions.ChartModule) { row.Cells.Add("ChartModuleViewed"); } else { row.Cells.Add(logList[i].PermType.ToString()); } row.Cells.Add(logList[i].CompName); row.Cells.Add(logList[i].LogText); grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }
private void FillGrid() { if (textRows.errorProvider1.GetError(textRows) != "") { MsgBox.Show(this, "Please fix data entry errors first."); return; } long userNum = 0; if (comboUser.SelectedIndex > 0) { userNum = _listUserods[comboUser.SelectedIndex - 1].UserNum; } SecurityLog[] logList = null; DateTime datePreviousFrom = PIn.Date(textDateEditedFrom.Text); DateTime datePreviousTo = DateTime.Today; if (textDateEditedTo.Text != "") { datePreviousTo = PIn.Date(textDateEditedTo.Text); } try { if (comboPermission.SelectedIndex == 0) { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), Permissions.None, PatNum, userNum, datePreviousFrom, datePreviousTo, checkIncludeArchived.Checked, PIn.Int(textRows.Text)); } else { logList = SecurityLogs.Refresh(PIn.Date(textDateFrom.Text), PIn.Date(textDateTo.Text), (Permissions)Enum.Parse(typeof(Permissions), comboPermission.SelectedItem.ToString()), PatNum, userNum, datePreviousFrom, datePreviousTo, checkIncludeArchived.Checked, PIn.Int(textRows.Text)); } } catch (Exception ex) { FriendlyException.Show(Lan.g(this, "There was a problem refreshing the Audit Trail with the current filters."), ex); logList = new SecurityLog[0]; } grid.BeginUpdate(); grid.Columns.Clear(); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Date"), 70, GridSortingStrategy.DateParse)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Time"), 60, GridSortingStrategy.DateParse)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Patient"), 100)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "User"), 70)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Permission"), 190)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Computer"), 70)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Log Text"), 279)); grid.Columns.Add(new ODGridColumn(Lan.g("TableAudit", "Last Edit"), 100)); grid.Rows.Clear(); ODGridRow row; foreach (SecurityLog logCur in logList) { row = new ODGridRow(); row.Cells.Add(logCur.LogDateTime.ToShortDateString()); row.Cells.Add(logCur.LogDateTime.ToShortTimeString()); row.Cells.Add(logCur.PatientName); //user might be null due to old bugs. row.Cells.Add(Userods.GetUser(logCur.UserNum)?.UserName ?? "unknown"); if (logCur.PermType == Permissions.ChartModule) { row.Cells.Add("ChartModuleViewed"); } else if (logCur.PermType == Permissions.FamilyModule) { row.Cells.Add("FamilyModuleViewed"); } else if (logCur.PermType == Permissions.AccountModule) { row.Cells.Add("AccountModuleViewed"); } else if (logCur.PermType == Permissions.ImagesModule) { row.Cells.Add("ImagesModuleViewed"); } else if (logCur.PermType == Permissions.TPModule) { row.Cells.Add("TreatmentPlanModuleViewed"); } else { row.Cells.Add(logCur.PermType.ToString()); } row.Cells.Add(logCur.CompName); if (logCur.PermType != Permissions.UserQuery) { row.Cells.Add(logCur.LogText); } else { //Only display the first snipet of very long queries. User can double click to view. row.Cells.Add(logCur.LogText.Left(200, true)); row.Tag = (Action)(() => { MsgBoxCopyPaste formText = new MsgBoxCopyPaste(logCur.LogText); formText.NormalizeContent(); formText.Show(); }); } if (logCur.DateTPrevious.Year < 1880) { row.Cells.Add(""); } else { row.Cells.Add(logCur.DateTPrevious.ToString()); } //Get the hash for the audit log entry from the database and rehash to compare if (logCur.LogHash != SecurityLogHashes.GetHashString(logCur)) { row.ColorText = Color.Red; //Bad hash or no hash entry at all. This prevents users from deleting the entire hash table to make the audit trail look valid and encrypted. //historical entries will show as red. } grid.Rows.Add(row); } grid.EndUpdate(); grid.ScrollToEnd(); }