Skip to content

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