return makeBoolean(new Double(l.primitiveValue()) <= new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) <= 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) <= 0);
return makeBoolean(new Double(l.primitiveValue()) > new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) > 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) > 0);
return makeBoolean(new Double(l.primitiveValue()) >= new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) >= 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) >= 0);
return makeBoolean(new Double(l.primitiveValue()) < new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) < 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) < 0);
private boolean doEquivalent(Base left, Base right) throws PathEngineException { if (left instanceof Quantity && right instanceof Quantity) return qtyEquivalent((Quantity) left, (Quantity) right); if (left.hasType("integer") && right.hasType("integer")) return doEquals(left, right); if (left.hasType("boolean") && right.hasType("boolean")) return doEquals(left, right); if (left.hasType("integer", "decimal", "unsignedInt", "positiveInt") && right.hasType("integer", "decimal", "unsignedInt", "positiveInt")) return Utilities.equivalentNumber(left.primitiveValue(), right.primitiveValue()); if (left.hasType("date", "dateTime", "time", "instant") && right.hasType("date", "dateTime", "time", "instant")) return compareDateTimeElements(left, right, true) == 0; if (left.hasType("string", "id", "code", "uri") && right.hasType("string", "id", "code", "uri")) return Utilities.equivalent(convertToString(left), convertToString(right)); throw new PathEngineException(String.format("Unable to determine equivalence between %s and %s", left.fhirType(), right.fhirType())); }
return makeBoolean(new Double(l.primitiveValue()) <= new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) <= 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) <= 0);
return makeBoolean(new Double(l.primitiveValue()) > new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) > 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) > 0);
return makeBoolean(new Double(l.primitiveValue()) >= new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) >= 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) >= 0);
return makeBoolean(new Double(l.primitiveValue()) < new Double(r.primitiveValue())); else if ((l.hasType("date", "dateTime", "instant")) && (r.hasType("date", "dateTime", "instant"))) return makeBoolean(compareDateTimeElements(l, r, false) < 0); else if ((l.hasType("time")) && (r.hasType("time"))) return makeBoolean(l.primitiveValue().compareTo(r.primitiveValue()) < 0);
private boolean doEquivalent(Base left, Base right) throws PathEngineException { if (left instanceof Quantity && right instanceof Quantity) return qtyEquivalent((Quantity) left, (Quantity) right); if (left.hasType("integer") && right.hasType("integer")) return doEquals(left, right); if (left.hasType("boolean") && right.hasType("boolean")) return doEquals(left, right); if (left.hasType("integer", "decimal", "unsignedInt", "positiveInt") && right.hasType("integer", "decimal", "unsignedInt", "positiveInt")) return Utilities.equivalentNumber(left.primitiveValue(), right.primitiveValue()); if (left.hasType("date", "dateTime", "time", "instant") && right.hasType("date", "dateTime", "time", "instant")) return compareDateTimeElements(left, right, true) == 0; if (left.hasType("string", "id", "code", "uri") && right.hasType("string", "id", "code", "uri")) return Utilities.equivalent(convertToString(left), convertToString(right)); throw new PathEngineException(String.format("Unable to determine equivalence between %s and %s", left.fhirType(), right.fhirType())); }