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

# ClaimInformationService

Implements `IClaimInformationService`, the broad claim-information read facade used across the platform to answer individual questions about a claim (status, dates, contacts, worker, reserves, conditions, etc.) without requiring callers to assemble a full `Claim` domain object themselves. Nearly every method constructs a fresh `Claim` (via `IUnitOfWork`, `IUserProfileService`, `IClaimQueryProvider`, `IWorkerQueryProvider`, `ICCClaimApiService`, `IClaimDataApiClient`) per call rather than caching one, and several contact-related methods delegate to the injected `IClaimContactService`. Its static constructor registers AutoMapper claim/code-table mappings via `ClaimsMappingHelper` once per process, and `AutoMapper.Mapper.Map` is used throughout to project domain objects into API contract types.

## Purpose
- Answers point queries about a claim (validity, claim ID/number resolution, policy number, security attributes, security overrides) without requiring the caller to build a `Claim` object.
- Exposes claim status/type/compensability/work-status/work-release/third-party/vocational/pharmacy-eligibility information as `CodeDescriptionDate`/`CodeDescription` DTOs mapped from domain code tables.
- Provides claim detail/context DTOs (`ClaimDetail`) combining claim, worker, reserves, and cost-category data, tolerating a known data-quality exception ("No row with the given identifier") when resolving MyClaim last-login.
- Delegates contact resolution (adjuster, claims assistant, supervisor, vocational adjuster, third-party adjuster, RTW adjuster, policy safety-management consultant) to `IClaimContactService`.
- Resolves worker demographic/contact information independently of the claim-node API pipeline, including SSN masking and language/contact preferences.
- Computes the claim's last time-loss-type payment amount and date, restricted to TD/VocTD/SupTD payment categories.

