示例#1
0
        private void SyncReadyForCoding(PostEvaluationEditModel model)
        {
            var ehrReadyforCoding = new EhrReadyforCodingViewModel
            {
                EventId        = model.EventId,
                HfCustomerId   = model.CustomerId,
                ReadyForCoding = true,
                Message        = model.Message
            };

            _newResultFlowStateService.RunTaskReadyForCodingForVisit(ehrReadyforCoding, model.OrganizationRoleUserId, "SetAllResultsforPostEvaluationEdit");
        }
        public void PollForSync()
        {
            try
            {
                _logger.Info("Syncing results ready for coding......");

                var results = _eventCustomerResultRepository.GetResultsNpVerified((int)NewTestResultStateNumber.NpSigned, true, _settings.ResultFlowChangeDate);

                if (results.IsNullOrEmpty())
                {
                    _logger.Info("No results found for sync.");
                    return;
                }

                _logger.Info("Total records : " + results.Count());

                foreach (var result in results)
                {
                    try
                    {
                        _logger.Info(string.Format("EventID : {0} and CustomerID : {1}", result.EventId, result.CustomerId));

                        var syncModel = new EhrReadyforCodingViewModel
                        {
                            EventId        = result.EventId,
                            HfCustomerId   = result.CustomerId,
                            ReadyForCoding = true,
                            Message        = string.Empty
                        };

                        _newResultFlowStateService.SyncReadyForCodingForVisit(syncModel, result.DataRecorderMetaData.DataRecorderModifier.Id, "SaveCustomerResultAfterEvaluation");
                    }
                    catch (Exception ex)
                    {
                        _logger.Error(string.Format("Error syncing to HRA for EventID : {0} and CustomerID : {1}", result.EventId, result.CustomerId));
                        _logger.Error(ex);
                    }
                }

                _logger.Info("Result sync completed.");
            }
            catch (Exception ex)
            {
                _logger.Error("Error getting data for sync.", ex);
            }
        }
        public bool SyncReadyForCodingForVisit(EhrReadyforCodingViewModel readyforCodingModel, long orgRoleId, string callingMethod)
        {
            try
            {
                _logger.Info("calling method " + callingMethod + " from Hra. eventId: " + readyforCodingModel.EventId + " customerId: " + readyforCodingModel.HfCustomerId);
                var model = new EhrToggleReadyForCodingSyncModel
                {
                    OrganizationName    = _organizationName,
                    AuthToken           = DateTime.UtcNow.ToLongTimeString().Encrypt(),
                    ReadyForCodingModel = readyforCodingModel
                };

                var isSynced = false;
                if (_syncWithHra)
                {
                    isSynced = _medicareApiService.PostAnonymous <bool>(_medicareApiUrl + MedicareApiUrl.ToggleReadyForCodingForVisit, model);
                }
                else
                {
                    _logger.Info("Sync with HRA is Off");
                }


                _logger.Info("completed calling method " + callingMethod + " eventId: " + readyforCodingModel.EventId + " customerId: " + readyforCodingModel.HfCustomerId + " returned value from Hra : " + isSynced);

                if (isSynced)
                {
                    _logger.Info("Sync Success for calling method " + callingMethod + " eventId: " + readyforCodingModel.EventId + " customerId: " + readyforCodingModel.HfCustomerId);

                    _testResultService.SetResultstoState(model.ReadyForCodingModel.EventId, model.ReadyForCodingModel.HfCustomerId, (int)NewTestResultStateNumber.NpSigned, false, orgRoleId);
                }
                _logger.Info("completed calling method " + callingMethod + " eventId: " + readyforCodingModel.EventId + " customerId: " + readyforCodingModel.HfCustomerId);

                return(isSynced);
            }
            catch (Exception ex)
            {
                _logger.Error("error for calling method " + callingMethod + " eventId: " + readyforCodingModel.EventId + " customerid: " + readyforCodingModel.HfCustomerId);
                _logger.Error("ex " + ex.Message);
                _logger.Error("ex " + ex.StackTrace);
            }

            return(false);
        }
