Ejemplo n.º 1
0
 ///<summary>Returns true if Update(ClaimTracking,ClaimTracking) 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(ClaimTracking claimTracking, ClaimTracking oldClaimTracking)
 {
     if (claimTracking.ClaimNum != oldClaimTracking.ClaimNum)
     {
         return(true);
     }
     if (claimTracking.TrackingType != oldClaimTracking.TrackingType)
     {
         return(true);
     }
     if (claimTracking.UserNum != oldClaimTracking.UserNum)
     {
         return(true);
     }
     //DateTimeEntry can only be set by MySQL
     if (claimTracking.Note != oldClaimTracking.Note)
     {
         return(true);
     }
     if (claimTracking.TrackingDefNum != oldClaimTracking.TrackingDefNum)
     {
         return(true);
     }
     if (claimTracking.TrackingErrorDefNum != oldClaimTracking.TrackingErrorDefNum)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 2
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <ClaimTracking> TableToList(DataTable table)
        {
            List <ClaimTracking> retVal = new List <ClaimTracking>();
            ClaimTracking        claimTracking;

            foreach (DataRow row in table.Rows)
            {
                claimTracking = new ClaimTracking();
                claimTracking.ClaimTrackingNum = PIn.Long(row["ClaimTrackingNum"].ToString());
                claimTracking.ClaimNum         = PIn.Long(row["ClaimNum"].ToString());
                string trackingType = row["TrackingType"].ToString();
                if (trackingType == "")
                {
                    claimTracking.TrackingType = (ClaimTrackingType)0;
                }
                else
                {
                    try{
                        claimTracking.TrackingType = (ClaimTrackingType)Enum.Parse(typeof(ClaimTrackingType), trackingType);
                    }
                    catch {
                        claimTracking.TrackingType = (ClaimTrackingType)0;
                    }
                }
                claimTracking.UserNum             = PIn.Long(row["UserNum"].ToString());
                claimTracking.DateTimeEntry       = PIn.DateT(row["DateTimeEntry"].ToString());
                claimTracking.Note                = PIn.String(row["Note"].ToString());
                claimTracking.TrackingDefNum      = PIn.Long(row["TrackingDefNum"].ToString());
                claimTracking.TrackingErrorDefNum = PIn.Long(row["TrackingErrorDefNum"].ToString());
                retVal.Add(claimTracking);
            }
            return(retVal);
        }
        private void FillComboErrorCode()
        {
            Def[] arrayErrorCodeDefs = Defs.GetDefsForCategory(DefCat.ClaimErrorCode, true).ToArray();
            comboErrorCode.Items.Clear();
            //Add "none" option.
            comboErrorCode.Items.Add(new ODBoxItem <Def>(Lan.g(this, "None"), new Def()
            {
                ItemValue = "", DefNum = 0
            }));
            comboErrorCode.SelectedIndex = 0;
            if (arrayErrorCodeDefs.Length == 0)
            {
                //if the list is empty, then disable the comboBox.
                comboErrorCode.Enabled = false;
                return;
            }
            //Fill comboErrorCode.
            ClaimTracking claimTrack = ListNewClaimTracks.FirstOrDefault();

            for (int i = 0; i < arrayErrorCodeDefs.Length; i++)
            {
                //hooray for using new ODBoxItems!
                comboErrorCode.Items.Add(new ODBoxItem <Def>(arrayErrorCodeDefs[i].ItemName, arrayErrorCodeDefs[i]));
                if (claimTrack?.TrackingErrorDefNum == arrayErrorCodeDefs[i].DefNum)
                {
                    comboErrorCode.SelectedIndex = i + 1;                //adding 1 to the index because we have added a 'none' option above
                }
            }
        }
Ejemplo n.º 4
0
 ///<summary>Inserts one ClaimTracking into the database.  Returns the new priKey.</summary>
 public static long Insert(ClaimTracking claimTracking)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         claimTracking.ClaimTrackingNum = DbHelper.GetNextOracleKey("claimtracking", "ClaimTrackingNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(claimTracking, true));
             }
             catch (Oracle.ManagedDataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     claimTracking.ClaimTrackingNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(claimTracking, false));
     }
 }
