Batch¶
Batch wraps an EbillBatch entity and implements the batch-lifecycle behaviour of OP-DOM-09: new batches are created with status "NEW" (DOM-BR-090), retrieved batches are validated against an expected status and type (throwing InvalidBatchException on a mismatch, DOM-BR-091), and a fixed set of status setters (COMP, EXTR, IMAGE, INDEX, EOB, DLOAD, ACK, SETUP) drive the batch through its e-billing pipeline stages (DOM-BR-092). It is the unit of work SAIF.Services' e-billing batch jobs track a clearinghouse file's processing state against.
Purpose¶
- Creates a new batch record with status
"NEW"for a given batch type, optionally tied to a clearinghouse, submission date, and file name (DOM-BR-090). - Retrieves an existing batch by ID or by type/status, validating that the retrieved batch actually exists and matches the expected status and type, else throwing
InvalidBatchException(DOM-BR-091). - Advances a batch through its e-billing pipeline stages via dedicated status setters (COMP, EXTR, IMAGE, INDEX, EOB, DLOAD, ACK, SETUP), each stamping the update date/user (DOM-BR-092).
Context¶
- Namespace:
SAIF.Domain.Model.Claims.Ebilling - Assembly/package:
SAIF.Domain(packaged inSAIF.SAIFCode.Core)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| Batch (constructor, create with submission date/file name) | public Batch(IRepositoryFactory factory, IUserProfileService prof, EbillBatchTypeCode type, IEbillingQueryProvider ebillingQueryProvider, DateTime submissionDate = default(DateTime), string fileName = "") |
Creates a new batch with status "NEW" and adds it to the repository (DOM-BR-090); defaults the submission date to now when not supplied. |
| Batch (constructor, create with clearinghouse/date/file name) | public Batch(IRepositoryFactory factory, IUserProfileService prof, EbillBatchTypeCode type, EbillClearinghouse clearinghouse, IEbillingQueryProvider ebillingQueryProvider, DateTime submissionDate, string fileName) |
Creates a new batch tied to clearinghouse with status "NEW" and adds it to the repository (DOM-BR-090). |
| Batch (constructor, create with clearinghouse only) | public Batch(IRepositoryFactory factory, IUserProfileService prof, EbillBatchTypeCode type, EbillClearinghouse clearinghouse, IEbillingQueryProvider ebillingQueryProvider) |
Creates a new batch tied to clearinghouse, defaulting the submission date to now and the file name to null, with status "NEW" (DOM-BR-090). |
| Batch (constructor by id) | public Batch(IRepositoryFactory factory, IUserProfileService prof, IEbillingQueryProvider ebillingQueryProvider, long batchId) |
Loads an existing batch by batchId. |
| Batch (constructor by id and clearinghouse) | public Batch(IRepositoryFactory factory, IUserProfileService prof, EbillClearinghouse clearinghouse, IEbillingQueryProvider ebillingQueryProvider, long batchId) |
Loads an existing batch by batchId, scoped to clearinghouse. |
| Batch (constructor by type/status) | public Batch(IRepositoryFactory factory, IUserProfileService prof, IEbillingQueryProvider ebillingQueryProvider, string batchType, string batchStatus) |
Loads the first batch matching batchType and batchStatus. |
| Batch (constructor by type/status/clearinghouse) | public Batch(IRepositoryFactory factory, IUserProfileService prof, string batchType, string batchStatus, EbillClearinghouse clearinghouse, IEbillingQueryProvider ebillingQueryProvider) |
Loads the first batch matching batchType/batchStatus, scoped to clearinghouse. |
| Data | public EbillBatch Data { get; } |
Exposes the underlying EbillBatch entity. |
| GetBatch (IUnitOfWork overload) | public static Batch GetBatch(IUnitOfWork unitOfWork, IUserProfileService profileService, string batchType, string batchStatus, EbillClearinghouse clearinghouse, IEbillingQueryProvider ebillingQueryProvider, long batchId = 0) |
Retrieves a batch by ID (when batchId > 0) or by type/status/clearinghouse otherwise, validating existence and that status/type match, else throwing InvalidBatchException (DOM-BR-091). |
| GetBatch (IRepositoryFactory overload) | public static Batch GetBatch(IRepositoryFactory factory, IUserProfileService profileService, IEbillingQueryProvider ebillingQueryProvider, string batchType, string batchStatus, long batchId) |
The same retrieve-and-validate behaviour as the IUnitOfWork overload, using an IRepositoryFactory and without clearinghouse scoping (DOM-BR-091). |
| SetBatchToCompleted | public void SetBatchToCompleted() |
Sets the batch status to "COMP" and stamps the update date/user (DOM-BR-092). |
| SetBatchToExtracted | public void SetBatchToExtracted() |
Sets the batch status to "EXTR" and stamps the update date/user (DOM-BR-092). |
| SetBatchToImaged | public void SetBatchToImaged() |
Sets the batch status to "IMAGE" and stamps the update date/user (DOM-BR-092). |
| SetBatchToIndexed | public void SetBatchToIndexed() |
Sets the batch status to "INDEX" and stamps the update date/user (DOM-BR-092). |
| SetBatchToEobDistributed | public void SetBatchToEobDistributed() |
Sets the batch status to "EOB" and stamps the update date/user (DOM-BR-092). |
| SetBatchToDocumentLoad | public void SetBatchToDocumentLoad() |
Sets the batch status to "DLOAD" and stamps the update date/user (DOM-BR-092). |
| SetBatchToAcknowledged | public void SetBatchToAcknowledged() |
Sets the batch status to "ACK" and stamps the update date/user (DOM-BR-092). |
| SetBatchToSetup | public void SetBatchToSetup() |
Sets the batch status to "SETUP" and stamps the update date/user (DOM-BR-092). |
| SetResponseBatch | public void SetResponseBatch(EbillBatch responseBatch) |
Links responseBatch as this batch's response batch (used by 277 response processing, OP-DOM-11) and stamps the update date/user. |
Inherited public members¶
Members in this section are inherited from DomainBase<TItem> in SAIF.Domain. They are available on this type through inheritance (via the intermediate DomainRepositoryBase<TItem> base).
| Member | Signature | Purpose | Origin |
|---|---|---|---|
| HasData | public virtual bool HasData { get; } |
Reports whether the wrapped EbillBatch entity is present, evaluated as !DataItem.IsNull(). |
SAIF.Domain — DomainBase<TItem> |
Behavioral notes¶
- The class carries a source-code comment about injecting the query provider, indicating the current design of passing
IEbillingQueryProviderinto every constructor is considered a refactor candidate*. - Both
GetBatchoverloads validate status and type in that order and throw on the first mismatch, so a batch that fails both checks reports only the status mismatch message*.
Constraints and usage notes¶
- Every status setter (
SetBatchTo*) resolves its targetEbillBatchStatusCodethrough_ebillingQueryProvider.BatchQueries.GetBatchStatus, so an unrecognized status string passed indirectly through configuration would surface as a query-provider failure rather than a compile-time error.
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/Model/Claims/Ebilling/Batch.csDomain/SAIF.Domain/DomainBase.csDomain/SAIF.Domain/DomainRepositoryBase.cs