public BulkInsertResult InsertBatchEngagePatientSystems(InsertBatchEngagePatientSystemsDataRequest request)
        {
            BulkInsertResult result = null;

            try
            {
                if (request.PatientIds != null && request.PatientIds.Count > 0)
                {
                    var repo = Factory.GetRepository(RepositoryType.PatientSystem);
                    List <PatientSystemData> psList = new List <PatientSystemData>();
                    bool          status            = isSystemPrimary(Constants.EngageSystemId);
                    List <string> patientIds        = request.PatientIds;
                    patientIds.ForEach(p =>
                    {
                        PatientSystemData ps = new PatientSystemData
                        {
                            DataSource = Constants.DataSource,
                            PatientId  = p,
                            Primary    = status,
                            StatusId   = (int)Status.Active,
                            SystemId   = Constants.EngageSystemId,
                            Value      = EngageId.New()
                        };
                        psList.Add(ps);
                    });
                    result = (BulkInsertResult)repo.InsertAll(psList.Cast <object>().ToList());
                }
            }
            catch (Exception ex) { throw ex; }
            return(result);
        }
Esempio n. 2
0
        public override BulkInsertResult <string> InsertMany(IEnumerable <T> entities, InsertMode insertMode)
        {
            if (insertMode != InsertMode.db_implementation)
            {
                throw new NotImplementedException();
            }

            var insertResult = new BulkInsertResult <string>();

            var creationDate = NoSQLRepoHelper.DateTimeUtcNow();

            foreach (var entity in entities)
            {
                if (AutoGeneratedEntityDate)
                {
                    entity.SystemCreationDate = creationDate;
                }
                if (AutoGeneratedEntityDate)
                {
                    entity.SystemLastUpdateDate = creationDate;
                }

                NoSQLRepoHelper.SetIds(entity);

                var entityToStore = NewtonJsonHelper.CloneJson(entity, DateTimeZoneHandling.Utc);
                localDb[entity.Id] = entityToStore;
                config.ExpireAt(entity.Id, null);
                insertResult[entity.Id] = InsertResult.unknown;
            }
            SaveJSONFile();

            return(insertResult);
        }
Esempio n. 3
0
        public Import CreateImport(List <Import_RoutingNumber_DTO> entries)
        {
            log.Info($"Creating Import for {entries.Count} entries");

            var transaction = unitOfWork.BeginTransaction();

            try
            {
                Import latestImport = unitOfWork.Imports.GetLastestOfType((int)ImportTypes.RoutingNumbers);

                if (latestImport != null)
                {
                    log.Info($"Set latest Import {latestImport.Id} to IsLatest = false");
                    latestImport.IsLatest = false;
                    unitOfWork.Imports.Update(latestImport);
                    unitOfWork.SaveChanges();
                }

                log.Info($"Creating Import for {entries.Count} entries...");

                Import import = new Import();
                import.Name        = string.Format($"RoutingNumbers - {DateTime.Now.ToString()}");
                import.ImporTypeId = (int)ImportTypes.RoutingNumbers;
                import.IsLatest    = true;

                unitOfWork.Imports.Add(import);
                unitOfWork.SaveChanges();

                log.Info($"Inserting {entries.Count} entries for import {import.Id}...");

                BulkInsertResult result = unitOfWork.Imports.RoutingNumberBulkInsert(import.Id, entries);

                import.InsertSql   = result.InsertSQL;
                import.RollBackSql = result.RollbackSQL;

                unitOfWork.Imports.Update(import);
                unitOfWork.SaveChanges();

                transaction.Commit();

                log.Info($"Commit Transaction for Import {import.Id}");


                return(import);
            }
            catch (Exception ex)
            {
                //TODO exception handling
                log.Error(ex.Message);
                log.Info("Fatal error occured attempting to rollback");
                transaction.Rollback();
            }

            return(null);
        }
Esempio n. 4
0
        public override BulkInsertResult <string> InsertMany(IEnumerable <T> entities, InsertMode insertMode)
        {
            var insertResult = new BulkInsertResult <string>();

            foreach (var entity in entities)
            {
                // Create the document
                InsertOne(entity, insertMode);
                insertResult[entity.Id] = InsertResult.unknown;
            }
            return(insertResult);
        }