Ejemplo n.º 5
0
        private void FormClaimCustomTrackingUpdate_Load(object sender, EventArgs e)
        {
            if (!PrefC.GetBool(PrefName.ClaimTrackingStatusExcludesNone))
            {
                //None is allowed as an option
                comboCustomTracking.Items.AddDefNone();
                comboCustomTracking.SelectedIndex = 0;
            }
            comboCustomTracking.Items.AddDefs(Defs.GetDefsForCategory(DefCat.ClaimCustomTracking, true));
            ClaimTracking claimTrack = ListNewClaimTracks.FirstOrDefault();

            if (claimTrack == null)          //Creating a new ClaimTracking
            {
                comboCustomTracking.SelectedIndex = 0;
            }
            else
            {
                comboCustomTracking.SetSelectedDefNum(claimTrack.TrackingDefNum);
                //An existing ClaimTracking could still have a TrackingDefNum of 0='None'.
                //Even if the new pref blocks "None" from showing.
                //In that case, the setter above, will show "None", but selectedIndex will be -1,
                //preventing user from saving down below.
            }
            textNotes.Text = claimTrack?.Note ?? "";
            FillComboErrorCode();
        }
 ///<summary>Used for editing a ClaimTracking object from FormClaimEdit.</summary>
 public FormClaimCustomTrackingUpdate(Claim claimCur, ClaimTracking claimTrack)
 {
     InitializeComponent();
     Lan.F(this);
     _listClaims = new List <Claim>()
     {
         claimCur
     };
     ListNewClaimTracks = new List <ClaimTracking>()
     {
         claimTrack
     };
 }
Ejemplo n.º 7
0
        private void butUpdate_Click(object sender, EventArgs e)
        {
            if (comboCustomTracking.SelectedIndex == -1)
            {
                //Defaults to -1 when editing and old ClaimTracking where TrackingDefNum is 0 ('None') and ClaimTrackingStatusExcludesNone is true.
                MsgBox.Show(this, "You must specify a Custom Track Status.");
                return;
            }
            if (PrefC.GetBool(PrefName.ClaimTrackingRequiresError) &&
                ((ODBoxItem <Def>)comboErrorCode.SelectedItem).Tag == null &&
                comboErrorCode.Enabled)
            {
                MsgBox.Show(this, "You must specify an error code.");                //Do they have to specify an error code even if they set the status to None?
                return;
            }
            if (comboCustomTracking.GetSelectedDefNum() == 0)
            {
                if (!MsgBox.Show(this, MsgBoxButtons.OKCancel, "Setting the status to none will disable filtering in the Outstanding Claims Report."
                                 + "  Do you wish to set the status of this claim to none?"))
                {
                    return;
                }
            }
            Def errorCodeDef = ((ODBoxItem <Def>)comboErrorCode.SelectedItem).Tag;

            for (int i = 0; i < _listClaims.Count; i++)        //when not called from FormRpOutstandingIns, this should only have one claim.
            {
                _listClaims[i].CustomTracking = comboCustomTracking.GetSelectedDefNum();
                Claims.Update(_listClaims[i]);
                ClaimTracking trackCur = ListNewClaimTracks[i];
                if (trackCur == null)
                {
                    trackCur          = new ClaimTracking();
                    trackCur.ClaimNum = _listClaims[i].ClaimNum;
                }
                trackCur.Note                = textNotes.Text;
                trackCur.TrackingDefNum      = comboCustomTracking.GetSelectedDefNum();
                trackCur.TrackingErrorDefNum = errorCodeDef.DefNum;
                trackCur.UserNum             = Security.CurUser.UserNum;
                if (trackCur.ClaimTrackingNum == 0)                //new claim tracking status.
                {
                    ClaimTrackings.Insert(trackCur);
                }
                else                   //existing claim tracking status
                {
                    ClaimTrackings.Update(trackCur);
                }
                ListNewClaimTracks[i] = trackCur;              //Update list.
            }
            DialogResult = DialogResult.OK;
        }
Ejemplo n.º 8
0
 ///<summary>Inserts one ClaimTracking into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(ClaimTracking claimTracking)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(claimTracking, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             claimTracking.ClaimTrackingNum = DbHelper.GetNextOracleKey("claimtracking", "ClaimTrackingNum");                  //Cacheless method
         }
         return(InsertNoCache(claimTracking, true));
     }
 }
