Пример #1
0
        static gov.va.medora.mdo.dao.mock.MockDataReader query(string request)
        {
            try
            {
                gov.va.medora.mdo.User impersonationUser = new User()
                {
                    UserName = ConfigurationManager.AppSettings["CdwUserName"],
                    Pwd      = ConfigurationManager.AppSettings["CdwUserPassword"],
                    Domain   = ConfigurationManager.AppSettings["CdwUserDomain"]
                };

                using (new Impersonator(impersonationUser))
                {
                    using (System.Data.SqlClient.SqlConnection newCxn = new System.Data.SqlClient.SqlConnection("Data Source=127.0.0.1;Initial Catalog=CDWWork;Trusted_Connection=true"))
                    {
                        newCxn.Open();
                        System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
                        cmd.Connection     = newCxn;
                        cmd.CommandText    = request;
                        cmd.CommandTimeout = 60 * 60 * 10;
                        System.Data.SqlClient.SqlDataReader rdr = cmd.ExecuteReader();
                        // the SqlDataReader will be closed at the exit of this using block so we copy everything over to our MockDataReader where it will be cached in a DataTable
                        gov.va.medora.mdo.dao.mock.MockDataReader mock = new gov.va.medora.mdo.dao.mock.MockDataReader();
                        DataTable newTable = new DataTable();
                        newTable.Load(rdr);
                        mock.Table = newTable; // the previous couple lines are broken out so the setter on MockDataReader.Table can properly map the column names - IMPORTANT!!
                        return(mock);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Пример #2
0
        static void createBcmaSubFileTables(String sitecode, String startIen, String stopIen)
        {
            String sql = "SELECT LOG.BCMAMedicationLogIEN AS IEN, " +
                         "BCMADRUG.BCMADispensedDrugIEN AS \"53.795_IEN\",DRUG.LocalDrugIEN AS \"53.795_.01\", " +
                         "BCMADRUG.DosesOrdered AS \"53.795_.02\",BCMADRUG.DosesGiven AS \"53.795_.03\",BCMADRUG.UnitOfAdministration AS \"53.795_.04\",BCMAADD.BCMAAdditiveIEN AS \"53.796_IEN\",ADDTVE.IVAdditiveIngredientIEN AS \"53.796_.01\",BCMAADD.DoseOrdered AS \"53.796_.02\", " +
                         "BCMAADD.DoseGiven AS \"53.796_.03\",BCMAADD.UnitOfAdministration AS \"53.796_.04\" " +
                         "FROM BCMA.BCMAMedicationLog LOG " +
                         "LEFT JOIN BCMA.BCMADispensedDrug BCMADRUG ON BCMADRUG.BCMAMedicationLogSID=LOG.BCMAMedicationLogSID " +
                         "  LEFT JOIN Dim.LocalDrug DRUG ON BCMADRUG.LocalDrugSID=DRUG.LocalDrugSID " +
                         "LEFT JOIN BCMA.BCMAAdditive BCMAADD ON BCMAADD.BCMAMedicationLogSID=LOG.BCMAMedicationLogSID " +
                         "  LEFT JOIN Dim.IVAdditiveIngredient ADDTVE ON BCMAADD.IVAdditiveIngredientSID=ADDTVE.IVAdditiveIngredientSID " +
                         "JOIN SPatient.SPatient PAT ON PAT.PatientSID=LOG.PatientSID " +
                         "JOIN Dim.Institution INST ON INST.InstitutionSID=LOG.InstitutionSID " +
                         "JOIN Staff.Staff STAFF  ON LOG.ActionByStaffSID=STAFF.StaffSID " +
                         "JOIN Dim.PharmacyOrderableItem PHARM ON PHARM.PharmacyOrderableItemSID=LOG.PharmacyOrderableItemSID " +
                         " WHERE LOG.Sta3n=" + sitecode + " AND CAST(LOG.BCMAMedicationLogIEN AS INTEGER)>" + startIen +
                         " AND CAST(LOG.BCMAMedicationLogIEN AS INTEGER)<=" + stopIen + " ORDER BY LOG.BCMAMedicationLogIEN ASC;";


            gov.va.medora.mdo.dao.mock.MockDataReader rdr = query(sql);

            String retrievalTime = DateTime.Now.ToString();
            Dictionary <String, IList <object[]> > table53x795ValsByPien = new Dictionary <string, IList <object[]> >();
            Dictionary <String, IList <object[]> > table53x796ValsByPien = new Dictionary <string, IList <object[]> >();

            while (rdr.Read())
            {
                String parentIen = rdr.GetString(rdr.GetOrdinal("IEN"));

                String ien53x795  = rdr.GetString(rdr.GetOrdinal("53.795_IEN"));
                String x01_53x795 = rdr.GetString(rdr.GetOrdinal("53.795_.01"));
                String x02_53x795 = rdr.IsDBNull(rdr.GetOrdinal("53.795_.02")) ? "" : toVistaNumberFormat(Convert.ToDouble(rdr.GetDecimal(rdr.GetOrdinal("53.795_.02")))); //.ToString();
                String x03_53x795 = rdr.IsDBNull(rdr.GetOrdinal("53.795_.03")) ? "" : toVistaNumberFormat(Convert.ToDouble(rdr.GetDecimal(rdr.GetOrdinal("53.795_.03")))); //.ToString();
                String x04_53x795 = rdr.GetString(rdr.GetOrdinal("53.795_.04"));

                String ien53x796  = rdr.GetString(rdr.GetOrdinal("53.796_IEN"));
                String x01_53x796 = rdr.GetString(rdr.GetOrdinal("53.796_.01"));
                String x02_53x796 = rdr.GetString(rdr.GetOrdinal("53.796_.02"));
                String x03_53x796 = rdr.GetString(rdr.GetOrdinal("53.796_.03"));
                String x04_53x796 = rdr.GetString(rdr.GetOrdinal("53.796_.04"));

                if (!String.IsNullOrEmpty(ien53x795))
                {
                    if (!table53x795ValsByPien.ContainsKey(ien53x795 + "_" + parentIen))
                    {
                        table53x795ValsByPien.Add(ien53x795 + "_" + parentIen, new List <object[]>());
                    }
                    table53x795ValsByPien[ien53x795 + "_" + parentIen].Add(new object[] { parentIen, (ien53x795 + "_" + parentIen), sitecode, retrievalTime, x01_53x795, x02_53x795, x03_53x795, x04_53x795 });
                }

                if (!String.IsNullOrEmpty(ien53x796))
                {
                    if (!table53x796ValsByPien.ContainsKey(ien53x796 + "_" + parentIen))
                    {
                        table53x796ValsByPien.Add(ien53x796 + "_" + parentIen, new List <object[]>());
                    }
                    table53x796ValsByPien[ien53x796 + "_" + parentIen].Add(new object[] { parentIen, (ien53x796 + "_" + parentIen), sitecode, retrievalTime, x01_53x796, x02_53x796, x03_53x796, x04_53x796 });
                }

                // incremental saves to avoid big files that cause out of memory
                if (table53x795ValsByPien.Count > 100000)
                {
                    buildDataTablesAndSave(table53x795ValsByPien, table53x796ValsByPien);
                    table53x795ValsByPien.Clear();
                    table53x796ValsByPien.Clear();

                    GC.Collect();
                }
            }

            // add last batch
            if (table53x795ValsByPien.Count > 0 || table53x796ValsByPien.Count > 0)
            {
                buildDataTablesAndSave(table53x795ValsByPien, table53x796ValsByPien);
            }
        }