Example #1
0
        public void SetCountryHasCountryGetCountry()
        {
            CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams();

            locParams.Country = "United States";

            Assert.True(locParams.IsFieldSet("Country"));
            Assert.False(locParams.IsFieldSet("City"));
            Assert.False(locParams.IsFieldSet("State"));
            Assert.Equal("United States", locParams.GetFieldAsString("Country"));
        }
Example #2
0
        public void SetCityHasCityGetCity()
        {
            CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams();

            locParams.City = "Baltimore";

            Assert.True(locParams.IsFieldSet("City"));
            Assert.False(locParams.IsFieldSet("State"));
            Assert.False(locParams.IsFieldSet("Country"));
            Assert.Equal("Baltimore", locParams.GetFieldAsString("City"));
        }
Example #3
0
        public void SetStateHasStateGetState()
        {
            CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams();

            locParams.State = new LabelledSearchParam[]
            {
                new LabelledSearchParam()
                {
                    Key   = "MD",
                    Label = "Maryland"
                }
            };

            Assert.True(locParams.IsFieldSet("State"));
            Assert.False(locParams.IsFieldSet("City"));
            Assert.False(locParams.IsFieldSet("Country"));
            Assert.Equal("Maryland", locParams.GetFieldAsString("State"));
        }
Example #4
0
        public void SetAllHasAll()
        {
            CountryCityStateLocationSearchParams locParams = new CountryCityStateLocationSearchParams();

            locParams.Country = "United States";
            locParams.City    = "Baltimore";
            locParams.State   = new LabelledSearchParam[]
            {
                new LabelledSearchParam()
                {
                    Key   = "MD",
                    Label = "Maryland"
                }
            };

            Assert.True(locParams.IsFieldSet("State"));
            Assert.True(locParams.IsFieldSet("City"));
            Assert.True(locParams.IsFieldSet("Country"));
        }
Example #5
0
        /// <summary>
        /// Determine whether the specified objects are equal.
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public bool Equals(LocationSearchParams x, LocationSearchParams y)
        {
            // If the items are both null, or if one or the other is null, return
            // the correct response right away.
            if (x == null && y == null)
            {
                return(true);
            }
            else if (x == null || y == null)
            {
                return(false);
            }
            else if (x.GetType() != y.GetType())
            {
                return(false);
            }

            //This should compare every single property.
            //Ad we check above if x & y are the same types we don't need to check both below.
            if (x is AtNIHLocationSearchParams)
            {
                return(true);
            }
            else if (x is CountryCityStateLocationSearchParams)
            {
                CountryCityStateLocationSearchParams ccsX = (CountryCityStateLocationSearchParams)x;
                CountryCityStateLocationSearchParams ccsY = (CountryCityStateLocationSearchParams)y;

                bool isEqual = ccsX.City == ccsY.City &&
                               ccsX.Country == ccsY.Country &&
                               AreLabelledParamListsEqual(ccsX.State, ccsY.State);

                return(isEqual);
            }
            else if (x is HospitalLocationSearchParams)
            {
                bool isEqual = ((HospitalLocationSearchParams)(x)).Hospital == ((HospitalLocationSearchParams)(y)).Hospital;
                return(isEqual);
            }
            else if (x is ZipCodeLocationSearchParams)
            {
                bool isEqual = false;
                if (((ZipCodeLocationSearchParams)(x)).GeoLocation != null && ((ZipCodeLocationSearchParams)(y)).GeoLocation != null)
                {
                    isEqual = ((ZipCodeLocationSearchParams)(x)).ZipCode == ((ZipCodeLocationSearchParams)(y)).ZipCode &&
                              ((ZipCodeLocationSearchParams)(x)).ZipRadius == ((ZipCodeLocationSearchParams)(y)).ZipRadius &&
                              ((ZipCodeLocationSearchParams)(x)).GeoLocation.Lat == ((ZipCodeLocationSearchParams)(y)).GeoLocation.Lat &&
                              ((ZipCodeLocationSearchParams)(x)).GeoLocation.Lon == ((ZipCodeLocationSearchParams)(y)).GeoLocation.Lon;
                }
                else if (((ZipCodeLocationSearchParams)(x)).GeoLocation == null && ((ZipCodeLocationSearchParams)(y)).GeoLocation == null)
                {
                    isEqual = ((ZipCodeLocationSearchParams)(x)).ZipCode == ((ZipCodeLocationSearchParams)(y)).ZipCode &&
                              ((ZipCodeLocationSearchParams)(x)).ZipRadius == ((ZipCodeLocationSearchParams)(y)).ZipRadius;
                }



                return(isEqual);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        /// <summary>
        /// Get all Locations, but filtered by location parameters.
        /// NOTE: LocationTypes for Hospital and None will not be filtered, but will be sorted.
        /// </summary>
        /// <returns></returns>
        public ClinicalTrial.StudySite[] GetFilteredLocations(IEnumerable <ClinicalTrial.StudySite> sites, CTSSearchParams searchParams)
        {
            IEnumerable <ClinicalTrial.StudySite> rtnSites = sites;

            switch (searchParams.Location)
            {
            case LocationType.AtNIH:
            {
                rtnSites = rtnSites.Where(s => s.PostalCode == "20892");
                break;
            }

            case LocationType.CountryCityState:
            {
                CountryCityStateLocationSearchParams locParams = (CountryCityStateLocationSearchParams)searchParams.LocationParams;

                if (locParams.IsFieldSet(FormFields.Country))
                {
                    rtnSites = rtnSites.Where(s => StringComparer.CurrentCultureIgnoreCase.Equals(s.Country, locParams.Country));
                }

                if (locParams.IsFieldSet(FormFields.City))
                {
                    rtnSites = rtnSites.Where(s => StringComparer.CurrentCultureIgnoreCase.Equals(s.City, locParams.City));
                }

                if (locParams.IsFieldSet(FormFields.State))
                {
                    var states = locParams.State.Select(s => s.Key);         //Get Abbreviations
                    rtnSites = rtnSites.Where(s => states.Contains(s.StateOrProvinceAbbreviation));
                }

                break;
            }

            case LocationType.Zip:
            {
                ZipCodeLocationSearchParams locParams = (ZipCodeLocationSearchParams)searchParams.LocationParams;

                rtnSites = rtnSites.Where(site =>
                                          site.Coordinates != null &&
                                          locParams.GeoLocation.DistanceBetween(new GeoLocation(site.Coordinates.Latitude, site.Coordinates.Longitude)) <= locParams.ZipRadius &&
                                          site.Country == "United States"
                                          );

                break;
            }

            default:
            {
                //Basically we can't/shouldn't filter.
                break;
            }
            }

            //Filter out non-va sites if this is a VA only search
            if (searchParams.IsVAOnly && searchParams.Location != LocationType.Hospital)
            {
                rtnSites = rtnSites.Where(site => site.IsVA);
            }

            //Now that we have the sites filtered, now we need to sort.
            return(rtnSites.ToArray());
        }