execute method

  1. @override
  2. @override
List execute(
  1. List results,
  2. Map<String, dynamic> passed
)
override

The iterable, nested function that evaluates the entire FHIRPath expression one object at a time

Implementation

@override

/// The iterable, nested function that evaluates the entire FHIRPath
/// expression one object at a time
@override
List execute(List results, Map<String, dynamic> passed) {
  if (results.isEmpty) {
    return [];
  }

  final extensionUrl = value.execute(results.toList(), passed).firstOrNull;
  if (extensionUrl == null) {
    return [];
  }

  // .extension(exturl) is short-hand for .extension.where(url='exturl')
  final urlEquals = EqualsParser();
  urlEquals.before = ParserList([IdentifierParser('url')]);
  urlEquals.after = ParserList([StringParser("'$extensionUrl'")]);
  final extensionUrlPredicate = ParserList([
    urlEquals,
  ]);
  final whereParser = FpWhereParser();
  whereParser.value = extensionUrlPredicate;
  final extensionParsers =
      ParserList([IdentifierParser('extension'), whereParser]);

  return extensionParsers.execute(results.toList(), passed);
}