コード例 #1
0
        /// <summary>
        /// Copies this instance.
        /// </summary>
        /// <returns>A <see cref="Telerik.Windows.Controls.ScheduleView.IAppointment"/></returns>
        public IAppointment Copy()
        {
            IAppointment copy = new ClinicianAppointmentDto();

            copy.CopyFrom(this);
            return(copy);
        }
コード例 #2
0
        /// <summary>
        /// Handles the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>A <see cref="Agatha.Common.Response"/></returns>
        public override Response Handle(UpdateClinicianAppointmentRequest request)
        {
            var clinicianAppointmentDto = request.ClinicianAppointmentDto;
            var clinicianKey            = request.ClinicianKey;

            var visit = _visitRepository.GetByKey(clinicianAppointmentDto.Key);

            if (visit == null)
            {
                throw new ArgumentException(
                          "Could not find Visit Associated with ClinicianAppoitmentDto with key:" +
                          clinicianAppointmentDto.Key);
            }

            Staff newStaff = null;

            if (clinicianKey != visit.Staff.Key)
            {
                newStaff = _staffRepository.GetByKey(clinicianKey);
                if (newStaff == null)
                {
                    throw new ArgumentException("Could not find Staff with key:" + clinicianKey);
                }
            }

            if (visit.AppointmentDateTimeRange.StartDateTime != clinicianAppointmentDto.AppointmentStartDateTime ||
                visit.AppointmentDateTimeRange.EndDateTime != clinicianAppointmentDto.AppointmentEndDateTime)
            {
                visit.RescheduleAppointment(
                    new DateTimeRange(clinicianAppointmentDto.AppointmentStartDateTime, clinicianAppointmentDto.AppointmentEndDateTime));
            }

            if (newStaff != null)
            {
                visit.ReassignAppointment(newStaff);
            }

            clinicianAppointmentDto = new ClinicianAppointmentDto
            {
                Key                      = visit.Key,
                PatientKey               = visit.ClinicalCase.Patient.Key,
                PatientFirstName         = visit.ClinicalCase.Patient.Name.First,
                PatientLastName          = visit.ClinicalCase.Patient.Name.Last,
                AppointmentEndDateTime   = visit.AppointmentDateTimeRange.EndDateTime,
                AppointmentStartDateTime = visit.AppointmentDateTimeRange.StartDateTime,
                VisitStatus              = new LookupValueDto
                {
                    WellKnownName = visit.VisitStatus.WellKnownName,
                    Key           = visit.VisitStatus.Key,
                    Name          = visit.VisitStatus.Name
                },
                VisitTemplateName = visit.Name
            };

            var response = CreateTypedResponse();

            response.ClinicianAppointmentDto = clinicianAppointmentDto;

            return(response);
        }
コード例 #3
0
        /// <summary>
        /// Handles the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>A <see cref="Agatha.Common.Response"/></returns>
        public override Response Handle(DeleteClinicianAppointmentRequest request)
        {
            var clinicianKey = request.ClinicianKey;

            var visit = _visitRepository.GetByKey(clinicianKey);

            if (visit == null)
            {
                throw new ArgumentException("Could not find Visit Associated with ClinicianAppoitmentDto with key:" + clinicianKey);
            }

            ClinicianAppointmentDto clinicanAppointmentDto = null;

            if (visit.VisitStatus.WellKnownName.Equals(VisitStatus.Scheduled))
            {
                _visitFactory.DestroyVisit(visit);
            }
            else
            {
                clinicanAppointmentDto = new ClinicianAppointmentDto
                {
                    Key                      = visit.Key,
                    PatientKey               = visit.ClinicalCase.Patient.Key,
                    PatientFirstName         = visit.ClinicalCase.Patient.Name.First,
                    PatientLastName          = visit.ClinicalCase.Patient.Name.Last,
                    AppointmentEndDateTime   = visit.AppointmentDateTimeRange.EndDateTime,
                    AppointmentStartDateTime = visit.AppointmentDateTimeRange.StartDateTime,
                    VisitStatus              = new LookupValueDto
                    {
                        WellKnownName = visit.VisitStatus.WellKnownName,
                        Key           = visit.VisitStatus.Key,
                        Name          = visit.VisitStatus.Name
                    },
                    VisitTemplateName = visit.Name
                };

                var dataErrorInfo = new DataErrorInfo(
                    string.Format("Cannot remove an appointment with visit status as {0}.", visit.VisitStatus),
                    ErrorLevel.Error);
                clinicanAppointmentDto.AddDataErrorInfo(dataErrorInfo);
            }

            var response = CreateTypedResponse();

            response.ClinicianAppointmentDto = clinicanAppointmentDto;

            return(response);
        }
