public object FindByID(string entityID)
        {
            PatientMedSuppData data = null;

            try
            {
                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    List <IMongoQuery> queries = new List <IMongoQuery>();
                    queries.Add(Query.EQ(MEPatientMedSupp.IdProperty, ObjectId.Parse(entityID)));
                    IMongoQuery      mQuery = Query.And(queries);
                    MEPatientMedSupp mePMS  = ctx.PatientMedSupps.Collection.Find(mQuery).FirstOrDefault();
                    if (mePMS != null)
                    {
                        data = AutoMapper.Mapper.Map <PatientMedSuppData>(mePMS);
                    }
                }
                return(data);
            }
            catch (Exception) { throw; }
        }
        public object Insert(object newEntity)
        {
            PutPatientMedSuppDataRequest request = (PutPatientMedSuppDataRequest)newEntity;
            PatientMedSuppData           data    = request.PatientMedSuppData;

            try
            {
                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    MEPatientMedSupp mePMS = new MEPatientMedSupp(this.UserId)
                    {
                        PatientId = ObjectId.Parse(data.PatientId),
                        //FamilyId = string.IsNullOrEmpty(data.FamilyId) ? (ObjectId?)null : ObjectId.Parse(data.FamilyId),
                        Name               = string.IsNullOrEmpty(data.Name) ? null : data.Name.ToUpper(),
                        CategoryId         = (Category)data.CategoryId,
                        TypeId             = ObjectId.Parse(data.TypeId),
                        StatusId           = (Status)data.StatusId,
                        Dosage             = data.Dosage,
                        Strength           = data.Strength,
                        Route              = string.IsNullOrEmpty(data.Route) ? null : data.Route.ToUpper(),
                        Form               = string.IsNullOrEmpty(data.Form) ? null : data.Form.ToUpper(),
                        PharmClasses       = getPharmClassses(ctx, data.Name),
                        NDCs               = (data.NDCs != null && data.NDCs.Count > 0) ? data.NDCs : null,
                        FreqQuantity       = data.FreqQuantity,
                        FreqHowOftenId     = string.IsNullOrEmpty(data.FreqHowOftenId) ? (ObjectId?)null : ObjectId.Parse(data.FreqHowOftenId),
                        FreqWhenId         = string.IsNullOrEmpty(data.FreqWhenId) ? (ObjectId?)null : ObjectId.Parse(data.FreqWhenId),
                        FrequencyId        = string.IsNullOrEmpty(data.FrequencyId) ? (ObjectId?)null : ObjectId.Parse(data.FrequencyId),
                        SourceId           = ObjectId.Parse(data.SourceId),
                        StartDate          = data.StartDate == null ? (DateTime?)null : data.StartDate,
                        EndDate            = data.EndDate == null ? (DateTime?)null : data.EndDate,
                        Reason             = data.Reason,
                        Notes              = data.Notes,
                        SigCode            = data.SigCode,
                        PrescribedBy       = data.PrescribedBy,
                        SystemName         = data.SystemName,
                        DeleteFlag         = false,
                        DataSource         = data.DataSource,
                        ExternalRecordId   = data.ExternalRecordId,
                        OriginalDataSource = data.OriginalDataSource,
                        Duration           = data.Duration,
                        DurationUnitId     = string.IsNullOrEmpty(data.DurationUnitId) ? (ObjectId?)null : ObjectId.Parse(data.DurationUnitId),
                        OtherDuration      = data.OtherDuration,
                        ReviewId           = string.IsNullOrEmpty(data.ReviewId) ? (ObjectId?)null : ObjectId.Parse(data.ReviewId),
                        RefusalReasonId    = string.IsNullOrEmpty(data.RefusalReasonId) ? (ObjectId?)null : ObjectId.Parse(data.RefusalReasonId),
                        OtherRefusalReason = data.OtherRefusalReason,
                        OrderedBy          = data.OrderedBy,
                        OrderedDate        = data.OrderedDate,
                        PrescribedDate     = data.PrescribedDate,
                        RxNumber           = Helper.TrimAndLimit(data.RxNumber, 50),
                        RxDate             = data.RxDate,
                        Pharmacy           = Helper.TrimAndLimit(data.Pharmacy, 500)
                    };
                    ctx.PatientMedSupps.Collection.Insert(mePMS);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.PatientMedSupp.ToString(),
                                             mePMS.Id.ToString(),
                                             DataAuditType.Insert,
                                             request.ContractNumber);
                    return(mePMS.Id.ToString());
                }
            }
            catch (Exception) { throw; }
        }