///<summary>Inserts one DisplayReport into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(DisplayReport displayReport, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO displayreport (";

            if (!useExistingPK && isRandomKeys)
            {
                displayReport.DisplayReportNum = ReplicationServers.GetKeyNoCache("displayreport", "DisplayReportNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "DisplayReportNum,";
            }
            command += "InternalName,ItemOrder,Description,Category,IsHidden,IsVisibleInSubMenu) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(displayReport.DisplayReportNum) + ",";
            }
            command +=
                "'" + POut.String(displayReport.InternalName) + "',"
                + POut.Int(displayReport.ItemOrder) + ","
                + "'" + POut.String(displayReport.Description) + "',"
                + POut.Int((int)displayReport.Category) + ","
                + POut.Bool(displayReport.IsHidden) + ","
                + POut.Bool(displayReport.IsVisibleInSubMenu) + ")";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                displayReport.DisplayReportNum = Db.NonQ(command, true, "DisplayReportNum", "displayReport");
            }
            return(displayReport.DisplayReportNum);
        }
        ///<summary>Commit changes that the user might have made to the display name.</summary>
        private void CommitChange()
        {
            DisplayReportCategory selectedCat = (DisplayReportCategory)_selectedGrid.Tag;
            DisplayReport         clicked     = ListDisplayReportAll.Find(x => x.Category == selectedCat && x.ItemOrder == _selectedCell.Y);

            clicked.Description = _selectedGrid.Rows[_selectedCell.Y].Cells[0].Text.Replace(" (hidden)", "");         //Remove (hidden) text
        }
 ///<summary>Returns true if Update(DisplayReport,DisplayReport) would make changes to the database.
 ///Does not make any changes to the database and can be called before remoting role is checked.</summary>
 public static bool UpdateComparison(DisplayReport displayReport, DisplayReport oldDisplayReport)
 {
     if (displayReport.InternalName != oldDisplayReport.InternalName)
     {
         return(true);
     }
     if (displayReport.ItemOrder != oldDisplayReport.ItemOrder)
     {
         return(true);
     }
     if (displayReport.Description != oldDisplayReport.Description)
     {
         return(true);
     }
     if (displayReport.Category != oldDisplayReport.Category)
     {
         return(true);
     }
     if (displayReport.IsHidden != oldDisplayReport.IsHidden)
     {
         return(true);
     }
     if (displayReport.IsVisibleInSubMenu != oldDisplayReport.IsVisibleInSubMenu)
     {
         return(true);
     }
     return(false);
 }
Esempio n. 4
0
 ///<summary>Inserts one DisplayReport into the database.  Returns the new priKey.</summary>
 public static long Insert(DisplayReport displayReport)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         displayReport.DisplayReportNum = DbHelper.GetNextOracleKey("displayreport", "DisplayReportNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(displayReport, true));
             }
             catch (Oracle.ManagedDataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     displayReport.DisplayReportNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(displayReport, false));
     }
 }
        ///<summary>Updates one DisplayReport in the database.</summary>
        public static void Update(DisplayReport displayReport)
        {
            string command = "UPDATE displayreport SET "
                             + "InternalName      = '" + POut.String(displayReport.InternalName) + "', "
                             + "ItemOrder         =  " + POut.Int(displayReport.ItemOrder) + ", "
                             + "Description       = '" + POut.String(displayReport.Description) + "', "
                             + "Category          =  " + POut.Int((int)displayReport.Category) + ", "
                             + "IsHidden          =  " + POut.Bool(displayReport.IsHidden) + ", "
                             + "IsVisibleInSubMenu=  " + POut.Bool(displayReport.IsVisibleInSubMenu) + " "
                             + "WHERE DisplayReportNum = " + POut.Long(displayReport.DisplayReportNum);

            Db.NonQ(command);
        }
Esempio n. 6
0
 ///<summary>Inserts one DisplayReport into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(DisplayReport displayReport)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(displayReport, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             displayReport.DisplayReportNum = DbHelper.GetNextOracleKey("displayreport", "DisplayReportNum");                  //Cacheless method
         }
         return(InsertNoCache(displayReport, true));
     }
 }
