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)); }
public void IsEpisodeEndingTreatmentEvent_CorrectlyIdentifiesEndingEvents (TreatmentEventType eventType, TreatmentOutcomeType?outcomeType, TreatmentOutcomeSubType?subType, bool expectedEnding) { // Arrange var possibleEndingEvent = new TreatmentEvent { TreatmentEventType = eventType, TreatmentOutcome = outcomeType.HasValue ? new TreatmentOutcome { TreatmentOutcomeType = outcomeType.Value, TreatmentOutcomeSubType = subType } : null }; // Act var isEnding = possibleEndingEvent.IsEpisodeEndingTreatmentEvent(); // Assert Assert.Equal(expectedEnding, isEnding); }
private async Task TryAddTbServiceAndCaseManagerToTreatmentEvent(TreatmentEvent ev, Guid?hospitalId, string caseManagerUsername, PerformContext context, int runId) { if (hospitalId is Guid guid) { var tbService = (await _referenceDataRepository.GetTbServiceFromHospitalIdAsync(guid)); if (tbService == null) { Log.Warning( $"No TB service exists for hospital with guid {guid} - treatment event recorded without a service"); } else { ev.TbServiceCode = tbService.Code; } } if (!string.IsNullOrEmpty(caseManagerUsername)) { await _caseManagerImportService.ImportOrUpdateLegacyUser(caseManagerUsername, context, runId); ev.CaseManagerId = (await _referenceDataRepository.GetUserByUsernameAsync(caseManagerUsername)).Id; } }
public void AddTreatmentEvent(TreatmentEvent treatmentEvent) { TreatmentEvents.Add(treatmentEvent); PeriodEndDate = treatmentEvent.EventDate; }
public static TreatmentPeriod CreateTransferPeriod(TreatmentEvent treatmentEvent) { return(new TreatmentPeriod(null, true, new List <TreatmentEvent> { treatmentEvent })); }
public static TreatmentPeriod CreateTreatmentPeriod(int?periodNumber, TreatmentEvent treatmentEvent) { return(new TreatmentPeriod(periodNumber, false, new List <TreatmentEvent> { treatmentEvent })); }
public static bool IsEpisodeEndingTreatmentEvent(this TreatmentEvent treatmentEvent) { return((treatmentEvent.TreatmentOutcome != null && EpisodeEndingOutcomeTypes.Contains(treatmentEvent.TreatmentOutcome.TreatmentOutcomeType)) || treatmentEvent.TreatmentEventType == TreatmentEventType.TransferOut); }