コード例 #1
0
        public void Init()
        {
            var config = new ConfigurationBuilder()
                         .AddJsonFile("appsettings.json")
                         .Build();
            var connectionString = config["ConnectionStrings:DwapiConnection"];


            _serviceProvider = new ServiceCollection()
                               .AddDbContext <UploadContext>(o => o.UseSqlServer(connectionString))
                               .AddTransient <IHtsSendService, HtsSendService>()
                               .AddTransient <IHtsPackager, HtsPackager>()
                               .AddTransient <IEmrMetricReader, EmrMetricReader>()
                               .AddTransient <IHtsExtractReader, HtsExtractReader>()

                               .BuildServiceProvider();

            /*
             *  22704|TOGONYE DISPENSARY|KIRINYAGA
             *  22696|HERTLANDS MEDICAL CENTRE|NAROK
             */

            _bag       = TestDataFactory.ManifestMessageBag(2, 10001, 10002);
            _clientBag = TestDataFactory.HtsMessageBag(5, 10001, 10002);
        }
コード例 #2
0
ファイル: HtsSendService.cs プロジェクト: mgitonga/dwapi
        public async Task <List <SendMpiResponse> > SendClientsAsync(SendManifestPackageDTO sendTo, HtsMessageBag messageBag)
        {
            var responses = new List <SendMpiResponse>();

            var client    = new HttpClient();
            int sendCound = 0;
            int count     = 0;
            int total     = messageBag.Messages.Count;

            DomainEvents.Dispatch(new HtsStatusNotification(sendTo.ExtractId, ExtractStatus.Sending));

            foreach (var message in messageBag.Messages)
            {
                count++;
                try
                {
                    var msg      = JsonConvert.SerializeObject(message);
                    var response = await client.PostAsJsonAsync(sendTo.GetUrl($"{_endPoint.HasToEndsWith("/")}Clients"), message);

                    if (response.IsSuccessStatusCode)
                    {
                        var content = await response.Content.ReadAsJsonAsync <SendMpiResponse>();

                        responses.Add(content);

                        var sentIds = message.Clients.Select(x => x.Id).ToList();
                        sendCound += sentIds.Count;
                        DomainEvents.Dispatch(new HtsExtractSentEvent(sentIds, SendStatus.Sent, sendTo.ExtractName));
                    }
                    else
                    {
                        var error = await response.Content.ReadAsStringAsync();

                        DomainEvents.Dispatch(new HtsExtractSentEvent(message.Clients.Select(x => x.Id).ToList(), SendStatus.Failed, sendTo.ExtractName, error));
                        throw new Exception(error);
                    }
                }
                catch (Exception e)
                {
                    Log.Error(e, $"Send Manifest Error");
                    throw;
                }

                DomainEvents.Dispatch(new HtsSendNotification(new SendProgress(nameof(HTSClientExtract), Common.GetProgress(count, total))));
            }

            DomainEvents.Dispatch(new HtsSendNotification(new SendProgress(nameof(HTSClientExtract), Common.GetProgress(count, total), true)));

            DomainEvents.Dispatch(new HtsStatusNotification(sendTo.ExtractId, ExtractStatus.Sent, sendCound));

            return(responses);
        }
コード例 #3
0
 public Task <List <SendMpiResponse> > SendPartnerNotificationServicesAsync(SendManifestPackageDTO sendTo)
 {
     return(SendPartnerNotificationServicesAsync(sendTo, HtsMessageBag.Create(_packager.GeneratePartnerNotificationServices().ToList())));
 }
コード例 #4
0
ファイル: HtsSendService.cs プロジェクト: mgitonga/dwapi
 public Task <List <SendMpiResponse> > SendClientsAsync(SendManifestPackageDTO sendTo)
 {
     return(SendClientsAsync(sendTo, HtsMessageBag.Create(_packager.GenerateClients().ToList())));
 }
コード例 #5
0
 public Task <List <SendMpiResponse> > SendPartnerTracingAsync(SendManifestPackageDTO sendTo)
 {
     return(SendPartnerTracingAsync(sendTo, HtsMessageBag.Create(_packager.GeneratePartnerTracing().ToList())));
 }