/// /// Handles batch verification, rejection, and separation-of-duties enforcement. /// public interface IVerificationService { /// /// Verifies a batch that is in PendingVerification status. /// Enforces separation of duties: the verifier cannot be the same user who entered the data. /// On pass, transitions to Verified or AwaitingClinicalApproval based on site config. /// On fail (Passed = false), transitions to Rejected with field check notes as the reason. /// Task VerifyAsync(Guid batchId, VerifyBatchRequest request, Guid verifierUserId); /// /// Rejects a batch that is in PendingVerification or AwaitingClinicalApproval status. /// Stores the rejection reason on the batch and transitions status to Rejected. /// The batch returns to the entry work queue for re-entry by a data entry clerk. /// Task RejectAsync(Guid batchId, RejectBatchRequest request, Guid actorUserId); }