MedicareService¶
Implements IMedicareService, the batch job that reconciles Medicare-beneficiary query results against the MedicareQueryHistory table for each submission batch, inserting new history entries and updating stale ones, then deleting the now-processed beneficiary batch. It depends on IUnitOfWork for persistence, IMedicareQueryProvider for reading beneficiary/batch data, and IUserProfileService to stamp history records with the current user. It accumulates run totals in an internally held MedicareHistoryResults instance created in the constructor and mutated across calls within a single service lifetime.
Purpose¶
- Processes the next available minimum-submission batch of Medicare beneficiary data: deletes the prior batch if it has already been fully reconciled, then inserts/updates history for the new batch.
- Determines whether a submission batch has been fully processed by comparing the beneficiary count against the matching history count for that submission date.
- Inserts new
MedicareQueryHistoryrecords for beneficiaries with no existing history match, and updates theLastSubmissionDateon records whose match is stale. - Deletes the processed
MedicareBeneficiaryQueryrecords and their batch marker once history has been reconciled.
Context¶
- Namespace:
SAIF.Services.Claims.Medicare - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| MedicareService | public MedicareService(IUnitOfWork uow, IUserProfileService prof, IMedicareQueryProvider qu) |
Wires the unit-of-work, user-profile, and Medicare query-provider collaborators, and initializes the internal MedicareHistoryResults accumulator. |
| ProcessNextBatch | public MedicareHistoryResults ProcessNextBatch(ILogWriter controlReport) |
Deletes the previous batch's beneficiary records if already reconciled, processes the next minimum-submission batch into history, throws if the post-processing counts still don't match, and returns the accumulated result totals. |
| HasPreviousBatchBeenProcessed | public bool HasPreviousBatchBeenProcessed(DateTime submissionDate) |
Returns true only when the beneficiary count and history count for the given submission date are equal, indicating the batch has been fully reconciled. |
| ProcessMedicareBeneficiarysStatelessMode | public bool ProcessMedicareBeneficiarysStatelessMode(DateTime submissionDate) |
Within a unit-of-work transaction, inserts history for beneficiaries with no existing match and updates the submission date on stale matches; always returns true. |
| InsertMedicareQueryHistory | public void InsertMedicareQueryHistory(MedicareBeneficiaryQuery medicareBeneficiary, string currentUser, DateTime submissionDate) |
Creates and adds a new MedicareQueryHistory record copying the beneficiary's identity/response fields and stamping first/last submission dates and audit fields. |
| ProcessDeleteMedicareBeneficiarysForBatch | public bool ProcessDeleteMedicareBeneficiarysForBatch() |
Within a unit-of-work transaction, deletes all beneficiary records for the current minimum-submission batch along with the batch marker itself; always returns true. |
Behavioral notes¶
ProcessNextBatchthrows a genericException("Counts Don't match")if, after processing, the new batch is still not fully reconciled — a coarse-grained integrity check rather than a typed exception.*ProcessMedicareBeneficiarysStatelessModeandProcessDeleteMedicareBeneficiarysForBatcheach wrap their writes inIUnitOfWork.Begin()/Commit().- Result counters (
MedicareBeneRead,HistoryUpdated,HistoryInserted,MedicareBeneDeleted) accumulate on the single_historyResultinstance created at construction, so aMedicareServiceinstance is intended for one batch-processing run rather than reuse across independent runs.*
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/Medicare/MedicareService.cs