Example #1
0
        public DeleteToDoByPatientIdDataResponse DeleteToDoByPatientId(DeleteToDoByPatientIdDataRequest request)
        {
            DeleteToDoByPatientIdDataResponse response = new DeleteToDoByPatientIdDataResponse();

            try
            {
                ISchedulingRepository repo = Factory.GetRepository(request, RepositoryType.ToDo);
                GetToDosDataRequest   getToDosDataRequest = new GetToDosDataRequest
                {
                    PatientId      = request.PatientId,
                    Context        = request.Context,
                    ContractNumber = request.ContractNumber,
                    UserId         = request.UserId,
                    Version        = request.Version
                };
                GetToDosDataResponse toDosResponse = repo.FindToDos(getToDosDataRequest);
                List <ToDoData>      patientToDos  = (List <ToDoData>)toDosResponse.ToDos; //repo.FindToDos(getToDosDataRequest);
                List <string>        deletedIds    = null;
                if (patientToDos != null)
                {
                    deletedIds = new List <string>();
                    patientToDos.ForEach(u =>
                    {
                        request.Id = u.Id;
                        repo.Delete(request);
                        deletedIds.Add(request.Id);
                    });
                    response.DeletedIds = deletedIds;
                }
                response.Success = true;
                return(response);
            }
            catch (Exception ex) { throw ex; }
        }
Example #2
0
        public GetToDosDataResponse FindToDos(object request)
        {
            GetToDosDataResponse response    = new GetToDosDataResponse();
            List <ToDoData>      todoList    = null;
            GetToDosDataRequest  dataRequest = (GetToDosDataRequest)request;

            todoList = new List <ToDoData>();
            todoList.Add(new ToDoData
            {
                AssignedToId = "535ad70ad2d8e912e857525c",
                CategoryId   = "532b64b1a381168abe000a7d",
                ClosedDate   = DateTime.UtcNow,
                CreatedById  = "532b678fa381168abe000ce8",
                CreatedOn    = DateTime.UtcNow,
                Description  = "test description",
                DueDate      = DateTime.UtcNow,
                StartTime    = DateTime.UtcNow,
                Duration     = 20,
                Id           = "532b6320a381168abe000877",
                PatientId    = "532b645fa381168abe0009e9",
                PriorityId   = (int)Priority.High,
                StatusId     = (int)Status.Met,
                Title        = "test title",
                UpdatedOn    = DateTime.UtcNow,
                DeleteFlag   = true
            });
            response.ToDos      = todoList;
            response.TotalCount = 1;
            return(response);
        }
Example #3
0
        public void GetToDos_Test()
        {
            GetToDosDataRequest request = new GetToDosDataRequest
            {
                Context        = context,
                ContractNumber = contractNumber,
                UserId         = userId,
                Version        = version,
                StatusIds      = new List <int> {
                    1, 3
                },
                CreatedById = userId
            };

            ISchedulingDataManager cm = new StubToDoDataManager {
                Factory = new StubSchedulingRepositoryFactory()
            };
            GetToDosDataResponse response = cm.GetToDos(request);

            Assert.IsNotNull(response);
        }
Example #4
0
        public GetToDosDataResponse Post(GetToDosDataRequest request)
        {
            GetToDosDataResponse response = new GetToDosDataResponse();

            try
            {
                if (string.IsNullOrEmpty(request.UserId))
                {
                    throw new UnauthorizedAccessException("SchedulingDD:Post()::Unauthorized Access");
                }

                response         = Manager.GetToDos(request);
                response.Version = request.Version;
            }
            catch (Exception ex)
            {
                FormatUtil.FormatExceptionResponse(response, base.Response, ex);

                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Helpers.LogException(int.Parse(aseProcessID), ex);
            }
            return(response);
        }
