예제 #1
0
        public async Task <ActionResult <bool> > RunRegistrationRules([FromBody] PatientDTO registrationDTO)
        {
            bool commandResult = false;

            var command = new RunRegistrationRulesCommand(registrationDTO.FirstName, registrationDTO.LastName, registrationDTO.BirthDate, registrationDTO.Gender);

            _logger.LogInformation("-----Sending command: RunRegistrationRulesCommand");

            commandResult = await _mediatr.Send(command);

            if (!commandResult)
            {
                return(BadRequest());
            }

            return(Ok());
        }
        public async Task Handle(RegistrationReceivedIntegrationEvent @event)
        {
            using (LogContext.PushProperty("IntegrationEventContext", $"{@event.Id}-{QAService.API.Program.AppName}"))
            {
                _logger.LogInformation("----- Handling integration event: {IntegrationEventId} at {AppName} - ({@IntegrationEvent})", @event.Id, QAService.API.Program.AppName, @event);


                if (await _grpcClientService.ClientFacilitySubscribesToModuleByFacilityId(@event.ClientId, @event.FacilityId))
                {
                    try
                    {
                        Adt adt = await _grpcRegistrationService.RegistrationDataById(@event.DocumentId, @event.ClientId);


                        bool commandResult = false;

                        string[] format = { "yyyyMMdd" };
                        DateTime date;

                        DateTime.TryParseExact(adt.content.PID[0].dateTimeBirth,
                                               format,
                                               System.Globalization.CultureInfo.InvariantCulture,
                                               System.Globalization.DateTimeStyles.None,
                                               out date);

                        var command = new RunRegistrationRulesCommand(adt.content.PID[0].patientName[0].firstName, "",
                                                                      adt.content.PID[0].patientName[0].lastName,
                                                                      date,
                                                                      adt.content.PID[0].sex, adt.PatientId, adt.PatientVisitId, adt.PatientTransactionId, adt.ClientId);

                        _logger.LogInformation("-----Sending command: RunRegistrationRulesCommand");

                        commandResult = await _mediatr.Send(command);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error: " + e.Message);
                    }
                }
                await Task.CompletedTask;
            }
        }