docs: @Override
  	public HashSet<ResourceIndexedSearchParamNumber> extractSearchParamNumber(ResourceTable theEntity, IBaseResource theResource) {
  		HashSet<ResourceIndexedSearchParamNumber> retVal = new HashSet<ResourceIndexedSearchParamNumber>();
  
  		Collection<RuntimeSearchParam> searchParams = getSearchParams(theResource);
  		for (RuntimeSearchParam nextSpDef : searchParams) {
  			if (nextSpDef.getParamType() != RestSearchParameterTypeEnum.NUMBER) {
  				continue;
  			}
  
  			String nextPath = nextSpDef.getPath();
  			if (isBlank(nextPath)) {
  				continue;
  			}
  
  			for (Object nextObject : extractValues(nextPath, theResource)) {
  				if (nextObject == null || ((IDatatype) nextObject).isEmpty()) {
  					continue;
  				}
  
  				String resourceName = nextSpDef.getName();
  				boolean multiType = false;
  				if (nextPath.endsWith("[x]")) {
  					multiType = true;
  				}
  
  				if (nextObject instanceof DurationDt) {
  					DurationDt nextValue = (DurationDt) nextObject;
  					if (nextValue.getValueElement().isEmpty()) {
  						continue;
  					}
  
  					if (new UriDt(SearchParamConstants.UCUM_NS).equals(nextValue.getSystemElement())) {
  						if (isNotBlank(nextValue.getCode())) {
  
  							Unit<? extends Quantity> unit = Unit.valueOf(nextValue.getCode());
  							javax.measure.converter.UnitConverter dayConverter = unit.getConverterTo(NonSI.DAY);
  							double dayValue = dayConverter.convert(nextValue.getValue().doubleValue());
  							DurationDt newValue = new DurationDt();
  							newValue.setSystem(SearchParamConstants.UCUM_NS);
  							newValue.setCode(NonSI.DAY.toString());
  							newValue.setValue(dayValue);
  							nextValue = newValue;
  
  							/*
  							 * @SuppressWarnings("unchecked") PhysicsUnit<? extends
  							 * org.unitsofmeasurement.quantity.Quantity<?>> unit = (PhysicsUnit<? extends
  							 * org.unitsofmeasurement.quantity.Quantity<?>>)
  							 * UCUMFormat.getCaseInsensitiveInstance().parse(nextValue.getCode().getValue(), null); if
  							 * (unit.isCompatible(UCUM.DAY)) {
  							 *
  							 * @SuppressWarnings("unchecked") PhysicsUnit<org.unitsofmeasurement.quantity.Time> timeUnit =
  							 * (PhysicsUnit<Time>) unit; UnitConverter conv = timeUnit.getConverterTo(UCUM.DAY); double
  							 * dayValue = conv.convert(nextValue.getValue().getValue().doubleValue()); DurationDt newValue =
  							 * new DurationDt(); newValue.setSystem(UCUM_NS); newValue.setCode(UCUM.DAY.getSymbol());
  							 * newValue.setValue(dayValue); nextValue=newValue; }
  							 */
  						}
  					}
  
  					ResourceIndexedSearchParamNumber nextEntity = new ResourceIndexedSearchParamNumber(resourceName, nextValue.getValue());
  					nextEntity.setResource(theEntity);
  					retVal.add(nextEntity);
  				} else if (nextObject instanceof QuantityDt) {
  					QuantityDt nextValue = (QuantityDt) nextObject;
  					if (nextValue.getValueElement().isEmpty()) {
  						continue;
  					}
  
  					ResourceIndexedSearchParamNumber nextEntity = new ResourceIndexedSearchParamNumber(resourceName, nextValue.getValue());
  					nextEntity.setResource(theEntity);
  					retVal.add(nextEntity);
  				} else if (nextObject instanceof IntegerDt) {
  					IntegerDt nextValue = (IntegerDt) nextObject;
  					if (nextValue.getValue() == null) {
  						continue;
  					}
  
  					ResourceIndexedSearchParamNumber nextEntity = new ResourceIndexedSearchParamNumber(resourceName, new BigDecimal(nextValue.getValue()));
  					nextEntity.setResource(theEntity);
  					retVal.add(nextEntity);
  				} else if (nextObject instanceof DecimalDt) {
  					DecimalDt nextValue = (DecimalDt) nextObject;
  					if (nextValue.getValue() == null) {
  						continue;
  					}
  
  					ResourceIndexedSearchParamNumber nextEntity = new ResourceIndexedSearchParamNumber(resourceName, nextValue.getValue());
  					nextEntity.setResource(theEntity);
  					retVal.add(nextEntity);
  				} else {
  					if (!multiType) {
  						throw new ConfigurationException("Search param " + resourceName + " is of unexpected datatype: " + nextObject.getClass());
  					} else {
  						continue;
  					}
  				}
  			}
  		}
  
  		return retVal;
  	}