Ejemplo n.º 9
0
        ///<summary>Inserts one ClaimTracking into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(ClaimTracking claimTracking, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO claimtracking (";

            if (!useExistingPK && isRandomKeys)
            {
                claimTracking.ClaimTrackingNum = ReplicationServers.GetKeyNoCache("claimtracking", "ClaimTrackingNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "ClaimTrackingNum,";
            }
            command += "ClaimNum,TrackingType,UserNum,Note,TrackingDefNum,TrackingErrorDefNum) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(claimTracking.ClaimTrackingNum) + ",";
            }
            command +=
                POut.Long(claimTracking.ClaimNum) + ","
                + "'" + POut.String(claimTracking.TrackingType.ToString()) + "',"
                + POut.Long(claimTracking.UserNum) + ","
                //DateTimeEntry can only be set by MySQL
                + DbHelper.ParamChar + "paramNote,"
                + POut.Long(claimTracking.TrackingDefNum) + ","
                + POut.Long(claimTracking.TrackingErrorDefNum) + ")";
            if (claimTracking.Note == null)
            {
                claimTracking.Note = "";
            }
            OdSqlParameter paramNote = new OdSqlParameter("paramNote", OdDbType.Text, POut.StringParam(claimTracking.Note));

            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command, paramNote);
            }
            else
            {
                claimTracking.ClaimTrackingNum = Db.NonQ(command, true, "ClaimTrackingNum", "claimTracking", paramNote);
            }
            return(claimTracking.ClaimTrackingNum);
        }
Ejemplo n.º 10
0
        ///<summary>Updates one ClaimTracking in the database.</summary>
        public static void Update(ClaimTracking claimTracking)
        {
            string command = "UPDATE claimtracking SET "
                             + "ClaimNum           =  " + POut.Long(claimTracking.ClaimNum) + ", "
                             + "TrackingType       = '" + POut.String(claimTracking.TrackingType.ToString()) + "', "
                             + "UserNum            =  " + POut.Long(claimTracking.UserNum) + ", "
                             //DateTimeEntry can only be set by MySQL
                             + "Note               =  " + DbHelper.ParamChar + "paramNote, "
                             + "TrackingDefNum     =  " + POut.Long(claimTracking.TrackingDefNum) + ", "
                             + "TrackingErrorDefNum=  " + POut.Long(claimTracking.TrackingErrorDefNum) + " "
                             + "WHERE ClaimTrackingNum = " + POut.Long(claimTracking.ClaimTrackingNum);

            if (claimTracking.Note == null)
            {
                claimTracking.Note = "";
            }
            OdSqlParameter paramNote = new OdSqlParameter("paramNote", OdDbType.Text, POut.StringParam(claimTracking.Note));

            Db.NonQ(command, paramNote);
        }
        private void FormClaimCustomTrackingUpdate_Load(object sender, EventArgs e)
        {
            comboCustomTracking.Items.Clear();
            comboCustomTracking.Items.Add(new ODBoxItem <Def>(Lan.g(this, "None"), new Def()
            {
                ItemValue = "", DefNum = 0
            }));
            comboCustomTracking.SelectedIndex = 0;
            Def[]         arrayCustomTrackingDefs = Defs.GetDefsForCategory(DefCat.ClaimCustomTracking, true).ToArray();
            ClaimTracking claimTrack = ListNewClaimTracks.FirstOrDefault();

            for (int i = 0; i < arrayCustomTrackingDefs.Length; i++)
            {
                comboCustomTracking.Items.Add(new ODBoxItem <Def>(arrayCustomTrackingDefs[i].ItemName, arrayCustomTrackingDefs[i]));
                if (claimTrack?.TrackingDefNum == arrayCustomTrackingDefs[i].DefNum)
                {
                    comboCustomTracking.SelectedIndex = i + 1;                //adding 1 to the index because we have added a 'none' option above
                }
            }
            textNotes.Text = claimTrack?.Note ?? "";
            FillComboErrorCode();
        }
