ASTRO 2026 · BOSTON SEPT 27–29 · BOOTH 2814 Book a booth demo →
DOCS / 02 · CONCEPTS / TREATMENT COURSES AND RECORDS Search docs…⌘K
2.8 · CONCEPTS

Treatment courses and records.

A plan says what was intended. A treatment record says what was delivered. Radial reads both: records become a per-fraction delivery timeline, plans that belong together are grouped into a course, and the course carries a dose only when someone has declared it.

Treatment records

Radial imports the four DICOM treatment-record objects (RT Beams, RT Ion Beams, RT Brachy, and the RT Treatment Summary Record) through the same doors as every other object: direct send, retrieve, or file import. A record is kept beside its case rather than inside a dataset, so importing records changes nothing about the plan, structure set, or dose already there.

Each record is read for its treatment date, machine, fraction number, the plan it references, and a per-beam summary of specified versus delivered meterset. From that evidence every session is marked delivered (a normal termination, or a delivered meterset within 1% of the specified one), partial (stopped by the operator or the machine, or a meterset that fell short), or simply recorded when the file carries no usable evidence either way. A session is one record; a fraction is one prescribed treatment. An interruption completed the same day is two sessions of one fraction, and the timeline shows it that way.

How plans become a course

A course is the set of plans a patient was treated under for one episode of care: an initial plan and its boost, a re-plan after a change in anatomy, or the per-fraction plans of an adaptive workflow. Every imported plan belongs to exactly one course, and a plan with nothing to link to is a course of one. Two plans share a course when the files link them, and one signal is enough:

  • Record continuity. The fraction numbers on one plan's records continue where the other's stop.
  • Plan references. The RTPLAN itself references the other plan, as an adapted or re-planned course does.
  • Shared geometry. Both plans share a frame of reference and a structure set.
  • Date proximity. The plans were made close together in time, unless their delivered fractions overlap, which is what two concurrent, separate courses look like.

One plan in each course is the primary, derived from the grouping rather than set by hand. Every other plan is treated as a sequential boost unless a curator marks it otherwise: in a course's editor a plan can be marked adapted (a re-plan whose dose supersedes the primary rather than adding to it), and a fraction delivered on a plan marked adapted is highlighted on the timeline, which is how a per-fraction adaptive course reads at a glance. Nothing about the roles is inferred. Grouping is automatic at import and re-derived whenever a case reprocesses; a curator can rename, split, merge, or move plans between courses, and an edited course is never regrouped by a later automatic pass.

What the course shows

Each course appears on its case as a timeline with one segment per delivered fraction, coloured by status, over a table of every session: fraction, date, machine, and status. The course also rolls up into the same prior-radiotherapy summary the rest of the platform reads, so a course treated at your centre sits beside the courses a curator records from elsewhere, and a re-treatment question starts from one list.

On a course with two or more plans, Trend & deltas charts a plan attribute (e.g., monitor units) or a structure's dose across the delivered fractions. For the structures you pick, it also shows how each plan marked adapted differs from the primary in near-maximum dose, mean dose, and the volume receiving 95% of the prescription.

What the records let Radial derive

From the delivered sessions Radial derives a small set of registry facts and writes them where the platform already looks: on the course, on its prior-radiotherapy summary, and as plan-level fields in the catalog, so a course's delivery can be queried, charted, and compared like any other plan attribute. Delivered fractions, overall treatment time, treatment breaks, and the longest gap between fractions can also be pinned in monitoring, scoped by the machine that delivered the course, its status or completion, or the plan's role.

  • Status. Completed when the delivered fractions reach the prescription; in progress while sessions keep arriving; stopped early when a course fell short and no session has been recorded for more than 45 days. An in-progress course is re-evaluated once a day, and a multi-plan course has no status until a curator declares its total fractions. Catalog fields course_status and course_completion.
  • Delivered fractions. Distinct fractions with delivery evidence, counted per plan so that a boost's fraction 1 is not taken for the primary's. A record whose fraction number cannot be resolved is counted by its delivery date instead. delivered_fractions.
  • Overall treatment time. Calendar days from the first delivered fraction to the last, inclusive. overall_treatment_time.
  • Treatment breaks. Gaps of more than four calendar days between consecutive delivered fractions, so a normal weekend is not a break. The longest gap between consecutive delivered fractions is recorded alongside it, whether or not that gap is long enough to count as a break. treatment_breaks and longest_break_days.
  • Delivered machine. The machine that actually treated, or MIXED when more than one did. delivered_machine.
  • Adaptation. How many plans a curator marked adapted, the fractions delivered on them, and the course fraction at which adaptation began, counted by date across the whole course. n_adaptations, adapted_fractions, and first_adaptation_fraction; each plan's role (primary, boost, or adapted) is course_plan_role.

