private void Lookups(System.Collections.IList collection)
        {
            /////////////////////////////////////////////////
            //Mines information about claimants from customer
            //systems.
            cancelBackgroundWorkers = false;
            lookupsProcessing = true;
            button4.IsEnabled = true;
            bool agencyList = (bool)checkBox2.IsChecked;

            //Show and start animation
            rectangle1.Visibility = Visibility.Visible;
            ((Storyboard)this.Resources["Storyboard2"]).Begin(MainWindowGrid);

            //Reset the icons to box so user will see a change when processed.
            foreach (EDataItem item in collection)
            {
                item.Icon = (Bitmap)imageList.Images[4];
                dataGridControl1.Items.Refresh();
            }

            BackgroundWorker lookupWorker = new BackgroundWorker();
            lookupWorker.WorkerReportsProgress = true;
            lookupWorker.WorkerSupportsCancellation = true;
            int fileKey = coll.fileKey;

            #region Inline Background worker definitions
            ///////////////////////////////////////////////
            //Inline definitions for the background work.
            #region DoWork
            lookupWorker.DoWork += delegate(object s, DoWorkEventArgs args)
            {
                #region Initialize variables

                BackgroundWorker worker = (BackgroundWorker)s;
                SqlConnection conn = new SqlConnection(dbConnectionString);
                SqlConnection agencyConn = new SqlConnection(agencyConnectionString);

                Hashtable lookupHash = new Hashtable();
                Hashtable pharmHash = new Hashtable();
                Hashtable ndcHash = new Hashtable();
                Hashtable agencyHash = new Hashtable();

                //Assists in calculatin progress.
                double divisor = (double)dataGridControl1.Items.Count / 100;
                divisor = Math.Ceiling(divisor);//ceiling prevents division by zero.

                #endregion

                #region Try to process items
                int iterator = 0;

                try
                {
                    #region Process Lookups

                    #region initialize variables for loop

                    if (conn.State != ConnectionState.Open) { conn.Open(); }
                    if (agencyConn.State != ConnectionState.Open) { agencyConn.Open(); }

                    SqlCommand sqlQry1 = new SqlCommand("spUpdateWithLookups", conn);
                    SqlCommand sqlQry2 = new SqlCommand("spGetAgencyInfoByNumber", agencyConn);

                    sqlQry1.CommandType = CommandType.StoredProcedure;
                    sqlQry2.CommandType = CommandType.StoredProcedure;


                    int i = 0;
                    int progcent = -1;
                    ACS.Medco.Pharmacy.PharmacyCollection pColl = new ACS.Medco.Pharmacy.PharmacyCollection();
                    ACS.Medco.Pharmacy.PharmacySearchCriteria pharmCrit = new ACS.Medco.Pharmacy.PharmacySearchCriteria();
                    ACS.Medco.Pharmacy.PharmacySearchEngine pSearch = new ACS.Medco.Pharmacy.PharmacySearchEngine(ConfigurationManager.AppSettings["PharmacySearchUri"]);

                    ACS.Medco.GroupMembers.GroupMemberCollection eColl = null;
                    ACS.Medco.GroupMembers.GroupMemberSearchCriteria eCrit = new ACS.Medco.GroupMembers.GroupMemberSearchCriteria();
                    ACS.Medco.GroupMembers.GroupMemberSearchEngine eSearch = new ACS.Medco.GroupMembers.GroupMemberSearchEngine(ConfigurationManager.AppSettings["MemberSearchUri"]);
                    ACS.Medco.GroupMembers.GroupMemberCollection teColl = null;

                    ACS.Medco.NDC.NDCItemCollection nColl = new ACS.Medco.NDC.NDCItemCollection();
                    ACS.Medco.NDC.NDCSearchCriteria nCrit = new ACS.Medco.NDC.NDCSearchCriteria();
                    ACS.Medco.NDC.NDCSearchEngine nSearch = new ACS.Medco.NDC.NDCSearchEngine(ConfigurationManager.AppSettings["NDCSearchUri"]);

                    #endregion

                    #region Iterate items

                    iterator = 0;
                    foreach (EDataItem item in collection)
                    {
                        EDataItem tempItem = new EDataItem();
                        agency currentAgency = new agency();
                        string lookupHashKey = item.GroupNum + "|" + item.MemberNumber + "|" + item.MemFName;
                        string pharmHashKey = item.NABPPharm + "|" + item.NPIPharm;
                        string ndcHashKey = item.NDC;
                        string agencyHashKey = item.AgencyAccountNumber;
                        int agencyCount = 0;

                        try
                        {
                            #region Process item

                            #region Cancel thread or assign tempItem
                            //handle cancelation of thread
                            eColl = new ACS.Medco.GroupMembers.GroupMemberCollection();
                            teColl = new ACS.Medco.GroupMembers.GroupMemberCollection();

                            if (cancelBackgroundWorkers)
                            {
                                worker.CancelAsync();
                                args.Cancel = true;
                                return;
                            }

                            //Create new item to modify since foreach subjects are read only.
                            tempItem = item;
                            tempItem.ErrMessage = string.Empty;

                            #endregion

                            #region Check if transmitted or already processed.

                            if (checkIfRowTransmitted(tempItem))
                            {
                                tempItem.Messages = "Already Transmitted";
                                tempItem.Icon = (Bitmap)imageList.Images[6];
                                progcent = (int)Math.Ceiling((double)(i / divisor));
                                worker.ReportProgress(progcent);
                                continue;
                            }

                            if (checkIfLookupComplete(tempItem))
                            {
                                tempItem.Icon = (Bitmap)imageList.Images[5];
                                progcent = (int)Math.Ceiling((double)(i / divisor));
                                worker.ReportProgress(progcent);
                                continue;
                            }

                            #endregion

                            #region Agency Lookup

                            if (agencyList)
                            {
                                if (agencyHash.Contains(agencyHashKey))
                                {
                                    currentAgency = (agency)agencyHash[agencyHashKey];
                                    agencyCount++;
                                }
                                else
                                {
                                    //lookup agency
                                    sqlQry2.Parameters.Clear();
                                    (sqlQry2.Parameters.Add("@AgencyNumber", SqlDbType.VarChar, 9) as SqlParameter).Value = tempItem.AgencyAccountNumber;
                                    SqlDataReader reader = sqlQry2.ExecuteReader();
                                    while (reader.Read())
                                    {
                                        currentAgency.acctNum = reader["Account_No"].ToString();
                                        currentAgency.address = reader["Address"].ToString().Trim();
                                        currentAgency.name = reader["Business_Name"].ToString().Trim();
                                        currentAgency.state = reader["State"].ToString();
                                        currentAgency.zip = reader["Zip"].ToString();
                                        agencyHash.Add(agencyHashKey, currentAgency);
                                        agencyCount++;
                                    }
                                    reader.Close();
                                }
                            }

                            #endregion

                            #region Set pharmacy and elligibility criteria and search

                            //Pharmacy search
                            pharmCrit.NABPNum = tempItem.NABPPharm;
                            pharmCrit.NPINum = tempItem.NPIPharm;
                            pharmCrit.PharmacyNum = tempItem.PharmAcctNum;// string.Empty;

                            //added 3/20/09 Patrick Bowling
                            if ((tempItem.PharmAcctNum != null) || (tempItem.PharmAcctNum != string.Empty))
                            {
                                pharmCrit.PharmacyNum = tempItem.PharmAcctNum;
                            }

                            if (pharmHash.Contains(pharmHashKey))
                            {
                                pColl = (ACS.Medco.Pharmacy.PharmacyCollection)pharmHash[pharmHashKey];
                            }
                            else
                            {
                                pColl = pSearch.ExecuteSearch(pharmCrit);
                                pharmHash.Add(pharmHashKey, pColl);
                            }
                            if (pColl.Count == 1)
                            {
                                tempItem.PharmValidated = "1";
                                if (pColl[0].NABPNum != null)
                                {
                                    tempItem.NABPPharm = pColl[0].NABPNum;
                                }
                                //Where is NPI in a pharmacy object?

                            }
                            else
                            {
                                tempItem.PharmValidated = "0";
                            }

                            nCrit.NDCNum = item.NDC;
                            if (ndcHash.Contains(ndcHashKey))
                            { 
                                nColl = (ACS.Medco.NDC.NDCItemCollection) ndcHash [ndcHashKey];
                            }
                            else
                            {
                                nColl = nSearch.ExecuteSearch(nCrit);
                                ndcHash.Add (ndcHashKey, nColl);
                            }
                            if (nColl.Count == 1)
                            {
                                tempItem.NDCValidated = "1";
                            }
                            else
                            {
                                tempItem.NDCValidated = "0";
                            }

                            //Eligibility search
                            eCrit.GroupNumber = item.GroupNum;
                            eCrit.MemberNumber = item.MemberNumber;
                            
                            //Cache lookups so that the time consuming lookup
                            //process may be skipped on occasion that it has
                            //already been looked up.
                            if (lookupHash.Contains(lookupHashKey))
                            {
                                eColl = (ACS.Medco.GroupMembers.GroupMemberCollection)lookupHash[lookupHashKey];
                            }
                            else
                            {
                                eColl = eSearch.ExecuteSearch(eCrit);
                                lookupHash.Add(lookupHashKey, eColl);
                            }


                            if (eColl.Count > 1)
                            {
                                foreach (ACS.Medco.GroupMembers.GroupMember member in eColl)
                                {
                                    DateTime startDate = member.ElgEffDate;
                                    DateTime endDate = member.ElgEndDate;
                                    DateTime serviceDate = DateTime.MaxValue;
                                    try
                                    {
                                        serviceDate = Convert.ToDateTime(addSlashesToDate(tempItem.DOS));
                                    }
                                    catch (Exception exc)
                                    {
                                        throw new Exception(exc.Message + iterator.ToString() + i.ToString());
                                    }

                                    if ((serviceDate < endDate) && (serviceDate > startDate))
                                    {
                                        teColl.Add(member);
                                    }
                                }
                                eColl = teColl;

                                lookupHash.Remove(lookupHashKey);
                                lookupHash.Add(lookupHashKey, eColl);
                            }
                            if (eColl.Count > 1)
                            {
                                teColl = null;
                                teColl = new ACS.Medco.GroupMembers.GroupMemberCollection();

                                foreach(ACS.Medco.GroupMembers.GroupMember member in eColl)
                                {
                                    if (tempItem.MemLName.Trim().ToLower() == member.LastName.Trim().ToLower())
                                    {
                                        teColl.Add(member);
                                    }
                                }
                                eColl = teColl;
                            }

                            if (eColl.Count == 1)
                            {
                                tempItem.MemberValidated = "1";
                            }
                            else
                            {
                                tempItem.MemberValidated = "0";
                            }

                            //Empty parameters each iteration.
                            sqlQry1.Parameters.Clear();
 
                            #endregion

                            #region Handle results

                            if (agencyList)
                            {
                                if ((pColl.Count == 0) || (eColl.Count != 1) || (nColl.Count == 0) || (agencyCount != 1))
                                {
                                    #region Handle failures

                                    if (pColl.Count == 0)
                                    {
                                        tempItem.ErrMessage += "No pharmacy found,";
                                    }
                                    else if (pColl.Count > 1)
                                    {
                                        tempItem.ErrMessage += "Multiple pharmacies found,";
                                    }
                                    if (eColl.Count == 0)
                                    {
                                        tempItem.ErrMessage += "No member found,";
                                    }
                                    else if (eColl.Count > 1)
                                    {
                                        tempItem.ErrMessage += "Multiple members found,";
                                    }
                                    if (nColl.Count < 1)
                                    {
                                        tempItem.ErrMessage += "Invalid NDC code,";
                                    }
                                    if (agencyCount < 1)
                                    {
                                        tempItem.ErrMessage += "Agency not found,";
                                    }
                                    else if (agencyCount > 1)
                                    {
                                        tempItem.ErrMessage += "Multiple agencies found,";
                                    }

                                    tempItem.Icon = (Bitmap)imageList.Images[6];
                                    (sqlQry1.Parameters.Add("@Status", SqlDbType.VarChar, 2) as SqlParameter).Value = "uX";

                                    #endregion
                                }
                                else
                                {
                                    #region Set status

                                    tempItem.Icon = (Bitmap)imageList.Images[5];
                                    (sqlQry1.Parameters.Add("@Status", SqlDbType.VarChar, 2) as SqlParameter).Value = "uC";
                                    tempItem.ErrMessage = string.Empty;

                                    #endregion
                                }
                            }
                            else
                            {
                                //no agencies
                                if ((pColl.Count == 0) || (eColl.Count != 1) || (nColl.Count == 0))
                                {
                                    #region Handle failures

                                    if (pColl.Count == 0)
                                    {
                                        tempItem.ErrMessage += "No pharmacy found,";
                                    }
                                    else if (pColl.Count > 1)
                                    {
                                        tempItem.ErrMessage += "Multiple pharmacies found,";
                                    }
                                    if (eColl.Count == 0)
                                    {
                                        tempItem.ErrMessage += "No member found,";
                                    }
                                    else if (eColl.Count > 1)
                                    {
                                        tempItem.ErrMessage += "Multiple members found,";
                                    }
                                    if (nColl.Count < 1)
                                    {
                                        tempItem.ErrMessage += "Invalid NDC code,";
                                    }

                                    tempItem.Icon = (Bitmap)imageList.Images[6];
                                    (sqlQry1.Parameters.Add("@Status", SqlDbType.VarChar, 2) as SqlParameter).Value = "uX";

                                    #endregion
                                }
                                else
                                {
                                    #region Set status

                                    tempItem.Icon = (Bitmap)imageList.Images[5];
                                    (sqlQry1.Parameters.Add("@Status", SqlDbType.VarChar, 2) as SqlParameter).Value = "uC";
                                    tempItem.ErrMessage = string.Empty;

                                    #endregion
                                }
                            }

                            #region Assign Values

                            if (tempItem.DCN == string.Empty)
                            {
                                (sqlQry1.Parameters.Add("@Dcn", SqlDbType.NChar, 16) as SqlParameter).Value = string.Empty;
                            }
                            else
                            {
                                (sqlQry1.Parameters.Add("@Dcn", SqlDbType.NChar, 16) as SqlParameter).Value = tempItem.DCN;
                            }
                            if (tempItem.DetailLineNumber == string.Empty)
                            {
                                (sqlQry1.Parameters.Add("@Dln", SqlDbType.VarChar, 2) as SqlParameter).Value = string.Empty;
                            }
                            else
                            {
                                (sqlQry1.Parameters.Add("@Dln", SqlDbType.VarChar, 2) as SqlParameter).Value = tempItem.DetailLineNumber;
                            }
                            

                            ACS.Medco.Pharmacy.Pharmacy pPharm = new ACS.Medco.Pharmacy.Pharmacy();
                            if (pColl.Count == 1)
                            {
                                pPharm = pColl[0];

                                if (pPharm.PharmacyNum != null)
                                {
                                    tempItem.PharmAcctNum = pPharm.PharmacyNum;
                                }
                                else
                                {
                                    tempItem.PharmAcctNum = string.Empty;
                                }                                
                                (sqlQry1.Parameters.Add("@PharmAcctNum", SqlDbType.VarChar, 20) as SqlParameter).Value = pPharm.PharmacyNum;
                                if (pPharm.PharmacyName != null)
                                {
                                    tempItem.PharmName = pPharm.PharmacyName;
                                }
                                else
                                {
                                    tempItem.PharmName = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@PharmName", SqlDbType.VarChar, 50) as SqlParameter).Value = tempItem.PharmName;
                                if (tempItem.PharmAddress != null)
                                {
                                    tempItem.PharmAddress = pPharm.Street;
                                }
                                else
                                {
                                    tempItem.PharmAddress = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@PharmAddress", SqlDbType.VarChar, 50) as SqlParameter).Value = tempItem.PharmAddress;
                                if (tempItem.PharmZip != null)
                                {
                                    tempItem.PharmZip = pPharm.ZipCode;
                                }
                                else
                                {
                                    tempItem.PharmZip = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@PharmZip", SqlDbType.NChar, 5) as SqlParameter).Value = tempItem.PharmZip;
                                if (pPharm.PhoneNum != null)
                                {
                                    tempItem.PharmPhone = pPharm.PhoneNum;
                                }
                                else
                                {
                                    tempItem.PharmPhone = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@PharmPhone", SqlDbType.NChar, 10) as SqlParameter).Value = tempItem.PharmPhone;


                                (sqlQry1.Parameters.Add("@NABPPharm", SqlDbType.VarChar, 10) as SqlParameter).Value = tempItem.NABPPharm;
                            }
                            else
                            {
                                //tempItem.PharmAcctNum = string.Empty;
                                tempItem.PharmAcctNum = pharmCrit.PharmacyNum;
                                //(sqlQry1.Parameters.Add("@PharmAcctNum", SqlDbType.VarChar, 20) as SqlParameter).Value = string.Empty;
                                (sqlQry1.Parameters.Add("@PharmAcctNum", SqlDbType.VarChar, 20) as SqlParameter).Value = tempItem.PharmAcctNum;
                                tempItem.PharmName = string.Empty;
                                (sqlQry1.Parameters.Add("@PharmName", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                tempItem.PharmAddress = string.Empty;
                                (sqlQry1.Parameters.Add("@PharmAddress", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                tempItem.PharmZip = string.Empty;
                                (sqlQry1.Parameters.Add("@PharmZip", SqlDbType.NChar, 5) as SqlParameter).Value = string.Empty;
                                tempItem.PharmPhone = string.Empty;
                                (sqlQry1.Parameters.Add("@PharmPhone", SqlDbType.NChar, 10) as SqlParameter).Value = string.Empty;

                                //(sqlQry1.Parameters.Add("@NABPPharm", SqlDbType.VarChar, 10) as SqlParameter).Value = string.Empty;
                                (sqlQry1.Parameters.Add("@NABPPharm", SqlDbType.VarChar, 10) as SqlParameter).Value = pharmCrit.NABPNum;

                            }
                            (sqlQry1.Parameters.Add("@PharmValidated", SqlDbType.NChar, 1) as SqlParameter).Value = tempItem.PharmValidated;

                            (sqlQry1.Parameters.Add("@NDCValidated", SqlDbType.NChar, 1) as SqlParameter).Value = tempItem.NDCValidated;

                            ACS.Medco.GroupMembers.GroupMember eMember = new ACS.Medco.GroupMembers.GroupMember();
                            if (eColl.Count == 1)
                            {
                                eMember = eColl[0];
                                ACS.Medco.GroupMembers.GroupMember.ClientProfileInfo cli = eMember.ClientProfile;
                                if (cli.Carrier != null)
                                {
                                    tempItem.CarrierCode = cli.Carrier;
                                }
                                else
                                {
                                    tempItem.CarrierCode = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@CarrierCode", SqlDbType.VarChar, 50) as SqlParameter).Value = cli.Carrier;

                                ACS.Medco.GroupMembers.GroupMember.AddressInfo addrInfo = eMember.Address;

                                if (addrInfo.Street1 != null)
                                {
                                    tempItem.Street1 = addrInfo.Street1;
                                    (sqlQry1.Parameters.Add("@Street1", SqlDbType.VarChar, 50) as SqlParameter).Value = addrInfo.Street1;
                                }
                                else
                                {
                                    tempItem.Street1 = string.Empty;
                                    (sqlQry1.Parameters.Add("@Street1", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                }
                                if (addrInfo.Street2 != null)
                                {
                                    tempItem.Street2 = addrInfo.Street2;
                                    (sqlQry1.Parameters.Add("@Street2", SqlDbType.VarChar, 50) as SqlParameter).Value = addrInfo.Street2;
                                }
                                else
                                {
                                    tempItem.Street2 = string.Empty;
                                    (sqlQry1.Parameters.Add("@Street2", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                }
                                if (addrInfo.City != null)
                                {
                                    tempItem.City = addrInfo.City;
                                    (sqlQry1.Parameters.Add("@City", SqlDbType.VarChar, 30) as SqlParameter).Value = addrInfo.City;
                                }
                                else
                                {
                                    tempItem.City = string.Empty;
                                    (sqlQry1.Parameters.Add("@City", SqlDbType.VarChar, 30) as SqlParameter).Value = string.Empty;
                                }
                                if (addrInfo.State != null)
                                {
                                    tempItem.State = addrInfo.State;
                                    (sqlQry1.Parameters.Add("@State", SqlDbType.Char, 2) as SqlParameter).Value = addrInfo.State;
                                }
                                else
                                {
                                    tempItem.State = string.Empty;
                                    (sqlQry1.Parameters.Add("@State", SqlDbType.Char, 2) as SqlParameter).Value = string.Empty;
                                }

                               // if (addrInfo.Zip != null)
                                //{///
                                    //if (tempItem.ZipCode == string.Empty)
                                  //  {
                                      //  tempItem.ZipCode = addrInfo.Zip;
                                  //  }
                                    //tempItem.State = addrInfo.State;
                                    //(sqlQry1.Parameters.Add("@State", SqlDbType.Char, 2) as SqlParameter).Value = addrInfo.State;
                               // }
                               // else
                               // {
                                 //   tempItem.State = string.Empty;
                                  //  (sqlQry1.Parameters.Add("@State", SqlDbType.Char, 2) as SqlParameter).Value = string.Empty;
                               // }

                                //DepCode, gender, and patLast
                                mineDependants(ref tempItem, eMember);

                                if (tempItem.PatLName == null)
                                {
                                    tempItem.PatLName = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@PatLName", SqlDbType.VarChar, 50) as SqlParameter).Value = tempItem.PatLName;

                                if (tempItem.Gender == null)
                                {
                                    tempItem.Gender = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@Gender", SqlDbType.VarChar, 1) as SqlParameter).Value = tempItem.Gender;
                                if (tempItem.DepCode == null)
                                {
                                    tempItem.DepCode = string.Empty;
                                }
                                (sqlQry1.Parameters.Add("@DepCode", SqlDbType.VarChar, 1) as SqlParameter).Value = tempItem.DepCode;
                            }
                            else
                            {
                                tempItem.CarrierCode = string.Empty;
                                (sqlQry1.Parameters.Add("@CarrierCode", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;

                                tempItem.Street1 = string.Empty ;
                                (sqlQry1.Parameters.Add("@Street1", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                
                                tempItem.Street2 = string.Empty;
                                (sqlQry1.Parameters.Add("@Street2", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                
                                tempItem.City = string.Empty;
                                (sqlQry1.Parameters.Add("@City", SqlDbType.VarChar, 30) as SqlParameter).Value = string.Empty;

                                tempItem.State = string.Empty;
                                (sqlQry1.Parameters.Add("@State", SqlDbType.Char, 2) as SqlParameter).Value = string.Empty;

                                tempItem.PatientValidated = "0";
                                (sqlQry1.Parameters.Add("@PatLName", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;

                                //tempItem.Gender = string.Empty;
                                (sqlQry1.Parameters.Add("@Gender", SqlDbType.VarChar, 1) as SqlParameter).Value = tempItem.Gender;//string.Empty;

                                //tempItem.DepCode = string.Empty;
                                (sqlQry1.Parameters.Add("@DepCode", SqlDbType.VarChar, 1) as SqlParameter).Value = tempItem.DepCode;// string.Empty;
                            }

                            if (agencyCount == 1)
                            {

                                //(sqlQry1.Parameters.Add("@AgencyNumber", SqlDbType.VarChar, 30) as SqlParameter).Value = currentAgency.acctNum;
                                tempItem.AgencyAddress = currentAgency.address;
                                (sqlQry1.Parameters.Add("@AgencyAddress", SqlDbType.VarChar, 50) as SqlParameter).Value = currentAgency.address;
                                tempItem.AgencyName = currentAgency.name;
                                (sqlQry1.Parameters.Add("@AgencyName", SqlDbType.VarChar, 50) as SqlParameter).Value = currentAgency.name;
                                //tempItem.AgencyZip = currentAgency.zip;
                                //(sqlQry1.Parameters.Add("@AgencyZip", SqlDbType.VarChar, 5) as SqlParameter).Value = currentAgency.zip;
                                tempItem.AgencyState = currentAgency.state;
                                (sqlQry1.Parameters.Add("@AgencyState", SqlDbType.VarChar, 2) as SqlParameter).Value = currentAgency.state;
                            }
                            else
                            {
                                //(sqlQry1.Parameters.Add("@AgencyNumber", SqlDbType.VarChar, 30) as SqlParameter).Value = string.Empty;
                                (sqlQry1.Parameters.Add("@AgencyAddress", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                (sqlQry1.Parameters.Add("@AgencyName", SqlDbType.VarChar, 50) as SqlParameter).Value = string.Empty;
                                //(sqlQry1.Parameters.Add("@AgencyZip", SqlDbType.VarChar, 5) as SqlParameter).Value = string.Empty;
                                (sqlQry1.Parameters.Add("@AgencyState", SqlDbType.VarChar, 2) as SqlParameter).Value = string.Empty;
                            }


                            (sqlQry1.Parameters.Add("@MemberValidated", SqlDbType.NChar, 1) as SqlParameter).Value = tempItem.MemberValidated;
                            (sqlQry1.Parameters.Add("@PatientValidated", SqlDbType.NChar, 1) as SqlParameter).Value = tempItem.PatientValidated;
                            

                            pPharm = null;

                            #endregion
                            (sqlQry1.Parameters.Add("@ErrMessage", SqlDbType.VarChar, 100) as SqlParameter).Value = tempItem.ErrMessage;
                            (sqlQry1.Parameters.Add("@FileKey", SqlDbType.Int) as SqlParameter).Value = fileKey;
                            tempItem.RejectCode = string.Empty;
                            (sqlQry1.Parameters.Add("@RejectCode", SqlDbType.VarChar, 100) as SqlParameter).Value = string.Empty;
                            tempItem.Messages = string.Empty;
                            (sqlQry1.Parameters.Add("@Messages", SqlDbType.VarChar, 200) as SqlParameter).Value = string.Empty;

                            sqlQry1.ExecuteNonQuery();

                            ////////////////////////////////////////////////////////
                            //////////////////////////////////////////////////

                            #endregion

                            #region Prep for next iteration

                            //Report progress every iteration in order to have the grid update
                            //in the UI Thread Progress Callback
                            progcent = (int)(Math.Ceiling((double)(i / divisor)));
                            worker.ReportProgress(progcent);

                            i++;

                            #endregion

                            #endregion
                        }
                        catch (Exception ex)
                        {
                            worker.CancelAsync();
                            System.Windows.MessageBox.Show("Error iterating grid collection: Row=" + iterator.ToString() + ": " + ex.Message);
                            return;
                        }
                        finally
                        {
                            tempItem = null;
                            eColl = null;
                            teColl = null;
                            pColl = null;
                            nColl = null;
                            currentAgency = null;
                        }
                        iterator++;
                    }

                    #endregion

                    #endregion
                }
                catch (Exception exc)
                {
                    if (!worker.CancellationPending)
                    {
                        System.Windows.Forms.MessageBox.Show(exc.Message + ": " + iterator.ToString ());
                    }
                }
                finally
                {
                    if (conn != null)
                    {
                        if (conn.State == ConnectionState.Open) { conn.Close(); }
                    }
                    lookupHash.Clear();
                }

                #endregion
            };
            #endregion
            #region ProgressChanged
            lookupWorker.ProgressChanged += delegate(object s, ProgressChangedEventArgs args)
            {
                dataGridControl1.Items.Refresh();
                progressBar1.Value = args.ProgressPercentage;
            };
            #endregion
            #region RunWorkerCompleted
            lookupWorker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args)
            {
                progressBar1.Value = 0;
                lookupsProcessing = false;
                this.Cursor = System.Windows.Input.Cursors.Arrow;
                //Turn off and hide animation
                ((Storyboard)this.Resources["Storyboard2"]).Stop(MainWindowGrid);
                rectangle1.Visibility = Visibility.Hidden;
            };
            #endregion
            //end inline definitions for Background worker
            ////////////////////////////////////////////////
            #endregion

            lookupWorker.RunWorkerAsync();

            button3.IsEnabled = true;
        }