Ejemplo n.º 12
0
        ///<summary>Gets all unsent claims in the database between the user entered date range and with the appropriate user selected filters.</summary>
        private void FillGrid()
        {
            if (!ValidateFilters())
            {
                return;
            }
            List <long> listClinicNums = GetSelectedClinicNums();
            DataTable   table          = RpClaimNotSent.GetClaimsNotSent(_startDate, _endDate, listClinicNums, false
                                                                         , (ClaimNotSentStatuses)comboBoxInsFilter.SelectedItem);//this query can get slow with a large number of clinics (like NADG)

            gridMain.BeginUpdate();
            gridMain.Columns.Clear();
            ODGridColumn col;

            if (PrefC.HasClinicsEnabled)
            {
                col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Clinic"), 90);
                gridMain.Columns.Add(col);
            }
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Date of Service"), 90, GridSortingStrategy.DateParse);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Claim Type"), 90);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Claim Status"), 100);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Patient Name"), 150);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Carrier Name"), 150);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Claim Fee"), 90, GridSortingStrategy.AmountParse);
            gridMain.Columns.Add(col);
            col = new ODGridColumn(Lan.g(gridMain.TranslationName, "Proc Codes"), 100);
            gridMain.Columns.Add(col);
            gridMain.Rows.Clear();
            ODGridRow row;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                row = new ODGridRow();
                if (PrefC.HasClinicsEnabled)
                {
                    row.Cells.Add(table.Rows[i]["Clinic"].ToString());
                }
                DateTime dateService = PIn.Date(table.Rows[i]["DateService"].ToString());
                row.Cells.Add(dateService.ToShortDateString());
                string type = table.Rows[i]["ClaimType"].ToString();
                switch (type)
                {
                case "P":
                    type = "Pri";
                    break;

                case "S":
                    type = "Sec";
                    break;

                case "PreAuth":
                    type = "Preauth";
                    break;

                case "Other":
                    type = "Other";
                    break;

                case "Cap":
                    type = "Cap";
                    break;

                case "Med":
                    type = "Medical";                          //For possible future use.
                    break;

                default:
                    type = "Error";                          //Not allowed to be blank.
                    break;
                }
                row.Cells.Add(type);
                row.Cells.Add(table.Rows[i]["ClaimStatus"].ToString());
                row.Cells.Add(table.Rows[i]["Patient Name"].ToString());
                row.Cells.Add(table.Rows[i]["CarrierName"].ToString());
                row.Cells.Add(PIn.Double(table.Rows[i]["ClaimFee"].ToString()).ToString("c"));
                row.Cells.Add(table.Rows[i]["ProcCodes"].ToString());
                UnsentInsClaim unsentClaim = new UnsentInsClaim();
                unsentClaim.ClaimNum = PIn.Long(table.Rows[i]["ClaimNum"].ToString());
                unsentClaim.PatNum   = PIn.Long(table.Rows[i]["PatNum"].ToString());
                ClaimTracking claimTrackingCur = _listNewClaimTrackings.FirstOrDefault(x => x.ClaimNum == unsentClaim.ClaimNum);
                if (claimTrackingCur != null)
                {
                    unsentClaim.ClaimTrackingNum = claimTrackingCur.ClaimTrackingNum;
                }
                row.Tag = unsentClaim;
                gridMain.Rows.Add(row);
            }
            gridMain.EndUpdate();
        }
Ejemplo n.º 13
0
        ///<summary>Updates one ClaimTracking 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(ClaimTracking claimTracking, ClaimTracking oldClaimTracking)
        {
            string command = "";

            if (claimTracking.ClaimNum != oldClaimTracking.ClaimNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClaimNum = " + POut.Long(claimTracking.ClaimNum) + "";
            }
            if (claimTracking.TrackingType != oldClaimTracking.TrackingType)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TrackingType = '" + POut.String(claimTracking.TrackingType.ToString()) + "'";
            }
            if (claimTracking.UserNum != oldClaimTracking.UserNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "UserNum = " + POut.Long(claimTracking.UserNum) + "";
            }
            //DateTimeEntry can only be set by MySQL
            if (claimTracking.Note != oldClaimTracking.Note)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "Note = " + DbHelper.ParamChar + "paramNote";
            }
            if (claimTracking.TrackingDefNum != oldClaimTracking.TrackingDefNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TrackingDefNum = " + POut.Long(claimTracking.TrackingDefNum) + "";
            }
            if (claimTracking.TrackingErrorDefNum != oldClaimTracking.TrackingErrorDefNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "TrackingErrorDefNum = " + POut.Long(claimTracking.TrackingErrorDefNum) + "";
            }
            if (command == "")
            {
                return(false);
            }
            if (claimTracking.Note == null)
            {
                claimTracking.Note = "";
            }
            OdSqlParameter paramNote = new OdSqlParameter("paramNote", OdDbType.Text, POut.StringParam(claimTracking.Note));

            command = "UPDATE claimtracking SET " + command
                      + " WHERE ClaimTrackingNum = " + POut.Long(claimTracking.ClaimTrackingNum);
            Db.NonQ(command, paramNote);
            return(true);
        }
Ejemplo n.º 14
0
 ///<summary>Inserts one ClaimTracking into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(ClaimTracking claimTracking)
 {
     return(InsertNoCache(claimTracking, false));
 }