protected override async Task ValidateAndSave() { TreatmentEvent.NotificationId = NotificationId; TreatmentEvent.CaseManagerUsername = Notification.HospitalDetails.CaseManagerUsername; TreatmentEvent.TbServiceCode = Notification.HospitalDetails.TBServiceCode; TreatmentEvent.IsNotificationPostMortem = Notification.ClinicalDetails.IsPostMortem ?? false; // The required date will be marked as missing on the model, since we are setting it manually, rather than binding it ModelState.Remove("TreatmentEvent.EventDate"); ValidationService.TrySetFormattedDate(TreatmentEvent, nameof(TreatmentEvent), nameof(TreatmentEvent.EventDate), FormattedEventDate); // TreatmentOutcomeId will be marked as missing on the model, since setting manually ModelState.Remove("TreatmentEvent.TreatmentOutcomeId"); // Add additional fields required for date validation TreatmentEvent.Dob = Notification.PatientDetails.Dob; TreatmentEvent.DateOfNotification = Notification.NotificationDate; switch (TreatmentEvent.TreatmentEventType) { case TreatmentEventType.TreatmentOutcome: await TrySetOutcomeFromTypeAndSubTypeAsync(); break; case TreatmentEventType.TreatmentRestart: TreatmentEvent.TreatmentOutcomeId = null; break; } if (TryValidateModel(TreatmentEvent, nameof(TreatmentEvent))) { if (RowId == null) { TreatmentEvent.CaseManagerUsername = Notification.HospitalDetails.CaseManagerUsername; TreatmentEvent.TbServiceCode = Notification.HospitalDetails.TBServiceCode; await _treatmentEventRepository.AddAsync(TreatmentEvent); } else { TreatmentEvent.TreatmentEventId = RowId.Value; await _treatmentEventRepository.UpdateAsync(Notification, TreatmentEvent); } await _alertService.AutoDismissAlertAsync <DataQualityTreatmentOutcome12>(Notification); await _alertService.AutoDismissAlertAsync <DataQualityTreatmentOutcome24>(Notification); await _alertService.AutoDismissAlertAsync <DataQualityTreatmentOutcome36>(Notification); } else { // Manual handling of TreatmentOutcomeId in switch statement below will cover all validation for property ModelState.Remove("TreatmentEvent.TreatmentOutcomeId"); } }
public async Task AcceptTransferAndDismissAlertAsync() { var currentTime = DateTime.Now; var transferOutEvent = new TreatmentEvent { NotificationId = NotificationId, EventDate = currentTime, TreatmentEventType = TreatmentEventType.TransferOut, CaseManagerUsername = Notification.HospitalDetails.CaseManagerUsername, TbServiceCode = Notification.HospitalDetails.TBServiceCode, Note = TransferAlert.TransferRequestNote }; var transferInEvent = new TreatmentEvent { NotificationId = NotificationId, EventDate = currentTime.AddSeconds(1), TreatmentEventType = TreatmentEventType.TransferIn, CaseManagerUsername = TransferAlert.CaseManagerUsername, TbServiceCode = TransferAlert.TbServiceCode, Note = TransferAlert.TransferRequestNote }; var previousTbService = new PreviousTbService() { TransferDate = currentTime, TbServiceCode = Notification.HospitalDetails.TBServiceCode, PhecCode = Notification.HospitalDetails?.TBService?.PHECCode }; Notification.PreviousTbServices.Add(previousTbService); Notification.HospitalDetails.TBServiceCode = TransferAlert.TbServiceCode; Notification.HospitalDetails.HospitalId = TargetHospitalId; Notification.HospitalDetails.CaseManagerUsername = TargetCaseManagerUsername; await Service.UpdateHospitalDetailsAsync(Notification, Notification.HospitalDetails); await _treatmentEventRepository.AddAsync(transferOutEvent); await _treatmentEventRepository.AddAsync(transferInEvent); await _alertService.DismissAlertAsync(TransferAlert.AlertId, User.FindFirstValue(ClaimTypes.Upn)); }
private async Task CreateTreatmentEventNotificationStart(Notification notification) { await _treatmentEventRepository.AddAsync(NotificationHelper.CreateTreatmentStartEvent(notification)); }