Esempio n. 1
0
        public void AddSearchFilter(OpenFdaApiEndPoints endPointType, string endpointField, string keyWord, FilterCompairType operationCompairType)
        {
            keyWord = RemoveSpecialCharactersFromKeyword(keyWord);
            keyWord = keyWord.Replace(" ", "+");

            if (keyWord.Contains("+"))
            {
                keyWord = "\"" + keyWord + "\"";
            }

            var param = string.Format("{0}:({1})", endpointField, keyWord);

            if (!string.IsNullOrEmpty(_search))
            {
                if (operationCompairType == FilterCompairType.Or)
                {
                    _search += "+";
                }
                else
                {
                    _search += "+AND+";
                }
            }

            _search += param;
        }
Esempio n. 2
0
        public string AddSearchFilter(OpenFdaApiEndPoints endpointType,
                                      FdaFilterTypes type,
                                      List<string> filters,
                                      FilterCompairType operationCompairType = FilterCompairType.Or)
        {
            // Add Filter to KeyWord List
            var keyword = string.Empty;
            var keywordToRemove = new string[]
                                  {
                                      "null",
                                      "all"
                                  };

            for (var indx = 0; indx <= filters.Count - 1; indx++)
            {
                filters[indx] = RemoveSpecialCharactersFromKeyword(filters[indx]);

                if (keywordToRemove.Contains(filters[indx].ToLower()))
                {
                    filters[indx] = string.Empty;
                }
            }

            var tmpFilters = (from el in filters
                              where el.Length > 0
                              select el).ToList();

            if (!(tmpFilters.Count == filters.Count))
            {
                filters.Clear();
                filters.AddRange(tmpFilters);
            }

            if (filters.Count == 0)
            {
                return string.Empty;
            }

            foreach (var itm in filters)
            {
                keyword += itm.ToLower() + ",";
            }

            if (!string.IsNullOrEmpty(keyword))
            {
                keyword = keyword.Substring(0, keyword.Length - 1);
            }

            if (!_keyWords.Contains(keyword))
            {
                _keyWords.Add(keyword);
            }

            var param = string.Empty;

            var tmp = string.Empty;

            switch (type)
            {
                case FdaFilterTypes.Date:

                    if (filters.Count == 1)
                    {
                        //Dim tmpDate As DateTime = ConvertDateStringToDate(filters(0), "yyyyMMdd")
                        var tmpDate = DateTime.ParseExact(filters[0], "yyyyMMdd", CultureInfo.InvariantCulture);

                        tmp = string.Format("{0:yyyyMMdd}", tmpDate); //tmpDate.ToString("yyyyMMdd")
                    }
                    else
                    {
                        Nullable<DateTime> minDate = null;
                        Nullable<DateTime> maxDate = null;

                        foreach (var itm in filters)
                        {
                            //Dim itmDate As DateTime = ConvertDateStringToDate(itm, "yyyyMMdd")
                            var itmDate = DateTime.ParseExact(itm, "yyyyMMdd", CultureInfo.InvariantCulture);

                            if (itmDate < minDate || minDate == null)
                            {
                                minDate = itmDate;
                            }

                            if (itmDate > maxDate || maxDate == null)
                            {
                                maxDate = itmDate;
                            }
                        }

                        var dtMin = string.Format("{0:yyyyMMdd}", minDate); //minDate.ToString("yyyyMMdd")
                        var dtMax = string.Format("{0:yyyyMMdd}", maxDate); // maxDate.ToString("yyyyMMdd")

                        tmp = string.Format("[{0}+TO+{1}]", dtMin, dtMax);
                    }
                    break;

                default:

                    var tmpItm = "";

                    foreach (var itm in filters)
                    {
                        tmpItm = itm.Replace(" ", "+");

                        if (tmpItm.Contains("+"))
                        {
                            tmpItm = "\"" + tmpItm + "\"";
                        }

                        tmp += tmpItm + "+";
                    }

                    if (!string.IsNullOrEmpty(tmp))
                    {
                        tmp = tmp.Substring(0, tmp.Length - 1);
                    }
                    break;
            }

            switch (endpointType)
            {
                case OpenFdaApiEndPoints.DrugEvent:

                    switch (type)
                    {
                        case FdaFilterTypes.Date:
                            param = "(";
                            param += "receivedate:" + tmp + "";
                            param += ")";
                            break;

                        case FdaFilterTypes.DrugEventDrugName:

                            param = "(patient.drug.openfda.substance_name:" + tmp;
                            param += "+";
                            param += "patient.drug.openfda.brand_name:" + tmp;
                            param += "+";
                            param += "patient.drug.openfda.generic_name:" + tmp;
                            param += "+";
                            param += "patient.drug.medicinalproduct:" + tmp + ")";
                            break;
                    }
                    break;

                case OpenFdaApiEndPoints.DeviceRecall:
                case OpenFdaApiEndPoints.DrugRecall:
                case OpenFdaApiEndPoints.FoodRecall:

                    switch (type)
                    {
                        case FdaFilterTypes.Region:

                            var tmpEnum = (States) (Enum.Parse(typeof (States), tmp));
                            param = "(state:(" + tmp + ")";
                            param += "+";
                            //param += "distribution_pattern:(Nationwide+" & tmp & "))" ' TODO:  Need the State NAME + GetEnumDescription(tmpEnum)
                            param += string.Format("distribution_pattern:(Nationwide+{0}+{1}))", tmp, Enum.GetName(typeof (States), tmpEnum));
                            // TODO:  Need the State NAME + GetEnumDescription(tmpEnum)
                            break;

                        case FdaFilterTypes.RecallReason:

                            var keywordList = tmp.Replace("\"", string.Empty).
                                                  Split('+');

                            param = "((";
                            foreach (var itm in keywordList)
                            {
                                param += string.Format("reason_for_recall:{0}+AND+", itm);
                            }
                            //Remove the Ending +AND+
                            param = param.Substring(0, param.Length - 5);
                            param += ")+(";
                            foreach (var itm in keywordList)
                            {
                                param += string.Format("product_description:{0}+AND+", itm);
                            }
                            //Remove the Ending +AND+
                            param = param.Substring(0, param.Length - 5);
                            param += "))";
                            break;

                        case FdaFilterTypes.Date:
                            param = "(";
                            param += "report_date:" + tmp + "";
                            param += "+";
                            param += "recall_initiation_date:" + tmp + "";
                            param += ")";
                            break;
                    }
                    break;

                case OpenFdaApiEndPoints.DeviceEvent:

                    switch (type)
                    {
                        case FdaFilterTypes.Date:
                            param = "(";
                            param += "date_of_event:" + tmp + "";
                            param += ")";
                            break;

                        case FdaFilterTypes.DeviceEventDescription:
                            param = "(device.brand_name:" + tmp;
                            param += "+";
                            param += "device.generic_name:" + tmp;
                            param += "+";
                            param += "mdr_text.text:" + tmp + ")";
                            break;
                    }
                    break;

                case OpenFdaApiEndPoints.DrugLabel:
                    break;
            //TBD

                default:
                    break;
            // do nothing
            }

            if (!string.IsNullOrEmpty(param))
            {
                if (!string.IsNullOrEmpty(_search))
                {
                    if (operationCompairType == FilterCompairType.Or)
                    {
                        _search += "+";
                    }
                    else
                    {
                        _search += "+AND+";
                    }
                }

                _search += param;
            }

            return param;
        }