Example #5
0
        public GetToDosDataResponse FindToDos(object request)
        {
            GetToDosDataResponse response    = new GetToDosDataResponse();
            List <ToDoData>      todoList    = null;
            GetToDosDataRequest  dataRequest = (GetToDosDataRequest)request;

            try
            {
                using (SchedulingMongoContext ctx = new SchedulingMongoContext(_dbName))
                {
                    List <IMongoQuery> queries = new List <IMongoQuery>();
                    queries.Add(Query.EQ(METoDo.DeleteFlagProperty, false));
                    if (!string.IsNullOrEmpty(dataRequest.AssignedToId))
                    {
                        ObjectId ato;
                        if (ObjectId.TryParse(dataRequest.AssignedToId, out ato))
                        {
                            queries.Add(Query.EQ(METoDo.AssignedToProperty, ato));
                        }
                        else
                        {
                            // Fix for bug  - ENG-1068, UI sends AssignedToId = -1 to query on all unassigned ToDos.
                            if (string.Compare(dataRequest.AssignedToId, "-1", true) == 0)
                            {
                                //queries.Add(Query.Or(Query.EQ(METoDo.AssignedToProperty, BsonNull.Value), Query.EQ(METoDo.AssignedToProperty, BsonString.Empty)));
                                queries.Add(Query.In(METoDo.AssignedToProperty, new BsonArray {
                                    BsonNull.Value, BsonString.Empty
                                }));
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(dataRequest.NotAssignedToId))
                    {
                        ObjectId nto;
                        if (ObjectId.TryParse(dataRequest.NotAssignedToId, out nto))
                        {
                            queries.Add(Query.NotIn(METoDo.AssignedToProperty, new BsonArray {
                                nto, BsonNull.Value, BsonString.Empty
                            }));
                        }
                    }
                    if (!string.IsNullOrEmpty(dataRequest.CreatedById))
                    {
                        queries.Add(Query.EQ(METoDo.RecordCreatedByProperty, ObjectId.Parse(dataRequest.CreatedById)));
                    }
                    if (!string.IsNullOrEmpty(dataRequest.PatientId))
                    {
                        queries.Add(Query.EQ(METoDo.PatientIdProperty, ObjectId.Parse(dataRequest.PatientId)));
                    }
                    if (dataRequest.StatusIds != null && dataRequest.StatusIds.Count > 0)
                    {
                        queries.Add(Query.In(METoDo.StatusProperty, new BsonArray(dataRequest.StatusIds)));
                    }
                    if (dataRequest.PriorityIds != null && dataRequest.PriorityIds.Count > 0)
                    {
                        queries.Add(Query.In(METoDo.PriorityProperty, new BsonArray(dataRequest.PriorityIds))); //integer values (not object ids)
                    }
                    if (dataRequest.CategoryIds != null && dataRequest.CategoryIds.Count > 0)
                    {
                        List <BsonValue> categories = new List <BsonValue>();
                        foreach (string categoryId in dataRequest.CategoryIds)
                        {
                            if (categoryId.Length > 0)
                            {
                                categories.Add(BsonValue.Create(ObjectId.Parse(categoryId)));
                            }
                            else
                            {
                                categories.Add(BsonNull.Value); //empty string => include null categories ( not set )
                            }
                        }
                        queries.Add(Query.In(METoDo.CatgegoryProperty, categories));
                    }
                    if (dataRequest.FromDate != null)
                    {
                        queries.Add(Query.GTE(METoDo.ClosedDateProperty, dataRequest.FromDate));
                    }

                    IMongoQuery          mQuery  = Query.And(queries);
                    MongoCursor <METoDo> cToDos  = ctx.ToDos.Collection.Find(mQuery);
                    List <METoDo>        meToDos = null;
                    SortByBuilder        sortBy  = MongoSortingUtils.GetSortByBuilder(dataRequest.Sort, typeof(METoDo));
                    cToDos = cToDos.SetSortOrder(sortBy);
                    cToDos = (MongoCursor <METoDo>)MongoSortingUtils.ApplySkipTake(cToDos, dataRequest);
                    response.TotalCount = cToDos.Count();
                    meToDos             = cToDos.ToList(); //query now

                    if (meToDos != null && meToDos.Count > 0)
                    {
                        todoList = new List <ToDoData>();
                        foreach (METoDo t in meToDos)
                        {
                            todoList.Add(new ToDoData
                            {
                                AssignedToId     = t.AssignedToId == null ? string.Empty : t.AssignedToId.ToString(),
                                CategoryId       = t.Category == null ? string.Empty : t.Category.ToString(),
                                ClosedDate       = t.ClosedDate,
                                CreatedById      = t.RecordCreatedBy.ToString(),
                                CreatedOn        = t.RecordCreatedOn,
                                Description      = t.Description,
                                DueDate          = t.DueDate,
                                StartTime        = t.StartTime,
                                Duration         = t.Duration,
                                Id               = t.Id.ToString(),
                                PatientId        = t.PatientId == null ? string.Empty : t.PatientId.ToString(),
                                PriorityId       = (int)t.Priority,
                                ProgramIds       = Helper.ConvertToStringList(t.ProgramIds),
                                StatusId         = (int)t.Status,
                                Title            = t.Title,
                                UpdatedOn        = t.LastUpdatedOn,
                                DeleteFlag       = t.DeleteFlag,
                                ExternalRecordId = t.ExternalRecordId,
                                SourceId         = t.SourceId.ToString()
                            });
                        }
                    }
                }
                response.ToDos = todoList;
                return(response);
            }
            catch (Exception ex)
            {
                throw new Exception("DD:MongoToDoRepository:FindToDos()::" + ex.Message, ex.InnerException);
            }
        }
Example #6
0
        public GetToDosResponse GetToDos(GetToDosRequest request)
        {
            try
            {
                GetToDosResponse response    = new GetToDosResponse();
                List <ToDo>      toDosResult = null;
                //[Route("/{Context}/{Version}/{ContractNumber}/Scheduling/ToDos", "POST")]
                IRestClient client = new JsonServiceClient();
                string      url    = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Scheduling/ToDos",
                                                                          DDSchedulingUrl,
                                                                          "NG",
                                                                          request.Version,
                                                                          request.ContractNumber), request.UserId);

                GetToDosDataResponse ddResponse =
                    client.Post <GetToDosDataResponse>(url, new GetToDosDataRequest
                {
                    Context         = "NG",
                    ContractNumber  = request.ContractNumber,
                    Version         = request.Version,
                    UserId          = request.UserId,
                    AssignedToId    = request.AssignedToId,
                    NotAssignedToId = request.NotAssignedToId,
                    CreatedById     = request.CreatedById,
                    PatientId       = request.PatientId,
                    StatusIds       = request.StatusIds,
                    CategoryIds     = request.CategoryIds,
                    PriorityIds     = request.PriorityIds,
                    FromDate        = request.FromDate,
                    Skip            = request.Skip,
                    Take            = request.Take,
                    Sort            = request.Sort
                } as object);

                if (ddResponse != null && ddResponse.ToDos != null)
                {
                    response.TotalCount = ddResponse.TotalCount;
                    toDosResult         = new List <ToDo>();
                    List <ToDoData> dataList        = ddResponse.ToDos;
                    var             distintPatients = dataList.GroupBy(p => p.PatientId).Select(grp => grp.FirstOrDefault()).ToList();
                    List <string>   patientIds      = distintPatients.Select(p => p.PatientId).ToList();
                    // Call Patient DD to get patient details.
                    Dictionary <string, PatientData> patients = getPatients(request.Version, request.ContractNumber, request.UserId, client, patientIds);

                    foreach (ToDoData n in dataList)
                    {
                        ToDo toDo = convertToToDo(n);
                        if (patients != null && !string.IsNullOrEmpty(n.PatientId))
                        {
                            PatientData pd;
                            if (patients.TryGetValue(n.PatientId, out pd))
                            {
                                toDo.PatientDetails = new PatientDetails
                                {
                                    Id            = pd.Id,
                                    FirstName     = pd.FirstName,
                                    LastName      = pd.LastName,
                                    MiddleName    = pd.MiddleName,
                                    PreferredName = pd.PreferredName,
                                    Suffix        = pd.Suffix
                                };
                            }
                        }
                        toDosResult.Add(toDo);
                    }
                }
                response.ToDos = toDosResult;
                return(response);
            }
            catch (WebServiceException ex)
            {
                throw new WebServiceException("AD:GetToDos()::" + ex.Message, ex.InnerException);
            }
        }