Esempio n. 5
0
        public object InsertAll(List <object> entities)
        {
            BulkInsertResult result        = new BulkInsertResult();
            List <string>    insertedIds   = new List <string>();
            List <string>    errorMessages = new List <string>();

            try
            {
                using (PatientSystemMongoContext ctx = new PatientSystemMongoContext(ContractDBName))
                {
                    var bulk = ctx.PatientSystems.Collection.InitializeUnorderedBulkOperation();
                    foreach (PatientSystemData data in entities)
                    {
                        MEPatientSystem mePS = new MEPatientSystem(this.UserId, data.CreatedOn)
                        {
                            PatientId        = ObjectId.Parse(data.PatientId),
                            Value            = Helper.TrimAndLimit(data.Value, 100),
                            Status           = (Status)data.StatusId,
                            Primary          = data.Primary,
                            SystemId         = ObjectId.Parse(data.SystemId),
                            DataSource       = Helper.TrimAndLimit(data.DataSource, 50),
                            DeleteFlag       = false,
                            ExternalRecordId = data.ExternalRecordId,
                            LastUpdatedOn    = data.UpdatedOn,
                            UpdatedBy        = ParseObjectId(data.UpdatedById)
                        };
                        bulk.Insert(mePS.ToBsonDocument());
                        insertedIds.Add(mePS.Id.ToString());
                    }
                    BulkWriteResult bwr = bulk.Execute();
                }
                // TODO: Auditing.
            }
            catch (BulkWriteException bwEx)
            {
                // Get the error messages for the ones that failed.
                foreach (BulkWriteError er in bwEx.WriteErrors)
                {
                    errorMessages.Add(er.Message);
                }
            }
            catch (Exception ex)
            {
                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Helper.LogException(int.Parse(aseProcessID), ex);
            }
            result.ProcessedIds  = insertedIds;
            result.ErrorMessages = errorMessages;
            return(result);
        }
Esempio n. 6
0
        public List <HttpObjectResponse <ToDoData> > InsertBatchPatientToDos(InsertBatchPatientToDosDataRequest request)
        {
            List <HttpObjectResponse <ToDoData> > list = null;

            try
            {
                if (request.PatientToDosData != null && request.PatientToDosData.Count > 0)
                {
                    list = new List <HttpObjectResponse <ToDoData> >();
                    ISchedulingRepository repo   = Factory.GetRepository(request, RepositoryType.ToDo);
                    BulkInsertResult      result = (BulkInsertResult)repo.InsertAll(request.PatientToDosData.Cast <object>().ToList());
                    if (result != null)
                    {
                        if (result.ProcessedIds != null && result.ProcessedIds.Count > 0)
                        {
                            // Get the ToDos that were newly inserted.
                            List <ToDoData> insertedToDos = repo.Select(result.ProcessedIds) as List <ToDoData>;
                            if (insertedToDos != null && insertedToDos.Count > 0)
                            {
                                #region DataAudit
                                List <string> insertedPatientToDoIds = insertedToDos.Select(p => p.Id).ToList();
                                AuditHelper.LogDataAudit(request.UserId, MongoCollectionName.ToDo.ToString(), insertedPatientToDoIds, Common.DataAuditType.Insert, request.ContractNumber);
                                #endregion

                                insertedToDos.ForEach(r =>
                                {
                                    list.Add(new HttpObjectResponse <ToDoData> {
                                        Code = HttpStatusCode.Created, Body = (ToDoData) new ToDoData {
                                            Id = r.Id, ExternalRecordId = r.ExternalRecordId, PatientId = r.PatientId
                                        }
                                    });
                                });
                            }
                        }
                        result.ErrorMessages.ForEach(e =>
                        {
                            list.Add(new HttpObjectResponse <ToDoData> {
                                Code = HttpStatusCode.InternalServerError, Message = e
                            });
                        });
                    }
                }
            }
            catch (Exception ex) { throw ex; }
            return(list);
        }
        public override BulkInsertResult <string> InsertMany(IEnumerable <T> entities, InsertMode insertMode)
        {
            CheckOpenedConnection();

            var insertResult = new BulkInsertResult <string>();

            database.InBatch(() =>
            {
                foreach (var entity in entities)
                {
                    // Create the document
                    InsertOne(entity, insertMode);
                    insertResult[entity.Id] = InsertResult.unknown;
                }
            });

            return(insertResult);
        }
        public override BulkInsertResult <string> InsertMany(IEnumerable <T> entities, InsertMode insertMode)
        {
            CheckOpenedConnection();

            if (insertMode != InsertMode.db_implementation)
            {
                throw new NotImplementedException();
            }

            var insertResult = new BulkInsertResult <string>();

            foreach (var entity in entities)
            {
                var insertOneResult = InsertOne(entity, insertMode);
                // Normally the entity id has changed
                insertResult[entity.Id] = insertOneResult;
            }

            return(insertResult);
        }
