Skip to content

Changelog

Revision history of the Study Setup Product Requirements Document. Newest first.

2026-06-23

Incorporating Step 1 deliverable-review feedback (sessions of 15–16 Jun).

Changed

  • Document export is PDF-only. Word export removed. Every exported page carries a watermark — a footer line ({StudyID} · {DocumentType} · {VersionLabel} · {ReleaseStatus} · Checkpoint {CheckpointId} · Exported {ExportedAt UTC} by {Actor} · Uncontrolled when printed) plus, on non-released exports, a diagonal {ReleaseStatus} — NOT FOR USE stamp (ZenQMS convention). Event ArtifactExported renamed to DocumentVersionExported, paired with the ExportDocumentVersion command. (document-review.md)

Added

  • Document export register — a derived view of DocumentVersionExported events letting lab leaders monitor exports and catch outdated versions still in circulation. (document-review.md)
  • Field-specific search queries — users can query/filter by key study fields (site #, sponsor, indication, …) from the UI; the key-field set is defined in settings.py initially, with runtime configuration tracked as a future enhancement. (search.md)
  • Tabular Export (CSV) — new cross-cutting capability: every list/table view (studies, documents, templates, materials, audit entries, search results, …) exports all matching records across all pages with the selected columns, permission-scoped. New ExportListView command → ListViewExported event. (tabular-export.md, index.md)
  • Version visibility filtering — new cross-cutting behavior: list/table views and search filter versioned entities (draft/current/superseded) with a per-query filter defaulting to current only, guarding against referencing outdated versions. (version-visibility.md, search.md, index.md)
  • Source file types — ingestion accepts PDF, Word, and Excel only; scanned/image-only PDFs are OCR'd before parsing. Images, PowerPoint, and other types are never accepted as sources. (ingestion.md)
  • Template image embedding — templates may embed images (logos, figures, label artwork) as template-owned static assets that render into generated documents. (templates.md)
  • Source-document retention & versioning — uploaded sources are retained indefinitely, categorized by study and document kind, and versioned (latest is the active source, last-in-wins); each new version gets an AI-assisted change summary. Event SourceDocumentReplaced renamed to SourceDocumentVersionAdded. (ingestion.md)
  • Notifications module — triggers defined. Notifications are raised only in reaction to formal domain events (Policy → CreateNotification), with a role-aware trigger→recipient matrix; in-app only for now. Added ReviewDeadlineApproaching / ReviewDeadlinePassed events (scheduled deadline check). Past-due deliverable reminders deferred pending deliverable due-dates. (notifications.md, document-review.md)
  • Admin / Configuration module — the admin is Django's built-in admin (no bespoke UI planned): System Admin CRUD over configuration and reference data, audited. (admin.md)
  • External Client Review Portal module — the chrome-less, token-scoped external reviewer site is now a first-class module (capabilities + access boundary made explicit); RC/grant lifecycle stays in Document Review. (external-review.md, document-review.md)
  • Single ingestion engine (clarification). One ingestion engine serves both historical and go-forward studies (no per-purpose split); document types and parsers are extensible. (ingestion.md)
  • AI scope clarification. Generative AI is used only for parsing/summarization within ingestion; there is no interactive in-app AI agent (out of scope/backlog). (ingestion.md)

2026-06-10

  • Initial version of the Product Requirements Document.