コード例 #1
0
        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);
        }
コード例 #2
0
        public IEnumerable <Manifest> Generate(EmrDto emrSetup)
        {
            var sites    = _cbsExtractReader.GetSites();
            var profiles = _cbsExtractReader.GetSitePatientProfiles();

            return(Manifest.Create(profiles, emrSetup, sites));
        }
コード例 #3
0
        public IEnumerable <DwhManifest> Generate(EmrDto emrSetup)
        {
            var sites           = _reader.GetSites();
            var patientProfiles = _reader.GetSitePatientProfiles();

            return(DwhManifest.Create(patientProfiles, emrSetup, sites));
        }
コード例 #4
0
 private Manifest(Site site, EmrDto emrDto)
 {
     SiteCode = site.SiteCode;
     Name     = site.SiteName;
     EmrId    = emrDto.EmrId;
     EmrName  = emrDto.Name;
     EmrSetup = emrDto.EmrSetup;
 }
コード例 #5
0
 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;
 }
コード例 #6
0
        public IEnumerable <DwhManifest> GenerateDiffWithMetrics(EmrDto emrSetup)
        {
            var manifests = GenerateWithMetrics(emrSetup).ToList();

            foreach (var dwhManifest in manifests)
            {
                dwhManifest.UploadMode = UploadMode.Differential;
            }

            return(manifests);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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();
        }