Esempio n. 9
0
        public List <HttpObjectResponse <ContactData> > InsertBatchContacts(InsertBatchContactDataRequest request)
        {
            List <HttpObjectResponse <ContactData> > list = null;

            try
            {
                if (request.ContactsData != null && request.ContactsData.Count > 0)
                {
                    List <ContactData> contactData = request.ContactsData;
                    //#region Get the default timeZone.
                    //string defaultTimeZoneId = getDefaultTimeZone(request);
                    //#endregion
                    #region Get all the available comm modes in the lookup.
                    List <CommModeData> commModeData = new List <CommModeData>();
                    List <IdNamePair>   modesLookUp  = getAllCommModes(request);
                    if (modesLookUp != null && modesLookUp.Count > 0)
                    {
                        foreach (IdNamePair l in modesLookUp)
                        {
                            commModeData.Add(new CommModeData {
                                ModeId = l.Id, OptOut = false, Preferred = false
                            });
                        }
                    }
                    #endregion
                    // Populate default CommModes and default timeZones to the Contact data before inserting.
                    contactData.ForEach(c =>
                    {
                        c.Modes = commModeData;
                        //c.TimeZoneId = defaultTimeZoneId;
                    });
                    list = new List <HttpObjectResponse <ContactData> >();
                    IContactRepository repo   = Factory.GetRepository(request, RepositoryType.Contact);
                    BulkInsertResult   result = (BulkInsertResult)repo.InsertAll(contactData.Cast <object>().ToList());
                    if (result != null)
                    {
                        if (result.ProcessedIds != null && result.ProcessedIds.Count > 0)
                        {
                            // Get the Contacts that were newly inserted.
                            List <ContactData> insertedContacts = repo.Select(result.ProcessedIds) as List <ContactData>;
                            if (insertedContacts != null && insertedContacts.Count > 0)
                            {
                                #region DataAudit
                                List <string> insertedContactIds = insertedContacts.Select(p => p.Id).ToList();
                                AuditHelper.LogDataAudit(request.UserId, MongoCollectionName.Contact.ToString(), insertedContactIds, Common.DataAuditType.Insert, request.ContractNumber);
                                #endregion

                                insertedContacts.ForEach(r =>
                                {
                                    list.Add(new HttpObjectResponse <ContactData> {
                                        Code = HttpStatusCode.Created, Body = (ContactData) new ContactData {
                                            Id = r.Id, PatientId = r.PatientId
                                        }
                                    });
                                });
                            }
                        }
                        result.ErrorMessages.ForEach(e =>
                        {
                            list.Add(new HttpObjectResponse <ContactData> {
                                Code = HttpStatusCode.InternalServerError, Message = e
                            });
                        });
                    }
                }
            }
            catch (Exception ex) { throw ex; }
            return(list);
        }
