Registrations · Regulatory Affairs
CuRE Consulate
Global registration status by health authority — variations, renewals, and HA correspondence.
What it does
Global registration status by health authority — variations, renewals, and HA correspondence. Registration status, the submission sequence that produced it, and the label it governs stay one linked record — not three systems reconciled by spreadsheet.
Key capabilities
- Registration status by HA / country
- Variations + renewals lifecycle
- HA interaction + correspondence tracking
- Commitment tracking
- Clinical-trial disclosure (CT.gov / EU CTIS)
- Submission content plan (section/doc-level)
- RWD-evidenced PMR/PMC fulfillment
- Renewal / licence-expiry clock
- xEVMPD / SPOR / IDMP outbound
What sets it apart
- Registration status, the submission sequence that produced it, and the label it governs stay one linked record — not three systems reconciled by spreadsheet.
- Trial disclosure (FDAAA 801 / EU CTIS) and a section-level submission content plan — the RIM capabilities a Veeva-comparing buyer asks for first.
- Regulatory intelligence, change/event impact, xEVMPD/SPOR, trial-phase applications, CT.gov/CTIS disclosure, affiliate workflow, and status export are part of the RIM surface.
- Variations, renewals, and commitments are lifecycle events on a governed record, not tracker rows that drift from reality.
- Product master data comes from the platform's IDMP substrate — one product definition across registrations, labels, and submissions.
- Registrations extend upstream into the pre-IND journey — FDA-meeting packages, regulatory designations, and IND-readiness — as part of the Translational bundle's first-in-human push (ADR-PLT-100).
Fold a registration's HA event chain into its in-force state
A marketing registration is not a status field — it is the fold of a lifecycle event chain across every health-authority interaction. Step a synthetic FDA NDA through its real lifecycle codes (submitted → under_review → RTQ ⇄ response → approved) and watch the state machine offer only legal next moves, refusing an illegal edge with its own rejection message. Grant a per-component partial approval and a second chain appears; supersede the approval with a withdrawal and the fold rewrites in-force state — with the supply-release verdict tracking the head state throughout.
A synthetic US NDA — ravucizumab (VELT-042) — filed with the FDA (NDA, US). Each button records a real FDA lifecycle code; the state machine only offers moves legal from the current state.
A partial approval folds its own per-component chain — the registration head stays under review until the whole thing is approved.
A corrective event references the event it supersedes; the superseded event drops out of the fold and the new state becomes in-force.
Current state · folded per component (ADR-CSL-004)
The registration head reads approved only when the whole registration is approved — a partial approval keeps it under_review while the component chain shows partial_approved.
Lifecycle event chain
Why this is more than a toy
The state machine, the fold, and the supply-release derivation are a faithful, dependency-free port of Consulate's real registration-lifecycle engine (apps/consulate/src/server/registrations/state-machine.ts): the CORE_STATE_TRANSITIONS edge graph and assertValidTransition() initial-state + legal-edge guard (so submitted → approved is refused, exactly as the product's tRPC recordLifecycleEvent rejects it), the foldCurrentState() per-component fold that removes superseded events and takes the latest surviving event per component_scope, and coreStateToRegistrationStatus() for the coarse head status — all ported line-for-line. Every HA-specific lifecycle code resolves onto one shared cross-HA CoreState graph, so a new health authority adds taxonomy rows, never a new core state (ADR-CSL-004); the FDA code catalogue and the PAS / CBE-30 / CBE-0 variation classes mirror the product's migration seed. The supply-release panel is the real deriveRegistrationReleasability() basis map (ADR-CSL-010) — an approved-and-effective registration opens release; an under-review, withdrawn, or expired one blocks it. Per ADR-PLT-044 the lifecycle fold is Consulate's own deterministic, event-write-bound operational math (not a statistical methodology), so this port keeps that in-app placement rather than relocating to Calculate. Here it all runs entirely client-side on a synthetic registration — no backend, no real data.
See CuRE Consulate in action
Every research ecosystem is unique. Let's discuss how CuRE can be configured for your needs.