Ejemplo n.º 1
0
 ///<summary>Inserts one Etrans835Attach into the database.  Returns the new priKey.</summary>
 public static long Insert(Etrans835Attach etrans835Attach)
 {
     if (DataConnection.DBtype == DatabaseType.Oracle)
     {
         etrans835Attach.Etrans835AttachNum = DbHelper.GetNextOracleKey("etrans835attach", "Etrans835AttachNum");
         int loopcount = 0;
         while (loopcount < 100)
         {
             try {
                 return(Insert(etrans835Attach, true));
             }
             catch (Oracle.ManagedDataAccess.Client.OracleException ex) {
                 if (ex.Number == 1 && ex.Message.ToLower().Contains("unique constraint") && ex.Message.ToLower().Contains("violated"))
                 {
                     etrans835Attach.Etrans835AttachNum++;
                     loopcount++;
                 }
                 else
                 {
                     throw ex;
                 }
             }
         }
         throw new ApplicationException("Insert failed.  Could not generate primary key.");
     }
     else
     {
         return(Insert(etrans835Attach, false));
     }
 }
Ejemplo n.º 2
0
        ///<summary>Inserts one Etrans835Attach into the database.  Provides option to use the existing priKey.  Doesn't use the cache.</summary>
        public static long InsertNoCache(Etrans835Attach etrans835Attach, bool useExistingPK)
        {
            bool   isRandomKeys = Prefs.GetBoolNoCache(PrefName.RandomPrimaryKeys);
            string command      = "INSERT INTO etrans835attach (";

            if (!useExistingPK && isRandomKeys)
            {
                etrans835Attach.Etrans835AttachNum = ReplicationServers.GetKeyNoCache("etrans835attach", "Etrans835AttachNum");
            }
            if (isRandomKeys || useExistingPK)
            {
                command += "Etrans835AttachNum,";
            }
            command += "EtransNum,ClaimNum,ClpSegmentIndex,DateTimeEntry) VALUES(";
            if (isRandomKeys || useExistingPK)
            {
                command += POut.Long(etrans835Attach.Etrans835AttachNum) + ",";
            }
            command +=
                POut.Long(etrans835Attach.EtransNum) + ","
                + POut.Long(etrans835Attach.ClaimNum) + ","
                + POut.Int(etrans835Attach.ClpSegmentIndex) + ","
                + DbHelper.Now() + ")";
            if (useExistingPK || isRandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                etrans835Attach.Etrans835AttachNum = Db.NonQ(command, true, "Etrans835AttachNum", "etrans835Attach");
            }
            return(etrans835Attach.Etrans835AttachNum);
        }
Ejemplo n.º 3
0
        ///<summary>Inserts one Etrans835Attach into the database.  Provides option to use the existing priKey.</summary>
        public static long Insert(Etrans835Attach etrans835Attach, bool useExistingPK)
        {
            if (!useExistingPK && PrefC.RandomKeys)
            {
                etrans835Attach.Etrans835AttachNum = ReplicationServers.GetKey("etrans835attach", "Etrans835AttachNum");
            }
            string command = "INSERT INTO etrans835attach (";

            if (useExistingPK || PrefC.RandomKeys)
            {
                command += "Etrans835AttachNum,";
            }
            command += "EtransNum,ClaimNum,ClpSegmentIndex) VALUES(";
            if (useExistingPK || PrefC.RandomKeys)
            {
                command += POut.Long(etrans835Attach.Etrans835AttachNum) + ",";
            }
            command +=
                POut.Long(etrans835Attach.EtransNum) + ","
                + POut.Long(etrans835Attach.ClaimNum) + ","
                + POut.Int(etrans835Attach.ClpSegmentIndex) + ")";
            if (useExistingPK || PrefC.RandomKeys)
            {
                Db.NonQ(command);
            }
            else
            {
                etrans835Attach.Etrans835AttachNum = Db.NonQ(command, true, "Etrans835AttachNum", "etrans835Attach");
            }
            return(etrans835Attach.Etrans835AttachNum);
        }
Ejemplo n.º 4
0
        ///<summary>Updates one Etrans835Attach in the database.</summary>
        public static void Update(Etrans835Attach etrans835Attach)
        {
            string command = "UPDATE etrans835attach SET "
                             + "EtransNum         =  " + POut.Long(etrans835Attach.EtransNum) + ", "
                             + "ClaimNum          =  " + POut.Long(etrans835Attach.ClaimNum) + ", "
                             + "ClpSegmentIndex   =  " + POut.Int(etrans835Attach.ClpSegmentIndex) + " "
                             + "WHERE Etrans835AttachNum = " + POut.Long(etrans835Attach.Etrans835AttachNum);

            Db.NonQ(command);
        }
Ejemplo n.º 5
0
        ///<summary></summary>
        private static Etrans835Attach Insert835Attach(long etransNum, long claimNum, int clpSegmentIndex, DateTime dateTimeTrans)
        {
            Etrans835Attach attach = new Etrans835Attach()
            {
                EtransNum       = etransNum,
                ClaimNum        = claimNum,
                ClpSegmentIndex = clpSegmentIndex
            };

            Etrans835Attaches.Insert(attach);
            attach.DateTimeTrans = dateTimeTrans;
            return(attach);
        }
Ejemplo n.º 6
0
 ///<summary>Inserts one Etrans835Attach into the database.  Returns the new priKey.  Doesn't use the cache.</summary>
 public static long InsertNoCache(Etrans835Attach etrans835Attach)
 {
     if (DataConnection.DBtype == DatabaseType.MySql)
     {
         return(InsertNoCache(etrans835Attach, false));
     }
     else
     {
         if (DataConnection.DBtype == DatabaseType.Oracle)
         {
             etrans835Attach.Etrans835AttachNum = DbHelper.GetNextOracleKey("etrans835attach", "Etrans835AttachNum");                  //Cacheless method
         }
         return(InsertNoCache(etrans835Attach, true));
     }
 }
Ejemplo n.º 7
0
        ///<summary>Converts a DataTable to a list of objects.</summary>
        public static List <Etrans835Attach> TableToList(DataTable table)
        {
            List <Etrans835Attach> retVal = new List <Etrans835Attach>();
            Etrans835Attach        etrans835Attach;

            foreach (DataRow row in table.Rows)
            {
                etrans835Attach = new Etrans835Attach();
                etrans835Attach.Etrans835AttachNum = PIn.Long(row["Etrans835AttachNum"].ToString());
                etrans835Attach.EtransNum          = PIn.Long(row["EtransNum"].ToString());
                etrans835Attach.ClaimNum           = PIn.Long(row["ClaimNum"].ToString());
                etrans835Attach.ClpSegmentIndex    = PIn.Int(row["ClpSegmentIndex"].ToString());
                retVal.Add(etrans835Attach);
            }
            return(retVal);
        }
Ejemplo n.º 8
0
 ///<summary>Returns true if Update(Etrans835Attach,Etrans835Attach) 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(Etrans835Attach etrans835Attach, Etrans835Attach oldEtrans835Attach)
 {
     if (etrans835Attach.EtransNum != oldEtrans835Attach.EtransNum)
     {
         return(true);
     }
     if (etrans835Attach.ClaimNum != oldEtrans835Attach.ClaimNum)
     {
         return(true);
     }
     if (etrans835Attach.ClpSegmentIndex != oldEtrans835Attach.ClpSegmentIndex)
     {
         return(true);
     }
     return(false);
 }
Ejemplo n.º 9
0
 ///<summary>Returns true if Update(Etrans835Attach,Etrans835Attach) 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(Etrans835Attach etrans835Attach, Etrans835Attach oldEtrans835Attach)
 {
     if (etrans835Attach.EtransNum != oldEtrans835Attach.EtransNum)
     {
         return(true);
     }
     if (etrans835Attach.ClaimNum != oldEtrans835Attach.ClaimNum)
     {
         return(true);
     }
     if (etrans835Attach.ClpSegmentIndex != oldEtrans835Attach.ClpSegmentIndex)
     {
         return(true);
     }
     //DateTimeEntry not allowed to change
     return(false);
 }