Esempio n. 10
0
        public object InsertAll(List <object> entities)
        {
            BulkInsertResult result        = new BulkInsertResult();
            List <string>    insertedIds   = new List <string>();
            List <string>    errorMessages = new List <string>();

            try
            {
                using (SchedulingMongoContext ctx = new SchedulingMongoContext(_dbName))
                {
                    var bulk = ctx.ToDos.Collection.InitializeUnorderedBulkOperation();
                    foreach (ToDoData t in entities)
                    {
                        METoDo meToDo = new METoDo(this.UserId, t.CreatedOn)
                        {
                            Status       = (Status)t.StatusId,
                            Priority     = (Priority)t.PriorityId,
                            Description  = t.Description,
                            Title        = t.Title,
                            LoweredTitle = t.Title != null?t.Title.ToLower() : null,
                                               DueDate          = t.DueDate,
                                               StartTime        = t.StartTime,
                                               Duration         = t.Duration,
                                               ProgramIds       = Helper.ConvertToObjectIdList(t.ProgramIds),
                                               DeleteFlag       = false,
                                               LastUpdatedOn    = t.UpdatedOn,
                                               ExternalRecordId = t.ExternalRecordId
                        };

                        if (!string.IsNullOrEmpty(t.AssignedToId))
                        {
                            meToDo.AssignedToId = ObjectId.Parse(t.AssignedToId);
                        }
                        if (!string.IsNullOrEmpty(t.CategoryId))
                        {
                            meToDo.Category = ObjectId.Parse(t.CategoryId);
                        }
                        if (!string.IsNullOrEmpty(t.PatientId))
                        {
                            meToDo.PatientId = ObjectId.Parse(t.PatientId);
                        }
                        if (!string.IsNullOrEmpty(t.SourceId))
                        {
                            meToDo.SourceId = ObjectId.Parse(t.SourceId);
                        }
                        if (t.ClosedDate != null)
                        {
                            meToDo.ClosedDate = t.ClosedDate;
                        }
                        bulk.Insert(meToDo.ToBsonDocument());
                        insertedIds.Add(meToDo.Id.ToString());
                    }
                    BulkWriteResult bwr = bulk.Execute();
                }
                // TODO: Auditing.
            }
            catch (BulkWriteException bwEx)
            {
                // Get the error messages for the ones that failed.
                foreach (BulkWriteError er in bwEx.WriteErrors)
                {
                    errorMessages.Add(er.Message);
                }
            }
            catch (Exception ex)
            {
                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Helper.LogException(int.Parse(aseProcessID), ex);
            }
            result.ProcessedIds  = insertedIds;
            result.ErrorMessages = errorMessages;
            return(result);
        }
