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); }
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); }
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); }
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); }
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); }
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; } }
public SessionUpdateResponse SessionUpdate(SessionUpdateRequest sessionUpdateRequest) { return(new SessionUpdateResponse { Success = true }); }