コード例 #4
0
 private void ExecuteGoToPaymentCommand(ClinicianAppointmentDto clinicianAppointmentDto)
 {
     _navigationService.Navigate (
         RegionManager,
         "FrontDeskMainRegion",
         "BillingView",
         "MakePayment",
         new KeyValuePair<string, string> ( "PatientKey", clinicianAppointmentDto.PatientKey.ToString () ),
         new KeyValuePair<string, string> (
             "PatientFullName", string.Format ( "{0} {1}", clinicianAppointmentDto.PatientFirstName, clinicianAppointmentDto.PatientLastName ) ) );
 }
コード例 #5
0
 private void ExecuteGoToPatientProfileCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     _navigationService.Navigate (
         "WorkspacesRegion",
         "PatientWorkspaceView",
         "ViewPatient",
         new[]
             {
                 new KeyValuePair<string, string> ( "PatientKey", clinicianAppointmentDto.PatientKey.ToString () ),
                 new KeyValuePair<string, string> (
                     "FullName", clinicianAppointmentDto.PatientFirstName + " " + clinicianAppointmentDto.PatientLastName ),
                 new KeyValuePair<string, string> ( "SubViewName", "PatientEditorView" ),
             } );
 }
コード例 #6
0
 private void ExecuteDoubleClickAppointmentCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     _popupService.ShowPopup (
         "AppointmentDetailsView",
         "Edit",
         "Appointment Details",
         new[] { new KeyValuePair<string, string> ( "VisitKey", clinicianAppointmentDto.Key.ToString () ) } );
 }
コード例 #7
0
 private void ExecuteAppointmentDeletedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     if ( clinicianAppointmentDto != null )
     { 
         _previousClinicanKey = clinicianAppointmentDto.ClinicianKey;
         DeleteClinicianAppointmentAsync ( clinicianAppointmentDto.Key );
     }
     else
     {
         _userDialogService.ShowDialog (
             "No Appointment was sent, couldn't delete appointment.",
             "Deleting Appointment Failed",
             UserDialogServiceOptions.Ok );
     }
 }
コード例 #8
0
 /// <summary>
 /// Copies this instance.
 /// </summary>
 /// <returns>A <see cref="Telerik.Windows.Controls.ScheduleView.IAppointment"/></returns>
 public IAppointment Copy()
 {
     IAppointment copy = new ClinicianAppointmentDto ();
     copy.CopyFrom ( this );
     return copy;
 }
コード例 #9
0
 private void RaiseVisitChanged ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     _eventAggregator.GetEvent<VisitChangedEvent> ().Publish (
         new VisitChangedEventArgs
             {
                 Sender = this,
                 ClinicianKey = ClinicianSchedule.ClinicianKey,
                 VisitKey = clinicianAppointmentDto.Key,
                 VisitStartDateTime = clinicianAppointmentDto.AppointmentStartDateTime,
                 PatientKey = clinicianAppointmentDto.PatientKey
             } );
 }
コード例 #10
0
        /// <summary>
        /// Determines whether this instance [can execute appointment updated command] the specified clinician appointment dto.
        /// </summary>
        /// <param name="clinicianAppointmentDto">The clinician appointment dto.</param>
        /// <returns><c>true</c> if this instance [can execute appointment updated command] the specified clinician appointment dto; otherwise, <c>false</c>.</returns>
        public bool CanExecuteAppointmentUpdatedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
        {
            if ( clinicianAppointmentDto == null )
            {
                return false;
            }

            return IsScheduled ( clinicianAppointmentDto ) && clinicianAppointmentDto.ClinicianKey == ClinicianSchedule.ClinicianKey;
        }
