buildCausalChain method

List<String> buildCausalChain(
  1. String startConceptId, {
  2. int maxLength = 5,
})

Builds a causal chain from the knownCausality list, starting from startConceptId. Returns ordered concept IDs from cause to final effect.

Implementation

List<String> buildCausalChain(String startConceptId, {int maxLength = 5}) {
  final chain = [startConceptId];
  final visited = <String>{startConceptId};

  while (chain.length < maxLength) {
    final current = chain.last;
    final next = _knownCausality
        .cast<CausalRelationship?>()
        .firstWhere(
          (r) =>
              r!.causeConceptId == current &&
              !visited.contains(r.effectConceptId),
          orElse: () => null,
        );
    if (next == null) break;
    chain.add(next.effectConceptId);
    visited.add(next.effectConceptId);
  }

  return chain;
}