private static List <MedicationMapData> HydrateMedMappingList(Dictionary <MedicationKey, List <MedicationData> > medGrouping)
        {
            var medmaps = new List <MedicationMapData>();

            foreach (MedicationKey key in medGrouping.Keys)
            {
                var medmap = new MedicationMapData
                {
                    Custom        = false,
                    DeleteFlag    = false,
                    Form          = key.Form,
                    FullName      = key.FullName,
                    Route         = key.Route,
                    Strength      = key.Strength,
                    Version       = 1.0,
                    SubstanceName = key.SubstanceName,
                    Verified      = true
                };

                if (!medmaps.Contains(medmap))
                {
                    medmaps.Add(medmap);
                }
            }
            return(medmaps);
        }
Beispiel #2
0
        public void UpdateMedicationMap_Test()
        {
            MedicationMapData data = new MedicationMapData
            {
                Id            = "54b82870d433262acc525a17",
                FullName      = "testname123",
                SubstanceName = "67894",
                Verified      = true
            };

            PutMedicationMapDataRequest request = new PutMedicationMapDataRequest
            {
                Context           = context,
                ContractNumber    = contractNumber,
                MedicationMapData = data,
                UserId            = userId,
                Version           = version
            };

            //[Route("/{Context}/{Version}/{ContractNumber}/MedicationMap/Update", "PUT")]
            PutMedicationMapDataResponse response = client.Put <PutMedicationMapDataResponse>(
                string.Format("{0}/{1}/{2}/{3}/MedicationMap/Update", url, context, version, contractNumber), request);

            Assert.IsNotNull(response);
        }