コード例 #11
0
        /// <summary>
        /// Determines whether this instance [can execute appointment deleted command] the specified clinician appointment dto.
        /// </summary>
        /// <param name="clinicianAppointmentDto">The clinician appointment dto.</param>
        /// <returns><c>true</c> if this instance [can execute appointment deleted command] the specified clinician appointment dto; otherwise, <c>false</c>.</returns>
        public bool CanExecuteAppointmentDeletedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
        {
            if ( clinicianAppointmentDto == null )
            {
                return false;
            }

            return IsScheduled ( clinicianAppointmentDto );
        }
コード例 #12
0
 private void ExecuteDragStartingCommand( object obj )
 {
     var args = obj as DragDropQueryEventArgs;
     if ( args != null )
     {
         var result = args.Options.Payload as PatientSearchResultDto;
         if ( result != null )
         {
             var appointmentDto = new ClinicianAppointmentDto ();
             appointmentDto.PatientFirstName = result.FirstName;
             appointmentDto.PatientLastName = result.LastName;
             appointmentDto.PatientKey = result.Key;
             appointmentDto.AppointmentStartDateTime = DateTime.Now;
             appointmentDto.AppointmentEndDateTime = DateTime.Now.AddHours ( 1 );
             var payload = new ScheduleViewDragDropPayload ( null, new List<IOccurrence> { appointmentDto } );
             args.Options.Payload = payload;
         }
     }
 }
コード例 #13
0
 /// <summary>
 /// Causes the object to leave editing mode and commit the edited value.
 /// </summary>
 public void EndEdit()
 {
     _cacheObject = null;
 }
コード例 #14
0
 /// <summary>
 /// Causes the object to enter editing mode.
 /// </summary>
 public void BeginEdit()
 {
     _cacheObject = new ClinicianAppointmentDto();
     _cacheObject.CopyFrom(this);
 }
コード例 #15
0
 /// <summary>
 /// Causes the object to leave editing mode and commit the edited value.
 /// </summary>
 public void EndEdit()
 {
     _cacheObject = null;
 }
コード例 #16
0
        private void ExecuteStatusUpdatedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
        {
            var visitStatusUpdateDto = new VisitStatusUpdateDto
                {
                    VisitKey = clinicianAppointmentDto.Key,
                    VisitStatus = clinicianAppointmentDto.VisitStatus,
                    UpdateDateTime = DateTime.Now
                };

            var requestDispatcher = _asyncRequestDispatcherFactory.CreateAsyncRequestDispatcher ();
            requestDispatcher.Add ( new UpdateVisitStatusRequest { VisitStatusUpdateDto = visitStatusUpdateDto } );
            IsLoading = true;
            requestDispatcher.ProcessRequests ( HandleUpdateVisitStatusCompleted, HandleUpdateVisitStatusException );

            RefreshView ( this, null );
        }
コード例 #17
0
 private bool IsScheduled ( ClinicianAppointmentDto dto )
 {
     return dto != null
            &&
            ( dto.VisitStatus == null
              || dto.VisitStatus.WellKnownName.Equals ( VisitStatus.Scheduled, StringComparison.InvariantCultureIgnoreCase ) );
 }
コード例 #18
0
 /// <summary>
 /// Determines whether this instance [can execute double click appointment command] the specified clinician appointment dto.
 /// </summary>
 /// <param name="clinicianAppointmentDto">The clinician appointment dto.</param>
 /// <returns><c>true</c> if this instance [can execute double click appointment command] the specified clinician appointment dto; otherwise, <c>false</c>.</returns>
 public bool CanExecuteDoubleClickAppointmentCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     return ( clinicianAppointmentDto != null );
 }
