Exemplo n.º 1
0
        public async Task <DispanserizationViewModel> Handle(DispanserizationCreateCommand request, CancellationToken cancellationToken)
        {
            Dispanserization dispanserization = new Dispanserization
            {
                BeginDate = request.BeginDate,
                EndDate   = new DateTime(request.BeginDate.Year, 12, 31),
                PatientID = request.PatientID
            };

            Int32 dispanserizationID = _dispanserizations.Create(dispanserization);

            dispanserization = _dispanserizations.Get(dispanserizationID);

            DispanserizationViewModel viewModel = new DispanserizationViewModel
            {
                BeginDate   = dispanserization.BeginDate,
                Now         = _dateTimeProvider.Now,
                PatientCode = request.PatientCode,
                PatientName = request.PatientName,
                IsClosed    = dispanserization.IsClosed,
                IsEnabled   = true,
                Analyses    = dispanserization.Analyses.Select(a => a.Description).ToList()
            };

            return(await Task.FromResult(viewModel));
        }
Exemplo n.º 2
0
        public Dispanserization Get(Int32 dispanserizationID)
        {
            IDictionary <Int32, Dispanserization> keyValues = new Dictionary <Int32, Dispanserization>();

            Dispanserization result = _db.Query <Dispanserization, Analysis, Dispanserization>(
                sql: "[dbo].[sp_Dispanserizations_Get]",
                map: (dispanserization, analysis) =>
            {
                if (!keyValues.TryGetValue(dispanserization.ID, out Dispanserization value))
                {
                    value          = dispanserization;
                    value.Analyses = new List <Analysis>();
                    keyValues.Add(dispanserization.ID, dispanserization);
                }

                value.Analyses.Add(analysis);

                return(dispanserization);
            },
                param: new { dispanserizationID },
                commandType: CommandType.StoredProcedure,
                transaction: _transaction
                )
                                      .Distinct()
                                      .FirstOrDefault();

            return(result);
        }
Exemplo n.º 3
0
        public Int32 Create(Dispanserization dispanserization)
        {
            if (_dataContext.Dispanserizations.FirstOrDefault(
                    d => d.PatientID == dispanserization.PatientID &&
                    dispanserization.BeginDate.Year == _dateTimeProvider.Now.Year
                    ) != null
                )
            {
                throw new Exception("Dispanserization already exists!");
            }

            Patient patient = _dataContext.Patients
                              .FirstOrDefault(p => p.ID == dispanserization.PatientID);

            IEnumerable <Resource> resources = _dataContext.Resources
                                               .Where(r => r.Doctor.Specialty.ID == 0)
                                               .ToList();

            dispanserization.Analyses = new List <Analysis>();
            foreach (Resource resource in resources)
            {
                dispanserization.Analyses.Add(new Analysis
                {
                    ID          = resource.ID * 10 + dispanserization.ID,
                    Description = $"{resource.Doctor.DisplayName} в {resource.Room.Code} каб."
                });

                TimeItem timeItem = _dataContext.TimeItems
                                    .OrderBy(ti => ti.ResourceID)
                                    .ThenBy(ti => ti.BeginDateTime)
                                    .FirstOrDefault(ti => ti.ResourceID == resource.ID && ti.VisitItem == null);

                VisitItem visitItem = new VisitItem
                {
                    ID         = _dataContext.VisitItems.Max(vi => vi.ID) + 1,
                    TimeItem   = timeItem,
                    TimeItemID = timeItem.ID,
                    Patient    = patient,
                    PatientID  = patient.ID
                };

                visitItem.TimeItem.VisitItem = visitItem;

                _dataContext.VisitItems.Add(visitItem);
            }

            dispanserization.ID = _dataContext.Dispanserizations.Count > 0 ? _dataContext.Dispanserizations.Max(d => d.ID) + 1 : 1;

            _dataContext.Dispanserizations.Add(dispanserization);

            return(dispanserization.ID);
        }
Exemplo n.º 4
0
        private Int32 CreateDispanserization(Dispanserization item)
        {
            Int32 dispanserizationID = Transaction.Connection.QuerySingleAsync <Int32>(
                sql: "[dbo].[sp_Dispanserizations_Create]",
                param: new
            {
                patientID = item.PatientID,
                beginDate = item.BeginDate,
                endDate   = item.EndDate
            },
                commandType: CommandType.StoredProcedure,
                transaction: Transaction
                ).Result;

            return(dispanserizationID);
        }
Exemplo n.º 5
0
        public Int32 Create(Dispanserization item)
        {
            Int32 dispanserizationID = _db.QuerySingle <Int32>(
                sql: "[dbo].[sp_Dispanserizations_Create]",
                param: new
            {
                patientID = item.PatientID,
                beginDate = item.BeginDate,
                endDate   = item.EndDate
            },
                commandType: CommandType.StoredProcedure,
                transaction: _transaction
                );

            return(dispanserizationID);
        }