Schema URL

Type: object

Schema defining the structure of ABCClinicalDemandForecast used for clinical trial demand forecasting in ABC-Plan.

Properties

planNotes string required

Optional notes about the clinical demand forecast plan.

analytics object required
3 nested properties
items object | object[] required
layouts object[] required
tabs object[] required
clinicalDemandForecastConfiguration object required

All algorithm inputs that affect forecast calculation. Any change to this object should invalidate the calculated forecast.

8 nested properties
studyOverview object required

Basic study information from wizard step 1.

4 nested properties
studyName string required

Name of the clinical trial study.

studyPhase string required

Phase of the clinical trial.

Values: "phase_i" "phase_ii" "phase_iii" "phase_iv"
protocolSummary string required

Summary of the trial protocol. Optional field with recommended default: empty string.

therapeuticArea string required

Disease category being treated (e.g., Oncology, CNS, Rare Disease). Will be normalized by LLM for benchmarking. Required field with recommended default: empty string.

enrollment object required

Enrollment configuration from wizard step 2.

3 nested properties
targetCompleted integer required

Target number of subjects to complete the trial.

min=0
screenFailureRate number required

Percentage of subjects who fail screening (0-100).

min=0max=100
attritionRate number required

Percentage of enrolled subjects who drop out of the study entirely and stop receiving all doses (0-100). NOTE: This is different from adverse events in dose escalation regimens. Attrition causes subjects to exit the study early, while adverse events only prevent dose escalation but subjects continue receiving doses at their maximum tolerated level.

min=0max=100
kitConfiguration object required

Configuration of kits with containers and items, keyed by kit ID.

dosingRegimens object required

Available dosing regimens for the study, keyed by ID.

treatmentArms object required

Treatment arms in the clinical trial, keyed by ID.

subjectFlow object required

Site supply and region configuration from wizard step 6.

1 nested properties
regions object required

Region-specific site configuration, keyed by ID.

actuals object required

Actual enrollment data entered by users to reconcile with forecast.

4 nested properties
enrollment object required

Actual enrollment by region and month.

sites object required

Actual site counts by region and month.

notes object required

Explanatory notes for enrollment actuals by region and month.

siteNotes object required

Explanatory notes for site activation actuals by region and month.

trialDesign string required

Trial design type: parallel (single regimen per arm) or crossOver (sequence of treatments with washout periods).

Default: "parallel"
Values: "parallel" "crossOver"
clinicalDemandCalculatedForecast object required

Atomic monthly forecast data. Contains per-region data only. UI computes global totals and cumulative views.

1 nested properties
byRegion Record<string, object> required

Region-specific forecast data keyed by region ID.

$schema string
Values: "https://json.schemastore.org/abc-clinical-demand-forecast-1.0.0.json"

Definitions

ClinicalDemandForecastConfiguration object

All algorithm inputs that affect forecast calculation. Any change to this object should invalidate the calculated forecast.

studyOverview object required

Basic study information from wizard step 1.

4 nested properties
studyName string required

Name of the clinical trial study.

studyPhase string required

Phase of the clinical trial.

Values: "phase_i" "phase_ii" "phase_iii" "phase_iv"
protocolSummary string required

Summary of the trial protocol. Optional field with recommended default: empty string.

therapeuticArea string required

Disease category being treated (e.g., Oncology, CNS, Rare Disease). Will be normalized by LLM for benchmarking. Required field with recommended default: empty string.

enrollment object required

Enrollment configuration from wizard step 2.

3 nested properties
targetCompleted integer required

Target number of subjects to complete the trial.

min=0
screenFailureRate number required

Percentage of subjects who fail screening (0-100).

min=0max=100
attritionRate number required

Percentage of enrolled subjects who drop out of the study entirely and stop receiving all doses (0-100). NOTE: This is different from adverse events in dose escalation regimens. Attrition causes subjects to exit the study early, while adverse events only prevent dose escalation but subjects continue receiving doses at their maximum tolerated level.

min=0max=100
kitConfiguration object required

Configuration of kits with containers and items, keyed by kit ID.

dosingRegimens object required

Available dosing regimens for the study, keyed by ID.

treatmentArms object required

Treatment arms in the clinical trial, keyed by ID.

subjectFlow object required

Site supply and region configuration from wizard step 6.

1 nested properties
regions object required

Region-specific site configuration, keyed by ID.

actuals object required

Actual enrollment data entered by users to reconcile with forecast.

4 nested properties
enrollment object required

Actual enrollment by region and month.

sites object required

Actual site counts by region and month.

notes object required

Explanatory notes for enrollment actuals by region and month.