Esempio n. 7
0
		///<summary>Called from this form to do OpenReportHelper(...) logic and then close when needed.</summary>
		private void OpenReportLocalHelper(DisplayReport displayReport,List<GroupPermission> listReportPermissions,bool doValidatePerm=true)
		{
			RpNonModalSelection=OpenReportHelper(displayReport,listReportPermissions,doValidatePerm);
			switch(displayReport.InternalName) {
				//Non-modal report windows are handled after closing.
				case DisplayReports.ReportNames.UnfinalizedInsPay:
				case DisplayReports.ReportNames.OutstandingInsClaims:
				case DisplayReports.ReportNames.ClaimsNotSent:
				case DisplayReports.ReportNames.CustomAging:
				case DisplayReports.ReportNames.TreatmentFinder:
				case DisplayReports.ReportNames.WebSchedAppointments:
				case DisplayReports.ReportNames.ReferredProcTracking:
				case DisplayReports.ReportNames.IncompleteProcNotes:
					Close();
				break;
			}
		}
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <DisplayReport> TableToList(DataTable table)
        {
            List <DisplayReport> retVal = new List <DisplayReport>();
            DisplayReport        displayReport;

            foreach (DataRow row in table.Rows)
            {
                displayReport = new DisplayReport();
                displayReport.DisplayReportNum   = PIn.Long(row["DisplayReportNum"].ToString());
                displayReport.InternalName       = PIn.String(row["InternalName"].ToString());
                displayReport.ItemOrder          = PIn.Int(row["ItemOrder"].ToString());
                displayReport.Description        = PIn.String(row["Description"].ToString());
                displayReport.Category           = (OpenDentBusiness.DisplayReportCategory)PIn.Int(row["Category"].ToString());
                displayReport.IsHidden           = PIn.Bool(row["IsHidden"].ToString());
                displayReport.IsVisibleInSubMenu = PIn.Bool(row["IsVisibleInSubMenu"].ToString());
                retVal.Add(displayReport);
            }
            return(retVal);
        }
Esempio n. 9
0
        static void Main(string[] args)
        {
            Station       ats    = new Station();
            DisplayReport report = new DisplayReport();
            Billing       bs     = new Billing(ats);
            List <Port>   port   = new List <Port>();

            port.Add(new Port(ats, "0001"));
            port.Add(new Port(ats, "0002"));
            port.Add(new Port(ats, "0003"));

            Client client1 = new Client("Stieve", "Stieve", 100);
            Client client2 = new Client("Bob", "Bob", 50);
            Client client3 = new Client("Rick", "Rick", 30);

            client1.PropertyChanged += OnBalacneChanged;
            client2.PropertyChanged += OnBalacneChanged;
            client3.PropertyChanged += OnBalacneChanged;

            Contract c1 = new Contract(client1, port[0].PortNumber, Rate.Absolute);
            Contract c2 = new Contract(client2, port[1].PortNumber, Rate.Ultra);
            Contract c3 = new Contract(client3, port[2].PortNumber, Rate.Absolute);

            c1.Client.AddMoney(20);
            c1.Client.RemoveMoney(15);
            var t1 = ats.GetNewTerminal(c1, port[0]);
            var t2 = ats.GetNewTerminal(c2, port[1]);
            var t3 = ats.GetNewTerminal(c3, port[2]);

            t1.ConnectToPort();
            t2.ConnectToPort();
            t3.ConnectToPort();
            t1.Call(t2.PhoneNumber);
            t2.Call(t3.PhoneNumber);
            t2.Call(t2.PhoneNumber);
            t2.Call("54532");
            Console.Write($"\nList of records of the abonent with number: {t2.PhoneNumber}");
            Console.WriteLine();
            report.Display(bs.GetReport(t2.PhoneNumber));
            report.Sort(bs.GetReport(t2.PhoneNumber), TypeOfSorting.ByCostOfTalk);
            report.DisplaySortedCall(report.Sort(bs.GetReport(t2.PhoneNumber), TypeOfSorting.ByCostOfTalk));
        }