Beispiel #3
0
        public MedicationMapData UpdateMedicationMap(PutMedicationMapRequest request)
        {
            try
            {
                MedicationMapData result = null;
                IRestClient       client = new JsonServiceClient();
                //[Route("/{Context}/{Version}/{ContractNumber}/MedicationMap/Update", "PUT")]
                var url = Common.Helper.BuildURL(string.Format("{0}/{1}/{2}/{3}/MedicationMap/Update",
                                                               DDMedicationUrl,
                                                               "NG",
                                                               request.Version,
                                                               request.ContractNumber), request.UserId);

                if (request.MedicationMap != null)
                {
                    MedicationMapData data = new MedicationMapData();
                    data = Mapper.Map <MedicationMapData>(request.MedicationMap);
                    PutMedicationMapDataResponse dataDomainResponse = client.Put <PutMedicationMapDataResponse>(url, new PutMedicationMapDataRequest
                    {
                        Context           = "NG",
                        ContractNumber    = request.ContractNumber,
                        UserId            = request.UserId,
                        Version           = request.Version,
                        MedicationMapData = data
                    } as object);

                    if (dataDomainResponse != null)
                    {
                        result = dataDomainResponse.MedicationMappingData;
                    }
                }
                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
Beispiel #4
0
        public object Find(object entity)
        {
            string result = null;

            try
            {
                MedicationMapData  e     = (MedicationMapData)entity;
                List <IMongoQuery> qList = new List <IMongoQuery>();
                if (e.Form.IsNullOrEmpty())
                {
                    qList.Add(Query.EQ(MEMedicationMapping.FormProperty, BsonNull.Value));
                }
                else
                {
                    qList.Add(Query <MEMedicationMapping> .EQ(b => b.Form, e.Form));
                }

                if (e.Strength.IsNullOrEmpty())
                {
                    qList.Add(Query.EQ(MEMedicationMapping.StrengthProperty, BsonNull.Value));
                }
                else
                {
                    qList.Add(Query <MEMedicationMapping> .EQ(b => b.Strength, e.Strength));
                }

                if (e.Route.IsNullOrEmpty())
                {
                    qList.Add(Query.EQ(MEMedicationMapping.RouteProperty, BsonNull.Value));
                }
                else
                {
                    qList.Add(Query <MEMedicationMapping> .EQ(b => b.Route, e.Route));
                }

                if (e.FullName.IsNullOrEmpty())
                {
                    qList.Add(Query.EQ(MEMedicationMapping.FullNameProperty, BsonNull.Value));
                }
                else
                {
                    qList.Add(Query <MEMedicationMapping> .EQ(b => b.FullName, e.FullName));
                }

                qList.Add(Query <MEMedicationMapping> .EQ(b => b.Custom, true));

                var query = Query.And(qList);
                MEMedicationMapping meMM = Context.MedicationMaps.Collection.Find(query).FirstOrDefault();
                if (meMM != null)
                {
                    result = meMM.Id.ToString();
                }
                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
        public MedicationMapData UpdateMedicationMap(PutMedicationMapDataRequest request)
        {
            MedicationMapData result = null;
            var  repo   = StubRepositoryFactory.GetMedicationRepository(request, RepositoryType.MedicationMapping);
            bool status = (bool)repo.Update(request);

            if (status)
            {
                result = (MedicationMapData)repo.FindByID(request.MedicationMapData.Id);
            }
            return(result);
        }
        private MedicationKey CreateMedicationMappingKey(MedicationMapData md)
        {
            var key = new MedicationKey
            {
                Form          = md.Form,
                FullName      = md.FullName,
                Route         = md.Route,
                Strength      = md.Strength,
                SubstanceName = md.SubstanceName
            };

            return(key);
        }
Beispiel #7
0
 public DTO.MedicationMap InitializeMedicationMap(PostInitializeMedicationMapRequest request)
 {
     DTO.MedicationMap med = null;
     try
     {
         MedicationMapData data = EndpointUtil.InitializeMedicationMap(request);
         if (data != null)
         {
             med = Mapper.Map <DTO.MedicationMap>(data);
         }
         return(med);
     }
     catch (Exception ex) { throw ex; }
 }
Beispiel #8
0
        public DTO.MedicationMapData InsertMedicationMap(PostMedicationMapDataRequest request)
        {
            MedicationMapData result = null;

            try
            {
                var repo = MedicationRepositoryFactory.GetMedicationRepository(request, RepositoryType.MedicationMapping);
                if (request.MedicationMapData != null)
                {
                    result = repo.Insert(request as object) as MedicationMapData;
                }
                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
Beispiel #9
0
        public void UpdateMedicationMap_Test()
        {
            PutMedicationMapDataRequest request = new PutMedicationMapDataRequest
            {
                Context           = context,
                ContractNumber    = contractNumber,
                UserId            = userId,
                Version           = version,
                MedicationMapData = new MedicationMapData {
                    Id = "532371e4072ef721b8b05b97", FullName = "TESLA1", Verified = false, Custom = true
                }
            };
            MedicationMapData data = cm.UpdateMedicationMap(request);

            Assert.IsNull(data.TTLDate);
        }
Beispiel #10
0
        public void InitializeMedicationMap_Test()
        {
            PutInitializeMedicationMapDataRequest request = new PutInitializeMedicationMapDataRequest
            {
                Context           = context,
                ContractNumber    = contractNumber,
                UserId            = userId,
                Version           = version,
                MedicationMapData = new MedicationMapData {
                    FullName = "TESLA", Verified = false, Custom = true
                }
            };
            MedicationMapData data = cm.InitializeMedicationMap(request);

            Assert.IsNotNull(data.TTLDate);
        }
Beispiel #11
0
 /// <summary>
 /// Register new medication name in Lucene indexes.
 /// </summary>
 /// <param name="contractNumber">contract Number sent in the request.</param>
 /// <param name="medData">MedicationMapData object.</param>
 private void RegisterMedication(IAppDomainRequest request, MedicationMapData medData)
 {
     DTO.Medication newMed = new DTO.Medication
     {
         Id = medData.Id,
         ProprietaryName       = medData.FullName,
         Strength              = medData.Strength,
         DosageFormName        = medData.Form,
         RouteName             = medData.Route,
         SubstanceName         = string.Empty,
         NDC                   = string.Empty,
         ProductId             = string.Empty,
         ProprietaryNameSuffix = string.Empty
     };
     SearchManager.RegisterMedDocumentInSearchIndex(newMed, request);
 }
Beispiel #12
0
        public MedicationMapData UpdateMedicationMap(PutMedicationMapDataRequest request)
        {
            try
            {
                MedicationMapData result = null;
                var repo = MedicationRepositoryFactory.GetMedicationRepository(request, RepositoryType.MedicationMapping);

                if (request.MedicationMapData != null)
                {
                    bool status = (bool)repo.Update(request);
                    if (status)
                    {
                        result = (MedicationMapData)repo.FindByID(request.MedicationMapData.Id);
                    }
                }
                return(result);
            }
            catch (Exception ex) { throw ex; }
        }
Beispiel #13
0
        public object Initialize(object newEntity)
        {
            PutInitializeMedicationMapDataRequest request = (PutInitializeMedicationMapDataRequest)newEntity;
            MedicationMapData data = null;

            try
            {
                MEMedicationMapping meMM = new MEMedicationMapping(this.UserId)
                {
                    FullName   = string.IsNullOrEmpty(request.MedicationMapData.FullName) ? null : request.MedicationMapData.FullName.ToUpper(),
                    Strength   = request.MedicationMapData.Strength,
                    Form       = string.IsNullOrEmpty(request.MedicationMapData.Form) ? null : request.MedicationMapData.Form.ToUpper(),
                    Route      = string.IsNullOrEmpty(request.MedicationMapData.Route) ? null : request.MedicationMapData.Route.ToUpper(),
                    TTLDate    = System.DateTime.UtcNow.AddDays(_initializeDays),
                    DeleteFlag = false
                };

                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    ctx.MedicationMaps.Collection.Insert(meMM);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.MedicationMap.ToString(),
                                             meMM.Id.ToString(),
                                             DataAuditType.Insert,
                                             request.ContractNumber);

                    data = new MedicationMapData
                    {
                        Id       = meMM.Id.ToString(),
                        FullName = meMM.FullName
                    };
                }
                return(data);
            }
            catch (Exception) { throw; }
        }
Beispiel #14
0
        public object Update(object entity)
        {
            bool result = false;
            PutMedicationMapDataRequest pa   = (PutMedicationMapDataRequest)entity;
            MedicationMapData           data = pa.MedicationMapData;

            try
            {
                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    var q = MB.Query <MEMedicationMapping> .EQ(b => b.Id, ObjectId.Parse(data.Id));

                    var uv = new List <MB.UpdateBuilder>();
                    uv.Add(MB.Update.Set(MEMedicationMapping.UpdatedByProperty, ObjectId.Parse(this.UserId)));
                    uv.Add(MB.Update.Set(MEMedicationMapping.VersionProperty, pa.Version));
                    uv.Add(MB.Update.Set(MEMedicationMapping.LastUpdatedOnProperty, System.DateTime.UtcNow));
                    if (!string.IsNullOrEmpty(data.FullName))
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.FullNameProperty, data.FullName.ToUpper()));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.FullNameProperty, BsonNull.Value));
                    }
                    if (!string.IsNullOrEmpty(data.SubstanceName))
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.SubstanceNameProperty, data.SubstanceName));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.SubstanceNameProperty, BsonNull.Value));
                    }
                    if (!string.IsNullOrEmpty(data.Strength))
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.StrengthProperty, data.Strength));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.StrengthProperty, BsonNull.Value));
                    }
                    if (!string.IsNullOrEmpty(data.Form))
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.FormProperty, data.Form.ToUpper()));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.FormProperty, BsonNull.Value));
                    }
                    if (!string.IsNullOrEmpty(data.Route))
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.RouteProperty, data.Route.ToUpper()));
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.RouteProperty, BsonNull.Value));
                    }
                    uv.Add(MB.Update.Set(MEMedicationMapping.CustomProperty, data.Custom));
                    uv.Add(MB.Update.Set(MEMedicationMapping.VerifiedProperty, data.Verified));
                    uv.Add(MB.Update.Set(MEMedicationMapping.DeleteFlagProperty, data.DeleteFlag));
                    DataAuditType type;
                    if (data.DeleteFlag)
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.TTLDateProperty, System.DateTime.UtcNow.AddDays(_expireDays)));
                        type = DataAuditType.Delete;
                    }
                    else
                    {
                        uv.Add(MB.Update.Set(MEMedicationMapping.TTLDateProperty, BsonNull.Value));
                        type = DataAuditType.Update;
                    }
                    IMongoUpdate update = MB.Update.Combine(uv);
                    ctx.MedicationMaps.Collection.Update(q, update);

                    AuditHelper.LogDataAudit(this.UserId,
                                             MongoCollectionName.MedicationMap.ToString(),
                                             data.Id,
                                             type,
                                             pa.ContractNumber);

                    result = true;
                }
                return(result as object);
            }
            catch (Exception) { throw; }
        }
