Esempio n. 1
0
        public static PatientTaskData GetInitialTaskRequest(GetInitializeTaskRequest request)
        {
            try
            {
                PatientTaskData result = null;

                IRestClient client = new JsonServiceClient();

                string url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Patient/{4}/Goal/{5}/Task/Initialize",
                                                                  DDPatientGoalsServiceUrl,
                                                                  "NG",
                                                                  request.Version,
                                                                  request.ContractNumber,
                                                                  request.PatientId,
                                                                  request.PatientGoalId), request.UserId);

                PutInitializeTaskResponse response = client.Put <PutInitializeTaskResponse>(url, new PutInitializeTaskRequest() as object);

                if (response != null)
                {
                    result = response.Task;
                }

                return(result);
            }
            catch (WebServiceException ex)
            {
                throw new WebServiceException("AD:GetInitialTaskRequest()::" + ex.Message, ex.InnerException);
            }
        }
Esempio n. 2
0
        public static PatientTask ConvertToTask(PatientTaskData t, List <CustomAttribute> taskAttributesLibrary)
        {
            PatientTask task = null;

            if (t != null)
            {
                task = new PatientTask
                {
                    Id               = t.Id,
                    PatientGoalId    = t.PatientGoalId,
                    TargetValue      = t.TargetValue,
                    StatusId         = t.StatusId,
                    TargetDate       = t.TargetDate,
                    CustomAttributes = GetCustomAttributeDetails(t.CustomAttributes, taskAttributesLibrary),
                    BarrierIds       = t.BarrierIds,
                    Description      = t.Description,
                    StatusDate       = t.StatusDate,
                    StartDate        = t.StartDate,
                    ClosedDate       = t.ClosedDate,
                    CreatedById      = t.CreatedById,
                    GoalName         = t.GoalName,
                    DeleteFlag       = t.DeleteFlag,
                    TemplateId       = t.TemplateId,
                    Details          = t.Details
                };
            }
            return(task);
        }
Esempio n. 3
0
        internal static bool PostUpdateTaskRequest(PostPatientGoalRequest request, PatientTaskData td)
        {
            try
            {
                bool result = false;

                List <string> taskIds = GetTaskIdsForRequest(request.Goal.Tasks);

                IRestClient client = new JsonServiceClient();

                string url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/Patient/{4}/Goal/{5}/Task/{6}/Update", DDPatientGoalsServiceUrl, "NG", request.Version, request.ContractNumber, request.PatientId, request.Goal.Id, td.Id), request.UserId);

                PutUpdateTaskResponse response = client.Put <PutUpdateTaskResponse>(url, new PutUpdateTaskRequest {
                    Task = td, TaskIdsList = taskIds, UserId = request.UserId
                } as object);

                if (response != null)
                {
                    result = true;
                }

                return(result);
            }
            catch (WebServiceException ex)
            {
                throw new WebServiceException("AD:PostUpdateTaskRequest()::" + ex.Message, ex.InnerException);
            }
        }
Esempio n. 4
0
        public static PatientTaskData ConvertToPatientTaskData(PatientTask t)
        {
            PatientTaskData data = null;

            if (t != null)
            {
                data = new PatientTaskData
                {
                    Id = t.Id,
                    CustomAttributes = GetAttributeData(t.CustomAttributes),
                    BarrierIds       = t.BarrierIds,
                    Description      = t.Description,
                    PatientGoalId    = t.PatientGoalId,
                    StartDate        = t.StartDate,
                    StatusId         = t.StatusId,
                    StatusDate       = t.StatusDate,
                    TargetDate       = t.TargetDate,
                    TargetValue      = t.TargetValue,
                    DeleteFlag       = t.DeleteFlag,
                    TemplateId       = t.TemplateId,
                    ClosedDate       = t.ClosedDate,
                    Details          = t.Details
                };
            }
            return(data);
        }
