public BrokerOperationResult Add(string dfn, TrackingEntryType eventType, string reason, string comment) { BrokerOperationResult result = new BrokerOperationResult(); if (this.broker != null) { DsioCreateTrackingLogCommand command = new DsioCreateTrackingLogCommand(this.broker); string eventTypeString = ((int)eventType).ToString(); string[] commentArray = (string.IsNullOrWhiteSpace(comment)) ? null : Util.Split(comment); command.AddCommandArguments(dfn, eventTypeString, reason, commentArray); RpcResponse response = command.Execute(); result.Success = (response.Status == RpcResponseStatus.Success); result.Message = response.InformationalMessage; } else { result.Message = "No broker"; } return(result); }
private CreateTrackingEntry GetNewModel(TrackingEntryType entryType, string dfn) { // *** Gets appropriate model based on entry type and dfn *** CreateTrackingEntry returnModel = new CreateTrackingEntry(); // *** Set up button text, title, other ui elements *** switch (entryType) { case TrackingEntryType.Start: returnModel.ButtonText = "Start Tracking"; returnModel.PageTitle = "Start Tracking a Patient"; returnModel.PageMessage = "The following patient will appear as a tracked patient in the dashboard"; SelectListResult selectListResult = this.DashboardRepository.SelectLists.GetReasonList(); if (selectListResult.Success) { returnModel.Reasons = selectListResult.SelectList; } returnModel.ReasonText = "Reason for Tracking"; break; case TrackingEntryType.Stop: returnModel.ButtonText = "Stop Tracking"; returnModel.PageTitle = "Stop Tracking a Patient"; returnModel.PageMessage = "Patient will no longer appear as a tracked patient in the dashboard"; returnModel.OutcomeTableHeader = "Pregnancy Outcome"; returnModel.OutcomeHeader = "Outcome:"; returnModel.DateHeader = "Outcome/Delivery Date:"; returnModel.ReasonText = "Stop Tracking Reason"; List <string> stopTrackingReasonList = new List <string>() { "First trimester pregnancy failure or loss", "Second trimester pregnancy failure or loss", "Term or pre-term delivery, completed 8 weeks of postpartum care", "Transfer of care", "Moved out of area", "Other" }; returnModel.Reasons = stopTrackingReasonList; break; case TrackingEntryType.Accept: returnModel.ButtonText = "Accept Tracking"; returnModel.PageTitle = "Accept Flagged Patient"; returnModel.PageMessage = "The following patient will appear as a tracked patient in the dashboard"; break; case TrackingEntryType.Reject: returnModel.ButtonText = "Reject Tracking"; returnModel.PageTitle = "Reject Flagged Patient"; returnModel.PageMessage = "The following patient will not appear as a tracked or flagged patient in the dashboard"; break; } // *** Set return url *** if (TempData.ContainsKey(ReturnUrl)) { returnModel.ReturnUrl = TempData[ReturnUrl].ToString(); TempData[ReturnUrl] = TempData[ReturnUrl]; } // *** Get patient demographics *** this.CurrentPatientDfn = dfn; BasePatient currentPatient = this.CurrentPatient; if (!currentPatient.NotFound) { // *** Populate model with data *** returnModel.TrackingEntry = new TrackingEntry() { PatientDfn = dfn, EntryType = entryType, PatientName = currentPatient.Name }; returnModel.Patient = currentPatient; } return(returnModel); }
public ActionResult Create(CreateTrackingEntry newTrackingEntry) { // *** Post new tracking entry data *** ActionResult returnResult; Nullable <bool> success = null; try { // *** Get entry type ** TrackingEntryType eventType = newTrackingEntry.TrackingEntry.EntryType; // *** If start, make sure there's a reason *** if (eventType == TrackingEntryType.Start) { if (string.IsNullOrWhiteSpace(newTrackingEntry.TrackingEntry.Reason)) { success = false; this.Error("Please select a reason"); } } if (eventType == TrackingEntryType.Stop) { if (newTrackingEntry.TrackingEntry.Reason == "Other") { newTrackingEntry.TrackingEntry.Reason = newTrackingEntry.ReasonDetail; } } // *** Check if a determination's been made yet *** if (!success.HasValue) { // *** Set values for repository *** string dfn = newTrackingEntry.TrackingEntry.PatientDfn; string reason = newTrackingEntry.TrackingEntry.Reason; string comment = newTrackingEntry.TrackingEntry.Comment; // *** Add tracking history entry *** BrokerOperationResult result = this.DashboardRepository.TrackingHistory.Add(dfn, eventType, reason, comment); // *** Set return success *** success = result.Success; // *** Show a message *** if (result.Success) { // *** Update pregnancy status *** if (newTrackingEntry.TrackingEntry.EntryType == TrackingEntryType.Start) { if (newTrackingEntry.UpdatePregnancyStatus) { UpdatePregnancyStatus(dfn); } } if (newTrackingEntry.TrackingEntry.EntryType == TrackingEntryType.Stop) { this.Information("The patient is no longer being tracked."); } else { this.Information("Tracking History Entry Created Successfully"); } } else if (string.IsNullOrWhiteSpace(result.Message)) { this.Error("Could not add tracking history entry"); } else { this.Error(result.Message); } } } catch (Exception genericException) { this.Error(genericException.Message); success = false; } if (success.Value) { if ((newTrackingEntry.TrackingEntry.EntryType == TrackingEntryType.Accept) || (newTrackingEntry.TrackingEntry.EntryType == TrackingEntryType.Reject)) { returnResult = RedirectToAction("Index", "FlaggedPatients"); } else { returnResult = RedirectToAction("Overview", "PatientList"); } } else { // *** Repopulate model for error or problem CreateTrackingEntry model = GetNewModel(newTrackingEntry.TrackingEntry.EntryType, newTrackingEntry.TrackingEntry.PatientDfn); model.TrackingEntry.Comment = newTrackingEntry.TrackingEntry.Comment; returnResult = View("~/Views/Track/Create.cshtml", model); } return(returnResult); }