siteNotes object required

Explanatory notes for site activation actuals by region and month.

trialDesign string required

Trial design type: parallel (single regimen per arm) or crossOver (sequence of treatments with washout periods).

Default: "parallel"
Values: "parallel" "crossOver"
StudyOverview object

Basic study information from wizard step 1.

studyName string required

Name of the clinical trial study.

studyPhase string required

Phase of the clinical trial.

Values: "phase_i" "phase_ii" "phase_iii" "phase_iv"
protocolSummary string required

Summary of the trial protocol. Optional field with recommended default: empty string.

therapeuticArea string required

Disease category being treated (e.g., Oncology, CNS, Rare Disease). Will be normalized by LLM for benchmarking. Required field with recommended default: empty string.

Enrollment object

Enrollment configuration from wizard step 2.

targetCompleted integer required

Target number of subjects to complete the trial.

min=0
screenFailureRate number required

Percentage of subjects who fail screening (0-100).

min=0max=100
attritionRate number required

Percentage of enrolled subjects who drop out of the study entirely and stop receiving all doses (0-100). NOTE: This is different from adverse events in dose escalation regimens. Attrition causes subjects to exit the study early, while adverse events only prevent dose escalation but subjects continue receiving doses at their maximum tolerated level.

min=0max=100
Kit object

A kit containing items and containers. The kit ID is the key in the kitConfiguration map.

name string required

Display name of the kit.

items object required

Items and containers within this kit, keyed by node ID.

KitNode KitContainer | KitItem
KitContainer object

A structural container (bottle, blister pack) that holds other nodes. The container ID is the key in the parent items/children map.

nodeType string required

Discriminator identifying this as a container node.

Constant: "container"
name string required

Name of the container.

deliveryForm string required

Type of container.

Values: "bottle" "carton" "dose_pack" "blister_pack"
children object required

Items contained within this container, keyed by node ID.

ordering integer required

Display order of this node within its parent. Lower numbers appear first.

KitItem object

An actual pharmaceutical item (tablet, capsule, vial) with dosage. The item ID is the key in the parent items/children map.

nodeType string required

Discriminator identifying this as an item node.

Constant: "item"
name string required

Name of the item.

deliveryForm string required

Type of pharmaceutical item.

Values: "tablet" "capsule" "vial" "syringe" "sachet"
quantity integer required

Number of units contained in this item within one kit. For example, if this is a bottle containing tablets, quantity=10 means the bottle contains 10 tablets. This is NOT the same as dosingRegimen.kitItemQuantities, which specifies consumption per dose. This quantity field defines the container/packaging size.

min=0
dosage number required

Dosage amount.

min=0
units string required

Units of dosage (e.g., mg, ml).

ordering integer required

Display order of this node within its parent. Lower numbers appear first.

DosingRegimen object

Dosing regimen configuration with nested dosingRegimenDefinition discriminated union.

name string required

Name of the dosing regimen.

description string required

Description of the dosing regimen.

dosingRegimenDefinition ActiveRegimenDefinition | PlaceboRegimenDefinition required

Discriminated union: either an active regimen definition (isPlacebo: false) or a placebo definition (isPlacebo: true).

ActiveRegimenDefinition object

Definition for an active (non-placebo) dosing regimen.

isPlacebo boolean required

Discriminator: false for active regimens.

Constant: false
treatmentDuration number required

Total duration of treatment for all subjects.

min=0
treatmentDurationUnit string required

Unit of treatment duration.

Values: "days" "weeks" "months" "years"
dosingFrequency string required

Frequency of dose administration.

Values: "once_daily_qd" "twice_daily_bid" "three_times_daily_tid" "four_times_daily_qid" "once_weekly_qw" "every_2_weeks_q2w" "every_3_weeks_q3w" "every_4_weeks_q4w" "monthly" "every_6_weeks_q6w" "every_8_weeks_q8w" "every_12_weeks_q12w" "every_other_day"
fixedConfig FixedDoseConfig | null required

Configuration for fixed dose regimens. Null if using another regimen type.

doseEscalationConfig DoseEscalationConfig | null required

Configuration for dose escalation regimens. Null if using another regimen type.

weightBasedConfig WeightBasedConfig | null required

Configuration for weight-based dosing regimens. Null if using another regimen type.

ageBasedConfig AgeBasedConfig | null required

Configuration for age-based dosing regimens. Null if using another regimen type.

PlaceboRegimenDefinition object

Definition for a placebo regimen that references an active regimen.

isPlacebo boolean required

Discriminator: true for placebo regimens.

Constant: true
placeboOf string required