Esempio n. 5
0
        public static bool SavePatientGoalTasks(PostPatientGoalRequest request)
        {
            bool result = false;

            try
            {
                if (request.Goal.Tasks != null && request.Goal.Tasks.Count > 0)
                {
                    List <PatientTaskData> ptd = new List <PatientTaskData>();
                    request.Goal.Tasks.ForEach(t =>
                    {
                        PatientTaskData data = ConvertToPatientTaskData(t);
                        ptd.Add(data);
                    });

                    ptd.ForEach(td =>
                    {
                        GoalsEndpointUtil.PostUpdateTaskRequest(request, td);
                    });
                }
                else if (request.Goal.Tasks.Count == 0)
                {
                    PatientTaskData pbd = new PatientTaskData {
                        Id = "0", PatientGoalId = request.PatientGoalId
                    };
                    result = GoalsEndpointUtil.PostUpdateTaskRequest(request, pbd);
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw new Exception("AD:SavePatientGoalTasks()::" + ex.Message, ex.InnerException);
            }
        }
Esempio n. 6
0
        public GetPatientTaskByTemplateIdResponse GetPatientTaskByTemplateId(GetPatientTaskByTemplateIdRequest request)
        {
            GetPatientTaskByTemplateIdResponse result = null;

            try
            {
                result = new GetPatientTaskByTemplateIdResponse();
                IGoalRepository repo = Factory.GetRepository(request, RepositoryType.PatientTask);

                PatientTaskData patientTaskData = repo.FindByTemplateId(request.GoalId, request.TemplateId) as PatientTaskData;
                //if (patientGoalData != null)
                //{
                //    //Get all barriers for a given goal
                //    patientGoalData.BarriersData = getBarriersByPatientGoalId(request, patientGoalData.Id);

                //    //Get all tasks for a given goal
                //    patientGoalData.TasksData = getTasksByPatientGoalId(request, patientGoalData.Id);

                //    //Get all interventions for a given goal
                //    patientGoalData.InterventionsData = getInterventionsByPatientGoalId(request, patientGoalData.Id);
                //}

                result.TaskData = patientTaskData;
                result.Version  = request.Version;
                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public IEnumerable <object> Search(object request, List <string> patientGoalIds)
        {
            List <PatientTaskData>     list        = null;
            GetPatientTasksDataRequest dataRequest = (GetPatientTasksDataRequest)request;

            try
            {
                using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
                {
                    List <IMongoQuery> queries = new List <IMongoQuery>();
                    queries.Add(Query.EQ(MEPatientTask.DeleteFlagProperty, false));
                    if (dataRequest.StatusIds != null && dataRequest.StatusIds.Count > 0)
                    {
                        queries.Add(Query.In(MEPatientTask.StatusProperty, new BsonArray(dataRequest.StatusIds)));
                    }
                    if (patientGoalIds != null && patientGoalIds.Count > 0)
                    {
                        List <BsonValue> bsonList = Helper.ConvertToBsonValueList(patientGoalIds);
                        queries.Add(Query.In(MEPatientTask.PatientGoalIdProperty, bsonList));
                    }
                    IMongoQuery          mQuery  = Query.And(queries);
                    List <MEPatientTask> meTasks = null;
                    meTasks = ctx.PatientTasks.Collection.Find(mQuery).ToList();
                    if (meTasks != null && meTasks.Count > 0)
                    {
                        list = new List <PatientTaskData>();
                        foreach (MEPatientTask t in meTasks)
                        {
                            PatientTaskData taskData = new PatientTaskData
                            {
                                Id               = t.Id.ToString(),
                                TargetValue      = t.TargetValue,
                                PatientGoalId    = t.PatientGoalId.ToString(),
                                StatusId         = ((int)t.Status),
                                TargetDate       = t.TargetDate,
                                BarrierIds       = Helper.ConvertToStringList(t.BarrierIds),
                                Description      = t.Description,
                                StatusDate       = t.StatusDate,
                                StartDate        = t.StartDate,
                                CustomAttributes = DTOUtil.GetCustomAttributeIdAndValues(t.Attributes),
                                ClosedDate       = t.ClosedDate,
                                CreatedById      = t.RecordCreatedBy.ToString(),
                                DeleteFlag       = t.DeleteFlag,
                                Details          = t.Details
                            };
                            var mePG = ctx.PatientGoals.Collection.Find(Query.EQ(MEPatientGoal.IdProperty, ObjectId.Parse(taskData.PatientGoalId))).SetFields(MEPatientGoal.NameProperty).FirstOrDefault();
                            if (mePG != null)
                            {
                                taskData.GoalName = mePG.Name;
                            }
                            list.Add(taskData);
                        }
                    }
                }
                return(list);
            }
            catch (Exception) { throw; }
        }
        public object FindByTemplateId(string patientGoalId, string entityID)
        {
            PatientTaskData taskData = null;

            try
            {
                using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
                {
                    List <IMongoQuery> queries = new List <IMongoQuery>
                    {
                        Query.EQ(MEPatientTask.PatientGoalIdProperty, ObjectId.Parse(patientGoalId)),
                        Query.EQ(MEPatientTask.TemplateIdProperty, ObjectId.Parse(entityID)),
                        Query.In(MEPatientTask.StatusProperty, new BsonArray {
                            1, 3
                        }),
                        Query.EQ(MEPatientTask.DeleteFlagProperty, false),
                        Query.EQ(MEPatientTask.TTLDateProperty, BsonNull.Value)
                    };

                    var mQuery = Query.And(queries);
                    var b      = ctx.PatientTasks.Collection.Find(mQuery).FirstOrDefault();

                    if (b != null)
                    {
                        taskData = new PatientTaskData
                        {
                            Id               = b.Id.ToString(),
                            Description      = b.Description,
                            PatientGoalId    = b.PatientGoalId.ToString(),
                            BarrierIds       = Helper.ConvertToStringList(b.BarrierIds),
                            StatusId         = ((int)b.Status),
                            StatusDate       = b.StatusDate,
                            StartDate        = b.StartDate,
                            TargetValue      = b.TargetValue,
                            CustomAttributes = DTOUtil.GetCustomAttributeIdAndValues(b.Attributes),
                            TargetDate       = b.TargetDate,
                            ClosedDate       = b.ClosedDate,
                            CreatedById      = b.RecordCreatedBy.ToString(),
                            DeleteFlag       = b.DeleteFlag,
                            Details          = b.Details
                        };

                        var mePG = ctx.PatientGoals.Collection.Find(Query.EQ(MEPatientGoal.IdProperty, ObjectId.Parse(taskData.PatientGoalId))).SetFields(MEPatientGoal.PatientIdProperty, MEPatientGoal.NameProperty).FirstOrDefault();
                        if (mePG != null)
                        {
                            taskData.GoalName = mePG.Name;
                        }
                    }
                }
                return(taskData);
            }
            catch (Exception) { throw; }
        }
 public IEnumerable <object> Find(string Id)
 {
     try
     {
         List <PatientTaskData> tasksDataList = null;
         List <IMongoQuery>     queries       = new List <IMongoQuery>();
         queries.Add(Query.EQ(MEPatientTask.PatientGoalIdProperty, ObjectId.Parse(Id)));
         queries.Add(Query.EQ(MEPatientTask.DeleteFlagProperty, false));
         queries.Add(Query.EQ(MEPatientTask.TTLDateProperty, BsonNull.Value));
         IMongoQuery mQuery = Query.And(queries);
         using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
         {
             List <MEPatientTask> meTasks = ctx.PatientTasks.Collection.Find(mQuery).ToList();
             if (meTasks != null)
             {
                 string goalName = string.Empty;
                 var    mePG     = ctx.PatientGoals.Collection.Find(Query.EQ(MEPatientGoal.IdProperty, ObjectId.Parse(Id))).SetFields(MEPatientGoal.NameProperty).FirstOrDefault();
                 if (mePG != null)
                 {
                     goalName = mePG.Name;
                 }
                 tasksDataList = new List <PatientTaskData>();
                 foreach (MEPatientTask t in meTasks)
                 {
                     PatientTaskData taskData = new PatientTaskData
                     {
                         Id               = t.Id.ToString(),
                         TargetValue      = t.TargetValue,
                         PatientGoalId    = t.PatientGoalId.ToString(),
                         StatusId         = ((int)t.Status),
                         TargetDate       = t.TargetDate,
                         BarrierIds       = Helper.ConvertToStringList(t.BarrierIds),
                         Description      = t.Description,
                         StatusDate       = t.StatusDate,
                         StartDate        = t.StartDate,
                         CustomAttributes = DTOUtil.GetCustomAttributeIdAndValues(t.Attributes),
                         ClosedDate       = t.ClosedDate,
                         CreatedById      = t.RecordCreatedBy.ToString(),
                         DeleteFlag       = t.DeleteFlag,
                         GoalName         = goalName,
                         Details          = t.Details
                     };
                     tasksDataList.Add(taskData);
                 }
             }
         }
         return(tasksDataList);
     }
     catch (Exception) { throw; }
 }
Esempio n. 10
0
 public GetInitializeTaskResponse GetInitialTask(GetInitializeTaskRequest request)
 {
     try
     {
         GetInitializeTaskResponse itr = new GetInitializeTaskResponse();
         PatientTaskData           ptd = (PatientTaskData)GoalsEndpointUtil.GetInitialTaskRequest(request);
         PatientTask task = GoalsUtil.GetPatientTaskForInitialize(request, ptd);
         itr.Task    = task;
         itr.Version = request.Version;
         return(itr);
     }
     catch (Exception ex)
     {
         throw new Exception("AD:GetInitialTask()::" + ex.Message, ex.InnerException);
     }
 }
 public object FindByID(string entityID)
 {
     try
     {
         PatientTaskData    taskData = null;
         List <IMongoQuery> queries  = new List <IMongoQuery>();
         queries.Add(Query.EQ(MEPatientTask.IdProperty, ObjectId.Parse(entityID)));
         queries.Add(Query.EQ(MEPatientTask.DeleteFlagProperty, false));
         queries.Add(Query.EQ(MEPatientTask.TTLDateProperty, BsonNull.Value));
         IMongoQuery mQuery = Query.And(queries);
         using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
         {
             MEPatientTask t = ctx.PatientTasks.Collection.Find(mQuery).FirstOrDefault();
             if (t != null)
             {
                 taskData = new PatientTaskData
                 {
                     Id               = t.Id.ToString(),
                     TargetValue      = t.TargetValue,
                     PatientGoalId    = t.PatientGoalId.ToString(),
                     StatusId         = ((int)t.Status),
                     TargetDate       = t.TargetDate,
                     BarrierIds       = Helper.ConvertToStringList(t.BarrierIds),
                     Description      = t.Description,
                     StatusDate       = t.StatusDate,
                     StartDate        = t.StartDate,
                     CustomAttributes = DTOUtil.GetCustomAttributeIdAndValues(t.Attributes),
                     ClosedDate       = t.ClosedDate,
                     CreatedById      = t.RecordCreatedBy.ToString(),
                     DeleteFlag       = t.DeleteFlag,
                     Details          = t.Details
                 };
                 var mePG = ctx.PatientGoals.Collection.Find(Query.EQ(MEPatientGoal.IdProperty, ObjectId.Parse(taskData.PatientGoalId))).SetFields(MEPatientGoal.NameProperty).FirstOrDefault();
                 if (mePG != null)
                 {
                     taskData.GoalName = mePG.Name;
                 }
             }
         }
         return(taskData);
     }
     catch (Exception) { throw; }
 }
Esempio n. 12
0
        public PutUpdateTaskResponse UpdatePatientTask(PutUpdateTaskRequest request)
        {
            try
            {
                PutUpdateTaskResponse result = new PutUpdateTaskResponse();

                IGoalRepository repo = Factory.GetRepository(request, RepositoryType.PatientTask);

                if (request.TaskIdsList != null && request.TaskIdsList.Count > 0)
                {
                    List <PatientTaskData> ptd          = (List <PatientTaskData>)repo.Find(request.PatientGoalId);
                    List <string>          dbTaskIdList = GetTaskIds(ptd);

                    // update existing task entries with a delete
                    List <string> excludes = dbTaskIdList.Except(request.TaskIdsList).ToList <string>();
                    excludes.ForEach(ex =>
                    {
                        // create delete task request to insert
                        DeleteTaskDataRequest dtr = new DeleteTaskDataRequest {
                            TaskId = ex, UserId = request.UserId
                        };
                        repo.Delete(dtr);
                    });
                }
                if (request.Task != null && request.Task.Id != "0")
                {
                    bool status = (bool)repo.Update(request);
                    if (status)
                    {
                        PatientTaskData data = repo.FindByID(request.Task.Id) as PatientTaskData;
                        result.TaskData = data;
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public object Initialize(object newEntity)
        {
            PutInitializeTaskRequest ptr  = (PutInitializeTaskRequest)newEntity;
            PatientTaskData          task = null;
            MEPatientTask            pat  = null;

            try
            {
                pat = new MEPatientTask(this.UserId)
                {
                    Id            = ObjectId.GenerateNewId(),
                    PatientGoalId = ObjectId.Parse(ptr.PatientGoalId),
                    TTLDate       = System.DateTime.UtcNow.AddDays(_initializeDays),
                    StatusDate    = DateTime.UtcNow,
                    DeleteFlag    = false
                                    //,
                                    //LastUpdatedOn = DateTime.UtcNow,
                                    //UpdatedBy = ObjectId.Parse(this.UserId)
                };

                using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
                {
                    ctx.PatientTasks.Collection.Insert(pat);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.PatientTask.ToString(),
                                             pat.Id.ToString(),
                                             Common.DataAuditType.Insert,
                                             ptr.ContractNumber);

                    task = new PatientTaskData
                    {
                        Id = pat.Id.ToString()
                    };
                }
                return(task);
            }
            catch (Exception) { throw; }
        }
        public object Update(object entity)
        {
            bool result = false;
            PutUpdateTaskRequest ptr = (PutUpdateTaskRequest)entity;
            PatientTaskData      pt  = ptr.Task;

            try
            {
                using (PatientGoalMongoContext ctx = new PatientGoalMongoContext(_dbName))
                {
                    var q = MB.Query <MEPatientTask> .EQ(b => b.Id, ObjectId.Parse(pt.Id));

                    // Set the StatusDate to Now if the status is changed. Set the ClosedDate depending on the Status.
                    MEPatientTask existingPB = ctx.PatientTasks.Collection.Find(q).SetFields(MEPatientTask.StatusProperty).FirstOrDefault();
                    if (existingPB != null)
                    {
                        if ((int)existingPB.Status != pt.StatusId)
                        {
                            pt.StatusDate = DateTime.UtcNow;
                        }
                        if ((pt.StatusId == (int)GoalTaskStatus.Met || pt.StatusId == (int)GoalTaskStatus.Abandoned))
                        {
                            if (existingPB.Status != (GoalTaskStatus)pt.StatusId)
                            {
                                pt.ClosedDate = DateTime.UtcNow;
                            }
                        }
                        else
                        {
                            pt.ClosedDate = null;
                        }
                    }
                    var uv = new List <MB.UpdateBuilder>();
                    uv.Add(MB.Update.Set(MEPatientTask.UpdatedByProperty, ObjectId.Parse(this.UserId)));
                    uv.Add(MB.Update.Set(MEPatientTask.VersionProperty, ptr.Version));
                    uv.Add(MB.Update.Set(MEPatientTask.LastUpdatedOnProperty, System.DateTime.UtcNow));
                    if (pt.Description != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.DescriptionProperty, pt.Description));
                    }
                    if (pt.Details != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.DetailProperty, pt.Details));
                    }
                    if (pt.StartDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.StartDateProperty, pt.StartDate));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.StartDateProperty, BsonNull.Value));
                    }
                    if (pt.StatusDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.StatusDateProperty, pt.StatusDate));
                    }
                    if (pt.StatusId != 0)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.StatusProperty, pt.StatusId));
                    }
                    if (pt.TargetDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TargetDateProperty, pt.TargetDate));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TargetDateProperty, BsonNull.Value));
                    }
                    if (pt.TargetValue != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TargetValueProperty, pt.TargetValue));
                    }
                    if (pt.CustomAttributes != null)
                    {
                        uv.Add(MB.Update.SetWrapped <List <MAttribute> >(MEPatientTask.AttributesProperty, DTOUtil.GetAttributes(pt.CustomAttributes)));
                    }
                    if (pt.BarrierIds != null)
                    {
                        uv.Add(MB.Update.SetWrapped <List <ObjectId> >(MEPatientTask.BarriersProperty, DTOUtil.ConvertObjectId(pt.BarrierIds)));
                    }
                    if (pt.ClosedDate != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.ClosedDateProperty, pt.ClosedDate));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.ClosedDateProperty, BsonNull.Value));
                    }
                    uv.Add(MB.Update.Set(MEPatientTask.DeleteFlagProperty, pt.DeleteFlag));
                    if (pt.TemplateId != null)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TemplateIdProperty, ObjectId.Parse(pt.TemplateId)));
                    }

                    DataAuditType type;
                    if (pt.DeleteFlag)
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TTLDateProperty, System.DateTime.UtcNow.AddDays(_expireDays)));
                        type = Common.DataAuditType.Delete;
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEPatientTask.TTLDateProperty, BsonNull.Value));
                        type = Common.DataAuditType.Update;
                    }
                    IMongoUpdate update = MB.Update.Combine(uv);
                    ctx.PatientTasks.Collection.Update(q, update);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.PatientTask.ToString(),
                                             pt.Id,
                                             type,
                                             ptr.ContractNumber);

                    result = true;
                }
                return(result as object);
            }
            catch (Exception) { throw; }
        }
Esempio n. 15
0
        internal static PatientTask GetPatientTaskForInitialize(GetInitializeTaskRequest request, PatientTaskData ptd)
        {
            PatientTask pt = null;

            try
            {
                if (ptd != null)
                {
                    pt = new PatientTask
                    {
                        CustomAttributes = GoalsEndpointUtil.GetAttributesLibraryByType(request, 2),
                        Id          = ptd.Id,
                        StartDate   = ptd.StartDate,
                        StatusId    = ptd.StatusId,
                        TargetDate  = ptd.TargetDate,
                        TargetValue = ptd.TargetValue,
                        DeleteFlag  = ptd.DeleteFlag,
                        Details     = ptd.Details
                    };
                }
            }
            catch (Exception ex)
            {
                throw new Exception("AD:GetPatientTaskForInitialize()::" + ex.Message, ex.InnerException);
            }
            return(pt);
        }
Esempio n. 16
0
 public bool PostUpdateTaskRequest(PostPatientGoalRequest request, PatientTaskData td)
 {
     throw new NotImplementedException();
 }