Esempio n. 10
0
        private void butDown_Click(object sender, EventArgs e)
        {
            if (_selectedCell.Y == -1 || _selectedGrid == null)
            {
                MsgBox.Show(this, "Please select a report first.");
                return;
            }
            DisplayReportCategory selectedCat    = (DisplayReportCategory)_selectedGrid.Tag;
            DisplayReport         selectedReport = ListDisplayReportAll.Find(x => x.Category == selectedCat && x.ItemOrder == _selectedCell.Y);

            if (selectedReport.ItemOrder == _selectedGrid.Rows.Count - 1)
            {
                return;                 //the item is already the last in the list and cannot go down anymore.
            }
            DisplayReport switchReport = ListDisplayReportAll.Find(x => x.Category == selectedCat && x.ItemOrder == _selectedCell.Y + 1);

            selectedReport.ItemOrder++;
            _selectedCell.Y++;
            switchReport.ItemOrder--;
            FillGrids();
        }
Esempio n. 11
0
        ///<summary>Returns the appropriate user-friendly internal name.</summary>
        private string GetInternalName(DisplayReport displayReport)
        {
            switch (displayReport.InternalName)
            {
            case "ODToday":
                return("Today");

            case "ODYesterday":
                return("Yesterday");

            case "ODThisMonth":
                return("This Month");

            case "ODLastMonth":
                return("Last Month");

            case "ODThisYear":
                return("This Year");

            case "ODMoreOptions":
                return("More Options");

            case "ODProviderPayrollSummary":
                return("Provider Payroll Summary");

            case "ODProviderPayrollDetailed":
                return("Provider Payroll Detailed");

            case "ODAdjustments":
                return("Adjustments");

            case "ODPayments":
                return("Payments");

            case "ODProcedures":
                return("Procedures");

            case "ODWriteoffs":
                return("Writeoffs");

            case DisplayReports.ReportNames.IncompleteProcNotes:
                return("Incomplete Proc Notes");

            case "ODRoutingSlips":
                return("Routing Slips");

            case "ODAgingAR":
                return("Aging AR");

            case DisplayReports.ReportNames.ClaimsNotSent:
                return("Claims Not Sent");

            case "ODCapitation":
                return("Capitation");

            case "ODFinanceCharge":
                return("Finance Charge");

            case DisplayReports.ReportNames.OutstandingInsClaims:
                return("Outstanding Ins Claims");

            case "ODProcsNotBilled":
                return("Procs Not Billed");

            case "ODPPOWriteoffs":
                return("PPO Writeoffs");

            case "ODPaymentPlans":
                return("Payment Plans");

            case "ODReceivablesBreakdown":
                return("Receivables Breakdown");

            case "ODUnearnedIncome":
                return("Unearned Income");

            case "ODInsuranceOverpaid":
                return("Insurance Overpaid");

            case "ODActivePatients":
                return("Active Patients");

            case "ODAppointments":
                return("Appointments");

            case "ODBirthdays":
                return("Birthdays");

            case "ODBrokenAppointments":
                return("Broken Appointments");

            case "ODInsurancePlans":
                return("Insurance Plans");

            case "ODNewPatients":
                return("New Patients");

            case "ODPatientsRaw":
                return("Patients Raw");

            case "ODPatientNotes":
                return("Patient Notes");

            case "ODPrescriptions":
                return("Prescriptions");

            case "ODProcedureCodes":
                return("Procedure Codes");

            case "ODReferralsRaw":
                return("Referrals Raw");

            case "ODReferralAnalysis":
                return("Referral Analysis");

            case DisplayReports.ReportNames.ReferredProcTracking:
                return("Referred Proc Tracking");

            case DisplayReports.ReportNames.TreatmentFinder:
                return("Treatment Finder");

            case "ODRawScreeningData":
                return("Raw Screening Data");

            case "ODRawPopulationData":
                return("Raw Population Data");

            case "ODEligibilityFile":
                return("Eligibility File");

            case "ODEncounterFile":
                return("Encounter File");

            case "ODPresentedTreatmentProd":
                return("Presented Treatment Prod");

            case "ODTreatmentPresentationStats":
                return("Treatment Presentation Stats");

            case "ODNetProdDetailDaily":
                return("Net Prod Detail Daily");

            case "ODDentalSealantMeasure":
                return("Dental Sealant Measure");

            case "ODInsurancePayPlansPastDue":
                return("Insurance Pay Plans Past Due");

            case DisplayReports.ReportNames.UnfinalizedInsPay:
                return("Unfinalized Insurance");

            case DisplayReports.ReportNames.PatPortionUncollected:
                return("Patient Portion Uncollected");

            case DisplayReports.ReportNames.WebSchedAppointments:
                return("Web Sched Appointments");

            case DisplayReports.ReportNames.InsAging:
                return("Insurance Aging Report");

            default:
                return("");
            }
        }
