public IEnumerable <DwhManifest> GenerateWithMetrics(EmrDto emrSetup) { var metrics = _metricReader.ReadAll().FirstOrDefault(); var appMetrics = _metricReader.ReadAppAll().ToList(); var manifests = Generate(emrSetup).ToList(); if (null != metrics) { foreach (var manifest in manifests) { manifest.AddCargo(CargoType.Metrics, metrics); } } if (appMetrics.Any()) { foreach (var manifest in manifests) { foreach (var m in appMetrics) { manifest.AddCargo(CargoType.AppMetrics, m); } } } return(manifests); }
public IEnumerable <Manifest> Generate(EmrDto emrSetup) { var sites = _cbsExtractReader.GetSites(); var profiles = _cbsExtractReader.GetSitePatientProfiles(); return(Manifest.Create(profiles, emrSetup, sites)); }
public IEnumerable <DwhManifest> Generate(EmrDto emrSetup) { var sites = _reader.GetSites(); var patientProfiles = _reader.GetSitePatientProfiles(); return(DwhManifest.Create(patientProfiles, emrSetup, sites)); }
private Manifest(Site site, EmrDto emrDto) { SiteCode = site.SiteCode; Name = site.SiteName; EmrId = emrDto.EmrId; EmrName = emrDto.Name; EmrSetup = emrDto.EmrSetup; }
public DwhManifest(int siteCode, List <int> patientPks, string siteName, EmrDto emrDto) { SiteCode = siteCode; PatientPks = patientPks; Name = siteName; EmrId = emrDto.EmrId; EmrName = emrDto.Name; EmrSetup = emrDto.EmrSetup; }
public IEnumerable <DwhManifest> GenerateDiffWithMetrics(EmrDto emrSetup) { var manifests = GenerateWithMetrics(emrSetup).ToList(); foreach (var dwhManifest in manifests) { dwhManifest.UploadMode = UploadMode.Differential; } return(manifests); }
public IEnumerable <Manifest> GenerateWithMetrics(EmrDto emrSetup) { var metrics = _metricReader.ReadAll().FirstOrDefault(); var appMetrics = _metricReader.ReadAppAll().ToList(); var manifests = Generate(emrSetup).ToList(); if (null != metrics) { foreach (var manifest in manifests) { manifest.AddCargo(metrics); manifest.AddAppToCargo <AppMetricView>(appMetrics); } } return(manifests); }
public static IEnumerable <Manifest> Create(IEnumerable <SiteMetricProfile> profiles, EmrDto emrDto, IEnumerable <Site> sites, CargoType type = CargoType.Patient) { var manifests = new List <Manifest>(); if (emrDto.EmrSetup == EmrSetup.SingleFacility) { var site = sites.OrderByDescending(x => x.PatientCount).First(); var manifest = new Manifest(site, emrDto); manifest.AddCargo(profiles.Select(x => x.MetricId).ToList(), CargoType.Migration); manifests.Add(manifest); return(manifests); } // multi site setup foreach (var site in sites) { var manifest = new Manifest(site, emrDto); var pks = profiles .Where(x => x.SiteCode == site.SiteCode) .Select(x => x.MetricId) .ToList(); manifest.AddCargo(pks, CargoType.Migration); manifests.Add(manifest); } return(manifests); }
public static IEnumerable <DwhManifest> Create(IEnumerable <SitePatientProfile> profiles, EmrDto emrDto, IEnumerable <Site> sites) { var list = new List <DwhManifest>(); if (emrDto.EmrSetup == EmrSetup.SingleFacility) { var site = sites.OrderByDescending(x => x.PatientCount).First(); var manifest = new DwhManifest(site.SiteCode, profiles.Select(x => x.PatientPk).ToList(), site.SiteName, emrDto); list.Add(manifest); return(list); } // multi site setup foreach (var site in sites) { var pks = profiles .Where(x => x.SiteCode == site.SiteCode) .Select(x => x.PatientPk) .ToList(); var manifest = new DwhManifest(site.SiteCode, pks, site.SiteName, emrDto); list.Add(manifest); } return(list); }
public void Setup() { SqlMapper.AddTypeHandler <Guid>(new GuidTypeHandler()); SqlMapper.AddTypeHandler(new NullableLongHandler()); SqlMapper.AddTypeHandler(new NullableIntHandler()); RegisterLicence(); RemoveTestsFilesDbs(); Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Console() .CreateLogger(); var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); IqEmrDto = new EmrDto(new Guid("a62216ee-0e85-11e8-ba89-0ed5f89f718b"), "IQCare", EmrSetup.SingleFacility); IqEmrMultiDto = new EmrDto(new Guid("a62216ee-0e85-11e8-ba89-0ed5f89f718b"), "IQCare", EmrSetup.MultiFacility); KeEmrDto = new EmrDto(new Guid("a6221856-0e85-11e8-ba89-0ed5f89f718b"), "KenyaEMR", EmrSetup.SingleFacility); KeEmrMultiDto = new EmrDto(new Guid("a6221856-0e85-11e8-ba89-0ed5f89f718b"), "KenyaEMR", EmrSetup.MultiFacility); KeEmrCommDto = new EmrDto(new Guid("a6221860-0e85-11e8-ba89-0ed5f89f718b"), "KenyaEMR", EmrSetup.Community); EmrConnectionString = GenerateConnection(config, "emrConnection", false); ConnectionString = GenerateCopyConnection(config, "dwapiConnection"); MsSqlConnectionString = config.GetConnectionString("mssqlConnection"); MySqlConnectionString = config.GetConnectionString("mysqlConnection"); var connection = new SqliteConnection(ConnectionString); connection.Open(); var services = new ServiceCollection(); services.AddDbContext <UploadContext>(x => x.UseSqlite(connection)); #region Setttings.Infrastructure services.AddDbContext <SettingsContext>(x => x.UseSqlite(connection)); services.AddTransient <IAppDatabaseManager, AppDatabaseManager>(); services.AddTransient <IDatabaseManager, DatabaseManager>(); services.AddTransient <IAppMetricRepository, AppMetricRepository>(); services.AddTransient <ICentralRegistryRepository, CentralRegistryRepository>(); services.AddTransient <IDatabaseProtocolRepository, DatabaseProtocolRepository>(); services.AddTransient <IDocketRepository, DocketRepository>(); services.AddTransient <IEmrSystemRepository, EmrSystemRepository>(); services.AddTransient <IExtractRepository, ExtractRepository>(); services.AddTransient <IRestProtocolRepository, RestProtocolRepository>(); #endregion #region Extracts.Infrastructure services.AddDbContext <ExtractsContext>(x => x.UseSqlite(connection)); #region Readers services.AddTransient <IMasterPatientIndexReader, MasterPatientIndexReader>(); services.AddTransient <IDwhExtractSourceReader, DwhExtractSourceReader>(); services.AddTransient <IHTSExtractSourceReader, HTSExtractSourceReader>(); services.AddTransient <IPsmartSourceReader, PsmartSourceReader>(); // NEW services.AddScoped <IMgsExtractSourceReader, MgsExtractSourceReader>(); #endregion services.AddTransient <IEmrMetricRepository, EmrMetricRepository>(); services.AddTransient <IExtractHistoryRepository, ExtractHistoryRepository>(); services.AddTransient <IValidatorRepository, ValidatorRepository>(); services.AddTransient <IPsmartStageRepository, PsmartStageRepository>(); #region CBS services.AddTransient <IMasterPatientIndexRepository, MasterPatientIndexRepository>(); services.AddTransient <ITempMasterPatientIndexRepository, TempMasterPatientIndexRepository>(); #endregion #region NDWH #region Extracts services.AddTransient <IPatientAdverseEventExtractRepository, PatientAdverseEventExtractRepository>(); services.AddTransient <IPatientArtExtractRepository, PatientArtExtractRepository>(); services.AddTransient <IPatientBaselinesExtractRepository, PatientBaselinesExtractRepository>(); services.AddTransient <IPatientExtractRepository, PatientExtractRepository>(); services.AddTransient <IPatientLaboratoryExtractRepository, PatientLaboratoryExtractRepository>(); services.AddTransient <IPatientPharmacyExtractRepository, PatientPharmacyExtractRepository>(); services.AddTransient <IPatientStatusExtractRepository, PatientStatusExtractRepository>(); services.AddTransient <IPatientVisitExtractRepository, PatientVisitExtractRepository>(); #endregion #region TempExtracts services .AddTransient <ITempPatientAdverseEventExtractRepository, TempPatientAdverseEventExtractRepository>(); services.AddTransient <ITempPatientArtExtractRepository, TempPatientArtExtractRepository>(); services.AddTransient <ITempPatientBaselinesExtractRepository, TempPatientBaselinesExtractRepository>(); services.AddTransient <ITempPatientExtractRepository, TempPatientExtractRepository>(); services.AddTransient <ITempPatientLaboratoryExtractRepository, TempPatientLaboratoryExtractRepository>(); services.AddTransient <ITempPatientPharmacyExtractRepository, TempPatientPharmacyExtractRepository>(); services.AddTransient <ITempPatientStatusExtractRepository, TempPatientStatusExtractRepository>(); services.AddTransient <ITempPatientVisitExtractRepository, TempPatientVisitExtractRepository>(); #endregion #region Validations services .AddScoped <ITempPatientAdverseEventExtractErrorSummaryRepository, TempPatientAdverseEventExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientArtExtractErrorSummaryRepository, TempPatientArtExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientBaselinesExtractErrorSummaryRepository, TempPatientBaselinesExtractErrorSummaryRepository>(); services.AddScoped <ITempPatientExtractErrorSummaryRepository, TempPatientExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientLaboratoryExtractErrorSummaryRepository, TempPatientLaboratoryExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientPharmacyExtractErrorSummaryRepository, TempPatientPharmacyExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientStatusExtractErrorSummaryRepository, TempPatientStatusExtractErrorSummaryRepository>(); services .AddScoped <ITempPatientVisitExtractErrorSummaryRepository, TempPatientVisitExtractErrorSummaryRepository >(); #endregion #endregion #region HTS #region Extracts services.AddScoped <IHTSClientExtractRepository, HTSClientExtractRepository>(); services.AddScoped <IHTSClientLinkageExtractRepository, HTSClientLinkageExtractRepository>(); services.AddScoped <IHTSClientPartnerExtractRepository, HTSClientPartnerExtractRepository>(); services.AddScoped <IHtsClientsExtractRepository, HtsClientsExtractRepository>(); services.AddScoped <IHtsClientsLinkageExtractRepository, HtsClientsLinkageExtractRepository>(); services.AddScoped <IHtsClientTestsExtractRepository, HtsClientTestsExtractRepository>(); services.AddScoped <IHtsClientTracingExtractRepository, HtsClientTracingExtractRepository>(); services.AddScoped <IHtsPartnerNotificationServicesExtractRepository, HtsPartnerNotificationServicesExtractRepository>(); services.AddScoped <IHtsPartnerTracingExtractRepository, HtsPartnerTracingExtractRepository>(); services.AddScoped <IHtsTestKitsExtractRepository, HtsTestKitsExtractRepository>(); #endregion #region TempExtracts services.AddScoped <ITempHTSClientExtractRepository, TempHTSClientExtractRepository>(); services.AddScoped <ITempHTSClientLinkageExtractRepository, TempHTSClientLinkageExtractRepository>(); services.AddScoped <ITempHTSClientPartnerExtractRepository, TempHTSClientPartnerExtractRepository>(); services.AddScoped <ITempHtsClientsExtractRepository, TempHtsClientsExtractRepository>(); services.AddScoped <ITempHtsClientsLinkageExtractRepository, TempHtsClientsLinkageExtractRepository>(); services.AddScoped <ITempHtsClientTestsExtractRepository, TempHtsClientTestsExtractRepository>(); services.AddScoped <ITempHtsClientTracingExtractRepository, TempHtsClientTracingExtractRepository>(); services.AddScoped <ITempHtsPartnerNotificationServicesExtractRepository, TempHtsPartnerNotificationServicesExtractRepository>(); services.AddScoped <ITempHtsPartnerTracingExtractRepository, TempHtsPartnerTracingExtractRepository>(); services.AddScoped <ITempHtsTestKitsExtractRepository, TempHtsTestKitsExtractRepository>(); #endregion #region Validations services.AddScoped <ITempHTSClientExtractErrorSummaryRepository, TempHTSClientExtractErrorSummaryRepository>(); services.AddScoped <ITempHTSClientLinkageExtractErrorSummaryRepository, TempHTSClientLinkageExtractErrorSummaryRepository>(); services.AddScoped <ITempHTSClientPartnerExtractErrorSummaryRepository, TempHTSClientPartnerExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsClientsExtractErrorSummaryRepository, TempHtsClientsExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsClientLinkageErrorSummaryRepository, TempHtsClientsLinkageExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsClientTestsErrorSummaryRepository, TempHtsClientTestsExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsClientTracingErrorSummaryRepository, TempHtsClientTracingExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsPartnerNotificationServicesErrorSummaryRepository, TempHtsPartnerNotificationServicesExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsPartnerTracingErrorSummaryRepository, TempHtsPartnerTracingExtractErrorSummaryRepository>(); services.AddScoped <ITempHtsTestKitsErrorSummaryRepository, TempHtsTestKitsExtractErrorSummaryRepository>(); #endregion #endregion #region MGS #region Extracts services.AddScoped <IMetricMigrationExtractRepository, MetricMigrationExtractRepository>(); #endregion #region TempExtracts services.AddScoped <ITempMetricMigrationExtractRepository, TempMetricMigrationExtractRepository>(); #endregion #region Validations services.AddScoped <ITempMetricMigrationExtractErrorSummaryRepository, TempMetricMigrationExtractErrorSummaryRepository>(); #endregion #endregion #region Validators services.AddTransient <IMasterPatientIndexValidator, MasterPatientIndexValidator>(); services.AddTransient <IExtractValidator, ExtractValidator>(); services.AddTransient <IHtsExtractValidator, HtsExtractValidator>(); // NEW services.AddScoped <IMetricExtractValidator, MetricExtractValidator>(); #endregion #endregion #region Cleaners services.AddScoped <IClearCbsExtracts, ClearCbsExtracts>(); services.AddScoped <IClearDwhExtracts, ClearDwhExtracts>(); services.AddScoped <IClearHtsExtracts, ClearHtsExtracts>(); services.AddScoped <IClearMgsExtracts, ClearMgsExtracts>(); #endregion #region Extractors services.AddScoped <IMasterPatientIndexSourceExtractor, MasterPatientIndexSourceExtractor>(); services.AddScoped <IPatientAdverseEventSourceExtractor, PatientAdverseEventSourceExtractor>(); services.AddScoped <IPatientArtSourceExtractor, PatientArtSourceExtractor>(); services.AddScoped <IPatientBaselinesSourceExtractor, PatientBaselinesSourceExtractor>(); services.AddScoped <IPatientLaboratorySourceExtractor, PatientLaboratorySourceExtractor>(); services.AddScoped <IPatientPharmacySourceExtractor, PatientPharmacySourceExtractor>(); services.AddScoped <IPatientSourceExtractor, PatientSourceExtractor>(); services.AddScoped <IPatientStatusSourceExtractor, PatientStatusSourceExtractor>(); services.AddScoped <IPatientVisitSourceExtractor, PatientVisitSourceExtractor>(); services.AddScoped <IHtsClientsSourceExtractor, HtsClientsSourceExtractor>(); services.AddScoped <IHtsClientTestsSourceExtractor, HtsClientTestsSourceExtractor>(); services.AddScoped <IHtsClientsLinkageSourceExtractor, HtsClientsLinkageSourceExtractor>(); services.AddScoped <IHtsTestKitsSourceExtractor, HtsTestKitsSourceExtractor>(); services.AddScoped <IHtsClientTracingSourceExtractor, HtsClientTracingSourceExtractor>(); services.AddScoped <IHtsPartnerTracingSourceExtractor, HtsPartnerTracingSourceExtractor>(); services.AddScoped <IHtsPartnerNotificationServicesSourceExtractor, HtsPartnerNotificationServicesSourceExtractor>(); services.AddScoped <IMetricMigrationSourceExtractor, MetricMigrationSourceExtractor>(); #endregion #region Loaders services.AddScoped <IPatientLoader, PatientLoader>(); services.AddScoped <IPatientArtLoader, PatientArtLoader>(); services.AddScoped <IPatientBaselinesLoader, PatientBaselinesLoader>(); services.AddScoped <IPatientLaboratoryLoader, PatientLaboratoryLoader>(); services.AddScoped <IPatientPharmacyLoader, PatientPharmacyLoader>(); services.AddScoped <IPatientStatusLoader, PatientStatusLoader>(); services.AddScoped <IPatientVisitLoader, PatientVisitLoader>(); services.AddScoped <IPatientAdverseEventLoader, PatientAdverseEventLoader>(); services.AddScoped <IMasterPatientIndexLoader, MasterPatientIndexLoader>(); /*services.AddScoped<IHTSClientLoader, HTSClientLoader>(); * services.AddScoped<IHTSClientLinkageLoader, HTSClientLinkageLoader>(); * services.AddScoped<IHTSClientPartnerLoader, HTSClientPartnerLoader>();*/ services.AddScoped <IHtsClientsLoader, HtsClientsLoader>(); services.AddScoped <IHtsClientTestsLoader, HtsClientTestsLoader>(); services.AddScoped <IHtsClientsLinkageLoader, HtsClientsLinkageLoader>(); services.AddScoped <IHtsTestKitsLoader, HtsTestKitsLoader>(); services.AddScoped <IHtsClientTracingLoader, HtsClientTracingLoader>(); services.AddScoped <IHtsPartnerTracingLoader, HtsPartnerTracingLoader>(); services.AddScoped <IHtsPartnerNotificationServicesLoader, HtsPartnerNotificationServicesLoader>(); services.AddScoped <IMetricMigrationLoader, MetricMigrationLoader>(); #endregion #region Services services.AddScoped <ICbsSendService, CbsSendService>(); services.AddScoped <IMpiSearchService, MpiSearchService>(); services.AddScoped <IDwhSendService, DwhSendService>(); services.AddScoped <ICTSendService, CTSendService>(); services.AddScoped <IHtsSendService, HtsSendService>(); services.AddScoped <IEmrMetricsService, EmrMetricsService>(); services.AddScoped <IMgsSendService, MgsSendService>(); // NEW services.AddScoped <IMgsExtractReader, MgsExtractReader>(); services.AddScoped <IMgsSendService, MgsSendService>(); #endregion services.AddMediatR(typeof(LoadFromEmrCommand)); services.AddTransient <IDwhExtractReader, DwhExtractReader>(); // services.AddTransient<ICTExtractReader, CTExtractReader>(); services.AddTransient <IDwhPackager, DwhPackager>(); // services.AddTransient<ICTPackager, CTPackager>(); // services.AddTransient<ICTSendService, CTSendService>(); services.AddTransient <ICbsSendService, CbsSendService>(); services.AddTransient <ICbsPackager, CbsPackager>(); services.AddTransient <ICbsExtractReader, CbsExtractReader>(); services.AddTransient <IHtsSendService, HtsSendService>(); services.AddTransient <IHtsPackager, HtsPackager>(); services.AddTransient <IMgsPackager, MgsPackager>(); services.AddTransient <IEmrMetricReader, EmrMetricReader>(); services.AddTransient <IHtsExtractReader, HtsExtractReader>(); services.AddTransient <IExtractStatusService, ExtractStatusService>(); services.AddTransient <IExtractHistoryRepository, ExtractHistoryRepository>(); services.AddTransient <IEmrSystemRepository, EmrSystemRepository>(); ServiceProvider = services.BuildServiceProvider(); Mapper.Initialize(cfg => { cfg.AddDataReaderMapping(); cfg.AddProfile <TempExtractProfile>(); cfg.AddProfile <TempMasterPatientIndexProfile>(); cfg.AddProfile <EmrProfiles>(); cfg.AddProfile <TempHtsExtractProfile>(); cfg.AddProfile <MasterPatientIndexProfile>(); cfg.AddProfile <TempMetricExtractProfile>(); } ); ClearDb(); }