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

# Claim

`Claim` is the Guidewire-facing read model of a claim ([OP-DOM-18](../../operations-processes.md#op-dom-18)): it combines the legacy `InjuryClaim` entity with live data pulled on demand from ClaimCenter through `IClaimDataApiClient` (contacts, MCO, medical conditions, financial reserves) and `ICCClaimApiService`, translating Guidewire's vocabulary into the legacy shape via `GuidewireToLegacyMapper` and `ClaimsMappingHelper`. `Bill.Claim`, `BillRegenerator`, and SAIF.Services all construct `Claim` instances to answer questions about policy, worker, adjuster, status, reserves, and security attributes for a claim, so this type is the primary aggregation point between the legacy claim record and Guidewire ClaimCenter.

## Purpose
- Loads Guidewire ClaimCenter data on demand — contacts (adjuster, supervisor, legal representative), MCO eligibility, medical conditions, and financial reserves — and merges it with the legacy `InjuryClaim` entity so callers see one unified claim view ([OP-DOM-18](../../operations-processes.md#op-dom-18)).
- Derives claim classification flags (OD claim, preferred worker, federal/inmate/state jurisdiction, DCS full/partial) directly from claim entity fields per [DOM-BR-181](../../business-rules.md#dom-br-181-read)–[DOM-BR-185](../../business-rules.md#dom-br-185-read).
- Builds `SecureClaimAttributes` from the worker's conflict flag and the claim's secured flag, feeding downstream security enforcement in SAIF.Services ([DOM-BR-193](../../business-rules.md#dom-br-193-security-attributes)).
- Translates Guidewire claim and MCO status codes into their legacy single-character equivalents via `GuidewireToLegacyMapper`, throwing on an untranslated Guidewire status ([DOM-BR-194](../../business-rules.md#dom-br-194-mapping), [DOM-BR-195](../../business-rules.md#dom-br-195-mapping)).

## Context
- Namespace: `SAIF.Domain.Model.Claims`
- Assembly/package: `SAIF.Domain` (packaged in `SAIF.SAIFCode.Core`)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| Claim (constructor by claim id) | `public Claim(IRepositoryFactory factory, IUserProfileService profile, IClaimQueryProvider queryProvider, IWorkerQueryProvider workerQueryProvider, ICCClaimApiService claimApiService, long claimId, IClaimDataApiClient gwClaimDataApiClient)` | Loads the claim by `claimId` from `queryProvider`. |
| Claim (constructor by claim number) | `public Claim(IRepositoryFactory factory, IUserProfileService profile, IClaimQueryProvider queryProvider, IWorkerQueryProvider workerQueryProvider, ICCClaimApiService claimApiService, string claimNumber, IClaimDataApiClient gwClaimDataApiClient)` | Loads the claim by parsing `claimNumber` into a `ClaimIdentifier` and resolving its numeric ID. |
| Claim (constructor from entity, no GW client) | `public Claim(IRepositoryFactory factory, IUserProfileService profile, IClaimQueryProvider queryProvider, IWorkerQueryProvider workerQueryProvider, ICCClaimApiService claimApiService, InjuryClaim injuryClaim)` | Wraps an already-loaded `InjuryClaim` entity without configuring a Guidewire data-API client; Guidewire-backed members (`ResponsibleAdjuster`, `MedicalConditions`, etc.) will fail if invoked on an instance built this way*. |
| Claim (constructor from entity id, with GW client) | `public Claim(IRepositoryFactory factory, IUserProfileService profile, IClaimQueryProvider queryProvider, IWorkerQueryProvider workerQueryProvider, ICCClaimApiService claimApiService, InjuryClaim injuryClaim, IClaimDataApiClient gwClaimDataApiClient)` | Re-loads the claim by `injuryClaim.Id` (rather than reusing the passed-in entity) and configures the Guidewire data-API client. |
| Mco | `public ClaimModel.McoLocation Mco()` | Retrieves the claim's MCO location from Guidewire and merges the current claim-eligibility status onto it; returns `null` when Guidewire has no MCO data. |
| ClaimLegalRepresentative | `public ClaimLegalRepresentative ClaimLegalRepresentative { get; }` | The claim's worker legal representative and their provider location, resolved from Guidewire claim contacts; an empty representative when none is on file. |
| BuildClaimIdentifier | `public static ClaimIdentifier BuildClaimIdentifier(InjuryClaim claim)` | Builds a `ClaimIdentifier` (ID, check character, claim number) from an `InjuryClaim` entity. |
| BuildNavigationLink | `public static NavigationLink BuildNavigationLink(InjuryClaim claim, string email)` | Builds a `mailto:` navigation link for the claim, using the worker's first-formatted name and the claim's full number in the subject line; returns an empty link for a null claim. |
| BuildSecurityAttributes | `public static SecureClaimAttributes BuildSecurityAttributes(InjuryClaim claim)` | Builds `SecureClaimAttributes` from the claim's worker conflict flag and secured flag ([DOM-BR-193](../../business-rules.md#dom-br-193-security-attributes)); returns default (non-conflict, non-secure) attributes when the claim or its worker is null. |
| Data | `public InjuryClaim Data { get; }` | Exposes the underlying `InjuryClaim` entity. |
| Identifier | `public ClaimIdentifier Identifier { get; }` | The claim's identifier, built via `BuildClaimIdentifier(Data)`. |
| Worker | `public Worker Worker { get; }` | The claim's worker, wrapped as a `Worker` domain object built from `Data.Worker`. |
| GetWorker | `public Worker GetWorker()` | Loads the worker fresh by `Data.Worker.PersonId` rather than wrapping the already-attached entity. |
| PolicyName | `public string PolicyName { get; }` | The claim's policy or non-policy account name: for policy numbers below 18 it looks up a non-policy account name, otherwise the policy's name ([DOM-BR-180](../../business-rules.md#dom-br-180-read)). |
| IsOdClaim | `public bool IsOdClaim { get; }` | `true` when the claim's occupational-disease code is `"D"` ([DOM-BR-181](../../business-rules.md#dom-br-181-read)). |
| IsPreferredWorker | `public bool IsPreferredWorker { get; }` | `true` when the claim has data and its SAIF payroll sub-code is `"P"` ([DOM-BR-182](../../business-rules.md#dom-br-182-read)). |
| WorkStatus | `public ClaimWorkStatus WorkStatus { get; }` | The claim's current work status, from `IClaimQueryProvider.GetWorkStatus`. |
| WorkReleaseStatus | `public ClaimWorkReleaseStatus WorkReleaseStatus { get; }` | The most recent work-release entry (by release date) from the claim's work-release history, or `null` when there is none. |
| ResponsibleAdjuster | `public IAdjuster ResponsibleAdjuster { get; }` | The claim's responsible adjuster, resolved from Guidewire claim contacts and formatted with contact info via `Employee` lookup when the adjuster has no direct Guidewire user ID. |
| Supervisor | `public ClaimSupervisor Supervisor { get; }` | The claim's supervisor's mail ID from Guidewire claim contacts, or an empty supervisor when there is none. |
| CompensableAdjuster | `public IAdjuster CompensableAdjuster { get; }` | The compensable adjuster resolved the same way as `ResponsibleAdjuster`, from the same Guidewire claim-contacts call. |
| VocationalAdjuster | `public IAdjuster VocationalAdjuster { get; }` | The claim's vocational-responsibility adjuster, resolved from `Data.VocationalResponsibility` and enriched via `Employee` lookup; an empty adjuster when there is no vocational responsibility. |
| GetSecurityAttributes | `public SecureClaimAttributes GetSecurityAttributes()` | Instance form of `BuildSecurityAttributes(DataItem)`, returning default attributes when the claim has no data or no worker. |
| HasActiveSupportOrder | `public bool HasActiveSupportOrder { get; }` | `true` when the claim has data and `HasSupportOrderData` is set. |
| IsFederalClaim | `public bool IsFederalClaim { get; }` | `true` when the claim has data and its jurisdiction is federal. |
| IsInmateClaim | `public bool IsInmateClaim { get; }` | `true` when the claim has data and its jurisdiction code is `"2"` ([DOM-BR-183](../../business-rules.md#dom-br-183-read)). |
| IsStateClaim | `public bool IsStateClaim { get; }` | `true` when the claim has data and its jurisdiction code is `"1"` ([DOM-BR-183](../../business-rules.md#dom-br-183-read)). |
| OdInjuryDate | `public DateTime? OdInjuryDate { get; }` | For OD claims, the earlier of the disability date and the initial treatment date; otherwise the claim's plain injury date ([DOM-BR-184](../../business-rules.md#dom-br-184-read)). |
| SettlementInformation | `public SettlementInformation SettlementInformation { get; }` | The claim's CDA/DCS settlement flags and issue dates, with DCS full/partial derived from `DataItem.DcsType.Code` ([DOM-BR-185](../../business-rules.md#dom-br-185-read)). |
| DetailContract | `public ClaimDetail DetailContract { get; }` | Maps the claim to the `ClaimDetail` contract via AutoMapper, setting `IsOverpayment` from `RecoverableBalance`; an empty contract when the claim has no data. |
| MedicalConditions | `public IEnumerable<Condition> MedicalConditions { get; }` | The claim's medical conditions from Guidewire, excluding conditions whose type is "not properly initiated" ([DOM-BR-186](../../business-rules.md#dom-br-186-read)). |
| ClaimRequestDecisions | `public IEnumerable<ClaimRequestDecision> ClaimRequestDecisions()` | The claim's request decisions, mapped to contracts and ordered by effective date; empty when the claim has no data. |
| GetGwReserves | `public Reserves GetGwReserves()` | Builds the claim's reserve categories from Guidewire financial data, dropping legal/other non-chargeable expenses and merging burial into death-benefit reserves, throwing on an untranslated cost category ([DOM-BR-187](../../business-rules.md#dom-br-187-read)). |
| AttendingPhysicianName | `public string AttendingPhysicianName { get; }` | The attending physician's provider business name, or empty when there is none. |
| GetAttendingPhysician | `public ClaimModel.AttendingPhysician GetAttendingPhysician()` | The claim's attending physician record from `IClaimQueryProvider`. |
| ClaimStatusDate | `public DateTime? ClaimStatusDate { get; }` | The effective date of the claim's latest status, or `null` when there is none. |
| FirstClosureDate | `public DateTime? FirstClosureDate { get; }` | The earliest non-removed "C" (closed) status effective date in the claim's status history, or `null` when there is none ([DOM-BR-189](../../business-rules.md#dom-br-189-read)). |
| GetLastPayment | `public DatedNumericValue GetLastPayment()` | The claim's most recent payment date and the summed TD/VocTD/SupTD amount on it ([DOM-BR-188](../../business-rules.md#dom-br-188-read)); an empty value when the claim has no data or no last payment. |
| AggravationDates | `public ClaimAggravationDates AggravationDates { get; }` | The claim's aggravation-right start and end dates, from `Data.AggRightStartDate`/`AggRightEndDate`. |
| GetLatestClaimTypeActivity | `public SAIF.Data.Model.Claims.ClaimTypeActivity GetLatestClaimTypeActivity()` | The claim's most recent claim-type activity entry. |
| GetLatestClaimStatusActivity | `public SAIF.Core.Contracts.Claims.ClaimStatusActivity GetLatestClaimStatusActivity()` | The claim's most recent status activity, mapped to the `ClaimStatusActivity` contract. |
| ClaimStatusCode | `public SAIF.Data.Model.Claims.CodeTables.ClaimStatusCode ClaimStatusCode()` | The claim's current status code, mapped from the latest Guidewire claim status. |
| CompensabilityStatus | `public SAIF.Data.Model.Claims.CompensabilityStatusCode CompensabilityStatus()` | The claim's current compensability status. |
| GetThirdPartyCase | `public ThirdPartyCase GetThirdPartyCase()` | The claim's third-party liability case, if any. |
| GetVocationalDetails | `public IList<VocationalDetail> GetVocationalDetails()` | The claim's vocational-rehabilitation detail records; an empty list when the query returns none. |
| HasLegalRepresentativeHistory | `public bool HasLegalRepresentativeHistory()` | `true` when the claim has ever had a legal-representative history entry. |
| GetMcoEligibility | `public ClaimMCOEligibility GetMcoEligibility()` | The claim's MCO eligibility, mapped from Guidewire MCO data; `null` when Guidewire returns no MCO records. |
| GetPharmacyEligibilityReport | `public SAIF.Core.Contracts.Claims.PharmacyEligibilityReport GetPharmacyEligibilityReport()` | The claim's pharmacy eligibility date and status, built directly from `InjuryClaim` fields. |
| MyClaimLastLogin | `public DateTime? MyClaimLastLogin { get; }` | The worker's last MyClaim portal login, from `IUserProfileService`; `null` when the claim has no worker, and also `null` (rather than throwing) when the lookup fails with a specific "no row with the given identifier" data error ([DOM-BR-190](../../business-rules.md#dom-br-190-read)). |
| RecoverableBalance | `public decimal RecoverableBalance { get; }` | The claim's recoverable overpayment balance; `0` when the claim has no data. An overpayment condition is `RecoverableBalance > 0` ([DOM-BR-191](../../business-rules.md#dom-br-191-read)). |

## Inherited public members

Members in this section are inherited from `DomainBase<TItem>` in `SAIF.Domain`. They are available on this type through inheritance (via the intermediate `DomainRepositoryBase<TItem>` base).

| Member | Signature | Purpose | Origin |
| --- | --- | --- | --- |
| HasData | `public virtual bool HasData { get; }` | Reports whether the wrapped `InjuryClaim` entity is present, evaluated as `!DataItem.IsNull()`. | `SAIF.Domain` — `DomainBase<TItem>` |

## Behavioral notes
- The static constructor configures the `ClaimsMappingHelper` and `GuidewireToLegacyMapper` AutoMapper maps once per process, so the first `Claim` constructed anywhere pays that one-time registration cost*.
- `ResponsibleAdjuster`, `CompensableAdjuster`, and `Supervisor` all independently call `IClaimDataApiClient.GetGWClaimContacts` rather than sharing one cached call, so reading all three for the same claim issues the same Guidewire request multiple times*.
- `MyClaimLastLogin` deliberately swallows an exception whose message contains "No row with the given identifier", treating it as a known test-environment data issue rather than a real failure ([DOM-BR-190](../../business-rules.md#dom-br-190-read)).

## Constraints and usage notes
- `GetGwReserves` throws when a Guidewire reserve category cannot be translated by `ClaimCostCategoryCode.GetByDescription`, so callers must handle claims whose Guidewire cost categories are not yet mapped.
- Constructors that accept an `InjuryClaim` but no `IClaimDataApiClient` leave Guidewire-backed members unusable; callers needing contacts, MCO, condition, or reserve data must use a constructor that supplies `gwClaimDataApiClient`*.

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts.

## Sources
- `Domain/SAIF.Domain/Model/Claims/Claim.cs`
- `Domain/SAIF.Domain/Mappers/GuidewireToLegacyMapper.cs`
- `Domain/SAIF.Domain/Model/Claims/ClaimsMappingHelper.cs`
- `Domain/SAIF.Domain/DomainBase.cs`
- `Domain/SAIF.Domain/DomainRepositoryBase.cs`