Esempio n. 11
0
        public InsertBatchPatientsDataResponse InsertBatchPatients(InsertBatchPatientsDataRequest request)
        {
            InsertBatchPatientsDataResponse response = new InsertBatchPatientsDataResponse();

            if (request.PatientsData != null && request.PatientsData.Count > 0)
            {
                List <HttpObjectResponse <PatientData> > list = new List <HttpObjectResponse <PatientData> >();
                IPatientRepository repo   = Factory.GetRepository(request, RepositoryType.Patient);
                BulkInsertResult   result = (BulkInsertResult)repo.InsertAll(request.PatientsData.Cast <object>().ToList());
                if (result != null)
                {
                    if (result.ProcessedIds != null && result.ProcessedIds.Count > 0)
                    {
                        // Get the patients that were newly inserted.
                        List <PatientData> insertedPatients = repo.Select(result.ProcessedIds);
                        if (insertedPatients != null && insertedPatients.Count > 0)
                        {
                            List <string> insertedPatientIds = insertedPatients.Select(p => p.Id).ToList();

                            #region DataAudit for Patients
                            AuditHelper.LogDataAudit(request.UserId, MongoCollectionName.Patient.ToString(), insertedPatientIds, Common.DataAuditType.Insert, request.ContractNumber);
                            #endregion

                            #region BulkInsert CohortPatientView
                            List <CohortPatientViewData> cpvList = getMECohortPatientView(insertedPatients);
                            IPatientRepository           cpvRepo = Factory.GetRepository(request, RepositoryType.CohortPatientView);
                            cpvRepo.InsertAll(cpvList.Cast <object>().ToList());
                            #endregion

                            #region BulkInsert EngagePatientSystems.
                            List <string>            processedPatientSystemIds = insertBatchEngagePatientSystem(insertedPatientIds, request);
                            List <PatientSystemData> insertedPatientSystems    = getPatientSystems(processedPatientSystemIds, request);

                            #region DataAudit for EngagePatientSystems
                            List <string> insertedPatientSystemIds = insertedPatientSystems.Select(p => p.Id).ToList();
                            AuditHelper.LogDataAudit(request.UserId, MongoCollectionName.PatientSystem.ToString(), insertedPatientSystemIds, Common.DataAuditType.Insert, request.ContractNumber);
                            #endregion

                            insertedPatients.ForEach(r =>
                            {
                                string engageValue = string.Empty;
                                var x = insertedPatientSystems.Where(s => s.PatientId == r.Id).FirstOrDefault();
                                if (x != null)
                                {
                                    engageValue = x.Value;
                                }
                                list.Add(new HttpObjectResponse <PatientData> {
                                    Code = HttpStatusCode.Created, Body = (PatientData) new PatientData {
                                        Id = r.Id, ExternalRecordId = r.ExternalRecordId, EngagePatientSystemValue = engageValue
                                    }
                                });
                            });
                            #endregion
                        }
                    }
                    result.ErrorMessages.ForEach(e =>
                    {
                        list.Add(new HttpObjectResponse <PatientData> {
                            Code = HttpStatusCode.InternalServerError, Message = e
                        });
                    });
                }
                response.Responses = list;
            }

            return(response);
        }
        public object InsertAll(List <object> entities)
        {
            BulkInsertResult result        = new BulkInsertResult();
            List <string>    insertedIds   = new List <string>();
            List <string>    errorMessages = new List <string>();

            try
            {
                using (PatientNoteMongoContext ctx = new PatientNoteMongoContext(ContractDBName))
                {
                    var bulk = ctx.PatientNotes.Collection.InitializeUnorderedBulkOperation();
                    foreach (PatientNoteData data in entities)
                    {
                        MEPatientNote meN = new MEPatientNote(this.UserId, data.CreatedOn)
                        {
                            PatientId         = ObjectId.Parse(data.PatientId),
                            Text              = data.Text,
                            ProgramIds        = Helper.ConvertToObjectIdList(data.ProgramIds),
                            ValidatedIdentity = data.ValidatedIdentity,
                            ContactedOn       = data.ContactedOn,
                            Type              = ObjectId.Parse(data.TypeId),
                            DeleteFlag        = false,
                            DataSource        = Helper.TrimAndLimit(data.DataSource, 50),
                            LastUpdatedOn     = data.UpdatedOn,
                            ExternalRecordId  = data.ExternalRecordId,
                            Duration          = data.Duration
                        };

                        if (!string.IsNullOrEmpty(data.MethodId))
                        {
                            meN.MethodId = ObjectId.Parse(data.MethodId);
                        }
                        if (!string.IsNullOrEmpty(data.OutcomeId))
                        {
                            meN.OutcomeId = ObjectId.Parse(data.OutcomeId);
                        }
                        if (!string.IsNullOrEmpty(data.WhoId))
                        {
                            meN.WhoId = ObjectId.Parse(data.WhoId);
                        }
                        if (!string.IsNullOrEmpty(data.SourceId))
                        {
                            meN.SourceId = ObjectId.Parse(data.SourceId);
                        }
                        bulk.Insert(meN.ToBsonDocument());
                        insertedIds.Add(meN.Id.ToString());
                    }
                    BulkWriteResult bwr = bulk.Execute();
                }
                // TODO: Auditing.
            }
            catch (BulkWriteException bwEx)
            {
                // Get the error messages for the ones that failed.
                foreach (BulkWriteError er in bwEx.WriteErrors)
                {
                    errorMessages.Add(er.Message);
                }
            }
            catch (Exception ex)
            {
                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Helper.LogException(int.Parse(aseProcessID), ex);
            }
            result.ProcessedIds  = insertedIds;
            result.ErrorMessages = errorMessages;
            return(result);
        }