The records also reach curation directly. On the Additional Info stage of Curate the RT start and end dates arrive already filled from the records, with a from treatment records hint underneath; edit either one and the curator's value wins for good.

A course with no treatment records makes no claim at all: no status, no delivered count, and empty delivery facts. Absence is not a zero.

Dose: declared, never summed

A single-plan course takes its dose from that plan's prescription. A multi-plan course does not get a total by adding plans together, because whether two plans are sequential phases or concurrent components is a clinical fact that the files do not state. Until a curator declares the intent (sequential or concurrent) and confirms the total, the course carries no total at all. This is the same rule the platform applies to prior radiotherapy: adding physical dose across different fractionations is exactly the arithmetic that equivalent dose exists to correct, so Radial reports a declared total or nothing. For an overlapping re-treatment, the ledger below reports per-organ EQD2 across courses under stated assumptions instead.

Across courses: the re-irradiation ledger

A re-treatment question starts from one list. The ledger gathers every course and every declared prior procedure across a patient's cases at your institution (cases are matched on the patient identifier, which is never written into a link), in date order, each with its provenance: treated at this centre, an outside record entered by a curator, or received from a connector. Pick the organs at risk that matter and the ledger reports, per organ, each course's EQD2 and a cumulative value.

Every number is EQD2 computed from recorded doses at a declared α/β under the linear-quadratic model: presentation arithmetic, not a dose calculation. The α/β comes from the structure's own setting, then your institution's table, then the platform default, and each value says which. A course treated here contributes the organ's near-maximum dose (D0.03cc) from the plan's own DVH, converted with the dose per fraction taken as that total over the plan's fraction count; a declared course has no dose distribution, so it contributes the EQD2 of its recorded prescription. The cumulative value is a worst-case-overlap sum of the per-course values (it assumes the same voxel received every course's dose), and no deformable registration is performed. A course with several plans sums its primary plan and any sequential boosts, and excludes plans a curator marked as adapted (whose dose supersedes rather than adds), and says how many it excluded; any course that could not contribute makes the cumulative a lower bound, and the ledger says so beside the number. Physicist review is required before any clinical use.

The ledger sits on the case, in Curate beside the prior-radiotherapy card, and on a page of its own for the review that needs the room. Courses, their delivered fraction counts, the patient-wide list, and declared procedures are also readable through the public API, as are a course's per-fraction trends and adaptation deltas. The course-management writes (assign, split, merge, record dose intent, and edit) are callable there too, with a write-scoped token.

What is not inferred

  • A summed dose across the plans of a course. Declared by a curator, or absent.
  • A cumulative physical dose across courses. The ledger adds only EQD2 at a declared α/β, as a labelled worst-case bound.
  • A delivered dose for a course that stopped early, beyond a labelled pro-rata estimate for a single-plan course with one fraction group.
  • A recomputed dose distribution from the records. They feed the timeline, never the DVH.
  • A course for a record whose plan is not in Radial. The record is kept with the case until the plan arrives.
  • A completion status for a course with no records.

See it on your own terms.

Twenty minutes with the demo cohort, or a conversation about your archive. Either way, you'll know whether Radial fits.