Exemplo n.º 1
0
        public void SessionUpdateUpdatesSession()
        {
            var sur     = new SessionUpdateRequest();
            var session = new ValidatedSession();

            session.CaseID                   = 522;
            session.DateOfService            = DateTime.Today;
            session.Duration                 = TimeSpan.FromMinutes(45);
            session.LocationID               = 2;
            session.ServerValidatedSessionID = 0;
            session.ServiceID                = 9;
            session.StartTime                = DateTime.Now.TimeOfDay;

            sur.SessionDetails    = session;
            sur.QuestionResponses = new System.Collections.Generic.List <NoteQuestionResponse>();
            sur.QuestionResponses.Add(new NoteQuestionResponse()
            {
                Answer         = "This is my answer.  It has to be enough characters.  It has to have words and sentences and periods.",
                NoteQuestionID = 15
            });

            var sut = _repo.SessionUpdate(sur);

            Assert.IsTrue(sut.Success);
        }
Exemplo n.º 2
0
        public SessionUpdateResponse PostSessionUpdate([FromBody] SessionUpdateRequest sessionUpdateRequest)
        {
            log.Info("PostSessionUpdate " + DataStringProvider.GetDataString(sessionUpdateRequest));
            log.Info("PostSessionUpdate: ServerValidatedSessionID " + sessionUpdateRequest.SessionDetails.ServerValidatedSessionID);
            var response = _caseRepository.SessionUpdate(sessionUpdateRequest);

            return(response);
        }
Exemplo n.º 3
0
        public HoursEntryRequestVM FromSessionUpdateRequest(SessionUpdateRequest source)
        {
            var session   = source.SessionDetails;
            var questions = source.QuestionResponses;

            var result = new HoursEntryRequestVM
            {
                Status = (int)Domain2.Hours.HoursStatus.ComittedByProvider,
                AllowHasDataChanges = false,
                CatalystPreloadID   = null,
                Date              = session.DateOfService,
                HoursID           = session.ServerValidatedSessionID,
                IgnoreWarnings    = false,
                IsTrainingEntry   = false,
                PatientID         = _context.Cases.Find(session.CaseID).PatientID,
                ProviderID        = _provider.ID,
                ServiceID         = session.ServiceID,
                ServiceLocationID = session.LocationID,
                SsgIDs            = session.SsgCaseIds?.Split(',').Select(x => int.Parse(x)).ToArray(),
                TimeIn            = session.DateOfService + session.StartTime,
                TimeOut           = session.DateOfService + session.StartTime + session.Duration
            };

            if (_provider.ProviderTypeID == (int)ProviderTypeIDs.BoardCertifiedBehavioralAnalyst)
            {
                // get multiple questions
                result.ExtendedNotes = new List <HoursEntryRequestExtendedNoteVM>();
                foreach (var q in questions)
                {
                    result.ExtendedNotes.Add(new HoursEntryRequestExtendedNoteVM()
                    {
                        TemplateID = q.NoteQuestionID,
                        Answer     = q.Answer
                    });
                }
            }
            else
            {
                // get single question
                if (questions.Count > 0)
                {
                    result.Note = questions.First().Answer;
                }
            }
            result.Base64Signatures = source.Base64Signatures.ToArray();
            return(result);
        }
Exemplo n.º 4
0
        public async Task <SessionUpdateResponse> PostSessionUpdateRequestToServer(SessionUpdateRequest sessionUpdateRequest)
        {
            var communicationHelper = new CommunicationHelper <SessionUpdateResponse, ErrorResponse> {
                Timeout = GetTimeout()
            };

            var authenticationHeader = await _accountService.GetAuthenticationHeader();

            var response = await communicationHelper.PostRequest(_urlHelper.BuildUrl("api/Cases/SessionUpdate"), JsonConvert.SerializeObject(sessionUpdateRequest), authenticationHeader);

            if (response == null)
            {
                throw new CommunicationException(communicationHelper.ErrorResponse?.ToStringList());
            }

            return(response);
        }