Esempio n. 12
0
        ///<summary>This method is used by all grids in this form. If any new grids are added, they will need to be added to this method.</summary>
        private void grid_CellClick(object sender, ODGridClickEventArgs e)
        {
            if (_selectedCell.Y != -1 && _selectedGrid != null)
            {
                //commit change before the new cell is selected to save the old cell's changes.
                CommitChange();
            }
            _selectedCell.X = e.Col;
            _selectedCell.Y = e.Row;
            _selectedGrid   = (ODGrid)sender;
            //this label makes sure the user always has some idea of what the selected report is, even if the DisplayName might be incomprehensible.
            labelODInternal.Text = GetInternalName((DisplayReport)_selectedGrid.Rows[_selectedCell.Y].Tag);
            DisplayReportCategory selectedCat = (DisplayReportCategory)_selectedGrid.Tag;

            //de-select all but the currently selected grid
            if (selectedCat != DisplayReportCategory.ProdInc)
            {
                gridProdInc.SetSelected(-1, true);
            }
            if (selectedCat != DisplayReportCategory.Daily)
            {
                gridDaily.SetSelected(-1, true);
            }
            if (selectedCat != DisplayReportCategory.Monthly)
            {
                gridMonthly.SetSelected(-1, true);
            }
            if (selectedCat != DisplayReportCategory.Lists)
            {
                gridLists.SetSelected(-1, true);
            }
            if (selectedCat != DisplayReportCategory.PublicHealth)
            {
                gridPublicHealth.SetSelected(-1, true);
            }
            DisplayReport clicked = ListDisplayReportAll.Find(x => x.Category == selectedCat && x.ItemOrder == _selectedCell.Y);

            if (_isPermissionMode)
            {
                if (_selectedCell.X == 1)
                {
                    GroupPermission groupPerm = ListGroupPermissionsForReports.Find(x => x.FKey == clicked.DisplayReportNum && x.UserGroupNum == _listUserGroups[comboUserGroup.SelectedIndex].UserGroupNum);
                    if (groupPerm == null)                   //They don't have perm
                    {
                        groupPerm              = new GroupPermission();
                        groupPerm.NewerDate    = DateTime.MinValue;
                        groupPerm.NewerDays    = 0;
                        groupPerm.PermType     = Permissions.Reports;
                        groupPerm.UserGroupNum = _listUserGroups[comboUserGroup.SelectedIndex].UserGroupNum;
                        groupPerm.FKey         = clicked.DisplayReportNum;
                        ListGroupPermissionsForReports.Add(groupPerm);
                    }
                    else
                    {
                        ListGroupPermissionsForReports.Remove(groupPerm);
                    }
                }
            }
            else
            {
                if (_selectedCell.X == 1)
                {
                    clicked.IsVisibleInSubMenu = !clicked.IsVisibleInSubMenu;
                    if (clicked.IsVisibleInSubMenu)
                    {
                        clicked.IsHidden = false;
                    }
                }
                else if (_selectedCell.X == 2)
                {
                    clicked.IsHidden = !clicked.IsHidden;
                    if (clicked.IsHidden)
                    {
                        clicked.IsVisibleInSubMenu = false;
                    }
                }
            }
            FillGrids();
        }
