예제 #1
0
        public GetMedicationNDCsDataResponse GetMedicationNDCs(GetMedicationNDCsDataRequest request)
        {
            GetMedicationNDCsDataResponse result = new GetMedicationNDCsDataResponse();
            var repo = StubRepositoryFactory.GetMedicationRepository(request, RepositoryType.Medication);

            result.NDCcodes = repo.FindNDCCodes(request) as List <string>;
            return(result);
        }
예제 #2
0
        public void GetMedicationNDCs_Test()
        {
            GetMedicationNDCsDataRequest request = new GetMedicationNDCsDataRequest
            {
                Context        = context,
                ContractNumber = contractNumber,
                UserId         = userId,
                Version        = version,
                Name           = "ASPIRIN",
                Route          = "ORAL",
                Strength       = "30 mg",
                Form           = "TABLET"
            };
            GetMedicationNDCsDataResponse response = cm.GetMedicationNDCs(request);

            Assert.IsTrue(response.NDCcodes.Count == 2);
        }
예제 #3
0
        public GetMedicationNDCsDataResponse Post(GetMedicationNDCsDataRequest request)
        {
            var response = new GetMedicationNDCsDataResponse {
                Version = request.Version
            };

            try
            {
                RequireUserId(request);
                response = Manager.GetMedicationNDCs(request);
            }
            catch (Exception ex)
            {
                RaiseException(response, ex);
            }
            return(response);
        }
예제 #4
0
 public GetMedicationNDCsDataResponse GetMedicationNDCs(GetMedicationNDCsDataRequest request)
 {
     try
     {
         GetMedicationNDCsDataResponse result = new GetMedicationNDCsDataResponse();
         var repo = MedicationRepositoryFactory.GetMedicationRepository(request, RepositoryType.Medication);
         List <MEMedication> meMeds = repo.FindNDCCodes(request) as List <MEMedication>;
         if (meMeds != null && meMeds.Count > 0)
         {
             List <string> ndcs = new List <string>();
             // Get list of unique NDC codes.
             meMeds.ForEach(m =>
             {
                 if (!ndcs.Contains(m.NDC))
                 {
                     ndcs.Add(m.NDC);
                 }
             });
             result.NDCcodes = ndcs;
         }
         return(result);
     }
     catch (Exception ex) { throw ex; }
 }
예제 #5
0
        /// <summary>
        /// Find the exact match on name, strength, route and form
        /// If it does not yield any result, find a match on name, route and form.
        /// If it does not yield any result, find a match on name and route.
        /// If it does not yield any result, find a match on name.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public object FindNDCCodes(object request)
        {
            List <MEMedication>          list        = new List <MEMedication>();
            GetMedicationNDCsDataRequest dataRequest = (GetMedicationNDCsDataRequest)request;

            try
            {
                using (MedicationMongoContext ctx = new MedicationMongoContext(ContractDBName))
                {
                    if (!IsNullOrEmpty(new String[] { dataRequest.Name, dataRequest.Strength, dataRequest.Unit, dataRequest.Route, dataRequest.Form }))
                    {
                        // find a match on name, strength, unit, route and form)
                        List <IMongoQuery> query1 = new List <IMongoQuery>();

                        query1.Add(Query.EQ(MEMedication.DeleteFlagProperty, false));
                        query1.Add(Query.EQ(MEMedication.FullNameProperty, dataRequest.Name));
                        query1.Add(Query.EQ(MEMedication.StrengthProperty, dataRequest.Strength));
                        query1.Add(Query.EQ(MEMedication.UnitProperty, dataRequest.Unit));
                        query1.Add(Query.EQ(MEMedication.RouteProperty, dataRequest.Route));
                        query1.Add(Query.EQ(MEMedication.FormProperty, dataRequest.Form));

                        IMongoQuery mQuery1 = Query.And(query1);
                        list = ctx.Medications.Collection.Find(mQuery1).SetFields(MEMedication.NDCProperty).ToList();
                    }
                    if (list.Count == 0 &&
                        !IsNullOrEmpty(new String[] { dataRequest.Name, dataRequest.Strength, dataRequest.Route, dataRequest.Form }))
                    {
                        // find a match on name, strength, route and form)
                        List <IMongoQuery> query2 = new List <IMongoQuery>();

                        query2.Add(Query.EQ(MEMedication.DeleteFlagProperty, false));
                        query2.Add(Query.EQ(MEMedication.FullNameProperty, dataRequest.Name));
                        query2.Add(Query.EQ(MEMedication.StrengthProperty, dataRequest.Strength));
                        query2.Add(Query.EQ(MEMedication.RouteProperty, dataRequest.Route));
                        query2.Add(Query.EQ(MEMedication.FormProperty, dataRequest.Form));

                        IMongoQuery mQuery2 = Query.And(query2);
                        list = ctx.Medications.Collection.Find(mQuery2).SetFields(MEMedication.NDCProperty).ToList();
                    }

                    if (list.Count == 0 && !IsNullOrEmpty(new String[] { dataRequest.Name, dataRequest.Route, dataRequest.Form }))
                    {
                        // find a match on name, route and form.
                        List <IMongoQuery> query3 = new List <IMongoQuery>();

                        query3.Add(Query.EQ(MEMedication.DeleteFlagProperty, false));
                        query3.Add(Query.EQ(MEMedication.FullNameProperty, dataRequest.Name));
                        query3.Add(Query.EQ(MEMedication.RouteProperty, dataRequest.Route));
                        query3.Add(Query.EQ(MEMedication.FormProperty, dataRequest.Form));

                        IMongoQuery mQuery3 = Query.And(query3);
                        list = ctx.Medications.Collection.Find(mQuery3).SetFields(MEMedication.NDCProperty).ToList();
                    }
                    if (list.Count == 0 && !IsNullOrEmpty(new String[] { dataRequest.Name, dataRequest.Route }))
                    {
                        // find a match on name and route.
                        List <IMongoQuery> query4 = new List <IMongoQuery>();
                        query4.Add(Query.EQ(MEMedication.DeleteFlagProperty, false));
                        query4.Add(Query.EQ(MEMedication.FullNameProperty, dataRequest.Name));
                        query4.Add(Query.EQ(MEMedication.RouteProperty, dataRequest.Route));

                        IMongoQuery mQuery4 = Query.And(query4);
                        list = ctx.Medications.Collection.Find(mQuery4).SetFields(MEMedication.NDCProperty).ToList();
                    }
                    if (list.Count == 0)
                    {
                        // find a match on name.
                        List <IMongoQuery> query5 = new List <IMongoQuery>();
                        query5.Add(Query.EQ(MEMedication.DeleteFlagProperty, false));
                        if (!string.IsNullOrEmpty(dataRequest.Name))
                        {
                            query5.Add(Query.EQ(MEMedication.FullNameProperty, dataRequest.Name));
                        }
                        IMongoQuery mQuery5 = Query.And(query5);
                        list = ctx.Medications.Collection.Find(mQuery5).SetFields(MEMedication.NDCProperty).ToList();
                    }
                }
                return(list);
            }
            catch (Exception ex) { throw; }
        }