ProviderIndexer¶
ProviderIndexer is the original (v1) implementation of IProviderIndexer for operation OP-DOM-03: it looks up the billing provider by tax ID, filters candidate addresses for institutional bills, matches the physical (or facility) address against the provider's known addresses, and then resolves a single payment address — either confirming the matched location has no active PAY address, or intersecting the physical and payment matches by location — before setting the provider's location. ProviderIndexerV2 supersedes it with a rule-set-based matcher (OP-DOM-04); this class remains the simpler, address-role-specific algorithm.
Purpose¶
- Requires the billing provider's tax ID to resolve to a known SAIF provider before matching can proceed, recording "Provider Tax Id not found" otherwise (DOM-BR-020).
- Filters candidate provider addresses to institutional provider types (
NU/HO/HH) when any of the e-bill's bills is institutional (SetType"INST") (DOM-BR-021). - Matches the biller's physical (falling back to facility) address against candidate provider addresses on Line1/City (trimmed, case-insensitive) and zero-padded zip, failing the bill when no physical match exists (DOM-BR-022, DOM-BR-023).
- Resolves the payment address: with none supplied, requires the matched physical location to have no active PAY address and to be unique; with one supplied, requires the physical and payment matches to intersect to exactly one location (DOM-BR-024, DOM-BR-025).
Context¶
- Namespace:
SAIF.Domain.Claims.Ebilling.Indexing - Assembly/package:
SAIF.Domain(Domain/SAIF.Domain/SAIF.Domain.csproj, .NET Framework 4.6.2 class library)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| IndexProvidersToLocation | public ResultCount IndexProvidersToLocation(long batchId, IEbillingQueryProvider queryProvider, IErrorConditionHandler errorConditionHandler, string updateUser) |
Indexes every non-indexed e-billing provider in the batch, tallying successes/failures into a ResultCount and rethrowing any per-provider exception with the provider id attached. |
| IndexProviderToLocation | public static bool IndexProviderToLocation(EbillProvider ebillProvider, IEbillingQueryProvider queryProvider, IErrorConditionHandler errorConditionHandler, string updateUser) |
Resolves the provider by tax ID, matches its physical/facility address, and resolves the payment address to determine the final provider location (DOM-BR-020–DOM-BR-025). |
| GetMatchingProviderAddresses (institutional-aware) | public static IEnumerable<ProviderAddress> GetMatchingProviderAddresses(EbillAddress ebillAddress, IEnumerable<ProviderAddress> providerAddresses, bool isInstitutional) |
Filters candidate addresses to institutional provider types when isInstitutional is true, then matches on Line1, City, and zero-padded zip (DOM-BR-021). |
| GetMatchingProviderAddresses (unfiltered) | public static IEnumerable<ProviderAddress> GetMatchingProviderAddresses(EbillAddress ebillAddress, IEnumerable<ProviderAddress> providerAddresses) |
Matches candidate addresses to the e-bill address on Line1, City, and zero-padded zip without the institutional-type filter. |
| IndexProviderLocationWithNoPaymentAddress | public static bool IndexProviderLocationWithNoPaymentAddress(EbillProvider ebillProvider, IEnumerable<ProviderAddress> matchedProviderPhysicalAddresses, IErrorConditionHandler errorConditionHandler, string updateUser) |
Requires exactly one matched physical location with no active PAY address and indexes the provider to it, or records "Multiple physical locations found without a payment address"/"Physical location having no payment address not found" (DOM-BR-024). |
| IndexProviderLocationWithPaymentAddress | public static bool IndexProviderLocationWithPaymentAddress(EbillProvider ebillProvider, IEnumerable<ProviderAddress> matchedProviderPhysicalAddresses, IEnumerable<ProviderAddress> matchedProviderPaymentAddresses, IErrorConditionHandler errorConditionHandler, string updateUser) |
Intersects the matched physical and payment addresses by provider location and indexes the provider to the single common location, or records "Multiple physical locations found with matching payment address"/"Payment address not found" (DOM-BR-025). |
| IndexProviderLocation | public static void IndexProviderLocation(EbillProvider ebillProvider, ProviderLocation providerLocation, string updateUser) |
Sets the provider's resolved location and stamps the update user/date. |
Behavioral notes¶
- Institutional detection checks whether any bill under any of the provider's patients has
SetType.Code == "INST", so a mixed institutional/non-institutional provider is still filtered as institutional (DOM-BR-021). - Unlike
ProviderIndexerV2, this class does not exclude correspondence or expired addresses before matching, and does not concatenate two-line bill addresses on a retry*.
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/Claims/Ebilling/Indexing/ProviderIndexer.cs