---
title: Other query providers
summary: Support certificate-holder search, task lookup, worker/support-order queries, report/payment classification, and Medicare beneficiary history matching.
status: draft
owner: SAIF.Core documentation team
last_reviewed: 2026-09-24
library: SAIF.Data
reference_type: package
operation_id: OP-SD-22
trigger: Miscellaneous read queries across certificate, task, worker, report, payment, and Medicare domains.
---

# Other query providers

Support certificate-holder search, task lookup, worker/support-order queries, report/payment classification, and Medicare beneficiary history matching.

| Field | Value |
| --- | --- |
| **Operation ID** | OP-SD-22 |
| **Trigger** | Miscellaneous read queries across certificate, task, worker, report, payment, and Medicare domains. |
| **Inputs** | Search terms, worker id, code values |
| **Outputs** | Filtered lists, counts, bool |
| **Primary components** | `CertificateHolderQueryProvider`, `TaskQueryProvider`, `WorkerQueryProvider`, `ReportQueryProvider`, `PaymentsQueryProvider`, `MedicareQueryProvider` |
| **Entry point** | `Data/SAIF.Data/Queries/Policies/Certificates/CertificateHolderProvider.cs` |

## Steps

1. `CertificateHolderQueryProvider`: excludes superseded holders and runs a word search across name and address fields ([SD-BR-090](../business-rules.md#sd-br-090-superseded-certificate-holders-excluded-from-search), [SQL-001](../sql/SQL-001-address-verification-query-provider-get-location-verification-requests.md), [SQL-002](../sql/SQL-002-address-verification-query-provider-get-address-verification-requests.md), [SQL-003](../sql/SQL-003-address-verification-query-provider-get-verified-address.md), [SQL-051](../sql/SQL-051-certificate-holder-query-provider-get-certificate-holder.md)). Data: `CERTIFICATE_HOLDER`.
2. `TaskQueryProvider`: matches codes case-insensitively ([SD-BR-091](../business-rules.md#sd-br-091-task-codes-compared-case-insensitively)). Data: `TASK`.
3. `WorkerQueryProvider.GetActiveSupportOrderCount`: counts orders with no termination date ([SD-BR-092](../business-rules.md#sd-br-092-active-support-order-has-no-termination-date)). Data: `CL_CLAIM_SUPPORT_ORDER`. `GetWorkerAge` computes age.
4. `ReportQueryProvider`: "active" means `ExpirationDate == null` ([SD-BR-093](../business-rules.md#sd-br-093-active-report-record-has-a-null-expiration-date)).
5. `PaymentsQueryProvider`: "MA" means medical audit ([SD-BR-094](../business-rules.md#sd-br-094-ma-code-identifies-medical-audit-payment-type)).
6. `MedicareQueryProvider`: matches beneficiary query history on all fields ([SD-BR-095](../business-rules.md#sd-br-095-medicare-history-match-requires-all-fields-equal)). Data: `MEDICARE_QUERY_HISTORY`, `MEDICARE_BENEFICIARY_QUERY_BAT`.
7. Other LINQ read providers without distinctive rules: AddressVerification, ClaimPayment, Reserve, ServiceCode, ServiceCodeMaintenance, Edi, Employee, Image, Policy, EbillAddress/Document/Invoice/Patient/Provider/Service.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Miscellaneous read queries across certificate, task,<br>worker, report, payment, and Medicare domains."]) --> S1["`CertificateHolderQueryProvider`"]
	S1 --> S2{"Rules satisfied?"}
	S2 -->|Yes| EndOk([Result returned])
	S2 -->|No| EndErr([Exception / empty result])
```

## Failure and edge-case behavior
- Unrecognized code values: excluded from filtered results rather than raising an error.

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)


## Sources
- `Data/SAIF.Data/Queries/Policies/Certificates/CertificateHolderProvider.cs`
- `Data/SAIF.Data/Queries/AddressVerification/AddressVerificationQueryProvider.cs:34`
- `Data/SAIF.Data/Queries/AddressVerification/AddressVerificationQueryProvider.cs:42`
- `Data/SAIF.Data/Queries/AddressVerification/AddressVerificationQueryProvider.cs:49`