Esempio n. 3
0
        public string AddSearchFilter(OpenFdaApiEndPoints endpointType,
                                      FdaFilterTypes type,
                                      List <string> filters,
                                      FilterCompairType operationCompairType = FilterCompairType.Or)
        {
            // Add Filter to KeyWord List
            var keyword         = string.Empty;
            var keywordToRemove = new string[]
            {
                "null",
                "all"
            };

            for (var indx = 0; indx <= filters.Count - 1; indx++)
            {
                filters[indx] = RemoveSpecialCharactersFromKeyword(filters[indx]);

                if (keywordToRemove.Contains(filters[indx].ToLower()))
                {
                    filters[indx] = string.Empty;
                }
            }

            var tmpFilters = (from el in filters
                              where el.Length > 0
                              select el).ToList();

            if (!(tmpFilters.Count == filters.Count))
            {
                filters.Clear();
                filters.AddRange(tmpFilters);
            }

            if (filters.Count == 0)
            {
                return(string.Empty);
            }

            foreach (var itm in filters)
            {
                keyword += itm.ToLower() + ",";
            }

            if (!string.IsNullOrEmpty(keyword))
            {
                keyword = keyword.Substring(0, keyword.Length - 1);
            }

            if (!_keyWords.Contains(keyword))
            {
                _keyWords.Add(keyword);
            }

            var param = string.Empty;

            var tmp = string.Empty;

            switch (type)
            {
            case FdaFilterTypes.Date:

                if (filters.Count == 1)
                {
                    //Dim tmpDate As DateTime = ConvertDateStringToDate(filters(0), "yyyyMMdd")
                    var tmpDate = DateTime.ParseExact(filters[0], "yyyyMMdd", CultureInfo.InvariantCulture);

                    tmp = string.Format("{0:yyyyMMdd}", tmpDate);     //tmpDate.ToString("yyyyMMdd")
                }
                else
                {
                    Nullable <DateTime> minDate = null;
                    Nullable <DateTime> maxDate = null;

                    foreach (var itm in filters)
                    {
                        //Dim itmDate As DateTime = ConvertDateStringToDate(itm, "yyyyMMdd")
                        var itmDate = DateTime.ParseExact(itm, "yyyyMMdd", CultureInfo.InvariantCulture);

                        if (itmDate < minDate || minDate == null)
                        {
                            minDate = itmDate;
                        }

                        if (itmDate > maxDate || maxDate == null)
                        {
                            maxDate = itmDate;
                        }
                    }

                    var dtMin = string.Format("{0:yyyyMMdd}", minDate);     //minDate.ToString("yyyyMMdd")
                    var dtMax = string.Format("{0:yyyyMMdd}", maxDate);     // maxDate.ToString("yyyyMMdd")

                    tmp = string.Format("[{0}+TO+{1}]", dtMin, dtMax);
                }
                break;

            default:

                var tmpItm = "";

                foreach (var itm in filters)
                {
                    tmpItm = itm.Replace(" ", "+");

                    if (tmpItm.Contains("+"))
                    {
                        tmpItm = "\"" + tmpItm + "\"";
                    }

                    tmp += tmpItm + "+";
                }

                if (!string.IsNullOrEmpty(tmp))
                {
                    tmp = tmp.Substring(0, tmp.Length - 1);
                }
                break;
            }

            switch (endpointType)
            {
            case OpenFdaApiEndPoints.DrugEvent:

                switch (type)
                {
                case FdaFilterTypes.Date:
                    param  = "(";
                    param += "receivedate:" + tmp + "";
                    param += ")";
                    break;

                case FdaFilterTypes.DrugEventDrugName:

                    param  = "(patient.drug.openfda.substance_name:" + tmp;
                    param += "+";
                    param += "patient.drug.openfda.brand_name:" + tmp;
                    param += "+";
                    param += "patient.drug.openfda.generic_name:" + tmp;
                    param += "+";
                    param += "patient.drug.medicinalproduct:" + tmp + ")";
                    break;
                }
                break;

            case OpenFdaApiEndPoints.DeviceRecall:
            case OpenFdaApiEndPoints.DrugRecall:
            case OpenFdaApiEndPoints.FoodRecall:

                switch (type)
                {
                case FdaFilterTypes.Region:

                    var tmpEnum = (States)(Enum.Parse(typeof(States), tmp));
                    param  = "(state:(" + tmp + ")";
                    param += "+";
                    //param += "distribution_pattern:(Nationwide+" & tmp & "))" ' TODO:  Need the State NAME + GetEnumDescription(tmpEnum)
                    param += string.Format("distribution_pattern:(Nationwide+{0}+{1}))", tmp, Enum.GetName(typeof(States), tmpEnum));
                    // TODO:  Need the State NAME + GetEnumDescription(tmpEnum)
                    break;

                case FdaFilterTypes.RecallReason:

                    var keywordList = tmp.Replace("\"", string.Empty).
                                      Split('+');

                    param = "((";
                    foreach (var itm in keywordList)
                    {
                        param += string.Format("reason_for_recall:{0}+AND+", itm);
                    }
                    //Remove the Ending +AND+
                    param  = param.Substring(0, param.Length - 5);
                    param += ")+(";
                    foreach (var itm in keywordList)
                    {
                        param += string.Format("product_description:{0}+AND+", itm);
                    }
                    //Remove the Ending +AND+
                    param  = param.Substring(0, param.Length - 5);
                    param += "))";
                    break;

                case FdaFilterTypes.Date:
                    param  = "(";
                    param += "report_date:" + tmp + "";
                    param += "+";
                    param += "recall_initiation_date:" + tmp + "";
                    param += ")";
                    break;
                }
                break;

            case OpenFdaApiEndPoints.DeviceEvent:

                switch (type)
                {
                case FdaFilterTypes.Date:
                    param  = "(";
                    param += "date_of_event:" + tmp + "";
                    param += ")";
                    break;

                case FdaFilterTypes.DeviceEventDescription:
                    param  = "(device.brand_name:" + tmp;
                    param += "+";
                    param += "device.generic_name:" + tmp;
                    param += "+";
                    param += "mdr_text.text:" + tmp + ")";
                    break;
                }
                break;

            case OpenFdaApiEndPoints.DrugLabel:
                break;
//TBD

            default:
                break;
// do nothing
            }

            if (!string.IsNullOrEmpty(param))
            {
                if (!string.IsNullOrEmpty(_search))
                {
                    if (operationCompairType == FilterCompairType.Or)
                    {
                        _search += "+";
                    }
                    else
                    {
                        _search += "+AND+";
                    }
                }

                _search += param;
            }

            return(param);
        }
Esempio n. 4
0
        public void AddSearchFilter(OpenFdaApiEndPoints endPointType, string endpointField, string keyWord, FilterCompairType operationCompairType)
        {
            keyWord = RemoveSpecialCharactersFromKeyword(keyWord);
            keyWord = keyWord.Replace(" ", "+");

            if (keyWord.Contains("+"))
            {
                keyWord = "\"" + keyWord + "\"";
            }

            var param = string.Format("{0}:({1})", endpointField, keyWord);

            if (!string.IsNullOrEmpty(_search))
            {
                if (operationCompairType == FilterCompairType.Or)
                {
                    _search += "+";
                }
                else
                {
                    _search += "+AND+";
                }
            }

            _search += param;
        }