Beispiel #1
0
        public bool SaveCheckList(MedicareStandingOrderViewModel standingOrder)
        {
            _logger.Info("Saving CheckList from HRA for Visit : " + standingOrder.PatientVisitId + ", version :" + standingOrder.Version + "-> Started");
            var evtCust = _eventCustomerRepository.GetByMedicareVisitId(standingOrder.PatientVisitId);

            if (evtCust != null)
            {
                var model = new CheckListAnswerEditModel();
                model.EventCustomerId = evtCust.Id;
                model.Answers         = standingOrder.Questions.Select(ques => new CheckListQuestionAnswerEditModel {
                    QuestionId = ques.QuestionId, Answer = ques.Answer
                }).ToList();
                _customerCheckListService.SaveCheckListAnswer(model, _sessionContext.UserSession.CurrentOrganizationRole.OrganizationRoleUserId, _sessionContext.UserSession.UserLoginLogId, "");
            }
            _logger.Info("Saving CheckList from HRA for Visit : " + standingOrder.PatientVisitId + ", version :" + standingOrder.Version + "-> Completed");
            return(true);
        }
        public void SaveCheckListAnswer(CheckListAnswerEditModel model, long orgUserId, long userLoginLogId, string token)
        {
            if (model.Answers.IsNullOrEmpty())
            {
                return;
            }

            var eventCustomer = ((IUniqueItemRepository <EventCustomer>)_eventCustomerRepository).GetById(model.EventCustomerId);

            var lastestVersion = model.Version;

            if (model.Version == 0)
            {
                lastestVersion = _checkListAnswerRepository.GetLatestVersion(model.EventCustomerId);
            }
            if (model.Answers.IsNullOrEmpty())
            {
                return;
            }
            var checklistAnswer = new List <CheckListAnswer>();

            foreach (var answer in model.Answers)
            {
                checklistAnswer.Add(new CheckListAnswer
                {
                    Answer               = answer.Answer,
                    QuestionId           = answer.QuestionId,
                    Version              = lastestVersion + 1,
                    Id                   = model.EventCustomerId,
                    IsActive             = true,
                    DataRecorderMetaData = new DataRecorderMetaData(orgUserId, DateTime.Now, null),
                    Type                 = (long)CheckListType.CheckList
                });
            }

            _checkListAnswerRepository.SaveAnswer(checklistAnswer);

            try
            {
                var result = _eventCustomerResultRepository.GetById(model.EventCustomerId);

                if (token != "" && (result == null || result.ResultState < (long)TestResultStateNumber.PreAudit))
                {
                    var questionIds = model.Answers.Where(x => TestQuestionList.Contains(x.QuestionId)).Select(x => x.QuestionId);

                    if (!questionIds.IsNullOrEmpty())
                    {
                        var testIdsToBeUpdated = GetStandingOrderTest(questionIds);
                        if (!testIdsToBeUpdated.IsNullOrEmpty())
                        {
                            UpdateCustomerOrder(eventCustomer.EventId, eventCustomer.CustomerId, testIdsToBeUpdated, orgUserId);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error(string.Format("Some Error Occurred While Customer Updating Order. Exception Message {0} \t\n Stack Trace: {1}", ex.Message, ex.StackTrace));
            }

            if (_settings.SyncWithHra)
            {
                if (token != "")
                {
                    try
                    {
                        var visitId = _eventCustomerRepository.GetById(model.EventCustomerId).AwvVisitId;
                        if (visitId.HasValue)
                        {
                            var answers = new MedicareStandingOrderViewModel
                            {
                                PatientVisitId = visitId.Value,
                                Version        = lastestVersion + 1,
                                IsSync         = true,
                                Questions      = model.Answers.Select(answer => new MedicareCheckListQuestionViewModel
                                {
                                    Answer     = answer.Answer,
                                    QuestionId = answer.QuestionId
                                }).ToList()
                            };
                            try
                            {
                                _medicareApiService.Connect(userLoginLogId);
                            }
                            catch (Exception)
                            {
                                var auth = new MedicareAuthenticationModel {
                                    UserToken = token, CustomerId = 0, OrgName = _settings.OrganizationNameForHraQuestioner, Tag = _settings.OrganizationNameForHraQuestioner, IsForAdmin = false, RoleAlias = "CallCenterRep"
                                };
                                _medicareApiService.PostAnonymous <string>(_settings.MedicareApiUrl + MedicareApiUrl.AuthenticateUser, auth);

                                _medicareApiService.Connect(userLoginLogId);
                            }

                            _medicareApiService.Post <bool>(MedicareApiUrl.SaveCheckList, answers);
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.Error(string.Format("Some Error Occured Whicle Saving Checklist Answer To MEDICARE\n Exception Message {0} \t\n Stack Trace: {1}", ex.Message, ex.StackTrace));
                    }
                }
            }
            else
            {
                _logger.Info("Syncing with HRA is off ");
            }
        }