///<summary>Returns the payment type string for the payment.</summary> public static string GetPaymentTypeDesc(Payment payment, List <Def> listPayTypes = null) { if (listPayTypes == null) { listPayTypes = Defs.GetDefsForCategory(DefCat.PaymentTypes); } return(payment.PayType == 0 ? "Income Transfer" : Defs.GetName(DefCat.PaymentTypes, payment.PayType, listPayTypes)); }
///<summary>Construct a payplanproductionentry for an UNATTACHED adjustment (attached adjustments get treated as procedures).</summary> public PayPlanProductionEntry(Adjustment adj, PayPlanLink credit) { ProductionTag = adj; LinkedCredit = credit; ProductionDate = adj.AdjDate; PriKey = adj.AdjNum; ProvNum = adj.ProvNum; ClinicNum = adj.ClinicNum; PatNum = adj.PatNum; AmountOriginal = (decimal)adj.AdjAmt; AmountOverride = (decimal)credit.AmountOverride; AmountRemaining = (AmountOverride == 0)?AmountOriginal:AmountOverride; //Gets set when calculating CreditDate = credit.SecDateTEntry; Description = $"Adjustment - {Defs.GetName(DefCat.AdjTypes,adj.AdjType)}"; LinkType = PayPlanLinkType.Adjustment; }
///<summary></summary> public static DataTable GetForClaim(long claimNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetTable(MethodBase.GetCurrentMethod(), claimNum)); } DataTable table = new DataTable(); DataRow row; table.Columns.Add("amount"); table.Columns.Add("payType"); table.Columns.Add("BankBranch"); table.Columns.Add("ClaimPaymentNum"); table.Columns.Add("checkDate"); table.Columns.Add("CheckNum"); table.Columns.Add("Note"); List <DataRow> rows = new List <DataRow>(); string command = "SELECT BankBranch,claimpayment.ClaimPaymentNum,CheckNum,CheckDate," + "SUM(claimproc.InsPayAmt) amount,Note,PayType " + "FROM claimpayment,claimproc " + "WHERE claimpayment.ClaimPaymentNum = claimproc.ClaimPaymentNum " + "AND claimproc.ClaimNum = '" + POut.Long(claimNum) + "' " + "GROUP BY claimpayment.ClaimPaymentNum, BankBranch, CheckDate, CheckNum, Note, PayType"; DataTable rawT = Db.GetTable(command); DateTime date; for (int i = 0; i < rawT.Rows.Count; i++) { row = table.NewRow(); row["amount"] = PIn.Double(rawT.Rows[i]["amount"].ToString()).ToString("F"); row["payType"] = Defs.GetName(DefCat.InsurancePaymentType, PIn.Long(rawT.Rows[i]["PayType"].ToString())); row["BankBranch"] = rawT.Rows[i]["BankBranch"].ToString(); row["ClaimPaymentNum"] = rawT.Rows[i]["ClaimPaymentNum"].ToString(); date = PIn.Date(rawT.Rows[i]["CheckDate"].ToString()); row["checkDate"] = date.ToShortDateString(); row["CheckNum"] = rawT.Rows[i]["CheckNum"].ToString(); row["Note"] = rawT.Rows[i]["Note"].ToString(); rows.Add(row); } for (int i = 0; i < rows.Count; i++) { table.Rows.Add(rows[i]); } return(table); }
public static JobLog MakeLogEntryForPriority(Job jobNew, Job jobOld) { string note = "Job Priority was changed from " + Defs.GetName(DefCat.JobPriorities, jobOld.Priority) + " to " + Defs.GetName(DefCat.JobPriorities, jobNew.Priority) + "."; JobLog jobLog = new JobLog() { JobNum = jobOld.JobNum, UserNumChanged = Security.CurUser.UserNum, UserNumExpert = jobOld.UserNumExpert, UserNumEngineer = jobOld.UserNumEngineer, Title = jobOld.Title, Description = note, TimeEstimate = TimeSpan.FromHours(jobNew.HoursEstimate) }; JobLogs.Insert(jobLog); JobNotifications.UpsertAllNotifications(jobNew, Security.CurUser.UserNum, JobNotificationChanges.PriorityChange); return(JobLogs.GetOne(jobLog.JobLogNum)); //to get new timestamp. }
///<summary>Update Appointment.Confirmed. Returns true if update was allowed. Returns false if it was prevented.</summary> public static bool UpdateAppointmentConfirmationStatus(long aptNum, long confirmDefNum, string commaListOfExcludedDefNums) { Appointment aptCur = Appointments.GetOneApt(aptNum); if (aptCur == null) { return(false); } List <long> preventChangeFrom = commaListOfExcludedDefNums.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(long.Parse).ToList(); if (preventChangeFrom.Contains(aptCur.Confirmed)) //This appointment is in a confirmation state that can no longer be updated. { return(false); } //Keep the update small. Appointment aptOld = aptCur.Copy(); aptCur.Confirmed = confirmDefNum; Appointments.Update(aptCur, aptOld); //Appointments S-Class handles Signalods SecurityLogs.MakeLogEntry(Permissions.ApptConfirmStatusEdit, aptCur.PatNum, "Appointment confirmation status changed from " + Defs.GetName(DefCat.ApptConfirmed, aptOld.Confirmed) + " to " + Defs.GetName(DefCat.ApptConfirmed, aptCur.Confirmed) + " due to an eConfirmation.", aptCur.AptNum, LogSources.AutoConfirmations, aptOld.DateTStamp); return(true); }
///<summary>For orderBy, use 0 for BillingType and 1 for PatientName.</summary> public static DataTable GetBilling(bool isSent, int orderBy, DateTime dateFrom, DateTime dateTo, List <long> clinicNums) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetTable(MethodBase.GetCurrentMethod(), isSent, orderBy, dateFrom, dateTo, clinicNums)); } DataTable table = new DataTable(); DataRow row; //columns that start with lowercase are altered for display rather than being raw data. table.Columns.Add("amountDue"); table.Columns.Add("balTotal"); table.Columns.Add("billingType"); table.Columns.Add("insEst"); table.Columns.Add("IsSent"); table.Columns.Add("lastStatement"); table.Columns.Add("mode"); table.Columns.Add("name"); table.Columns.Add("PatNum"); table.Columns.Add("payPlanDue"); table.Columns.Add("StatementNum"); table.Columns.Add("SuperFamily"); table.Columns.Add("ClinicNum"); string command = "SELECT guar.BalTotal,patient.BillingType,patient.FName,guar.InsEst,statement.IsSent," + "IFNULL(MAX(s2.DateSent)," + POut.Date(DateTime.MinValue) + ") LastStatement," + "patient.LName,patient.MiddleI,statement.Mode_,guar.PayPlanDue,patient.Preferred," + "statement.PatNum,statement.StatementNum,statement.SuperFamily,patient.ClinicNum " + "FROM statement " + "LEFT JOIN patient ON statement.PatNum=patient.PatNum " + "LEFT JOIN patient guar ON guar.PatNum=patient.Guarantor " + "LEFT JOIN statement s2 ON s2.PatNum=patient.PatNum " + "AND s2.IsSent=1 "; if (PrefC.GetBool(PrefName.BillingIgnoreInPerson)) { command += "AND s2.Mode_ !=1 "; } if (orderBy == 0) //BillingType { command += "LEFT JOIN definition ON patient.BillingType=definition.DefNum "; } command += "WHERE statement.IsSent=" + POut.Bool(isSent) + " "; //if(dateFrom.Year>1800){ command += "AND statement.DateSent>=" + POut.Date(dateFrom) + " "; //greater than midnight this morning //} //if(dateFrom.Year>1800){ command += "AND statement.DateSent<" + POut.Date(dateTo.AddDays(1)) + " "; //less than midnight tonight //} if (clinicNums.Count > 0) { command += "AND patient.ClinicNum IN (" + string.Join(",", clinicNums) + ") "; } command += "GROUP BY guar.BalTotal,patient.BillingType,patient.FName,guar.InsEst,statement.IsSent," + "patient.LName,patient.MiddleI,statement.Mode_,guar.PayPlanDue,patient.Preferred," + "statement.PatNum,statement.StatementNum,statement.SuperFamily "; if (orderBy == 0) //BillingType { command += "ORDER BY definition.ItemOrder,patient.LName,patient.FName,patient.MiddleI,guar.PayPlanDue"; } else { command += "ORDER BY patient.LName,patient.FName"; } DataTable rawTable = Db.GetTable(command); double balTotal; double insEst; double payPlanDue; DateTime lastStatement; List <Patient> listFamilyGuarantors; foreach (DataRow rawRow in rawTable.Rows) { row = table.NewRow(); if (rawRow["SuperFamily"].ToString() == "0") //not a super statement, just get bal info from guarantor { balTotal = PIn.Double(rawRow["BalTotal"].ToString()); insEst = PIn.Double(rawRow["InsEst"].ToString()); payPlanDue = PIn.Double(rawRow["PayPlanDue"].ToString()); } else //super statement, add all guar positive balances to get bal total for super family { listFamilyGuarantors = Patients.GetSuperFamilyGuarantors(PIn.Long(rawRow["SuperFamily"].ToString())).FindAll(x => x.HasSuperBilling); //exclude fams with neg balances in the total for super family stmts (per Nathan 5/25/2016) if (PrefC.GetBool(PrefName.BalancesDontSubtractIns)) { listFamilyGuarantors = listFamilyGuarantors.FindAll(x => x.BalTotal > 0); insEst = 0; } else { listFamilyGuarantors = listFamilyGuarantors.FindAll(x => (x.BalTotal - x.InsEst) > 0); insEst = listFamilyGuarantors.Sum(x => x.InsEst); } balTotal = listFamilyGuarantors.Sum(x => x.BalTotal); payPlanDue = listFamilyGuarantors.Sum(x => x.PayPlanDue); } row["amountDue"] = (balTotal - insEst).ToString("F"); row["balTotal"] = balTotal.ToString("F");; row["billingType"] = Defs.GetName(DefCat.BillingTypes, PIn.Long(rawRow["BillingType"].ToString())); if (insEst == 0) { row["insEst"] = ""; } else { row["insEst"] = insEst.ToString("F"); } row["IsSent"] = rawRow["IsSent"].ToString(); lastStatement = PIn.Date(rawRow["LastStatement"].ToString()); if (lastStatement.Year < 1880) { row["lastStatement"] = ""; } else { row["lastStatement"] = lastStatement.ToShortDateString(); } row["mode"] = Lans.g("enumStatementMode", ((StatementMode)PIn.Int(rawRow["Mode_"].ToString())).ToString()); row["name"] = Patients.GetNameLF(rawRow["LName"].ToString(), rawRow["FName"].ToString(), rawRow["Preferred"].ToString(), rawRow["MiddleI"].ToString()); row["PatNum"] = rawRow["PatNum"].ToString(); if (payPlanDue == 0) { row["payPlanDue"] = ""; } else { row["payPlanDue"] = payPlanDue.ToString("F"); } row["StatementNum"] = rawRow["StatementNum"].ToString(); row["SuperFamily"] = rawRow["SuperFamily"].ToString(); row["ClinicNum"] = rawRow["ClinicNum"].ToString(); table.Rows.Add(row); } return(table); }
public static DataTable GetPatientFormsTable(long patNum) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetTable(MethodBase.GetCurrentMethod(), patNum)); } //DataConnection dcon=new DataConnection(); DataTable table = new DataTable(""); DataRow row; //columns that start with lowercase are altered for display rather than being raw data. table.Columns.Add("date"); table.Columns.Add("dateOnly", typeof(DateTime)); //to help with sorting table.Columns.Add("dateTime", typeof(DateTime)); table.Columns.Add("description"); table.Columns.Add("DocNum"); table.Columns.Add("imageCat"); table.Columns.Add("SheetNum"); table.Columns.Add("showInTerminal"); table.Columns.Add("time"); table.Columns.Add("timeOnly", typeof(TimeSpan)); //to help with sorting //but we won't actually fill this table with rows until the very end. It's more useful to use a List<> for now. List <DataRow> rows = new List <DataRow>(); //sheet--------------------------------------------------------------------------------------- string command = "SELECT DateTimeSheet,SheetNum,Description,ShowInTerminal " + "FROM sheet WHERE IsDeleted=0 " + "AND PatNum =" + POut.Long(patNum) + " " + "AND (SheetType=" + POut.Long((int)SheetTypeEnum.PatientForm) + " OR SheetType=" + POut.Long((int)SheetTypeEnum.MedicalHistory); if (PrefC.GetBool(PrefName.PatientFormsShowConsent)) { command += " OR SheetType=" + POut.Long((int)SheetTypeEnum.Consent); //Show consent forms if pref is true. } command += ")"; //+"ORDER BY ShowInTerminal";//DATE(DateTimeSheet),ShowInTerminal,TIME(DateTimeSheet)"; DataTable rawSheet = Db.GetTable(command); DateTime dateT; for (int i = 0; i < rawSheet.Rows.Count; i++) { row = table.NewRow(); dateT = PIn.DateT(rawSheet.Rows[i]["DateTimeSheet"].ToString()); row["date"] = dateT.ToShortDateString(); row["dateOnly"] = dateT.Date; row["dateTime"] = dateT; row["description"] = rawSheet.Rows[i]["Description"].ToString(); row["DocNum"] = "0"; row["imageCat"] = ""; row["SheetNum"] = rawSheet.Rows[i]["SheetNum"].ToString(); if (rawSheet.Rows[i]["ShowInTerminal"].ToString() == "0") { row["showInTerminal"] = ""; } else { row["showInTerminal"] = rawSheet.Rows[i]["ShowInTerminal"].ToString(); } if (dateT.TimeOfDay != TimeSpan.Zero) { row["time"] = dateT.ToString("h:mm") + dateT.ToString("%t").ToLower(); } row["timeOnly"] = dateT.TimeOfDay; rows.Add(row); } //document--------------------------------------------------------------------------------------- command = "SELECT DateCreated,DocCategory,DocNum,Description " + "FROM document,definition " + "WHERE document.DocCategory=definition.DefNum" + " AND PatNum =" + POut.Long(patNum) + " AND definition.ItemValue LIKE '%F%'"; //+" ORDER BY DateCreated"; DataTable rawDoc = Db.GetTable(command); long docCat; for (int i = 0; i < rawDoc.Rows.Count; i++) { row = table.NewRow(); dateT = PIn.DateT(rawDoc.Rows[i]["DateCreated"].ToString()); row["date"] = dateT.ToShortDateString(); row["dateOnly"] = dateT.Date; row["dateTime"] = dateT; row["description"] = rawDoc.Rows[i]["Description"].ToString(); row["DocNum"] = rawDoc.Rows[i]["DocNum"].ToString(); docCat = PIn.Long(rawDoc.Rows[i]["DocCategory"].ToString()); row["imageCat"] = Defs.GetName(DefCat.ImageCats, docCat); row["SheetNum"] = "0"; row["showInTerminal"] = ""; if (dateT.TimeOfDay != TimeSpan.Zero) { row["time"] = dateT.ToString("h:mm") + dateT.ToString("%t").ToLower(); } row["timeOnly"] = dateT.TimeOfDay; rows.Add(row); } //Sorting for (int i = 0; i < rows.Count; i++) { table.Rows.Add(rows[i]); } DataView view = table.DefaultView; view.Sort = "dateOnly,showInTerminal,timeOnly"; table = view.ToTable(); return(table); }
///<summary>Used when printing or emailing recall to make a commlog entry without any display. ///Set commSource to the corresponding entity that is making this recall. E.g. Web Sched. ///If the commSource is a 3rd party, set it to ProgramLink and make an overload that accepts the ProgramNum.</summary> public static Commlog InsertForRecall(long patNum, CommItemMode _mode, int numberOfReminders, long defNumNewStatus, CommItemSource commSource, long userNum, DateTime dateTimeNow) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <Commlog>(MethodBase.GetCurrentMethod(), patNum, _mode, numberOfReminders, defNumNewStatus, commSource, userNum, dateTimeNow)); } long recallType = Commlogs.GetTypeAuto(CommItemTypeAuto.RECALL); string command; string datesql = "CURDATE()"; if (DataConnection.DBtype == DatabaseType.Oracle) { datesql = "(SELECT CURRENT_DATE FROM dual)"; } if (recallType != 0) { command = "SELECT * FROM commlog WHERE "; command += DbHelper.DtimeToDate("CommDateTime") + " = " + datesql; command += " AND PatNum=" + POut.Long(patNum) + " AND CommType=" + POut.Long(recallType) + " AND Mode_=" + POut.Long((int)_mode) + " AND SentOrReceived=1"; List <Commlog> listComms = Crud.CommlogCrud.SelectMany(command).OrderByDescending(x => x.CommDateTime).ToList(); if (listComms.Count > 0) { return(listComms[0]); } } Commlog com = new Commlog(); com.PatNum = patNum; com.CommDateTime = dateTimeNow; com.CommType = recallType; com.Mode_ = _mode; com.SentOrReceived = CommSentOrReceived.Sent; com.Note = ""; if (numberOfReminders == 0) { com.Note = Lans.g("FormRecallList", "Recall reminder."); } else if (numberOfReminders == 1) { com.Note = Lans.g("FormRecallList", "Second recall reminder."); } else if (numberOfReminders == 2) { com.Note = Lans.g("FormRecallList", "Third recall reminder."); } else { com.Note = Lans.g("FormRecallList", "Recall reminder:") + " " + (numberOfReminders + 1).ToString(); } if (defNumNewStatus == 0) { com.Note += " " + Lans.g("Commlogs", "Status None"); } else { com.Note += " " + Defs.GetName(DefCat.RecallUnschedStatus, defNumNewStatus); } com.UserNum = userNum; com.CommSource = commSource; com.CommlogNum = Insert(com); EhrMeasureEvent newMeasureEvent = new EhrMeasureEvent(); newMeasureEvent.DateTEvent = com.CommDateTime; newMeasureEvent.EventType = EhrMeasureEventType.ReminderSent; newMeasureEvent.PatNum = com.PatNum; newMeasureEvent.MoreInfo = com.Note; EhrMeasureEvents.Insert(newMeasureEvent); return(com); }