///<summary>Adds procedures to the appointment.</summary> ///<returns>First item of tuple is the newly added procedures. Second item is all procedures for the appointment.</returns> public static ODTuple <List <Procedure>, List <Procedure> > QuickAddProcs(Appointment apt, Patient pat, List <string> listCodesToAdd, long provNum, long provHyg, List <InsSub> SubList, List <InsPlan> listInsPlans, List <PatPlan> listPatPlans, List <Benefit> listBenefits) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <ODTuple <List <Procedure>, List <Procedure> > >(MethodBase.GetCurrentMethod(), apt, pat, listCodesToAdd, provNum, provHyg, SubList, listInsPlans, listPatPlans, listBenefits)); } Procedures.SetDateFirstVisit(apt.AptDateTime.Date, 1, pat); List <ClaimProc> ClaimProcList = ClaimProcs.Refresh(apt.PatNum); List <Procedure> listAddedProcs = new List <Procedure>(); foreach (string code in listCodesToAdd) { Procedure proc = new Procedure(); proc.PatNum = apt.PatNum; ProcedureCode procCodeCur = ProcedureCodes.GetProcCode(code); proc.CodeNum = procCodeCur.CodeNum; proc.ProcDate = apt.AptDateTime.Date; proc.DateTP = DateTime.Today; #region ProvNum proc.ProvNum = provNum; if (procCodeCur.ProvNumDefault != 0) //Override provider for procedures with a default provider //This provider might be restricted to a different clinic than this user. { proc.ProvNum = procCodeCur.ProvNumDefault; } else if (procCodeCur.IsHygiene && provHyg != 0) { proc.ProvNum = provHyg; } #endregion ProvNum proc.ClinicNum = apt.ClinicNum; proc.MedicalCode = procCodeCur.MedicalCode; proc.ProcFee = Procedures.GetProcFee(pat, listPatPlans, SubList, listInsPlans, proc.CodeNum, proc.ProvNum, proc.ClinicNum, proc.MedicalCode); proc.ProcStatus = ProcStat.TP; proc.SiteNum = pat.SiteNum; proc.RevCode = procCodeCur.RevenueCodeDefault; proc.BaseUnits = procCodeCur.BaseUnits; proc.DiagnosticCode = PrefC.GetString(PrefName.ICD9DefaultForNewProcs); proc.PlaceService = (PlaceOfService)PrefC.GetInt(PrefName.DefaultProcedurePlaceService); //Default Proc Place of Service for the Practice is used. if (Userods.IsUserCpoe(Security.CurUser)) { //This procedure is considered CPOE because the provider is the one that has added it. proc.IsCpoe = true; } proc.Note = ProcCodeNotes.GetNote(proc.ProvNum, proc.CodeNum, proc.ProcStatus); Procedures.Insert(proc); //recall synch not required Procedures.ComputeEstimates(proc, pat.PatNum, ClaimProcList, false, listInsPlans, listPatPlans, listBenefits, pat.Age, SubList); listAddedProcs.Add(proc); } return(new ODTuple <List <Procedure>, List <Procedure> >(listAddedProcs, Procedures.GetProcsForApptEdit(apt))); }
///<summary>Returns a list of AlertItems for the given clinicNum. Doesn't include alerts that are assigned to other users.</summary> public static List <AlertItem> RefreshForClinicAndTypes(long clinicNum, List <AlertType> listAlertTypes = null) { if (RemotingClient.RemotingRole == RemotingRole.ClientWeb) { return(Meth.GetObject <List <AlertItem> >(MethodBase.GetCurrentMethod(), clinicNum, listAlertTypes)); } if (listAlertTypes == null || listAlertTypes.Count == 0) { return(new List <AlertItem>()); } long provNum = 0; if (Security.CurUser != null && Userods.IsUserCpoe(Security.CurUser)) { provNum = Security.CurUser.ProvNum; } long curUserNum = 0; if (Security.CurUser != null) { curUserNum = Security.CurUser.UserNum; } string command = ""; if (DataConnection.DBtype == DatabaseType.MySql) { command = "SELECT * FROM alertitem " + "WHERE Type IN (" + String.Join(",", listAlertTypes.Cast <int>().ToList()) + ") " + "AND (UserNum=0 OR UserNum=" + POut.Long(curUserNum) + ") " //For AlertType.RadiologyProcedures we only care if the alert is associated to the current logged in provider. //When provNum is 0 the initial WHEN check below will not bring any rows by definition of the FKey column. + "AND (CASE TYPE WHEN " + POut.Int((int)AlertType.RadiologyProcedures) + " THEN FKey=" + POut.Long(provNum) + " " + "ELSE ClinicNum = " + POut.Long(clinicNum) + " OR ClinicNum=-1 END)"; } else //oracle //Case statements cannot change column return results unless they are within the SELECT case. { command = "SELECT AlertItemNum,CASE Type WHEN 3 THEN ClinicNum ELSE 0 END ClinicNum,Description,Type,Severity,Actions,FormToOpen,CASE Type WHEN 3 THEN 0 ELSE FKey END FKey,ItemValue " + "FROM alertitem " + "WHERE Type IN (" + String.Join(",", listAlertTypes.Cast <int>().ToList()) + ") "; } return(Crud.AlertItemCrud.SelectMany(command)); }