Esempio n. 13
0
        ///<summary>Updates one DisplayReport in the database.  Uses an old object to compare to, and only alters changed fields.  This prevents collisions and concurrency problems in heavily used tables.  Returns true if an update occurred.</summary>
        public static bool Update(DisplayReport displayReport, DisplayReport oldDisplayReport)
        {
            string command = "";

            if (displayReport.InternalName != oldDisplayReport.InternalName)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "InternalName = '" + POut.String(displayReport.InternalName) + "'";
            }
            if (displayReport.ItemOrder != oldDisplayReport.ItemOrder)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ItemOrder = " + POut.Int(displayReport.ItemOrder) + "";
            }
            if (displayReport.Description != oldDisplayReport.Description)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Description = '" + POut.String(displayReport.Description) + "'";
            }
            if (displayReport.Category != oldDisplayReport.Category)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Category = " + POut.Int((int)displayReport.Category) + "";
            }
            if (displayReport.IsHidden != oldDisplayReport.IsHidden)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "IsHidden = " + POut.Bool(displayReport.IsHidden) + "";
            }
            if (displayReport.IsVisibleInSubMenu != oldDisplayReport.IsVisibleInSubMenu)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "IsVisibleInSubMenu = " + POut.Bool(displayReport.IsVisibleInSubMenu) + "";
            }
            if (command == "")
            {
                return(false);
            }
            command = "UPDATE displayreport SET " + command
                      + " WHERE DisplayReportNum = " + POut.Long(displayReport.DisplayReportNum);
            Db.NonQ(command);
            return(true);
        }
Esempio n. 14
0
 ///<summary>Inserts one DisplayReport into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(DisplayReport displayReport)
 {
     return(InsertNoCache(displayReport, false));
 }