示例#4
0
        public static void SkipEvaluationfornotContainingReviewableTest(long eventId, long customerId, bool isNewResultFlow)
        {
            try
            {
                //Call API for mark can not be audited now.

                var eventCustomerResultRepository = IoC.Resolve <IEventCustomerResultRepository>();
                var eventCustomer    = eventCustomerResultRepository.GetByCustomerIdAndEventId(customerId, eventId);
                var currentSession   = IoC.Resolve <ISessionContext>().UserSession;
                var defaultPhysician = IoC.Resolve <IPhysicianRepository>().GetDefaultPhysicianforEvent(eventId);
                var orgRoleId        = currentSession.CurrentOrganizationRole.OrganizationRoleUserId;
                IoC.Resolve <IPhysicianEvaluationRepository>().SaveCustomerforReviewSkip(eventCustomer.Id, defaultPhysician, orgRoleId, false);
                var account                = IoC.Resolve <ICorporateAccountRepository>().GetbyEventId(eventId);
                var isEawvTestPurchased    = IoC.Resolve <TestResultService>().IsTestPurchasedByCustomer(eventCustomer.Id, (long)TestType.eAWV);
                var isEawvTestNotPerformed = IoC.Resolve <ITestNotPerformedRepository>().IsTestNotPerformed(eventCustomer.Id, (long)TestType.eAWV);
                var testResultRepository   = new TestResultRepository();

                var eventRepository = IoC.Resolve <IEventRepository>();
                var theEvent        = eventRepository.GetById(eventId);

                var orderId      = IoC.Resolve <IOrderRepository>().GetOrderIdByEventIdCustomerId(eventId, customerId);
                var isEntrybyHip = IoC.Resolve <IEventTestRepository>().GetTestsForOrder(orderId).Any(et => et.ResultEntryTypeId.HasValue == false || et.ResultEntryTypeId.Value == (long)ResultEntryType.Hip);

                var questionnaireType = QuestionnaireType.None;
                if (account != null && theEvent != null)
                {
                    var accountHraChatQuestionnaireHistoryServices = IoC.Resolve <IAccountHraChatQuestionnaireHistoryServices>();
                    questionnaireType = accountHraChatQuestionnaireHistoryServices.QuestionnaireTypeByAccountIdandEventDate(account.Id, theEvent.EventDate);
                }

                if (isNewResultFlow)
                {
                    var testResultService = IoC.Resolve <ITestResultService>();
                    if (!isEntrybyHip)
                    {
                        testResultService.SetResultstoState(eventCustomer.EventId, eventCustomer.CustomerId, (int)NewTestResultStateNumber.ArtifactSynced, false, orgRoleId);
                    }
                    else
                    {
                        if (account == null || account.IsHealthPlan == false || isEawvTestNotPerformed || questionnaireType != QuestionnaireType.HraQuestionnaire)
                        {
                            testResultService.SetResultstoState(eventCustomer.EventId, eventCustomer.CustomerId, (int)NewTestResultStateNumber.ArtifactSynced, false, orgRoleId);
                        }
                        else
                        {
                            testResultService.SetResultstoState(eventCustomer.EventId, eventCustomer.CustomerId, (int)NewTestResultStateNumber.NpSigned, false, orgRoleId);
                        }
                    }
                }
                else
                {
                    testResultRepository.UpdateStateforSkipEvaluation(eventCustomer.Id, null);
                    eventCustomerResultRepository.SetEventCustomerResultState(eventId, customerId);
                }

                if (isNewResultFlow && account != null && account.IsHealthPlan && (questionnaireType == QuestionnaireType.HraQuestionnaire) && isEawvTestPurchased && !isEawvTestNotPerformed)
                {
                    var service = IoC.Resolve <INewResultFlowStateService>();

                    var model = new EhrReadyforCodingViewModel
                    {
                        EventId        = eventId,
                        HfCustomerId   = customerId,
                        ReadyForCoding = true
                    };

                    service.RunTaskReadyForCodingForVisit(model, currentSession.CurrentOrganizationRole.OrganizationRoleUserId, "SkipEvaluationfornotContainingReviewableTest");
                }
            }
            catch (Exception ex)
            {
                IoC.Resolve <ILogManager>().GetLogger <Global>().Error("Some Exception occurred while recording for Skip Evaluation for Not containing re-viewable test(s)! Message:" + ex.Message + "\n\t " + ex.StackTrace);
            }
        }
 public bool RunTaskReadyForCodingForVisit(EhrReadyforCodingViewModel model, long orgId, string callingMethod)
 {
     Task.Run(() => SyncReadyForCodingForVisit(model, orgId, callingMethod));
     return(true);
 }