TOP / Clinical Research / Top-Level Object Hierarchy / v0.1 strawman
May 2026 · derived from OOUX v0.2 (78 flat objects) · for Bo's markup

Eight top-level objects, OOUX-style. Sub-objects nested where they compose. Cross-cutting horizontals shown below as ribs that any top-level can reference. The four scenarios v0.1 has to demonstrate are tagged on the cards they touch, so coverage is visible without a separate matrix. Status (2026-05-07): all seven boundary decisions resolved. The hierarchy is stable.

Scenarios 1 · Blood-draw evidentiary chain 2 · AE pattern → device-line owner 3 · Deviation found on monitoring visit 4 · Query (discrepancy) lifecycle

Sponsor

runs the trial

Study

trial design and definition (USDM-aligned)

Site

where conduct happens

Participant (Subject)

the person being studied

Visit

unit of trial conduct in time

Investigational Product

what is being tested

Oversight Body

governance and compliance apex

Event

things that happen and have to be reported

Cross-cutting horizontals · referenced by any top-level

These are the ribs that connect the spines. Each can be referenced from any of the eight top-levels and carries its own NGSI-LD entity type. None of them carry a top-level operator mental model on their own.

Records DocumentReportAudit Trail EntryCommunication LogLog Money ContractBudgetBudget ForecastPayment Systems SystemSystem ConfigurationServiceService ConfigurationData Transfer
People PersonPerson RoleUser RoleCredentialTraining Record Material SampleShipmentStorage LocationEquipment (vendor-owned) Work Action ItemData Quality Metric
Classifiers TagTherapeutic AreaRegionCountryRegulatory AuthorityDate (object form)

Boundary decisions · Bo's calls (2026-05-07)

  1. Visit as top-level vs sub of Study. Locked: top-level. Operators carry "today's visits" as a primary mental anchor; folding under Study would force a Schedule-of-Assessments traversal for the most common operator query.
  2. Event as one container vs split. Locked: one container. Event is a single top-level holding AE, SAE, Deviation, Discrepancy, Safety Signal, Safety Report, and related occurrences. Discrimination by sub-type (eventCategory enum) rather than by class split. Operators do not mentally separate "safety event" from "conduct event" until they are filing a report.
  3. IP as top-level vs sub of Study. Locked: top-level. Lots, devices, and components anchor the AE-pattern scenario independently of the protocol. The USDM InvestigationalIntervention shape projects forward at emission time.
  4. Sample as horizontal vs ninth top-level. Locked: horizontal for v0.1, with future-promotion note. Sample stays under horizontals (generated by Visit Activities). Lab and biobank workflows where Sample is the central operator anchor may justify promotion in v0.2 or in domain-specific reference graphs (e.g., a cell-therapy graph). Tracked.
  5. Other Clinical Event placement. Locked: Path C, both with disambiguation. Visit gets a new sub-object Visit Observation (routine, non-reportable, per-Visit). Event gets Other Clinical Event (reportable, lives in the Event lifecycle). A 0..N derivedFrom relationship from Other Clinical Event back to Visit Observation preserves the audit chain when something noticed today becomes a categorized Event tomorrow. Reportability handoff is a categorical CRA action ("Promote Visit Observation to Event"), not a status flag transition. Tracked open: the operational boundary between "routine observation" and "reportable event" is a UX/workflow design problem; the model gives the entities, the UI determines the clarity of the handoff.
  6. Action Item placement. Locked: horizontal. Every top-level produces and assigns Action Items, so it lives across the spine, not under one top-level.
  7. Equipment placement. Locked: all horizontal. Bo's lean accepted. Site-bound vs vendor-owned vs participant-loaned distinction lives on an Equipment attribute (equipmentBinding enum: SITE_BOUND, VENDOR_OWNED, PARTICIPANT_LOANED) rather than a structural split. Site binding carries through a Relationship rather than hierarchical placement.
  8. The "ninth" question. Locked: Path Z, eight is the cap for the clinical-trials reference graph; specialty graphs elevate what they need. The trials commons (top:) stays at exactly eight top-levels: Sponsor, Study, Site, Participant, Visit, Investigational Product, Oversight Body, Event. Specialty reference graphs (a future cell-therapy graph at topct:, a future rare-disease graph at toprd:, etc.) import the same horizontals and elevate domain-specific anchors (Sample, Supply/Logistics, etc.) to top-level in their own contexts. This honors KISS for the trials commons, honors the federation pattern for specialty domains, and keeps the Sample-horizontal-with-future-promotion-note (locked above) consistent rather than arbitrary.

All seven boundary decisions are resolved. The OOUX hierarchy is now stable at eight top-levels for the clinical-trials reference graph. Sub-objects locked: Visit Observation (under Visit), Other Clinical Event (under Event), derivedFrom audit-chain link from Other Clinical Event back to Visit Observation. Equipment fully promoted to horizontal with equipmentBinding enum carrying the SITE_BOUND / VENDOR_OWNED / PARTICIPANT_LOANED distinction. Sample remains horizontal in the trials commons; specialty reference graphs may elevate it.