Exemplo n.º 1
0
        private void DateListItemButton_Click(Object sender, RoutedEventArgs e)
        {
            if (e.OriginalSource is Button button && button.DataContext is DispanserizationViewModel dispanserizationItem)
            {
                try
                {
                    DispanserizationViewModel dispanserization = _mediator.Send(
                        new DispanserizationCreateCommand(dispanserizationItem.BeginDate, _patient.ID, _patient.Code, _patient.DisplayName)
                        ).Result;

                    _patient.Dispanserizations.Add(dispanserization);

                    _printService.Print(
                        new DispanserizationPrintForm(dispanserization)
                        );
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "При записи на диспансеризацию произошла ошибка");
                }

                _mainWindow.PrevWorkflow <ActionsControl>();
            }
        }
Exemplo n.º 2
0
        public async Task <IEnumerable <SpecialtyViewModel> > Handle(SpecialtyListItemsQuery request, CancellationToken cancellationToken)
        {
            DateTime beginDate = _dateTimeProvider.Now.Date;
            DateTime endDate   = _dateTimeProvider.Now.Date.AddDays(28);

            IEnumerable <Resource>      resources = _resources.ToList();
            IEnumerable <TimeItemTotal> totals    = _timeItems.GetResourceTotals(beginDate, endDate);

            IEnumerable <VisitItemViewModel> visitItems = request.Patient.VisitItems
                                                          .ToList();

            IEnumerable <DateItemViewModel> dateItems = totals
                                                        .GroupJoin(visitItems, t => t.ResourceID, g => g.ResourceID, (t, g) => new DateItemViewModel
            {
                Date       = t.Date,
                IsEnabled  = (t.TimesCount - t.VisitsCount) > 0,
                IsBlocked  = g.Any(),
                ResourceID = t.ResourceID
            })
                                                        .OrderBy(di => di.Date)
                                                        .ToList();

            IEnumerable <ResourceViewModel> resourceItems = resources
                                                            .GroupJoin(dateItems, r => r.ID, d => d.ResourceID, (r, g) => new ResourceViewModel
            {
                ResourceName = r.Doctor.DisplayName,
                IsEnabled    = g.Any(di => di.IsEnabled) && g.All(di => !di.IsBlocked),
                IsBlocked    = g.Any(di => di.IsBlocked),
                ResourceID   = r.ID,
                SpecialtyID  = r.Doctor.SpecialtyID,
                Dates        = g
            })
                                                            .OrderBy(ri => ri.ResourceName)
                                                            .ToList();

            ICollection <SpecialtyViewModel> viewModels = resources
                                                          .GroupBy(r => r.Doctor.Specialty)
                                                          .Select(g => g.Key)
                                                          .GroupJoin(resourceItems, s => s.ID, g => g.SpecialtyID, (s, g) => new SpecialtyViewModel
            {
                SpecialtyName = s.Name,
                Resources     = g,
                IsEnabled     = g.Any(ri => ri.IsEnabled) && g.All(ri => !ri.IsBlocked)
            })
                                                          .OrderBy(si => si.SpecialtyName)
                                                          .ToList();

            SpecialtyViewModel dispanserizationViewModel = viewModels.FirstOrDefault(s => s.SpecialtyName == "Диспансеризация");

            if (dispanserizationViewModel != null)
            {
                DispanserizationViewModel dispanserization = request.Patient.Dispanserizations
                                                             .OrderBy(d => d.BeginDate)
                                                             .LastOrDefault(d => !d.IsClosed && d.BeginDate.Year == _dateTimeProvider.Now.Year);

                if (dispanserization != null)
                {
                    foreach (var ri in dispanserizationViewModel.Resources)
                    {
                        ri.Dates     = ri.Dates.Where(di => di.Date >= dispanserization.BeginDate);
                        ri.IsEnabled = ri.Dates.Any(di => di.IsEnabled) && ri.Dates.All(di => !di.IsBlocked);
                        ri.IsBlocked = ri.Dates.Any(di => di.IsBlocked);
                    }
                    dispanserizationViewModel.IsEnabled = dispanserizationViewModel.Resources.Any(ri => ri.IsEnabled);
                }
                else
                {
                    viewModels.Remove(dispanserizationViewModel);
                }
            }

            return(await Task.FromResult(viewModels));
        }
Exemplo n.º 3
0
        internal DispanserizationPrintForm(DispanserizationViewModel dispanserization)
        {
            InitializeComponent();

            DataContext = dispanserization;
        }