Пример #1
0
        ///<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)));
        }
Пример #2
0
        ///<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));
        }