Esempio n. 15
0
		///<summary>Handles form and logic for most given displayReports.
		///Returns ReportNonModalSelection.None if modal report is provided.
		///If non-modal report is provided returns valid(not none) RpNonModalSelection to be handled later, See FormOpenDental.SpecialReportSelectionHelper(...)</summary>
		public static ReportNonModalSelection OpenReportHelper(DisplayReport displayReport,List<GroupPermission> listReportPermissions=null,bool doValidatePerm=true)
		{
			if(doValidatePerm) {
				if(listReportPermissions==null) {
					listReportPermissions=GroupPermissions.GetPermsForReports().Where(x => Security.CurUser.IsInUserGroup(x.UserGroupNum)).ToList();
				}
				if(!listReportPermissions.Exists(x => x.FKey==displayReport.DisplayReportNum)) {
					MsgBox.Show("FormReportsMore","You do not have permission to run this report.");
					return ReportNonModalSelection.None;
				}
			}
			FormRpProdInc FormPI;//Used for multiple reports
			switch(displayReport.InternalName) {
				case "ODToday"://Today
					FormPI=new FormRpProdInc();
					FormPI.DailyMonthlyAnnual="Daily";
					FormPI.DateStart=DateTime.Today;
					FormPI.DateEnd=DateTime.Today;
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report run for today.");
					break;
				case "ODYesterday"://Yesterday
					FormPI=new FormRpProdInc();
					FormPI.DailyMonthlyAnnual="Daily";
					if(DateTime.Today.DayOfWeek==DayOfWeek.Monday) {
						FormPI.DateStart=DateTime.Today.AddDays(-3);
						FormPI.DateEnd=DateTime.Today.AddDays(-3);
					}
					else {
						FormPI.DateStart=DateTime.Today.AddDays(-1);
						FormPI.DateEnd=DateTime.Today.AddDays(-1);
					}
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report run for yesterday.");
					break;
				case "ODThisMonth"://This Month
					FormPI=new FormRpProdInc();
					FormPI.DailyMonthlyAnnual="Monthly";
					FormPI.DateStart=new DateTime(DateTime.Today.Year,DateTime.Today.Month,1);
					FormPI.DateEnd=new DateTime(DateTime.Today.AddMonths(1).Year,DateTime.Today.AddMonths(1).Month,1).AddDays(-1);
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report run for this month.");
					break;
				case "ODLastMonth"://Last Month
					FormPI=new FormRpProdInc();
					FormPI.DailyMonthlyAnnual="Monthly";
					FormPI.DateStart=new DateTime(DateTime.Today.AddMonths(-1).Year,DateTime.Today.AddMonths(-1).Month,1);
					FormPI.DateEnd=new DateTime(DateTime.Today.Year,DateTime.Today.Month,1).AddDays(-1);
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report run for last month.");
					break;
				case "ODThisYear"://This Year
					FormPI=new FormRpProdInc();
					FormPI.DailyMonthlyAnnual="Annual";
					FormPI.DateStart=new DateTime(DateTime.Today.Year,1,1);
					FormPI.DateEnd=new DateTime(DateTime.Today.Year,12,31);
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report run for this year.");
					break;
				case "ODMoreOptions"://More Options
					FormPI=new FormRpProdInc();
					FormPI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Production and Income report 'more options' accessed.");
					break;
				case "ODProviderPayrollSummary":
					FormRpProviderPayroll FormPP=new FormRpProviderPayroll();
					FormPP.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Provier Payroll Summary report run.");
					break;
				case "ODProviderPayrollDetailed":
					FormRpProviderPayroll FormPPD=new FormRpProviderPayroll(true);
					FormPPD.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Provider Payroll Detailed report run.");
					break;
				case "ODAdjustments"://Adjustments
					if(Security.CurUser.ProvNum==0 && !Security.IsAuthorized(Permissions.ReportDailyAllProviders,true)) {
						MsgBox.Show("FormReportsMore","The current user needs to be a provider or have the 'All Providers' permission for Daily reports");
						break;
					}
					FormRpAdjSheet FormAdjSheet=new FormRpAdjSheet();
					FormAdjSheet.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Adjustments report run.");
					break;
				case "ODPayments"://Payments
					if(Security.CurUser.ProvNum==0 && !Security.IsAuthorized(Permissions.ReportDailyAllProviders,true)) {
						MsgBox.Show("FormReportsMore","The current user needs to be a provider or have the 'All Providers' permission for Daily reports");
						break;
					}
					FormRpPaySheet FormPaySheet=new FormRpPaySheet();
					FormPaySheet.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Daily Payments report run.");
					break;
				case "ODProcedures"://Procedures
					if(Security.CurUser.ProvNum==0 && !Security.IsAuthorized(Permissions.ReportDailyAllProviders,true)) {
						MsgBox.Show("FormReportsMore","The current user needs to be a provider or have the 'All Providers' permission for Daily reports");
						break;
					}
					FormRpProcSheet FormProcSheet=new FormRpProcSheet();
					FormProcSheet.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Daily Procedures report run.");
					break;
				case "ODWriteoffs"://Writeoffs
					if(Security.CurUser.ProvNum==0 && !Security.IsAuthorized(Permissions.ReportDailyAllProviders,true)) {
						MsgBox.Show("FormReportsMore","The current user needs to be a provider or have the 'All Providers' permission for Daily reports");
						break;
					}
					FormRpWriteoffSheet FormW=new FormRpWriteoffSheet();
					FormW.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Daily Writeoffs report run.");
					break;
				case DisplayReports.ReportNames.IncompleteProcNotes://Incomplete Procedure Notes
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Daily Procedure Notes report run.");
					return ReportNonModalSelection.IncompleteProcNotes;
				case "ODRoutingSlips"://Routing Slips
					FormRpRouting FormR=new FormRpRouting();
					FormR.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Routing Slips report run.");
					break;
				case "ODNetProdDetailDaily":
					FormRpNetProdDetail FormNetProdDetail=new FormRpNetProdDetail(true);
					FormNetProdDetail.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Daily Net Prod report run.");
					break;
				case DisplayReports.ReportNames.UnfinalizedInsPay:
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Unfinalized Insurance Payment report run.");
					return ReportNonModalSelection.UnfinalizedInsPay;
				case DisplayReports.ReportNames.PatPortionUncollected:
					FormRpPatPortionUncollected FormPPU=new FormRpPatPortionUncollected();
					FormPPU.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Patient Portion Uncollected report run.");
					break;
				case "ODAgingAR"://Aging of Accounts Receivable Report
					FormRpAging FormA=new FormRpAging();
					FormA.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Aging of A/R report run.");
					break;
				case DisplayReports.ReportNames.ClaimsNotSent://Claims Not Sent
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Claims Not Sent report run.");
					return ReportNonModalSelection.UnsentClaim;
				case "ODCapitation"://Capitation Utilization
					FormRpCapitation FormC=new FormRpCapitation();
					FormC.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Capitation report run.");
					break;
				case "ODFinanceCharge"://Finance Charge Report
					FormRpFinanceCharge FormRpFinance=new FormRpFinanceCharge();
					FormRpFinance.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Finance Charges report run.");
					break;
				case DisplayReports.ReportNames.OutstandingInsClaims://Outstanding Insurance Claims
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Outstanding Insurance Claims report run.");
					return ReportNonModalSelection.OutstandingIns;
				case "ODProcsNotBilled"://Procedures Not Billed to Insurance
					FormRpProcNotBilledIns FormProc=new FormRpProcNotBilledIns();
					FormProc.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Procedures not billed to insurance report run.");
					break;
				case "ODPPOWriteoffs"://PPO Writeoffs
					FormRpPPOwriteoffs FormPPO=new FormRpPPOwriteoffs();
					FormPPO.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"PPO Writeoffs report run.");
					break;
				case "ODPaymentPlans"://Payment Plans
					FormRpPayPlans FormPayPlans=new FormRpPayPlans();
					FormPayPlans.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Payment Plans report run.");
					break;
				case "ODReceivablesBreakdown"://Receivable Breakdown
					FormRpReceivablesBreakdown FormRcv = new FormRpReceivablesBreakdown();
					FormRcv.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Receivable Breakdown report run.");
					break;
				case "ODUnearnedIncome"://Unearned Income
					FormRpUnearnedIncome FormU=new FormRpUnearnedIncome();
					FormU.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Unearned Income report run.");
					break;
				case "ODInsuranceOverpaid"://Insurance Overpaid
					FormRpInsOverpaid FormI=new FormRpInsOverpaid();
					FormI.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Insurance Overpaid report run.");
					break;
				case "ODPresentedTreatmentProd"://Treatment Planned Presenter
					FormRpPresentedTreatmentProduction FormPTP=new FormRpPresentedTreatmentProduction();
					FormPTP.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Treatment Plan Presenter report run.");
					break;
				case "ODTreatmentPresentationStats"://Treatment Planned Presenter
					FormRpTreatPlanPresentationStatistics FormTPS = new FormRpTreatPlanPresentationStatistics();
					FormTPS.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Treatment Plan Presented Procedures report run.");
					break;
				case "ODInsurancePayPlansPastDue"://Insurance Payment Plans
					FormRpInsPayPlansPastDue FormIPP = new FormRpInsPayPlansPastDue();
					FormIPP.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Insurance Payment Plan report run.");
					break;
				case DisplayReports.ReportNames.InsAging://Insurance Aging Report
					FormRpInsAging FormIA=new FormRpInsAging();
					FormIA.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Insurance Aging report run");
					break;
				case DisplayReports.ReportNames.CustomAging://Insurance Aging Report
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Custom Aging report run");
					return ReportNonModalSelection.CustomAging;
				case "ODActivePatients"://Active Patients
					FormRpActivePatients FormAP=new FormRpActivePatients();
					FormAP.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Active Patients report run.");
					break;
				case "ODAppointments"://Appointments
					FormRpAppointments FormAppointments=new FormRpAppointments();
					FormAppointments.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Appointments report run.");
					break;
				case "ODBirthdays"://Birthdays
					FormRpBirthday FormB=new FormRpBirthday();
					FormB.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Birthdays report run.");
					break;
				case "ODBrokenAppointments"://Broken Appointments
					FormRpBrokenAppointments FormBroken=new FormRpBrokenAppointments();
					FormBroken.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Broken Appointments report run.");
					break;
				case "ODInsurancePlans"://Insurance Plans
					FormRpInsCo FormInsCo=new FormRpInsCo();
					FormInsCo.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Insurance Plans report run.");
					break;
				case "ODNewPatients"://New Patients
					FormRpNewPatients FormNewPats=new FormRpNewPatients();
					FormNewPats.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"New Patients report run.");
					break;
				case "ODPatientsRaw"://Patients - Raw
					if(!Security.IsAuthorized(Permissions.UserQuery)) {
						break;
					}
					FormRpPatients FormPatients=new FormRpPatients();
					FormPatients.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Patients - Raw report run.");
					break;
				case "ODPatientNotes"://Patient Notes
					if(!Security.IsAuthorized(Permissions.UserQuery)) {
						break;
					}
					FormSearchPatNotes FormSearchPatNotes=new FormSearchPatNotes();
					FormSearchPatNotes.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Patient Notes report run.");
					break;
				case "ODPrescriptions"://Prescriptions
					FormRpPrescriptions FormPrescript=new FormRpPrescriptions();
					FormPrescript.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Rx report run.");
					break;
				case "ODProcedureCodes"://Procedure Codes
					FormRpProcCodes FormProcCodes=new FormRpProcCodes();
					FormProcCodes.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Procedure Codes report run.");
					break;
				case "ODReferralsRaw"://Referrals - Raw
					if(!Security.IsAuthorized(Permissions.UserQuery)) {
						break;
					}
					FormRpReferrals FormReferral=new FormRpReferrals();
					FormReferral.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Referrals - Raw report run.");
					break;
				case "ODReferralAnalysis"://Referral Analysis
					FormRpReferralAnalysis FormRA=new FormRpReferralAnalysis();
					FormRA.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Referral Analysis report run.");
					break;
				case DisplayReports.ReportNames.ReferredProcTracking://Referred Proc Tracking
					FormReferralProcTrack FormRP=new FormReferralProcTrack();
					FormRP.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"ReferredProcTracking report run.");
					break;
				case DisplayReports.ReportNames.TreatmentFinder://Treatment Finder
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Treatment Finder report run.");
					return ReportNonModalSelection.TreatmentFinder;
				case DisplayReports.ReportNames.WebSchedAppointments://Web Sched Appts
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Web Sched Appointments report run.");
					return ReportNonModalSelection.WebSchedAppointments;
				case "ODRawScreeningData"://Raw Screening Data
					if(!Security.IsAuthorized(Permissions.UserQuery)) {
						break;
					}
					FormRpPHRawScreen FormPH=new FormRpPHRawScreen();
					FormPH.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"PH Raw Screening");
					break;
				case "ODRawPopulationData"://Raw Population Data
					if(!Security.IsAuthorized(Permissions.UserQuery)) {
						break;
					}
					FormRpPHRawPop FormPHR=new FormRpPHRawPop();
					FormPHR.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"PH Raw population");
					break;
				case "ODDentalSealantMeasure"://FQHC Dental Sealant Measure
					FormRpDentalSealantMeasure FormDSM=new FormRpDentalSealantMeasure();
					FormDSM.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"FQHC Dental Sealant Measure report run.");
					break;
				case "ODEligibilityFile"://Eligibility File
					FormRpArizonaPrimaryCareEligibility frapce=new FormRpArizonaPrimaryCareEligibility();
					frapce.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Arizona Primary Care Eligibility");
					break;
				case "ODEncounterFile"://Encounter File
					FormRpArizonaPrimaryCareEncounter frapcn=new FormRpArizonaPrimaryCareEncounter();
					frapcn.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Arizona Primary Care Encounter");
					break;
				case "ODDiscountPlan"://Discount Plans
					FormRpDiscountPlan FormDiscountPlan=new FormRpDiscountPlan();
					FormDiscountPlan.ShowDialog();
					SecurityLogs.MakeLogEntry(Permissions.Reports,0,"Discount Plans report run.");
					break;
				default:
					MsgBox.Show("FormReportsMore","Error finding the report");
					break;
			}
			return ReportNonModalSelection.None;
		}