---
title: ClaimNodeBuilder
summary: API reference for ClaimNodeBuilder.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-24
library: SAIF.Services
reference_type: package
---

# ClaimNodeBuilder

Builds a `ClaimNode` for the Claim Information API by pulling values directly off a `Claim` domain object — dates, claim type, claim status, compensability, body part, work release/status, third-party case status, pharmacy eligibility, vocational status, region (from `Claim.Supervisor.Section`), and a set of claim "attributes" (fraud, secured worker, preferred worker, active support order, worker conflict, multiple employer, overpayment, CDA/DCS settlement flags) derived from combining `GetSecurityAttributes()`, `SettlementInformation`, and `Data.Worker` flags. It has no external service dependencies beyond the injected `Claim` and the `ClaimNode` it populates.

## Purpose
- Populates the primary claim summary node (dates, type, status, compensability, body part, region) from `Claim` data.
- Derives coded status values (`CodeDescriptionDate`) for claim status, compensability, work release, work status, third-party status, pharmacy eligibility, and vocational status.
- Computes a human-readable list of claim attributes (e.g. "Fraud", "Secured worker", "Preferred worker", "Support order", "Worker conflict", "Multiple jobs", "Overpayment", CDA/DCS settlement flags with dates) used to flag notable claim conditions.
- Records the claim's last payment amount/date and first closure date.

## 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 ClaimNode Node { get; }` | Exposes the node instance being populated by this builder. |
| ClaimNodeBuilder(claim, node) | `public ClaimNodeBuilder(Claim claim, ClaimNode node)` | Stores the claim and node, and immediately copies the claim's identifier onto the node. |
| AddClaimValues() | `public ClaimNodeBuilder AddClaimValues()` | Copies injury date and knowledge date from the claim onto the node. |
| AddLastPayment() | `public ClaimNodeBuilder AddLastPayment()` | Sets the last payment amount and date from `Claim.GetLastPayment()`. |
| AddClaimType() | `public ClaimNodeBuilder AddClaimType()` | Sets `ClaimType` to a code/description pair from the claim's claim-type code table entry. |
| AddClaimStatus() | `public ClaimNodeBuilder AddClaimStatus()` | Sets `ClaimStatus` (code, description, effective date) from the claim's latest claim-status activity; no-ops if no status activity exists. |
| AddCompensabilityStatus() | `public ClaimNodeBuilder AddCompensabilityStatus()` | Sets `CompensabilityStatus` (code, description, date) from `Claim.CompensabilityStatus()`. |
| AddPrimaryBodyPart() | `public ClaimNodeBuilder AddPrimaryBodyPart()` | Sets `PrimaryBodyPart` (code/description) from claim data; no-ops if no primary body part is recorded. |
| AddPrimaryBodySide() | `public ClaimNodeBuilder AddPrimaryBodySide()` | Sets `PrimaryBodySide` (code/description) from claim data; no-ops if no primary body side is recorded. |
| AddWorkRelease() | `public ClaimNodeBuilder AddWorkRelease()` | Sets `WorkRelease` (code, description, date) from the claim's work-release status; no-ops if none exists. |
| AddWorkStatus() | `public ClaimNodeBuilder AddWorkStatus()` | Sets `WorkStatus` (code, description, date) from the claim's work status; no-ops if none exists. |
| AddThirdParty() | `public ClaimNodeBuilder AddThirdParty()` | Sets `ThirdPartyStatus` (code, description, latest status-history date) from the claim's third-party case; no-ops if no case or status exists. |
| AddPharmacyEligibility() | `public ClaimNodeBuilder AddPharmacyEligibility()` | Sets `PharmacyEligibility` (code, description, effective date) from the pharmacy eligibility report; no-ops if the report has no claim ID. |
| AddAggrivationDates() | `public ClaimNodeBuilder AddAggrivationDates()` | Sets `AggRightStatusDate` to the end date of the claim's aggravation-date range. |
| AddRegion() | `public ClaimNodeBuilder AddRegion()` | Sets `ClaimRegion` to the section of the claim's supervisor. |
| AddFirstClosureDate() | `public ClaimNodeBuilder AddFirstClosureDate()` | Copies `Claim.FirstClosureDate` onto the node. |
| AddVocationalStatus() | `public ClaimNodeBuilder AddVocationalStatus()` | Sets `VocStatus` (code, description, update date) from the most recent vocational-status detail; no-ops if none exist. |
| AddMyClaimInformation() | `public ClaimNodeBuilder AddMyClaimInformation()` | Copies `Claim.MyClaimLastLogin` onto the node. |
| AddClaimAttributes() | `public ClaimNodeBuilder AddClaimAttributes()` | Appends human-readable attribute strings (fraud, secured worker, preferred worker, active support order, worker conflict, multiple employer, overpayment, CDA/DCS settlement with optional issue dates) to `ClaimAttributes` based on security attributes and settlement information; no-ops if the claim has no data. |

## Behavioral notes
- All `Add*` methods return `this` to support fluent chaining, as used by `ClaimInformationApiService.BuildClaimNode`.
- `AddClaimAttributes()` conditionally formats CDA/DCS attribute strings with an issue date only when the date is present and greater than `DateTime.MinValue`.

## Constraints and usage notes
- The constructor assumes `claim` is non-null (guarded only by a code-analysis suppression, not a runtime null check).
- Several `Add*` methods (`AddClaimStatus`, `AddPrimaryBodyPart`, `AddWorkRelease`, etc.) depend on the claim already having loaded related data; they silently skip population when that data is absent rather than throwing.

## Sources
- Services/SAIF.Services/Claims/Information/Api/ClaimNodeBuilder.cs
