Beispiel #1
0
        public void UndoDelete(object entity)
        {
            UndoDeleteCareTeamDataRequest request = (UndoDeleteCareTeamDataRequest)entity;

            try
            {
                using (var ctx = new ContactCareTeamMongoContext(_dbName))
                {
                    var query = MB.Query <MEContactCareTeam> .EQ(b => b.Id, ObjectId.Parse(request.Id));

                    var builder = new List <MB.UpdateBuilder>();
                    builder.Add(MB.Update.Set(MEContactCareTeam.TTLDateProperty, BsonNull.Value));
                    builder.Add(MB.Update.Set(MEContactCareTeam.DeleteFlagProperty, false));
                    builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedOnProperty, DateTime.UtcNow));
                    builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedByProperty, ObjectId.Parse(this.UserId)));

                    IMongoUpdate update = MB.Update.Combine(builder);
                    ctx.CareTeam.Collection.Update(query, update);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.CareMember.ToString(),
                                             request.Id.ToString(),
                                             Common.DataAuditType.UndoDelete,
                                             request.ContractNumber);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #2
0
        public bool CareTeamMemberContactExist(string careTeamId, string contactId)
        {
            var res = false;

            try
            {
                using (var ctx = new ContactCareTeamMongoContext(_dbName))
                {
                    ObjectId cid;
                    ObjectId mid;

                    if (ObjectId.TryParse(careTeamId, out cid) && ObjectId.TryParse(contactId, out mid))
                    {
                        var careTeam = GetCareTeam(careTeamId);
                        if (careTeam != null)
                        {
                            var currentMeCareTeamMember = careTeam.MeCareTeamMembers.FirstOrDefault(
                                x => x.ContactId == mid);
                            res = currentMeCareTeamMember != null;
                        }
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(res);
        }
Beispiel #3
0
        private MEContactCareTeam GetCareTeam(string careTeamId)
        {
            MEContactCareTeam res = null;

            try
            {
                using (var ctx = new ContactCareTeamMongoContext(_dbName))
                {
                    ObjectId cid;
                    if (ObjectId.TryParse(careTeamId, out cid))
                    {
                        var queries = new List <IMongoQuery>
                        {
                            MB.Query <MEContactCareTeam> .EQ(c => c.Id, cid),
                            MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false)
                        };

                        var query    = MB.Query.And(queries);
                        var careTeam = ctx.CareTeam.Collection.FindOne(query);
                        res = careTeam;
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
            return(res);
        }
Beispiel #4
0
        public void Delete(object entity)
        {
            var request = (DeleteCareTeamDataRequest)entity;

            using (var ctx = new ContactCareTeamMongoContext(_dbName))
            {
                var queries = new List <IMongoQuery>
                {
                    MB.Query <MEContactCareTeam> .EQ(c => c.Id, ObjectId.Parse(request.Id)),
                    MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false)
                };

                var query           = MB.Query.And(queries);
                var contactCareTeam = ctx.CareTeam.Collection.FindOne(query);
                var builder         = new List <MB.UpdateBuilder>();
                builder.Add(MB.Update.Set(MEContactCareTeam.TTLDateProperty, DateTime.UtcNow.AddDays(_expireDays)));
                builder.Add(MB.Update.Set(MEContactCareTeam.DeleteFlagProperty, true));
                builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedOnProperty, DateTime.UtcNow));
                builder.Add(MB.Update.Set(MEContactCareTeam.LastUpdatedByProperty, ObjectId.Parse(this.UserId)));

                IMongoUpdate update = MB.Update.Combine(builder);
                ctx.CareTeam.Collection.Update(query, update);

                AuditHelper.LogDataAudit(this.UserId,
                                         MongoCollectionName.CareTeam.ToString(),
                                         contactCareTeam.Id.ToString(),
                                         DataAuditType.Delete,
                                         request.ContractNumber);
            }
        }
Beispiel #5
0
        public string AddCareTeamMember(AddCareTeamMemberDataRequest request)
        {
            var id = string.Empty;

            try
            {
                if (request.CareTeamMemberData != null)
                {
                    using (var ctx = new ContactCareTeamMongoContext(_dbName))
                    {
                        var contactCareTeam = GetContactCareTeam(request.ContactId);

                        if (contactCareTeam == null)
                        {
                            throw new ApplicationException(
                                      "AddCareTeamMember: The referenced contact doesn't have a care team");
                        }

                        if (contactCareTeam.Id != ObjectId.Parse(request.CareTeamId))
                        {
                            throw new ApplicationException(
                                      "AddCareTeamMember: The referenced Care Team doesn't exist or is not assigned to the referenced contact");
                        }

                        var memberToAdd = BuildMECareTeamMember(this.UserId, request.CareTeamMemberData);
                        memberToAdd.RecordCreatedOn = DateTime.UtcNow;
                        memberToAdd.RecordCreatedBy = ObjectId.Parse(request.UserId);

                        contactCareTeam.MeCareTeamMembers.Add(memberToAdd);

                        ctx.CareTeam.Collection.Save(contactCareTeam);

                        AuditHelper.LogDataAudit(this.UserId,
                                                 MongoCollectionName.CareTeam.ToString(),
                                                 contactCareTeam.Id.ToString(),
                                                 DataAuditType.Update,
                                                 request.ContractNumber);


                        id = memberToAdd.Id.ToString();
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(id);
        }
Beispiel #6
0
        public void DeleteCareTeamMember(object entity)
        {
            var request = (DeleteCareTeamMemberDataRequest)entity;

            using (var ctx = new ContactCareTeamMongoContext(_dbName))
            {
                var queries = new List <IMongoQuery>
                {
                    MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(request.ContactId)),
                    MB.Query <MEContactCareTeam> .EQ(c => c.Id, ObjectId.Parse(request.CareTeamId)),
                    MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false)
                };

                var query           = MB.Query.And(queries);
                var contactCareTeam = ctx.CareTeam.Collection.FindOne(query);

                if (contactCareTeam == null)
                {
                    throw new Exception(string.Format("No care team exists with Id : {0}", request.CareTeamId));
                }

                var members        = contactCareTeam.MeCareTeamMembers;
                var memberToRemove = members.FirstOrDefault(m => m.Id == ObjectId.Parse(request.MemberId));

                if (memberToRemove == null)
                {
                    return;
                }

                members.Remove(memberToRemove);

                contactCareTeam.MeCareTeamMembers = members;
                contactCareTeam.LastUpdatedOn     = DateTime.UtcNow;
                contactCareTeam.UpdatedBy         = ObjectId.Parse(this.UserId);

                var saveResult = ctx.CareTeam.Collection.Save(contactCareTeam);

                AuditHelper.LogDataAudit(this.UserId,
                                         MongoCollectionName.CareTeam.ToString(),
                                         contactCareTeam.Id.ToString(),
                                         DataAuditType.Update,
                                         request.ContractNumber);
            }
        }
Beispiel #7
0
        public object GetCareTeamByContactId(string contactId)
        {
            CareTeamData careTeam = null;

            using (var ctx = new ContactCareTeamMongoContext(_dbName))
            {
                var queries = new List <IMongoQuery>
                {
                    MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(contactId)),
                    MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false)
                };

                var query      = MB.Query.And(queries);
                var meCareTeam = ctx.CareTeam.Collection.FindOne(query);
                if (meCareTeam != null)
                {
                    careTeam = BuildCareTeamData(meCareTeam);
                }
            }
            return(careTeam);
        }
Beispiel #8
0
        public IEnumerable <CareTeamData> GetCareTeamsByContactIds(List <string> contactIds)
        {
            List <CareTeamData> contactDataList = null;

            try
            {
                using (var ctx = new ContactCareTeamMongoContext(_dbName))
                {
                    List <IMongoQuery> queries  = new List <IMongoQuery>();
                    List <BsonValue>   bsonList = Helper.ConvertToBsonValueList(contactIds);
                    if (bsonList != null)
                    {
                        queries.Add(MB.Query.In(MEContactCareTeam.ContactIdProperty, bsonList));
                        queries.Add(MB.Query.EQ(MEContactCareTeam.DeleteFlagProperty, false));
                        IMongoQuery mQuery = MB.Query.And(queries);
                        List <MEContactCareTeam> meContacts = ctx.CareTeam.Collection.Find(mQuery).ToList();
                        if (meContacts != null && meContacts.Count > 0)
                        {
                            contactDataList = new List <CareTeamData>();
                            foreach (var c in meContacts)
                            {
                                var careTeamData = BuildCareTeamData(c);
                                if (careTeamData != null)
                                {
                                    contactDataList.Add(careTeamData);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }



            return(contactDataList);
        }
Beispiel #9
0
        public object Insert(object newEntity)
        {
            var careTeam = new object();
            var data     = newEntity as SaveCareTeamDataRequest;

            if (data != null)
            {
                try
                {
                    using (var ctx = new ContactCareTeamMongoContext(_dbName))
                    {
                        var queries = new List <IMongoQuery>
                        {
                            MB.Query <MEContactCareTeam> .EQ(c => c.ContactId, ObjectId.Parse(data.ContactId)),
                            MB.Query <MEContactCareTeam> .EQ(c => c.DeleteFlag, false)
                        };

                        var query           = MB.Query.And(queries);
                        var contactCareTeam = ctx.CareTeam.Collection.FindOne(query);

                        if (contactCareTeam == null)
                        {
                            //Add
                            var meCareTeam = new MEContactCareTeam(this.UserId, DateTime.UtcNow)
                            {
                                ContactId         = ObjectId.Parse(data.ContactId),
                                MeCareTeamMembers = BuildMECareTeamMembers(data.CareTeamData.Members, this.UserId),
                                DeleteFlag        = false
                            };

                            ctx.CareTeam.Collection.Save(meCareTeam);
                            // response = meCareTeam.Id.ToString();
                            AuditHelper.LogDataAudit(this.UserId,
                                                     MongoCollectionName.CareTeam.ToString(),
                                                     meCareTeam.Id.ToString(),
                                                     DataAuditType.Insert,
                                                     data.ContractNumber);
                        }
                        else
                        {
                            var oldMembers = contactCareTeam.MeCareTeamMembers;
                            //Update
                            contactCareTeam.MeCareTeamMembers = BuildMECareTeamMembers(data.CareTeamData.Members,
                                                                                       this.UserId);
                            contactCareTeam.UpdatedBy     = ObjectId.Parse(this.UserId);
                            contactCareTeam.LastUpdatedOn = DateTime.UtcNow;

                            foreach (var m in oldMembers)
                            {
                                var newmember = contactCareTeam.MeCareTeamMembers.FirstOrDefault(c => c.Id == m.Id);
                                if (newmember != null)
                                {
                                    newmember.RecordCreatedBy = m.RecordCreatedBy;
                                    newmember.RecordCreatedOn = m.RecordCreatedOn;
                                }
                            }

                            var addingMembers = contactCareTeam.MeCareTeamMembers.Except(oldMembers);

                            foreach (var member in addingMembers)
                            {
                                if (member.RecordCreatedBy == ObjectId.Empty)
                                {
                                    member.RecordCreatedBy = ObjectId.Parse(this.UserId);
                                }

                                if (member.RecordCreatedOn == DateTime.MinValue || member.RecordCreatedOn == null)
                                {
                                    member.RecordCreatedOn = DateTime.UtcNow;
                                }
                            }

                            ctx.CareTeam.Collection.Save(contactCareTeam);
                            //response = contactCareTeam.Id.ToString();

                            AuditHelper.LogDataAudit(this.UserId,
                                                     MongoCollectionName.CareTeam.ToString(),
                                                     contactCareTeam.Id.ToString(),
                                                     DataAuditType.Update,
                                                     data.ContractNumber);
                        }

                        careTeam = GetCareTeamByContactId(data.ContactId);

                        if (careTeam == null)
                        {
                            throw new Exception("Care Team is null or empty");
                        }
                    }
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            return(careTeam);
        }
Beispiel #10
0
        public bool UpdateCareTeamMember(object entity)
        {
            UpdateCareTeamMemberDataRequest request = (UpdateCareTeamMemberDataRequest)entity;
            CareTeamMemberData careTeamMemberData   = request.CareTeamMemberData;
            bool result = false;

            try
            {
                if (careTeamMemberData != null)
                {
                    using (ContactCareTeamMongoContext ctx = new ContactCareTeamMongoContext(_dbName))
                    {
                        var contactCareTeam = GetContactCareTeam(request.ContactId);

                        if (contactCareTeam == null)
                        {
                            throw new ApplicationException(
                                      "UpdateCareTeamMember: The referenced contact doesn't have a care team");
                        }

                        if (contactCareTeam.Id != ObjectId.Parse(request.CareTeamId))
                        {
                            throw new ApplicationException(
                                      "UpdateCareTeamMember: The referenced Care Team doesn't exist or is not assigned to the referenced contact");
                        }

                        var currentMeCareTeamMember =
                            contactCareTeam.MeCareTeamMembers.FirstOrDefault(
                                x => x.Id == ObjectId.Parse(careTeamMemberData.Id));

                        if (currentMeCareTeamMember == null)
                        {
                            throw new ApplicationException(
                                      "UpdateCareTeamMember: The referenced care team member doesn't exist");
                        }

                        var memberIndex = contactCareTeam.MeCareTeamMembers.FindIndex(
                            x => x.Id == ObjectId.Parse(careTeamMemberData.Id));

                        var updatedMecareMemberTeam = BuildMECareTeamMember(this.UserId, careTeamMemberData);

                        updatedMecareMemberTeam.RecordCreatedOn = currentMeCareTeamMember.RecordCreatedOn;
                        updatedMecareMemberTeam.RecordCreatedBy = currentMeCareTeamMember.RecordCreatedBy;

                        contactCareTeam.MeCareTeamMembers[memberIndex] = updatedMecareMemberTeam;

                        contactCareTeam.LastUpdatedOn = DateTime.UtcNow;
                        contactCareTeam.UpdatedBy     = ObjectId.Parse(this.UserId);

                        ctx.CareTeam.Collection.Save(contactCareTeam);

                        AuditHelper.LogDataAudit(this.UserId,
                                                 MongoCollectionName.CareTeam.ToString(),
                                                 contactCareTeam.Id.ToString(),
                                                 DataAuditType.Update,
                                                 request.ContractNumber);


                        result = true;
                    }
                }
                return(result);
            }
            catch (ApplicationException ex)
            {
                throw new ApplicationException(ex.Message);
            }
            catch (Exception ex)
            {
                throw new Exception("CareMemberDD:MongoCareMemberRepository:Update()" + ex.Message, ex.InnerException);
            }
        }
Beispiel #11
0
        public override void Execute()
        {
            try
            {
                OnDocColEvent(new ETLEventArgs {
                    Message = "[" + Contract + "] Loading CareTeam.", IsError = false
                });
                ConcurrentBag <ECareTeam> eCareTeams = new ConcurrentBag <ECareTeam>();

                ConcurrentBag <MEContactCareTeam> meContactCareTeams;
                using (var ctx = new ContactCareTeamMongoContext(Contract))
                {
                    meContactCareTeams = new ConcurrentBag <MEContactCareTeam>(ctx.CareTeam.Collection.FindAllAs <MEContactCareTeam>().ToList());
                }

                Parallel.ForEach(meContactCareTeams, ct =>
                {
                    try
                    {
                        if (ct.MeCareTeamMembers != null && ct.MeCareTeamMembers.Count > 0)
                        {
                            var careMembers = ct.MeCareTeamMembers;
                            foreach (var cm in careMembers)
                            {
                                eCareTeams.Add(new ECareTeam
                                {
                                    //Populating these fields from CareTeam
                                    MongoCareTeamId          = ct.Id.ToString(),
                                    MongoContactIdForPatient = ct.ContactId.ToString(),
                                    Version    = ct.Version,
                                    DeleteFlag = ct.DeleteFlag,
                                    TTLDate    = ct.TTLDate,
                                    //Populating these fields from the CareTeam's CareMember.
                                    MongoCareMemberId           = cm.Id.ToString(),
                                    MongoContactIdForCareMember = cm.ContactId.ToString(),
                                    RoleId           = cm.RoleId == null ? null : cm.RoleId.ToString(),
                                    CustomRoleName   = cm.CustomRoleName,
                                    StartDate        = cm.StartDate,
                                    EndDate          = cm.EndDate,
                                    Core             = cm.Core,
                                    Notes            = cm.Notes,
                                    FrequencyId      = cm.Frequency == null ? null : cm.Frequency.ToString(),
                                    Distance         = cm.Distance,
                                    DistanceUnit     = cm.DistanceUnit,
                                    DataSource       = cm.DataSource,
                                    ExternalRecordId = cm.ExternalRecordId,
                                    Status           = cm.Status.ToString(),
                                    UpdatedBy        = cm.UpdatedBy == null ? null : cm.UpdatedBy.ToString(),
                                    LastUpdatedOn    = cm.LastUpdatedOn,
                                    RecordCreatedBy  = cm.RecordCreatedBy.ToString(),
                                    RecordCreatedOn  = cm.RecordCreatedOn,
                                });
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        OnDocColEvent(new ETLEventArgs {
                            Message = "[" + Contract + "] " + ex.Message + ": " + ex.StackTrace, IsError = true
                        });
                    }
                });

                SaveSubcollection(eCareTeams);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }