public void Init() { _settingsContext = TestInitializer.ServiceProvider.GetService <SettingsContext>(); _settingsContextMysql = TestInitializer.ServiceProviderMysql.GetService <SettingsContext>(); _iQtoolsDb = TestInitializer.IQtoolsDbProtocol; _kenyaEmrDb = TestInitializer.KenyaEmrDbProtocol; }
public int Find(DbProtocol protocol, DbExtract extract) { Log.Debug($"Finding {nameof(PsmartSource)}..."); _mapper = GetMapper(extract.Emr); int extractCount = 0; var connection = GetConnection(protocol); using (connection) { if (connection.State != ConnectionState.Open) { connection.Open(); } using (var command = connection.CreateCommand()) { //Extract SQL command.CommandText = extract.GetCountSQL(); int.TryParse(command.ExecuteScalar().ToString(), out extractCount); } } Log.Debug($"Finding {nameof(PsmartSource)} Completed"); return(extractCount); }
public void Init() { var extractIds = TestInitializer.Iqtools.Extracts.Where(x => x.DocketId.IsSameAs("NDWH")).Select(x => x.Id) .ToList(); var cleaner = TestInitializer.ServiceProvider.GetService <IClearDwhExtracts>(); cleaner.Clear(extractIds); var extractIdsMySql = TestInitializer.KenyaEmr.Extracts.Where(x => x.DocketId.IsSameAs("NDWH")).Select(x => x.Id) .ToList(); var cleanerMySql = TestInitializer.ServiceProviderMysql.GetService <IClearDwhExtracts>(); cleanerMySql.Clear(extractIdsMySql); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); _extractsContextMySql = TestInitializer.ServiceProviderMysql.GetService <ExtractsContext>(); _iQtoolsDb = TestInitializer.Iqtools.DatabaseProtocols.First(x => x.DatabaseName.ToLower().Contains("iqtools".ToLower())); _iQtoolsDb.Host = ".\\Koske14"; _iQtoolsDb.Username = "******"; _iQtoolsDb.Password = "******"; _kenyaEmrDb = TestInitializer.KenyaEmr.DatabaseProtocols.First(); _kenyaEmrDb.Host = "127.0.0.1"; _kenyaEmrDb.Username = "******"; _kenyaEmrDb.Password = "******"; _kenyaEmrDb.DatabaseName = "openmrs"; }
public void Init() { TestInitializer.ClearDb(); TestInitializer.SeedData(TestData.GenerateEmrSystems(TestInitializer.EmrConnectionString)); _protocol = TestInitializer.Protocol; _extracts = TestInitializer.Extracts.Where(x => x.DocketId.IsSameAs("NDWH")).ToList(); }
public IDbConnection GetConnection(DbProtocol databaseProtocol) { var connectionString = databaseProtocol.GetConnectionString(); Log.Debug(new string('+', 40)); Log.Debug(connectionString); Log.Debug(new string('+', 40)); if (databaseProtocol.DatabaseType == DatabaseType.Sqlite) { return(new SqliteConnection(connectionString)); } if (databaseProtocol.DatabaseType == DatabaseType.MicrosoftSQL) { return(new System.Data.SqlClient.SqlConnection(connectionString)); } if (databaseProtocol.DatabaseType == DatabaseType.MySQL) { return(new MySqlConnection(connectionString)); } return(null); }
public void SetUp() { _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); _extractsContextMySql = TestInitializer.ServiceProviderMysql.GetService <ExtractsContext>(); _iQtoolsDb = TestInitializer.IQtoolsDbProtocol; _kenyaEmrDb = TestInitializer.KenyaEmrDbProtocol; }
public void Init() { var extractId = TestInitializer.Iqtools.Extracts.First(x => x.Name.IsSameAs(nameof(MasterPatientIndex))).Id; var cleaner = TestInitializer.ServiceProvider.GetService <ICleanCbsExtracts>(); cleaner.Clean(extractId); var extractIdMySql = TestInitializer.KenyaEmr.Extracts.First(x => x.Name.IsSameAs(nameof(MasterPatientIndex))).Id; var cleanerMySql = TestInitializer.ServiceProviderMysql.GetService <ICleanCbsExtracts>(); cleanerMySql.Clean(extractIdMySql); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); _extractsContextMySql = TestInitializer.ServiceProviderMysql.GetService <ExtractsContext>(); _iQtoolsDb = TestInitializer.Iqtools.DatabaseProtocols.First(x => x.DatabaseName.ToLower().Contains("iqtools".ToLower())); _iQtoolsDb.Host = ".\\Koske14"; _iQtoolsDb.Username = "******"; _iQtoolsDb.Password = "******"; _kenyaEmrDb = TestInitializer.KenyaEmr.DatabaseProtocols.First(); _kenyaEmrDb.Host = "127.0.0.1"; _kenyaEmrDb.Username = "******"; _kenyaEmrDb.Password = "******"; _kenyaEmrDb.DatabaseName = "openmrs"; }
public virtual Task <IDataReader> ExecuteReader(DbProtocol protocol, DbExtract extract) { var sourceConnection = GetConnection(protocol); if (null == sourceConnection) { throw new Exception("Data connection not initialized"); } if (null == extract) { throw new Exception("Extract settings not configured"); } if (sourceConnection.State != ConnectionState.Open) { sourceConnection.Open(); } Connection = sourceConnection; var commandDefinition = new CommandDefinition(extract.ExtractSql, null, null, 0); if (sourceConnection is SqliteConnection) { return(Task.FromResult <IDataReader>(sourceConnection.ExecuteReader(commandDefinition))); } return(sourceConnection.ExecuteReaderAsync(commandDefinition, CommandBehavior.CloseConnection)); }
public void Init() { var extractId = TestInitializer.Iqtools.Extracts.First(x => x.Name.IsSameAs(nameof(PatientVisitExtract))).Id; var cleaner = TestInitializer.ServiceProvider.GetService <ICleanCbsExtracts>(); cleaner.Clean(extractId); var extractIdMySql = TestInitializer.KenyaEmr.Extracts.First(x => x.Name.IsSameAs(nameof(PatientVisitExtract))).Id; var cleanerMySql = TestInitializer.ServiceProviderMysql.GetService <ICleanCbsExtracts>(); cleanerMySql.Clean(extractIdMySql); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); _extractsContextMySql = TestInitializer.ServiceProviderMysql.GetService <ExtractsContext>(); var tempMpis = Builder <TempPatientVisitExtract> .CreateListOfSize(2).All().With(x => x.CheckError = false).Build().ToList(); _extractsContext.TempPatientVisitExtracts.AddRange(tempMpis); _extractsContext.SaveChanges(); _extractsContextMySql.TempPatientVisitExtracts.AddRange(tempMpis); _extractsContextMySql.SaveChanges(); _iQtoolsDb = TestInitializer.Iqtools.DatabaseProtocols.First(x => x.DatabaseName.ToLower().Contains("iqtools".ToLower())); _iQtoolsDb.Host = "."; _iQtoolsDb.Username = "******"; _iQtoolsDb.Password = "******"; _kenyaEmrDb = TestInitializer.KenyaEmr.DatabaseProtocols.First(); _kenyaEmrDb.Host = "127.0.0.1"; _kenyaEmrDb.Username = "******"; _kenyaEmrDb.Password = "******"; _kenyaEmrDb.DatabaseName = "openmrs"; }
public void Init() { TestInitializer.ClearDb(); TestInitializer.SeedData(TestData.GenerateEmrSystems(TestInitializer.EmrConnectionString)); _protocol = TestInitializer.Protocol; _extracts = TestInitializer.Extracts.Where(x => Extentions.IsSameAs(x.DocketId, "HTS")).ToList(); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); }
public void SetUp() { _dbManager = new DbManager(); _dbProtocol = new DbProtocol(); _dbProtocol.Database = "iqcare"; _dbProtocol.Password = "******"; _dbProtocol.User = "******"; _dbProtocol.Server = @"192.168.1.10\sqlexpress"; }
public async Task <int> Extract(DbExtract extract, DbProtocol dbProtocol) { int batch = 500; var list = new List <TempPatientAdverseEventExtract>(); int count = 0; int loaded = 0; using (var rdr = await _reader.ExecuteReader(dbProtocol, extract)) { while (rdr.Read()) { count++; // AutoMapper profiles var extractRecord = Mapper.Map <IDataRecord, TempPatientAdverseEventExtract>(rdr); extractRecord.Id = LiveGuid.NewGuid(); if (extractRecord.HasData()) { loaded++; list.Add(extractRecord); } if (count == batch) { _extractRepository.BatchInsert(list); count = 0; DomainEvents.Dispatch( new ExtractActivityNotification(extract.Id, new DwhProgress( nameof(PatientAdverseEventExtract), nameof(ExtractStatus.Finding), loaded, 0, 0, 0, 0))); list = new List <TempPatientAdverseEventExtract>(); } } if (count > 0) { // save remaining list; _extractRepository.BatchInsert(list); } _extractRepository.CloseConnection(); } // TODO: Notify Completed; DomainEvents.Dispatch( new ExtractActivityNotification(extract.Id, new DwhProgress( nameof(PatientAdverseEventExtract), nameof(ExtractStatus.Found), loaded, 0, 0, 0, 0))); return(loaded); }
public Task <int> Extract(DbExtract extract, DbProtocol dbProtocol) { var mapper = dbProtocol.SupportsDifferential ? ExtractDiffMapper.Instance : ExtractMapper.Instance; int batch = 500; var list = new List <TempCwcVisitExtract>(); int count = 0; int loaded = 0; using (var rdr = _reader.ExecuteReaderSync(dbProtocol, extract)) { while (rdr.Read()) { count++; loaded++; // AutoMapper profiles var extractRecord = mapper.Map <IDataRecord, TempCwcVisitExtract>(rdr); extractRecord.Id = LiveGuid.NewGuid(); list.Add(extractRecord); if (count == batch) { _extractRepository.BatchInsert(list); count = 0; DomainEvents.Dispatch( new MnchExtractActivityNotification(extract.Id, new DwhProgress( nameof(CwcVisitExtract), nameof(ExtractStatus.Finding), loaded, 0, 0, 0, 0))); list = new List <TempCwcVisitExtract>(); } } if (count > 0) { // save remaining list; _extractRepository.BatchInsert(list); } _extractRepository.CloseConnection(); } // TODO: Notify Completed; DomainEvents.Dispatch( new MnchExtractActivityNotification(extract.Id, new DwhProgress( nameof(CwcVisitExtract), nameof(ExtractStatus.Found), loaded, 0, 0, 0, 0))); return(Task.FromResult(loaded)); }
private void InitExtractor() { _protocol = TestInitializer.Protocol; _extracts = TestInitializer.Extracts.Where(x => Extentions.IsSameAs(x.DocketId, "NDWH")).ToList(); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); var patientExtract = _extracts.First(x => x.Name.IsSameAs(nameof(PatientExtract))); var patientLoader = TestInitializer.ServiceProvider.GetService <IPatientLoader>(); var patientSourceExtractor = TestInitializer.ServiceProvider.GetService <IPatientSourceExtractor>(); var tempCount = patientSourceExtractor.Extract(patientExtract, _protocol).Result; var patientCount = patientLoader.Load(patientExtract.Id, tempCount, false).Result; }
public void SetUp() { _mssql = new DbProtocol(DatabaseType.MicrosoftSQL, @".\koske14", "sa", "maun", "IQTools_KeHMIS"); _extractA = new DbExtract { ExtractSql = @"select [Id],[shr],[date_created],[status],[status_date],[uuid] FROM psmart_store", Emr = "IQCare" }; _mysql = new DbProtocol(DatabaseType.MySQL, @"localhost", "root", "test", "openmrs"); _extractB = new DbExtract { ExtractSql = @"select id,shr,date_created,status,status_date,uuid FROM psmart_store", Emr = "KenyaEMR" }; _psmartSourceReader = new PsmartSourceReader(); }
public IEnumerable <PsmartSource> Read(DbProtocol protocol, DbExtract extract) { _mapper = GetMapper(extract.Emr); IList <PsmartSource> extracts = new List <PsmartSource>(); var connection = GetConnection(protocol); using (connection) { if (connection.State != ConnectionState.Open) { connection.Open(); } using (var command = connection.CreateCommand()) { //Extract SQL command.CommandText = extract.ExtractSql; extracts = _mapper.Map <IDataReader, IList <PsmartSource> >(command.ExecuteReader()); } } if (extracts.Count > 0) { using (connection = GetConnection(protocol)) { if (connection.State != ConnectionState.Open) { connection.Open(); } using (var updateCommand = connection.CreateCommand()) { StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < extracts.Count; i++) { if (i == extracts.Count - 1) { stringBuilder.Append($"'{extracts[i].Uuid}'"); } else { stringBuilder.Append($"'{extracts[i].Uuid}',"); } } updateCommand.CommandText = $"update psmart_store set Status = 'Collected', Status_date = '{DateTime.Now.Date:yyyy-MM-dd HH:mm:ss}' where UUID in ({stringBuilder.ToString()})"; updateCommand.ExecuteNonQuery(); } } } return(extracts); }
public string BuildConncetion(DbProtocol dbProtocol) { var sb = new SqlConnectionStringBuilder(); sb.DataSource = dbProtocol.Server; sb.UserID = dbProtocol.User; sb.Password = dbProtocol.Password; sb.InitialCatalog = dbProtocol.Database; sb.MultipleActiveResultSets = true; sb.Pooling = true; sb.PersistSecurityInfo = true; return(sb.ConnectionString); }
public void Init() { TestInitializer.ClearDb(); TestInitializer.SeedData(TestData.GenerateEmrSystems(TestInitializer.EmrConnectionString)); _protocol = TestInitializer.Protocol; _extracts = TestInitializer.Extracts.Where(x => x.DocketId.IsSameAs("MNCH")).ToList(); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); var patientExtract = _extracts.First(x => x.Name.IsSameAs(nameof(PatientMnchExtract))); var patientLoader = TestInitializer.ServiceProvider.GetService <IPatientMnchLoader>(); var patientSourceExtractor = TestInitializer.ServiceProvider.GetService <IPatientMnchSourceExtractor>(); var tempCount = patientSourceExtractor.Extract(patientExtract, _protocol).Result; var patientCount = patientLoader.Load(patientExtract.Id, tempCount, false).Result; }
public void Init() { TestInitializer.ClearDb(); TestInitializer.SeedData(TestData.GenerateEmrSystems(TestInitializer.EmrConnectionString)); _protocol = TestInitializer.Protocol; _extracts = TestInitializer.Extracts.Where(x => x.DocketId.IsSameAs("HTS")).ToList(); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); var clientExtract = _extracts.First(x => x.Name.IsSameAs("HtsClient")); var clientLoader = TestInitializer.ServiceProvider.GetService <IHtsClientsLoader>(); var clientsSourceExtractor = TestInitializer.ServiceProvider.GetService <IHtsClientsSourceExtractor>(); var tempCount = clientsSourceExtractor.Extract(clientExtract, _protocol).Result; var patientCount = clientLoader.Load(clientExtract.Id, tempCount).Result; }
public bool CheckDiffSupport(DbProtocol protocol) { if (!protocol.DiffSupport) { return(false); } var sourceConnection = GetConnection(protocol); if (null == sourceConnection) { throw new Exception("Data connection not initialized"); } using (sourceConnection) { if (sourceConnection.State != ConnectionState.Open) { sourceConnection.Open(); } var commandDefinition = new CommandDefinition(protocol.DiffSqlCheck, null, null, 0); try { if (sourceConnection is SqliteConnection) { using (var diffReader = sourceConnection.ExecuteReader(commandDefinition)) { diffReader.Read(); } } else { using (var diffReader = sourceConnection.ExecuteReader(commandDefinition, CommandBehavior.CloseConnection)) { diffReader.Read(); } } return(true); } catch (Exception e) { Log.Warning("Missing differential upload feature in EMR"); } } return(false); }
public IActionResult SaveConnection([FromBody] DbProtocol dbProtocol) { if (null == dbProtocol) { return(BadRequest()); } try { _options.Update(opt => { opt.HapiConnection = _dbManager.BuildConncetion(dbProtocol); }); return(Ok(true)); } catch (Exception e) { Log.Error($"{e}"); return(StatusCode(500, $"{e.Message}")); } }
public void SetUp() { _context = new ExtractsContext(_options); _context.Database.EnsureDeleted(); _context.Database.EnsureCreated(); _dbExtractProtocolDtos = new List <DbExtractProtocolDTO>(); _mssql = new DbProtocol(DatabaseType.MicrosoftSQL, @".\koske14", "sa", "maun", "IQTools_KeHMIS"); _extractA = new DbExtract { Id = _iqcareId, Emr = "IQCare", ExtractSql = @" select [Id],[shr],[date_created],[status],[status_date],[uuid] FROM [psmart_store]" }; _mysql = new DbProtocol(DatabaseType.MySQL, @"localhost", "root", "test", "openmrs"); _extractB = new DbExtract { Id = _kenyaEmrId, Emr = "KenyaEMR", ExtractSql = @" select id,shr,date_created,status,status_date,uuid FROM psmart_store" }; _dbExtractProtocolDtos.Add(new DbExtractProtocolDTO(_extractA, _mssql)); _dbExtractProtocolDtos.Add(new DbExtractProtocolDTO(_extractB, _mysql)); _extractHistoryRepository = new ExtractHistoryRepository(_context); _psmartExtractService = new PsmartExtractService(new PsmartSourceReader(), new PsmartStageRepository(_context), _extractHistoryRepository); }
public void Init() { var extractIds = TestInitializer.Iqtools.Extracts.Where(x => x.DocketId.IsSameAs("NDWH")).Select(x => x.Id) .ToList(); var cleaner = TestInitializer.ServiceProvider.GetService <IClearDwhExtracts>(); cleaner.Clear(extractIds); var extractIdsMySql = TestInitializer.KenyaEmr.Extracts.Where(x => x.DocketId.IsSameAs("NDWH")).Select(x => x.Id) .ToList(); var cleanerMySql = TestInitializer.ServiceProviderMysql.GetService <IClearDwhExtracts>(); cleanerMySql.Clear(extractIdsMySql); _extractsContext = TestInitializer.ServiceProvider.GetService <ExtractsContext>(); _extractsContextMySql = TestInitializer.ServiceProviderMysql.GetService <ExtractsContext>(); var patients = Builder <PatientExtract> .CreateListOfSize(1).All().With(x => x.SiteCode = 1).With(x => x.PatientPK = 1).Build().ToList(); var tempMpis = Builder <TempPatientPharmacyExtract> .CreateListOfSize(1).All().With(x => x.SiteCode = 1).With(x => x.PatientPK = 1).With(x => x.CheckError = false).Build().ToList(); _extractsContext.PatientExtracts.AddRange(patients); _extractsContext.TempPatientPharmacyExtracts.AddRange(tempMpis); _extractsContext.SaveChanges(); _extractsContextMySql.PatientExtracts.AddRange(patients); _extractsContextMySql.TempPatientPharmacyExtracts.AddRange(tempMpis); _extractsContextMySql.SaveChanges(); _iQtoolsDb = TestInitializer.Iqtools.DatabaseProtocols.First(x => x.DatabaseName.ToLower().Contains("iqtools".ToLower())); _iQtoolsDb.Host = "."; _iQtoolsDb.Username = "******"; _iQtoolsDb.Password = "******"; _kenyaEmrDb = TestInitializer.KenyaEmr.DatabaseProtocols.First(); _kenyaEmrDb.Host = "127.0.0.1"; _kenyaEmrDb.Username = "******"; _kenyaEmrDb.Password = "******"; _kenyaEmrDb.DatabaseName = "openmrs"; }
public bool VerfiyServer(DbProtocol dbProtocol) { bool isConnected = false; var sb = new SqlConnectionStringBuilder(); sb.DataSource = dbProtocol.Server; sb.UserID = dbProtocol.User; sb.Password = dbProtocol.Password; sb.InitialCatalog = "master"; sb.MultipleActiveResultSets = true; sb.PersistSecurityInfo = true; sb.Pooling = true; using (var cn = new SqlConnection(sb.ConnectionString)) { cn.Open(); isConnected = cn.State == ConnectionState.Open; } return(isConnected); }
public IActionResult VerifyDb([FromBody] DbProtocol dbProtocol) { if (null == dbProtocol) { return(BadRequest()); } try { var connected = _dbManager.Verfiy(dbProtocol); if (connected) { return(Ok(true)); } throw new Exception("Database could not connect"); } catch (Exception e) { Log.Error($"{e}"); return(StatusCode(500, $"{e.Message}")); } }
public async Task <int> Extract(DbExtract extract, DbProtocol dbProtocol) { int batch = 500; DomainEvents.Dispatch(new MgsNotification(new ExtractProgress(nameof(MetricMigrationExtract), "extracting..."))); //DomainEvents.Dispatch(new CbsStatusNotification(extract.Id,ExtractStatus.Loading)); var list = new List <TempMetricMigrationExtract>(); int count = 0; int totalCount = 0; using (var rdr = await _reader.ExecuteReader(dbProtocol, extract)) { while (rdr.Read()) { totalCount++; count++; // AutoMapper profiles var extractRecord = Mapper.Map <IDataRecord, TempMetricMigrationExtract>(rdr); extractRecord.Id = LiveGuid.NewGuid(); list.Add(extractRecord); if (count == batch) { // TODO: batch and save _extractRepository.BatchInsert(list); try { DomainEvents.Dispatch(new MgsNotification(new ExtractProgress(nameof(MetricMigrationExtract), "extracting...", totalCount, count, 0, 0, 0))); } catch (Exception e) { Log.Error(e, "Notification error"); } count = 0; list = new List <TempMetricMigrationExtract>(); } // TODO: Notify progress... } if (count > 0) { _extractRepository.BatchInsert(list); } _extractRepository.CloseConnection(); } try { DomainEvents.Dispatch(new MgsNotification(new ExtractProgress(nameof(MetricMigrationExtract), "extracted", totalCount, 0, 0, 0, 0))); DomainEvents.Dispatch(new MgsStatusNotification(extract.Id, ExtractStatus.Found, totalCount)); DomainEvents.Dispatch(new MgsStatusNotification(extract.Id, ExtractStatus.Loaded, totalCount)); } catch (Exception e) { Log.Error(e, "Notification error"); } return(totalCount); }
public int Find(DbProtocol protocol, DbExtract extract) { throw new NotImplementedException(); }
public Task <int> ReadExtract(DbExtract extract, DbProtocol dbProtocol) { throw new NotImplementedException(); }
public IEnumerable <PsmartSource> Extract(DbProtocol protocol, DbExtract extract) { _emr = extract.Emr; return(_psmartSourceReader.Read(protocol, extract)); }
public bool CheckDiffSupport(DbProtocol protocol) { throw new NotImplementedException(); }