Ejemplo n.º 10
0
        ///<summary>Builds the X835 for given etrans835 and etransMessageText.
        ///Also attempts to create attaches for patients in listPatients using their first/last name and the claim num in their tuple entry.</summary>
        public static X835 Construct835(Etrans etrans835, string etransMessageText, List <ODTuple <Patient, long> > listPatients, out List <Etrans835Attach> listEtrans835Attaches)
        {
            listEtrans835Attaches = new List <Etrans835Attach>();
            //Construct the inital X835 so that we can find the ERA claim we are testing against, needed for attach information.
            X835 x835 = new X835(etrans835, etransMessageText, etrans835.TranSetId835);

            foreach (ODTuple <Patient, long> data in listPatients)
            {
                Patient pat      = data.Item1;
                long    claimNum = data.Item2;
                //Then using that ERA claim we will spoof the Etrans835Attach logic that would run when associating an OD claim to the ERA claim.
                Hx835_Claim eraClaim = x835.ListClaimsPaid.First(x => x.PatientName.Fname.ToLower() == pat.FName.ToLower() && x.PatientName.Lname.ToLower() == pat.LName.ToLower());
                //Spoof ERA claim attachement.
                Etrans835Attach attach = Insert835Attach(etrans835.EtransNum, claimNum, eraClaim.ClpSegmentIndex, etrans835.DateTimeTrans);
                listEtrans835Attaches.Add(attach);
            }
            //Finally we must reconstruct the X835 with the new spoofed attach.
            return(new X835(etrans835, etransMessageText, etrans835.TranSetId835, listEtrans835Attaches));
        }
Ejemplo n.º 11
0
        ///<summary>Updates one Etrans835Attach 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(Etrans835Attach etrans835Attach, Etrans835Attach oldEtrans835Attach)
        {
            string command = "";

            if (etrans835Attach.EtransNum != oldEtrans835Attach.EtransNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "EtransNum = " + POut.Long(etrans835Attach.EtransNum) + "";
            }
            if (etrans835Attach.ClaimNum != oldEtrans835Attach.ClaimNum)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClaimNum = " + POut.Long(etrans835Attach.ClaimNum) + "";
            }
            if (etrans835Attach.ClpSegmentIndex != oldEtrans835Attach.ClpSegmentIndex)
            {
                if (command != "")
                {
                    command += ",";
                }
                command += "ClpSegmentIndex = " + POut.Int(etrans835Attach.ClpSegmentIndex) + "";
            }
            //DateTimeEntry not allowed to change
            if (command == "")
            {
                return(false);
            }
            command = "UPDATE etrans835attach SET " + command
                      + " WHERE Etrans835AttachNum = " + POut.Long(etrans835Attach.Etrans835AttachNum);
            Db.NonQ(command);
            return(true);
        }
Ejemplo n.º 12
0
        ///<summary>Inserts new Etrans835Attach for given claimPaid and claim.
        ///Deletes any existing Etrans835Attach prior to inserting new one.
        ///Sets claimPaid.ClaimNum and claimPaid.IsAttachedToClaim.</summary>
        private void CreateAttachForClaim(Hx835_Claim claimPaid, long claimNum, bool isNewAttachNeeded)
        {
            if (!isNewAttachNeeded &&
                _listAttaches.Exists(
                    x => x.ClaimNum == claimNum &&
                    x.EtransNum == _x835.EtransSource.EtransNum &&
                    x.ClpSegmentIndex == claimPaid.ClpSegmentIndex)
                )
            {
                //Not forcing a new attach and one already exists.
                return;
            }
            //Create a hard link between the selected claim and the claim info on the 835.
            Etrans835Attaches.DeleteMany(claimPaid.ClpSegmentIndex, EtransCur.EtransNum);           //Detach existing if any.
            Etrans835Attach attach = new Etrans835Attach();

            attach.EtransNum       = EtransCur.EtransNum;
            attach.ClaimNum        = claimNum;
            attach.ClpSegmentIndex = claimPaid.ClpSegmentIndex;
            Etrans835Attaches.Insert(attach);
            claimPaid.ClaimNum          = claimNum;
            claimPaid.IsAttachedToClaim = true;
        }
Ejemplo n.º 13
0
 ///<summary>Inserts one Etrans835Attach into the database.  Returns the new priKey.</summary>
 public static long Insert(Etrans835Attach etrans835Attach)
 {
     return(Insert(etrans835Attach, false));
 }