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)); }
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); }
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); }
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); }
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); }