ID of the active dosing regimen this placebo references. Placebo inherits all dosing configuration from the active regimen.

FixedDoseConfig object

Configuration for fixed dose regimens.

kitItemQuantities object required

Mapping of kit item IDs to quantities consumed per dose.

DoseEscalationConfig object

Configuration for dose escalation levels.

levels object required

Map of level IDs to dose escalation levels. Use ordering property to maintain display order.

DoseEscalationLevel DoseEscalationLevelFirst | DoseEscalationLevelIntermediate | DoseEscalationLevelFinal

Individual dose escalation level configuration. This is a discriminated union with three variants: First level (isFirstLevel=true), Intermediate level (isFinalLevel=false, has adverseEventRate), and Final level (isFinalLevel=true, no duration).

DoseEscalationLevelBase object

Base properties shared by all dose escalation level variants.

kitItemQuantities object required

Mapping of kit item IDs to quantities consumed per dose at this escalation level.

ordering number required

Display order of this level within the escalation sequence. Lower numbers appear first.

DoseEscalationLevelFirst

First escalation level. Has isFirstLevel=true, isFinalLevel=false, duration and durationUnit. Does NOT have adverseEventRate because adverse events occur when trialing a level, and there is no previous level to trial from.

DoseEscalationLevelIntermediate

Intermediate escalation level (not first, not final). Has isFinalLevel=false, duration, durationUnit, and adverseEventRate. Does NOT have isFirstLevel property.

DoseEscalationLevelFinal

Final escalation level. Has isFinalLevel=true and adverseEventRate. Does NOT have duration or durationUnit (subjects continue at final level until treatment ends).

WeightBasedConfig object

Configuration for weight-based dosing.

weightUnit string required

Unit of weight measurement.

Values: "lbs" "kg"
ranges object required

Map of range IDs to weight ranges for kit assignment. Use ordering property to maintain display order.

WeightRange object

Weight range configuration for dosing.

kitItemQuantities object required

Mapping of kit item IDs to quantities consumed per dose for subjects in THIS weight range. Each value represents the number of units (e.g., tablets) of that item required for a single dose. Different weight ranges can specify different quantities for the same item.

fromWeight number | null required

Minimum weight for this range (null for no lower bound).

min=0
toWeight number | null required

Maximum weight for this range (null for no upper bound).

min=0
expectedPercentage number required

Expected percentage of subjects in this weight range.

min=0max=100
ordering number required

Display order of this range. Lower numbers appear first.

AgeBasedConfig object

Configuration for age-based dosing.

ageUnit string required

Unit of age measurement.

Values: "years" "months"
ranges object required

Map of range IDs to age ranges for kit assignment. Use ordering property to maintain display order.

AgeRange object

Age range configuration for dosing.

kitItemQuantities object required

Mapping of kit item IDs to quantities consumed per dose for subjects in THIS age range. Each value represents the number of units (e.g., tablets) of that item required for a single dose. Different age ranges can specify different quantities for the same item.

fromAge number | null required

Minimum age for this range (null for no lower bound).

min=0
toAge number | null required

Maximum age for this range (null for no upper bound).

min=0
expectedPercentage number required

Expected percentage of subjects in this age range.

min=0max=100
ordering number required

Display order of this range. Lower numbers appear first.

TreatmentPeriod object

Treatment period in a dosing regimen sequence.

periodType string required

Discriminator identifying this as a treatment period.

Constant: "treatment"
dosingRegimenId string required

ID of the dosing regimen used during this treatment period.

ordering number required

Order position of this period in the sequence.

WashoutPeriod object

Washout period (no dosing) in a dosing regimen sequence.

periodType string required

Discriminator identifying this as a washout period.

Constant: "washout"
duration number required

Duration of the washout period.

exclusiveMin=0
durationUnit string required

Unit of washout duration.

Values: "days" "weeks" "months" "years"
ordering number required

Order position of this period in the sequence.

SequencePeriod TreatmentPeriod | WashoutPeriod
SequencePeriodMap object

Ordered sequence of treatment and washout periods, keyed by unique period ID.

TreatmentArm object

Treatment arm configuration from wizard step 5.

name string required

Name of the treatment arm.

allocationPercentage number required

Percentage of subjects allocated to this arm.

min=0max=100
dosingRegimenSequence object required

Ordered sequence of treatment and washout periods, keyed by unique period ID.

SubjectFlow object

Site supply and region configuration from wizard step 6.

regions object required

Region-specific site configuration, keyed by ID.

RegionConfig RegionContainer | RegionLeaf
RegionContainer object

Container node for grouping regions. Has subregions but no sites.

nodeType string required