## Context
- Namespace: `SAIF.Services.Claims.Information`
- Assembly/package: `SAIF.Services` (packaged inside the `SAIF.SAIFCode.Core` NuGet package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| ClaimInformationService(...) | `public ClaimInformationService(IUnitOfWork unitOfWork, IUserProfileService profile, IClaimQueryProvider query, IClaimContactService contact, IWorkerQueryProvider workerQueryProvider, ICCClaimApiService claimApiService, IClaimPaymentQueryProvider claimPaymentQueryProvider, IClaimDataApiClient gwClaimDataApiClient)` | Validates required dependencies and stores them for use by all query methods. |
| IsValidClaim(claimId) | `public bool IsValidClaim(long claimId)` | Returns whether a claim with the given ID has backing data. |
| IsValidClaim(claimNumber) | `public bool IsValidClaim(string claimNumber)` | Returns whether a claim with the given claim number has backing data. |
| GetClaimId(claimNumber) | `public long GetClaimId(string claimNumber)` | Resolves a claim number to its internal claim ID, or `0` if the claim has no data. |
| GetPolicyNumberForClaim(claimId) | `public long GetPolicyNumberForClaim(long claimId)` | Returns the policy number associated with the claim, or `0` if unavailable. |
| GetSaifClaimNumber(claimId) | `public string GetSaifClaimNumber(long claimId)` | Returns the claim's full formatted claim number, or an empty string if the claim has no data. |
| GetClaimNumber(claimId) | `public string GetClaimNumber(long claimId)` | Returns the claim's raw claim number, or an empty string if the claim has no data. |
| GetClaimSecurity(claimNumber) | `public IClaimSecurityAttributes GetClaimSecurity(string claimNumber)` | Returns the claim's security attributes (secure/conflict flags) looked up by claim number. |
| GetClaimSecurity(claimId) | `public IClaimSecurityAttributes GetClaimSecurity(long claimId)` | Returns the claim's security attributes (secure/conflict flags) looked up by claim ID. |
| HasSecurityOverride(claimId, userId) | `public bool HasSecurityOverride(long claimId, string userId)` | Returns whether the given user (or the current user if `userId` is blank) has a security override recorded for the claim; `false` if the user cannot be resolved to an employee. |
| HasSecurityOverride(claimNumber, userId) | `public bool HasSecurityOverride(string claimNumber, string userId)` | Resolves the claim number to a claim ID and delegates to the ID-based overload. |
| GetWorkStatus(claimId) | `public ClaimWorkStatus GetWorkStatus(long claimId)` | Returns the claim's current work status mapped to the API contract type. |
| GetWorkStatusInfo(claimId) | `public CodeDescriptionDate GetWorkStatusInfo(long claimId)` | Returns the claim's work status as a code/description/date triple, or an empty instance if no status exists. |
| GetWorkReleaseStatus(claimId) | `public ClaimWorkReleaseStatus GetWorkReleaseStatus(long claimId)` | Returns the claim's current work-release status mapped to the API contract type. |
| GetWorkReleaseStatusInfo(claimId) | `public CodeDescriptionDate GetWorkReleaseStatusInfo(long claimId)` | Returns the claim's work-release status as a code/description/date triple, or an empty instance if no status exists. |
| GetLegalRepresentative(claimId) | `public ClaimLegalRepresentative GetLegalRepresentative(long claimId)` | Returns the claim's legal representative mapped to the API contract type. |
| GetClaimSupervisor(claimId) | `public ClaimSupervisor GetClaimSupervisor(long claimId)` | Returns the claim's supervisor record. |
| GetRecoverableBalance(claimId) | `public decimal GetRecoverableBalance(long claimId)` | Returns the claim's recoverable (overpayment) balance. |
| GetClaimCurrentReserves(claimId) | `public Reserves GetClaimCurrentReserves(long claimId)` | Returns the claim's current Guidewire reserves data. |
| GetClaimCostCategoryCodes() | `public IEnumerable<CodeDescription> GetClaimCostCategoryCodes()` | Returns the full set of claim cost-category codes mapped to code/description pairs, independent of any specific claim. |
| GetClaimDetail(claimId) | `public ClaimDetail GetClaimDetail(long claimId)` | Returns a full `ClaimDetail` (claim, reserves, cost-category codes, MyClaim last login) for the claim ID, or an empty instance if the claim has no data. |
| GetClaimDetail(claimNumber) | `public ClaimDetail GetClaimDetail(string claimNumber)` | Returns a full `ClaimDetail` for the claim number, or an empty instance if the claim has no data. |
| GetClaimContextData(claimId) | `public ClaimDetail GetClaimContextData(long claimId)` | Returns a minimal `ClaimDetail` (identifier, policy number, worker name only) for the claim ID, or an empty instance if the claim has no data. |
| GetClaimContextData(claimNumber) | `public ClaimDetail GetClaimContextData(string claimNumber)` | Returns a minimal `ClaimDetail` (identifier, policy number, worker name only) for the claim number, or an empty instance if the claim has no data. |
| GetActiveAttendingPhysician(claimId) | `public string GetActiveAttendingPhysician(long claimId)` | Returns the claim's current attending physician's name. |
| GetInjuryDate(claimNumber) | `public DateTime? GetInjuryDate(string claimNumber)` | Returns the claim's injury date, or `null` if the claim has no data. |
| GetOdInjuryDate(claimNumber) | `public DateTime? GetOdInjuryDate(string claimNumber)` | Returns the claim's occupational-disease injury date. |
| GetFirstClosureDate(claimId) | `public DateTime? GetFirstClosureDate(long claimId)` | Returns the date the claim was first closed. |
| GetAggravationDates(claimId) | `public ClaimAggravationDates GetAggravationDates(long claimId)` | Returns the claim's aggravation date range. |
| GetResponsibleAdjuster(claimId) | `public ContactItem GetResponsibleAdjuster(long claimId)` | Delegates to `IClaimContactService.GetResponsibleAdjuster` to return the claim's responsible adjuster contact. |
| GetClaimsAssistant(claimId) | `public ContactItem GetClaimsAssistant(long claimId)` | Delegates to `IClaimContactService.GetClaimsAssistant` to return the claim's claims-assistant contact. |
| GetSupervisor(claimId) | `public ContactItem GetSupervisor(long claimId)` | Delegates to `IClaimContactService.GetSupervisor` to return the claim's supervisor contact. |
| GetAdjusterLocation(responsibility) | `public Location GetAdjusterLocation(Data.Model.Claims.ClaimResponsibility responsibility)` | Resolves the office location of the adjuster identified by a `ClaimResponsibility` record's mail ID (or pseudo user if no mail ID is set). |
| GetVocationAdjuster(claimId) | `public ContactItem GetVocationAdjuster(long claimId)` | Delegates to `IClaimContactService.GetVocationAdjuster` to return the claim's vocational adjuster contact. |
| GetThirdPartyAdjuster(claimId) | `public ContactItem GetThirdPartyAdjuster(long claimId)` | Delegates to `IClaimContactService.GetThirdPartyAdjuster` to return the claim's third-party adjuster contact. |
| GetRtwAdjuster(claimId) | `public ContactItem GetRtwAdjuster(long claimId)` | Delegates to `IClaimContactService.GetRtwAdjuster` to return the claim's return-to-work adjuster contact. |
| GetPolicySmcContact(claimId) | `public ContactItem GetPolicySmcContact(long claimId)` | Delegates to `IClaimContactService.GetPolicySmcContact` to return the claim's policy safety-management-consultant contact. |
| GetClaimType(claimId) | `public CodeDescriptionDate GetClaimType(long claimId)` | Returns the claim's claim type as a code/description/effective-date triple, or an empty instance if no claim-type activity exists. |
| GetWorker(claimId) | `public InfoModel.Worker GetWorker(long claimId)` | Returns a full worker DTO (name, gender, phones, age, other-claims count, language/contact preferences, health insurance, birth/death dates, masked SSN, email) for the claim's associated worker, or an empty instance if the worker has no data. |
| GetClaimsMissingTaxId(lookbackDate) | `public IEnumerable<InjuryClaim> GetClaimsMissingTaxId(DateTime lookbackDate)` | Returns claims with injuries on or after `lookbackDate` whose worker is missing a tax ID. |
| GetClaimStatus(claimId) | `public CodeDescriptionDate GetClaimStatus(long claimId)` | Returns the claim's current status as a code/description/effective-date triple, or an empty instance if no status activity exists. |
| GetPharmacyEligibilityReport(claimId) | `public PharmacyEligibilityReport GetPharmacyEligibilityReport(long claimId)` | Returns the claim's pharmacy eligibility report (status, effective date, previous status/date, update metadata), or an empty instance if none exists. |
| GetConditions(claimId) | `public IEnumerable<Condition> GetConditions(long claimId)` | Returns the claim's medical conditions mapped to the API contract type, ordered by decision. |
| GetThirdPartyStatus(claimId) | `public CodeDescriptionDate GetThirdPartyStatus(long claimId)` | Returns the claim's third-party case status as a code/description/date triple (using the latest status-history date), or an empty/partial instance if no case or status exists. |
| GetVocStatus(claimId) | `public CodeDescriptionDate GetVocStatus(long claimId)` | Returns the claim's most recent vocational status as a code/description/date triple, or an empty instance if none exist. |
| GetPrimaryBodyPart(claimId) | `public CodeDescription GetPrimaryBodyPart(long claimId)` | Returns the claim's primary body part as a code/description pair, or an empty instance if the claim has no data. |
| GetPrimaryBodySide(claimId) | `public CodeDescription GetPrimaryBodySide(long claimId)` | Returns the claim's primary body side as a code/description pair, or an empty instance if the claim has no data. |
| GetKnowledgeDate(claimId) | `public DateTime? GetKnowledgeDate(long claimId)` | Returns the claim's knowledge date. |
| GetLastPayment(claimId) | `public DatedNumericValue GetLastPayment(long claimId)` | Returns the summed transaction amount and issue date of the claim's most recent time-loss-category payment (TD, VocTD, or SupTD), or an empty instance if no such payment exists. |

## Behavioral notes
- Almost every method constructs a new `Claim` instance per call rather than reusing one across calls, unlike `ClaimInformationApiService`, which caches a `ClaimApiNodeBuilder`/`Claim` per instance.*
- `GetClaimDetail(Claim)` deliberately swallows an `Exception` whose message contains "No row with the given identifier" when resolving `MyClaimLastLogin`, treating it as a known Test-environment data issue, but rethrows all other exceptions.
- The static constructor performs one-time AutoMapper configuration via `ClaimsMappingHelper`, a process-wide side effect shared with `ClaimInformationApiService`.
- `HasSecurityOverride(long, string)` resolves the current user via `IUserProfileService.GetCurrentUser()` when no `userId` is supplied, then looks up the corresponding `Employee` before checking for a security override.

## Constraints and usage notes
- `[CA1506:AvoidExcessiveClassCoupling]` is suppressed at the class level, reflecting that this service intentionally depends on many collaborators to serve as a broad claim-information facade.
- `GetLastPayment` restricts summation to TD/VocTD/SupTD payment categories only; other payment categories on the same transaction date are excluded from the returned amount.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- Services/SAIF.Services/Claims/Information/ClaimInformationService.cs
