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; } }
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); } }