Discriminator identifying this as a container node.

Constant: "container"
regionName string required

Name of the region container.

subregions object required

Child regions within this container.

activationStartDate string | null

Default activation start date for child regions. Null means no default.

format=date
screenRate number | null

Default screen rate for child regions. Null means no default.

exclusiveMin=0
siteActivationRate number | null

Default site activation rate for child regions. Null means no default.

exclusiveMin=0
maxEnrollmentPerSite number | null

Default max enrollment per site for child regions. Null means no default.

min=0
siteSeeding null | object

Default site seeding quantity per kit for child regions. Map of kitId to quantity, or null to inherit.

RegionLeaf object

Leaf node representing an operational region with sites.

nodeType string required

Discriminator identifying this as a leaf region node.

Constant: "region"
regionName string required

Name of the region.

numberOfSites integer required

Total number of sites in this region.

min=1
activationStartDate string | null

Date when site activation begins. Null inherits from parent container.

format=date
screenRate number | null

Number of subjects screened per site per month. Null inherits from parent container.

exclusiveMin=0
siteActivationRate number | null

Number of sites activated per month. Null inherits from parent container.

exclusiveMin=0
maxEnrollmentPerSite number | null

Maximum number of patients that can be enrolled per site. Null for unlimited or inherited.

min=0
siteSeeding null | object

Site seeding quantity per kit. Map of kitId to quantity, or null to inherit from parent.

RegionForecast object

Atomic monthly forecast data for a single region. All values are monthly (not cumulative). UI computes cumulative views.

sites object required

Mapping of dates to positive numerical values.

subjectsScreened object required

Mapping of dates to positive numerical values.

subjectsScreenedOut object required

Mapping of dates to positive numerical values.

subjectsEnrolled object required

Mapping of treatment arm IDs to date-value maps. Each arm ID maps to a PositiveDateMap.

subjectsActive object required

Mapping of treatment arm IDs to date-value maps. Each arm ID maps to a PositiveDateMap.

subjectsCompleted object required

Mapping of treatment arm IDs to date-value maps. Each arm ID maps to a PositiveDateMap.

subjectsDroppedOut object required

Mapping of treatment arm IDs to date-value maps. Each arm ID maps to a PositiveDateMap.

kitDemand object required

Mapping of treatment arm IDs to sequence periods to kit demand. Structure: arm → sequenceId → kit → KitDemandEntry. The sequence ID matches keys in dosingRegimenSequence.

kitItemDemand object required

Mapping of treatment arm IDs to sequence periods to kit item consumption. Structure: arm → sequenceId → item → KitItemDemandEntry. The sequence ID matches keys in dosingRegimenSequence. Displayed as 'Dosing' in the UI.

siteSeedingKitDemand object required

Mapping of kit IDs to date-value maps for site-level kit demand (not per-arm).

ClinicalDemandCalculatedForecast object

Atomic monthly forecast data. Contains per-region data only. UI computes global totals and cumulative views.

byRegion Record<string, object> required

Region-specific forecast data keyed by region ID.

PositiveDateMap object

Mapping of dates to positive numerical values.

ByArmDateMap object

Mapping of treatment arm IDs to date-value maps. Each arm ID maps to a PositiveDateMap.

KitDemandEntry object

Kit demand with placeboOf tagging for active/placebo separation.

demand object required

Mapping of dates to positive numerical values.

placeboOf string | null required

Regimen ID this is placebo of, or null if active.

KitItemDemandEntry object

Kit item consumption entry with placeboOf tagging for active/placebo separation. Represents what patients actually receive, not supply demand.

demand object required

Mapping of dates to positive numerical values.

placeboOf string | null required

Regimen ID this is placebo of, or null if active.

ByArmSequenceKitDateMap object

Mapping of treatment arm IDs to sequence periods to kit demand. Structure: arm → sequenceId → kit → KitDemandEntry. The sequence ID matches keys in dosingRegimenSequence.

ByArmSequenceKitItemDateMap object

Mapping of treatment arm IDs to sequence periods to kit item consumption. Structure: arm → sequenceId → item → KitItemDemandEntry. The sequence ID matches keys in dosingRegimenSequence. Displayed as 'Dosing' in the UI.

ByKitDateMap object

Mapping of kit IDs to date-value maps for site-level kit demand (not per-arm).

ClinicalDemandActuals object

Actual enrollment data entered by users to reconcile with forecast.

enrollment object required

Actual enrollment by region and month.

sites object required

Actual site counts by region and month.

notes object required

Explanatory notes for enrollment actuals by region and month.

siteNotes object required

Explanatory notes for site activation actuals by region and month.