Skip to content

ConditionsNodeBuilder

Builds a ConditionsNode by reading Claim.MedicalConditions and splitting them into accepted, denied, and deferred lists based on a case-insensitive comparison of each condition's Decision string, with each subset ordered by descending DecisionDate. It has no dependencies beyond the injected Claim.

Purpose

  • Copies the full set of medical conditions for a claim onto the node.
  • Partitions conditions into accepted/denied/deferred lists (matching on Decision value) so consumers of the API can render each category without re-filtering.
  • Orders each partitioned list by most recent decision date first.

Context

  • Namespace: SAIF.Services.Claims.Information.Api
  • Assembly/package: SAIF.Services (packaged inside the SAIF.SAIFCode.Core NuGet package)

Public members

Member Signature Purpose
Node public ConditionsNode Node { get; } Exposes the node instance being populated by this builder.
ConditionsNodeBuilder(claim, node) public ConditionsNodeBuilder(Claim claim, ConditionsNode node) Stores the claim and target node for later population.
AddConditions() public ConditionsNodeBuilder AddConditions() Sets Conditions to all medical conditions on the claim, and separately populates AcceptedConditions, DeniedConditions, and DeferredConditions filtered by decision value ("accepted", "denied", "deferred") and sorted by decision date descending.

Behavioral notes

  • The decision-value comparison is case-insensitive (Decision.ToLower()), so upstream data casing does not affect classification.

Constraints and usage notes

  • Conditions whose Decision value is anything other than "accepted", "denied", or "deferred" appear in Conditions but in none of the three filtered lists.

Sources

  • Services/SAIF.Services/Claims/Information/Api/ConditionsNodeBuilder.cs