Exemplo n.º 5
0
        public SessionUpdateResponse SessionUpdate(SessionUpdateRequest sessionUpdateRequest)
        {
            // This runs on final entry
            // requires full notes, etc
            var hoursEntryModel   = hoursEntryMappings.FromSessionUpdateRequest(sessionUpdateRequest);
            var apiResponse       = new SessionUpdateResponse();
            var hoursEntryService = new Services.HoursEntryService();

            try
            {
                var hoursEntryResponse = hoursEntryService.SubmitHoursRequest(hoursEntryModel, DomainServices.HoursResolution.EntryApp.ProviderApp);
                apiResponse.Success = hoursEntryResponse.WasProcessed;
                if (!hoursEntryResponse.WasProcessed)
                {
                    log.Warn("Expected hours submission failed with the following: " + string.Join(";", hoursEntryResponse.Messages.Select(x => x.Message).ToArray()));
                }
            }
            catch (Exception e)
            {
                log.Error("Error in Session Update", e);
                apiResponse.Success = false;
            }
            return(apiResponse);
        }
Exemplo n.º 6
0
        public async Task SendDataToServer()
        {
            // there's no point in trying if we're not connected
            if (!_connectivity.IsConnected)
            {
                return;
            }

            // if we're already doing this then just return,
            // but indicate that we want to run again, because we don't know that we don't
            if (_sendDataToServerAlreadyRunning)
            {
                return;
            }

            try
            {
                // set the _sendDataToServerAlreadyRunning flag
                lock (_sendDataToServerAlreadyRunningLock)
                {
                    if (_sendDataToServerAlreadyRunning)
                    {
                        return;
                    }
                    else
                    {
                        _sendDataToServerAlreadyRunning = true;
                    }
                }

                // get the data to update
                var caseValidations = await _databaseService.GetAllDataToSendToServer();

                // for each caseValidation
                foreach (var caseValidation in caseValidations)
                {
                    try
                    {
                        var sessionUpdateRequest = new SessionUpdateRequest
                        {
                            SessionDetails    = caseValidation,
                            QuestionResponses = new List <NoteQuestionResponse>(),
                            Base64Signatures  = new List <string>()
                        };

                        // get the data for this case...
                        // get the questions
                        var questions = await _databaseService.GetCaseValidationQuestions(caseValidation.CaseValidationID);

                        // and corresponding answers
                        foreach (var question in questions)
                        {
                            var answer = await _databaseService.GetCurrentAnswer(question);

                            sessionUpdateRequest.QuestionResponses.Add(new NoteQuestionResponse {
                                NoteQuestionID = question.NoteQuestionID, Answer = answer
                            });
                        }

                        // and the signatures (as base 64 signatures)
                        var signatures = await _databaseService.GetCaseValidationSignatures(caseValidation.CaseValidationID);

                        sessionUpdateRequest.Base64Signatures.Add(signatures.Where(s => s.SignatureType == SignatureType.Provider).Select(s => Convert.ToBase64String(s.Signature)).FirstOrDefault());
                        sessionUpdateRequest.Base64Signatures.Add(signatures.Where(s => s.SignatureType == SignatureType.Parent).Select(s => Convert.ToBase64String(s.Signature)).FirstOrDefault());

                        // send it to the server
                        var sessionUpdateResponse = await _dataUpdateService.PostSessionUpdateRequestToServer(sessionUpdateRequest);

                        if (sessionUpdateResponse.Success)
                        {
                            // this was successful, so don't send again
                            caseValidation.State = (caseValidation.State == CaseValidationState.AbandonedAwaitingSendToServer)
                                                                                                        ? CaseValidationState.AbandonedSentToServer
                                                                                                        : CaseValidationState.CompletedSentToServer;

                            await _databaseService.WriteCaseValidation(caseValidation);
                        }
                    }
                    catch
                    {
                        // ignore any exceptions and move onto the next request
                    }
                }
            }
            finally
            {
                _sendDataToServerAlreadyRunning = false;
            }
        }
Exemplo n.º 7
0
 public SessionUpdateResponse SessionUpdate(SessionUpdateRequest sessionUpdateRequest)
 {
     return(new SessionUpdateResponse {
         Success = true
     });
 }