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));
        }
示例#2
0
        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);
        }
示例#3
0
        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);
 }