Beispiel #15
0
        public object Search(object request)
        {
            List <MedicationMapData>    list        = null;
            GetMedicationMapDataRequest dataRequest = (GetMedicationMapDataRequest)request;

            try
            {
                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    List <IMongoQuery> queries = new List <IMongoQuery>();
                    if (!string.IsNullOrEmpty(dataRequest.Name))
                    {
                        queries.Add(Query.EQ(MEMedicationMapping.FullNameProperty, dataRequest.Name.ToUpper()));
                    }
                    if (!string.IsNullOrEmpty(dataRequest.Route))
                    {
                        queries.Add(Query.EQ(MEMedicationMapping.RouteProperty, dataRequest.Route));
                    }
                    if (!string.IsNullOrEmpty(dataRequest.Form))
                    {
                        queries.Add(Query.EQ(MEMedicationMapping.FormProperty, dataRequest.Form));
                    }
                    if (!string.IsNullOrEmpty(dataRequest.Strength))
                    {
                        queries.Add(Query.EQ(MEMedicationMapping.StrengthProperty, dataRequest.Strength));
                    }
                    if (dataRequest.Type != 0)
                    {
                        if (dataRequest.Type == 1)
                        {
                            queries.Add(Query.EQ(MEMedicationMapping.CustomProperty, false));
                        }
                        else if (dataRequest.Type == 2)
                        {
                            queries.Add(Query.EQ(MEMedicationMapping.CustomProperty, true));
                        }
                    }
                    queries.Add(Query.EQ(MEMedicationMapping.DeleteFlagProperty, false));
                    queries.Add(Query.EQ(MEMedicationMapping.TTLDateProperty, BsonNull.Value));
                    IMongoQuery mQuery = Query.And(queries);
                    string[]    fields = { MEMedicationMapping.IdProperty, MEMedicationMapping.FullNameProperty, MEMedicationMapping.RouteProperty, MEMedicationMapping.StrengthProperty, MEMedicationMapping.FormProperty, MEMedicationMapping.CustomProperty };
                    List <MEMedicationMapping> meMMs = null;
                    if (dataRequest.Skip == 0 && dataRequest.Take == 0)
                    {
                        meMMs = ctx.MedicationMaps.Collection.Find(mQuery).SetFields(fields).ToList();
                    }
                    else
                    {
                        meMMs = ctx.MedicationMaps.Collection.Find(mQuery).SetFields(fields).SetSkip(dataRequest.Skip).SetLimit(dataRequest.Take).ToList();
                    }

                    if (meMMs != null && meMMs.Count > 0)
                    {
                        list = new List <MedicationMapData>();
                        meMMs.ForEach(p =>
                        {
                            MedicationMapData data = AutoMapper.Mapper.Map <MedicationMapData>(p);
                            list.Add(data);
                        });
                    }
                }
                return(list);
            }
            catch (Exception) { throw; }
        }