コード例 #19
0
 private void UpdateClinicianAppointmentAsync ( long clinicianKey, ClinicianAppointmentDto clinicianAppointmentDto )
 {
     var requestDispatcher = _asyncRequestDispatcherFactory.CreateAsyncRequestDispatcher ();
     requestDispatcher.Add (
         new UpdateClinicianAppointmentRequest { ClinicianKey = clinicianKey, ClinicianAppointmentDto = clinicianAppointmentDto } );
     IsLoading = true;
     requestDispatcher.ProcessRequests ( HandleUpdateClinicianAppointmentCompleted, HandleUpdateClinicianAppointmentException );
 }
コード例 #20
0
 /// <summary>
 /// Executes the appointment updated command.
 /// </summary>
 /// <param name="clinicianAppointmentDto">The clinician appointment dto.</param>
 public void ExecuteAppointmentUpdatedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
 {
     if ( clinicianAppointmentDto != null )
     {
         UpdateClinicianAppointmentAsync ( ClinicianSchedule.ClinicianKey, clinicianAppointmentDto );
     }
     else
     {
         _userDialogService.ShowDialog (
             "No Appointment was sent, couldn't update appointment.",
             "Updating Appointment Failed",
             UserDialogServiceOptions.Ok );
     }
 }
コード例 #21
0
        private void ExecuteAppointmentAddedCommand ( ClinicianAppointmentDto clinicianAppointmentDto )
        {
            if ( clinicianAppointmentDto.Key != 0 )
            {
                _previousClinicanKey = clinicianAppointmentDto.ClinicianKey;
                UpdateClinicianAppointmentAsync ( ClinicianSchedule.ClinicianKey, clinicianAppointmentDto );

                _eventAggregator.GetEvent<AppointmentCreatedEvent> ().Publish (
                    new AppointmentCreatedEventArgs
                        {
                            AppointmentKey =
                                clinicianAppointmentDto.Key,
                            ClinicianKey =
                                ClinicianSchedule.ClinicianKey,
                            EndDateTime =
                                clinicianAppointmentDto.AppointmentEndDateTime,
                            PatientKey =
                                clinicianAppointmentDto.PatientKey,
                            StartDateTime =
                                clinicianAppointmentDto.AppointmentStartDateTime
                        } );
            }
            else
            {
                //TODO: fix this to somehow be based off of how timeslots are setup
                var startTime = new DateTime (
                    clinicianAppointmentDto.Start.Year,
                    clinicianAppointmentDto.Start.Month,
                    clinicianAppointmentDto.Start.Day,
                    clinicianAppointmentDto.AppointmentStartDateTime.Hour,
                    0,
                    0 );
                var parameters = new List<KeyValuePair<string, string>>
                    {
                        new KeyValuePair<string, string> ( "PatientKey", clinicianAppointmentDto.PatientKey.ToString () ),
                        new KeyValuePair<string, string> ( "PatientFirstName", clinicianAppointmentDto.PatientFirstName ),
                        new KeyValuePair<string, string> ( "PatientLastName", clinicianAppointmentDto.PatientLastName ),
                        new KeyValuePair<string, string> ( "StartDateTime", startTime.ToString () ),
                        new KeyValuePair<string, string> ( "EndTime", startTime.AddMinutes ( 59 ).ToString () ),
                        new KeyValuePair<string, string> ( "ClinicianKey", ClinicianSchedule.ClinicianKey.ToString () ),
                        new KeyValuePair<string, string> ( "ShouldReload", false.ToString () )
                    };
                if ( clinicianAppointmentDto.VisitTemplateKey.HasValue )
                {
                    parameters.Add (
                        new KeyValuePair<string, string> ( "VisitTemplateKey", clinicianAppointmentDto.VisitTemplateKey.Value.ToString () ) );
                }
                _navigationService.NavigateToActiveView ( "WorkspacesRegion", "CreateAppointment", parameters.ToArray () );
                ClinicianSchedule.ClinicianAppointments.Remove ( clinicianAppointmentDto );
            }
        }
コード例 #22
0
 /// <summary>
 /// Causes the object to enter editing mode.
 /// </summary>
 public void BeginEdit()
 {
     _cacheObject = new ClinicianAppointmentDto ();
     _cacheObject.CopyFrom ( this );
 }