Skip to content

human-review

Purpose

human-review manages the queue of cases that require a clinician to review and submit a diagnosis. It receives human_review.requested events from orchestrator, creates a Review record, and exposes a work queue UI-friendly API for reviewers to claim, complete, or decline reviews. On submission it emits human_review.completed; on decline it emits human_review.failed.

Key endpoints

GET /reviews/queue — list unclaimed reviews available to the authenticated reviewer GET /reviews/queue/suggested — list reviews suggested for the reviewer based on assignment rules GET /reviews/my-claims — list reviews currently claimed by the authenticated reviewer GET /reviews/:id — fetch a single review POST /reviews/:id/claim — claim a review for exclusive editing POST /reviews/:id/unclaim — release a previously claimed review POST /reviews/:id/submit — submit a completed review (emits human_review.completed) POST /reviews/:id/decline — decline a review (emits human_review.failed) GET /admin/reviews — admin: list all reviews with filters GET /admin/reviews/:id/audit — admin: fetch the audit trail for a review POST /admin/reviews/:id/cancel — admin: cancel a review GET /admin/reviewers — list registered reviewers POST /admin/reviewers — register a reviewer PATCH /admin/reviewers/:id — update reviewer metadata DELETE /admin/reviewers/:id — deregister a reviewer

Database tables

Reviewer — registered reviewer profiles (user ID, org, active status) Review — review request record: case ID, status, claim status, submission payload ReviewClaim — tracks which reviewer holds the current claim on a review ReviewAuditLog — immutable event log for all review state transitions

Events

human_review.requested — consume — received from orchestrator; creates a Review row human_review.completed — emit — published via @sa-platform/events Redis Streams when a reviewer submits human_review.failed — emit — published via @sa-platform/events Redis Streams when a reviewer declines

Dependencies

  • Redis — event transport via @sa-platform/events Redis Streams
  • MySQL — primary store, accessed via Prisma 7 driver-adapter pattern
  • auth — JWT verification via @sa-platform/auth-client

Where to learn more

  • Design spec
  • Source: services/human-review/ (in this repo)