Beispiel #16
0
        public PatientMedSupp SavePatientMedSupp(PostPatientMedSuppRequest request)
        {
            PatientMedSupp patientMedSupp = null;

            try
            {
                if (request.PatientMedSupp != null)
                {
                    string name     = string.IsNullOrEmpty(request.PatientMedSupp.Name) ? string.Empty : request.PatientMedSupp.Name.ToUpper();
                    string form     = string.IsNullOrEmpty(request.PatientMedSupp.Form) ? string.Empty : request.PatientMedSupp.Form.ToUpper();
                    string route    = string.IsNullOrEmpty(request.PatientMedSupp.Route) ? string.Empty : request.PatientMedSupp.Route.ToUpper();
                    string strength = string.IsNullOrEmpty(request.PatientMedSupp.Strength) ? string.Empty : request.PatientMedSupp.Strength;

                    #region Search MedicationMap
                    // Search if any record exists with the given combination of name, strength, route and form.
                    GetMedicationMapsRequest mmRequest = new GetMedicationMapsRequest
                    {
                        Name           = name,
                        Route          = route,
                        Form           = form,
                        Strength       = strength,
                        ContractNumber = request.ContractNumber,
                        UserId         = request.UserId,
                        Version        = request.Version
                    };
                    List <MedicationMapData> list = EndpointUtil.SearchMedicationMap(mmRequest);
                    #endregion
                    if (list == null)
                    {
                        MedicationMapData medData = null;
                        if (string.IsNullOrEmpty(request.PatientMedSupp.FamilyId))
                        {
                            #region Insert MedicationMap
                            PostMedicationMapRequest insertReq = new PostMedicationMapRequest
                            {
                                MedicationMap = new DTO.MedicationMap
                                {
                                    FullName      = name,
                                    SubstanceName = string.Empty,
                                    Strength      = strength,
                                    Route         = route,
                                    Form          = form,
                                    Custom        = true,
                                    Verified      = false
                                },
                                ContractNumber = request.ContractNumber,
                                UserId         = request.UserId,
                                Version        = request.Version
                            };
                            medData = EndpointUtil.InsertMedicationMap(insertReq);
                            #endregion
                        }
                        else
                        {
                            #region Update MedicationMap
                            // This saves the initialized medicine map
                            PutMedicationMapRequest req = new PutMedicationMapRequest
                            {
                                MedicationMap = new DTO.MedicationMap
                                {
                                    Id            = request.PatientMedSupp.FamilyId,
                                    FullName      = name,
                                    SubstanceName = string.Empty,
                                    Strength      = strength,
                                    Route         = route,
                                    Form          = form,
                                    Custom        = true,
                                    Verified      = false
                                },
                                ContractNumber = request.ContractNumber,
                                UserId         = request.UserId,
                                Version        = request.Version
                            };
                            medData = EndpointUtil.UpdateMedicationMap(req);
                            #endregion
                        }
                        RegisterMedication(request, medData);
                    }
                    #region Calculate NDC codes.
                    bool calculateNDC = false;
                    if (request.Insert)
                    {
                        calculateNDC = true;
                        request.PatientMedSupp.SystemName = Constants.SystemName;
                    }
                    else
                    {
                        // On update, check for ReCalculateNDC flag.
                        if (request.RecalculateNDC)
                        {
                            calculateNDC = true;
                        }
                    }
                    if (calculateNDC)
                    {
                        request.PatientMedSupp.NDCs = EndpointUtil.GetMedicationNDCs(request);
                    }
                    #endregion

                    string sigCode = CalculateSigCode(request);
                    if (!string.IsNullOrEmpty(sigCode))
                    {
                        request.PatientMedSupp.SigCode = sigCode;
                    }
                    PatientMedSuppData data = EndpointUtil.SavePatientMedSupp(request);
                    if (data != null)
                    {
                        patientMedSupp = Mapper.Map <PatientMedSupp>(data);
                    }
                }
                return(patientMedSupp);
            }
            catch (Exception ex) { throw ex; }
        }