DocumentImageManager¶
Implements IDocumentImageManager as the per-bill orchestrator of the imaging workflow: for every not-yet-imaged bill in a batch it validates the on-disk files, images the primary bill document first, groups and images the remaining documents by type, notifies about new-claim documents by email, and updates bill/document/batch status. It coordinates IDocumentFileService for file validation/movement, IDocumentManagementService for data access and status transitions, and IEmailService for new-claim notifications, all under IUnitOfWork transactions.
Purpose¶
- Validates that the on-disk document files for a batch match its non-imaged document records before imaging begins (
ImageDocuments, viaIDocumentFileService.ValidateDocuments). - Sends a new-claim notification email and logs a patient note before imaging when a bill's documents indicate a new (unmatched) claim (
ProcessNewClaimDocument,CreateNewDocumentNote,SendNewClaimEmail). - Images the bill's primary ("B"-type) document individually, then images its remaining documents grouped by document type — as a single upload per document if there is only one of that type, or as a merged multi-document upload otherwise (
ImageBillDocument,ImageDocumentsByType,ImageSingleDocument). - Records the resulting image ID against every document imaged in a request (
UpdateDocumentImageSequenceNumber). - Fails fast with an
ApplicationExceptionif the imaging API returns a zero image ID (ThrowExceptionIfZero). - Transitions bill and batch status to document-load after imaging completes (
UpdateBillStatus,UpdateBatchStatus).
Context¶
- Namespace:
SAIF.Services.Claims.Ebilling.Imaging - Assembly/package:
SAIF.Services(packaged inside theSAIF.SAIFCode.CoreNuGet package)
Public members¶
| Member | Signature | Purpose |
|---|---|---|
| DocumentImageManager | public DocumentImageManager(IUnitOfWork unitOfWork, IDocumentManagementService documentManagementService, IEmailService emailService, IDocumentFileService fileService) |
Wires the unit-of-work, document-management service, email service, and document file service used to drive the imaging workflow. |
| ImageDocuments | public ImageResults ImageDocuments(ImageDocumentsRequest request, ILogWriter controlReport) |
Validates the batch's document files, then images every not-yet-imaged bill's documents (bill document first, then by type), updating bill status per bill and batch status at the end; wraps per-bill failures in an exception naming the bill ID. |
| UpdateBatchStatus | public void UpdateBatchStatus(long batchId) |
Transitions the batch to document-load status within a unit-of-work transaction. |
| UpdateBillStatus | public void UpdateBillStatus(long billId) |
Transitions a bill to document-load status within a unit-of-work transaction. |
| UpdateDocumentImageSequenceNumber | public void UpdateDocumentImageSequenceNumber(long documentId, long imageId) |
Stamps a document's assigned image ID within a unit-of-work transaction. |
| SendNewClaimEmail | public void SendNewClaimEmail(long documentId, string fileName, string newClaimEmailAddress) |
Builds and sends the new-claim notification email for an unmatched-claim document via IEmailService. |
| CreateNewDocumentNote | public void CreateNewDocumentNote(long billId) |
Logs a patient error note for a new/unmatched claim document within a unit-of-work transaction. |
| ThrowExceptionIfZero | public void ThrowExceptionIfZero(long imageId) |
Throws an ApplicationException reporting that the imaging API returned zero when the given image ID is 0. |
Behavioral notes¶
- Each status-mutating call (
UpdateBatchStatus,UpdateBillStatus,UpdateDocumentImageSequenceNumber,CreateNewDocumentNote) opens and commits its ownIUnitOfWorktransaction rather than sharing one transaction across the whole batch. ImageDocumentstreats an exception from any single bill's processing as fatal to the whole run, re-wrapping it with the bill ID and rethrowing rather than continuing with the next bill.- Documents of a single type are imaged individually; multiple documents of the same type are merged into one combined image via
IDocumentManagementService.ImageDocuments.
Sources¶
- Services/SAIF.Services/Claims/EBilling/Imaging/DocumentManager.cs