private List<Base> funcSelect(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { pc.clear(); pc.add(item); result.addAll(execute(changeThis(context, item), pc, exp.getParameters().get(0), true)); } return result; }
private List<Base> funcRepeat(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> current = new ArrayList<Base>(); current.addAll(focus); List<Base> added = new ArrayList<Base>(); boolean more = true; while (more) { added.clear(); List<Base> pc = new ArrayList<Base>(); for (Base item : current) { pc.clear(); pc.add(item); added.addAll(execute(changeThis(context, item), pc, exp.getParameters().get(0), false)); } more = !added.isEmpty(); result.addAll(added); current.clear(); current.addAll(added); } return result; }
private List<Base> funcWhere(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { pc.clear(); pc.add(item); if (convertToBoolean(execute(changeThis(context, item), pc, exp.getParameters().get(0), true))) result.add(item); } return result; }
private List<Base> funcAggregate(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> total = new ArrayList<Base>(); if (exp.parameterCount() > 1) total = execute(context, focus, exp.getParameters().get(1), false); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { ExecutionContext c = changeThis(context, item); c.total = total; total = execute(c, pc, exp.getParameters().get(0), true); } return total; }
pc.clear(); pc.add(item); if (!convertToBoolean(execute(changeThis(context, item), pc, exp.getParameters().get(0), true))) { all = false; break;
private List<Base> funcSelect(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { pc.clear(); pc.add(item); result.addAll(execute(changeThis(context, item), pc, exp.getParameters().get(0), true)); } return result; }
private List<Base> funcWhere(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { pc.clear(); pc.add(item); if (convertToBoolean(execute(changeThis(context, item), pc, exp.getParameters().get(0), true))) result.add(item); } return result; }
private List<Base> funcRepeat(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> result = new ArrayList<Base>(); List<Base> current = new ArrayList<Base>(); current.addAll(focus); List<Base> added = new ArrayList<Base>(); boolean more = true; while (more) { added.clear(); List<Base> pc = new ArrayList<Base>(); for (Base item : current) { pc.clear(); pc.add(item); added.addAll(execute(changeThis(context, item), pc, exp.getParameters().get(0), false)); } more = !added.isEmpty(); result.addAll(added); current.clear(); current.addAll(added); } return result; }
private List<Base> funcAggregate(ExecutionContext context, List<Base> focus, ExpressionNode exp) throws FHIRException { List<Base> total = new ArrayList<Base>(); if (exp.parameterCount() > 1) total = execute(context, focus, exp.getParameters().get(1), false); List<Base> pc = new ArrayList<Base>(); for (Base item : focus) { ExecutionContext c = changeThis(context, item); c.total = total; total = execute(c, pc, exp.getParameters().get(0), true); } return total; }
pc.clear(); pc.add(item); if (!convertToBoolean(execute(changeThis(context, item), pc, exp.getParameters().get(0), true))) { all = false; break;
for (ExpressionNode expr : exp.getParameters()) { if (exp.getFunction() == Function.Where || exp.getFunction() == Function.All || exp.getFunction() == Function.Select || exp.getFunction() == Function.Repeat || exp.getFunction() == Function.Aggregate) paramTypes.add(executeType(changeThis(context, focus), focus, expr, true)); else paramTypes.add(executeType(context, focus, expr, true));
for (ExpressionNode expr : exp.getParameters()) { if (exp.getFunction() == Function.Where || exp.getFunction() == Function.All || exp.getFunction() == Function.Select || exp.getFunction() == Function.Repeat || exp.getFunction() == Function.Aggregate) paramTypes.add(executeType(changeThis(context, focus), focus, expr, true)); else paramTypes.add(executeType(context, focus, expr, true));