ClaimReportDataRetriever¶
Implements IClaimReportDataRetriever, sourcing claims linked to a provider relationship and expired provider relationships from IReportQueryProvider, and assembling per-claim ReportItem records (status, provider names, adjuster contact) using an internal provider-name cache and IClaimContactService.GetResponsibleAdjuster for the responsible adjuster.
Purpose¶
- Retrieves claim IDs associated with a provider location acting as legal representative or attending physician on active relationships.
- Retrieves provider relationships that expired on or after a given date and have no currently active relationship covering the same provider pair.
- Builds a
ReportItemper claim/relationship, populating provider names via an internal cache to avoid redundant provider lookups, and only fully populating claim status/provider/adjuster details when the claim has outstanding reserves and is active.
Context¶
- Namespace:
SAIF.Services.Claims.Reports - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| ClaimReportDataRetriever(reportQueryProvider, contactService) | public ClaimReportDataRetriever(IReportQueryProvider reportQueryProvider, IClaimContactService contactService) |
Validates and stores the report query provider and contact service used by all retrieval methods. |
| GetLegalRepClaimsWithProviderRelationship(providerLocationId, parentProviderLocationId) | public IEnumerable<long> GetLegalRepClaimsWithProviderRelationship(long providerLocationId, long parentProviderLocationId) |
Returns claim IDs where the provider/parent pair is the legal representative, via IReportQueryProvider.GetLegalRepClaimsWithRelationship. |
| GetAttendingPhysicianClaimsWithProviderRelationship(providerLocationId, parentProviderLocationId) | public IEnumerable<long> GetAttendingPhysicianClaimsWithProviderRelationship(long providerLocationId, long parentProviderLocationId) |
Returns claim IDs where the provider/parent pair is the attending physician, via IReportQueryProvider.GetAttendingClaimsWithRelationship. |
| GetBenefitPaymentClaimsWithProviderRelationship(providerLocationId, parentProviderLocationId) | public IEnumerable<long> GetBenefitPaymentClaimsWithProviderRelationship(long providerLocationId, long parentProviderLocationId) |
Not implemented; always throws NotImplementedException. |
| GetExpiredRelationships(effectiveDate) | public IEnumerable<ProviderRelationship> GetExpiredRelationships(DateTime effectiveDate) |
Returns provider relationships expiring on/after effectiveDate that have no currently active relationship for the same provider/parent pair. |
| GetReportDetails(claimId, relationship) | public ReportItem GetReportDetails(long claimId, ProviderRelationship relationship) |
Builds a ReportItem with claim number, check character, and relationship expiration date always populated; when the claim has outstanding reserves and is active, additionally populates provider IDs/names (via the internal provider-name cache), claim status description, and responsible adjuster mail ID/name. |
Behavioral notes¶
GetBenefitPaymentClaimsWithProviderRelationshipis a stub that always throwsNotImplementedException, despite being declared on the interface and implemented by this class.- Provider names are cached in an instance-level dictionary (
_providers) keyed by provider location ID, populated lazily the first time each ID is encountered via the privateAddProvidermethod. GetReportDetailsonly populates the extended fields (ActiveClaim, provider names, claim status, adjuster) whenclaim.HasOutstandingReserves && claim.IsActive; otherwise the returnedReportItemhas only the always-populated basic fields.
Constraints and usage notes¶
- Callers must not invoke
GetBenefitPaymentClaimsWithProviderRelationshipin production paths, as it is unimplemented and will throw. - The internal provider-name cache is per-instance and not thread-safe for concurrent population of the same uncached provider ID.*
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/Reports/ClaimReportDataRetriever.cs