Skip to documentation
ReferenceImplementation

Implementation

Execution capabilities

The exact representation accepted by the current application.

There is one .usim scenario schema. Builder, Marketplace, Campus and Workspace retain that same document representation. A valid document may include capabilities that a particular consumer does not execute.

The current simulator executes one patient and the documented action, schedule, observation and response behaviors. Multiple-patient content and other future features remain valid and are preserved; unsupported required behavior prevents a run before it starts.

Authoring annotations select controls and provide guidance. They do not define a separate data format. Consumers must preserve unedited fields, report unsupported behavior, and never silently strip future content.

Profile fields

Requiredness is relative to the containing object. Optional groups can be omitted; their required children apply when the group is provided. The scenario schema supplies these fields, Builder controls, AI schemas, and structural validation. The runtime adds graph and execution checks.

Download the authoring specification

PathShapePresenceConstraints / editor
formatstringRequired—
formatVersionstringRequired—
scenarioIdstringRequired128 characters
executionProfileobjectOptional—
executionProfile.idstringRequired—
executionProfile.versionstringRequired—
executionProfile.requiredCapabilitiesarrayRequired—
executionProfile.requiredCapabilities.*stringOptional—
executionProfile.optionalCapabilitiesarrayRequired—
executionProfile.optionalCapabilities.*stringOptional—
extensionsobjectOptional—
vocabulariesarrayOptional—
vocabularies.*objectOptional—
vocabularies.*.idstringRequired—
vocabularies.*.versionstringRequired—
vocabularies.*.kindunionRequired—
vocabularies.*.sha256stringRequired—
vocabularies.*.assetIdstringOptional128 characters
dependenciesarrayOptional—
dependencies.*objectOptional—
dependencies.*.idstringRequired128 characters
dependencies.*.scenarioIdstringRequired128 characters
dependencies.*.revisionintegerRequiredmin 1
dependencies.*.sha256stringRequired—
compositionobjectOptional—
composition.overridesarrayRequired—
composition.overrides.*objectOptional—
composition.overrides.*.targetIdstringRequired128 characters
composition.overrides.*.pathstringRequired—
composition.overrides.*.valueunionRequired—
outputsobjectOptional—
outputs.viewsarrayRequired—
outputs.views.*objectOptional—
outputs.views.*.idstringRequired128 characters
outputs.views.*.audienceunionRequired—
outputs.views.*.kindunionRequired—
outputs.views.*.includeIdsarrayRequired—
outputs.views.*.includeIds.*stringOptional128 characters
metadataobjectRequired—
metadata.titlestringRequired160 characters
metadata.summarystringRequired8000 characters · textarea
metadata.contributorsarrayRequiredcredits
metadata.contributors.*objectOptional—
metadata.contributors.*.idstringRequired128 characters
metadata.contributors.*.namestringRequired160 characters
metadata.contributors.*.rolesarrayRequired—
metadata.contributors.*.roles.*stringOptional160 characters
metadata.contributors.*.affiliationstringOptional240 characters
metadata.revisionintegerRequiredmin 1
metadata.licenseobjectRequired—
metadata.license.identifierstringRequired240 characters
metadata.license.textAssetIdstringOptional128 characters
metadata.reviewobjectRequired—
metadata.review.statusstringRequired—
metadata.review.reviewedAtstringOptional80 characters
metadata.review.reviewerIdsarrayRequired—
metadata.review.reviewerIds.*stringOptional128 characters
metadata.review.sourceIdsarrayRequired—
metadata.review.sourceIds.*stringOptional128 characters
metadata.sourcesarrayRequired—
metadata.sources.*objectOptional—
metadata.sources.*.idstringRequired128 characters
metadata.sources.*.citationstringRequired8000 characters · textarea
metadata.sources.*.urlstringOptional—
metadata.sources.*.accessedAtstringOptional80 characters
metadata.diagnosisstringOptional1000 characters · diagnosis
metadata.specialtystringOptional1000 characters · specialty
metadata.levelstringOptional1000 characters · level
metadata.durationMinutesnumberOptionalmin 1 · max 1440 · min
metadata.learnerTitlestringOptional160 characters
metadata.learnerDescriptionstringOptional2000 characters · textarea
metadata.coverPhotoobjectOptionalcover-photo
metadata.coverPhoto.dataUrlstringRequired12582912 characters
metadata.coverPhoto.descriptionstringRequired1000 characters
patientsarrayRequired—
patients.*objectOptional—
patients.*.idstringRequired128 characters
patients.*.namestringRequired160 characters
patients.*.preferredNamestringOptional160 characters
patients.*.baselineFunctionstringOptional2000 characters · textarea
patients.*.communicationobjectOptional—
patients.*.communication.preferredLanguagestringOptional160 characters
patients.*.communication.interpreterNeedsstringOptional1000 characters · textarea
patients.*.communication.methodstringOptional500 characters
patients.*.communication.supportsstringOptional2000 characters · textarea
patients.*.demographicsobjectOptionaldemographics
patients.*.demographics.ageobjectOptionalage
patients.*.demographics.age.valuenumberRequiredmin 0
patients.*.demographics.age.unitunionRequired—
patients.*.demographics.weightobjectOptional—
patients.*.demographics.weight.valuenumberRequiredmin 0 · max 1000
patients.*.demographics.weight.unitstringRequired—
patients.*.demographics.heightobjectOptional—
patients.*.demographics.height.valuenumberRequiredmin 0 · max 400
patients.*.demographics.height.unitstringRequired—
patients.*.demographics.genderstringOptional160 characters · gender
patients.*.demographics.pronounsstringOptional160 characters
patients.*.demographics.sexualOrientationstringOptional160 characters
patients.*.demographics.sexAssignedAtBirthstringOptional160 characters
patients.*.demographics.heightUnitstringOptional—
patients.*.demographics.weightUnitstringOptional—
patients.*.historyarrayOptionalhistory
patients.*.history.*unionOptional—
patients.*.history.*.idstringRequired128 characters
patients.*.history.*.contentstringRequired—
patients.*.history.*.disclosureunionRequired—
patients.*.history.*.disclosure.audiencearrayRequired—
patients.*.history.*.disclosure.audience.*unionOptional—
patients.*.history.*.disclosure.modeunionRequired—
patients.*.history.*.disclosure.resourceIdstringOptional128 characters
patients.*.history.*.disclosure.actionIdstringOptional128 characters
patients.*.history.*.disclosure.conditionIdstringOptional128 characters
patients.*.history.*.occurredAtSecondsnumberOptional—
patients.*.history.*.categoryunionRequired—
patients.*.history.*.allergyobjectOptional—
patients.*.history.*.allergy.substancestringRequired1000 characters
patients.*.history.*.allergy.reactionstringOptional1000 characters
patients.*.history.*.allergy.severityunionOptional—
patients.*.reviewOfSystemsarrayOptional—
patients.*.reviewOfSystems.*objectOptional—
patients.*.reviewOfSystems.*.systemstringRequired—
patients.*.reviewOfSystems.*.observationIdsarrayRequired—
patients.*.reviewOfSystems.*.observationIds.*stringOptional128 characters
patients.*.variablesarrayOptionalvariables
patients.*.variables.*objectOptional—
patients.*.variables.*.idstringRequired128 characters
patients.*.variables.*.conceptstringRequired—
patients.*.variables.*.valuenumberOptional—
patients.*.variables.*.unitstringRequired—
patients.*.monitorobjectOptionalmonitor
patients.*.monitor.rhythmstringOptional—
patients.*.monitor.pulsePresentbooleanOptional—
patients.*.monitor.connectionsobjectOptional—
patients.*.monitor.connections.ecgbooleanOptional—
patients.*.monitor.connections.bloodPressurebooleanOptional—
patients.*.monitor.connections.spo2booleanOptional—
patients.*.monitor.connections.respirationbooleanOptional—
patients.*.monitor.connections.temperaturebooleanOptional—
patients.*.monitor.connections.capnographybooleanOptional—
patients.*.monitor.connections.arterialPressurebooleanOptional—
patients.*.airwayunionOptional—
patients.*.airway.statusstringRequired—
patients.*.airway.deviceIdstringOptional128 characters
patients.*.contextstringRequired8000 characters · textarea
patients.*.photoobjectOptionalpatient-photo
patients.*.photo.dataUrlstringRequired12582912 characters
patients.*.photo.descriptionstringRequired1000 characters
assetsarrayOptional—
assets.*unionOptional—
assets.*.idstringRequired128 characters
assets.*.mediaTypestringRequired—
assets.*.descriptionstringRequired—
assets.*.licensestringRequired—
assets.*.attributionstringRequired—
assets.*.labelstringOptional—
assets.*.transcriptAssetIdstringOptional128 characters
assets.*.pathstringOptional—
assets.*.sha256stringOptional—
assets.*.dataUrlstringOptional—
assets.*.uristringOptional—
observationsarrayOptionalobservations
observations.*unionOptional—
observations.*.idstringRequired128 characters
observations.*.patientIdstringRequired128 characters
observations.*.codestringRequired—
observations.*.kindunionRequired—
observations.*.collectedAtSecondsnumberOptional—
observations.*.availableAtSecondsnumberOptionalmin 0
observations.*.methodstringOptional—
observations.*.disclosureunionRequired—
observations.*.disclosure.audiencearrayRequired—
observations.*.disclosure.audience.*unionOptional—
observations.*.disclosure.modeunionRequired—
observations.*.disclosure.resourceIdstringOptional128 characters
observations.*.disclosure.actionIdstringOptional128 characters
observations.*.disclosure.conditionIdstringOptional128 characters
observations.*.reportedByActorIdstringOptional128 characters
observations.*.reliabilityNotestringOptional—
observations.*.variableIdstringOptional128 characters
observations.*.referenceIntervalobjectOptional—
observations.*.referenceInterval.lownumberOptional—
observations.*.referenceInterval.highnumberOptional—
observations.*.referenceInterval.textstringOptional—
observations.*.referenceInterval.unitstringOptional—
observations.*.referenceInterval.contextstringRequired—
observations.*.flagunionOptional—
observations.*.statusstringRequired—
observations.*.valuenumberOptional—
observations.*.unitstringOptional—
environmentobjectRequired—
environment.settingstringRequired2000 characters · textarea
environment.teamRolesarrayOptional—
environment.teamRoles.*objectOptional—
environment.teamRoles.*.idstringRequired128 characters
environment.teamRoles.*.namestringRequired—
environment.teamRoles.*.minCountintegerRequiredmin 0
environment.teamRoles.*.maxCountintegerRequiredmin 0
environment.teamRoles.*.briefstringRequiredtextarea
environment.requirementsarrayRequired32 items · requirements
environment.requirements.*objectOptional—
environment.requirements.*.idstringRequired128 characters
environment.requirements.*.descriptionstringRequired240 characters
environment.requirements.*.resourceIdsarrayOptional—
environment.requirements.*.resourceIds.*stringOptional128 characters
environment.requirements.*.substitutionsarrayOptional—
environment.requirements.*.substitutions.*stringOptional—
environment.requirements.*.requiredbooleanOptional—
environment.actorsarrayOptional32 items
environment.actors.*objectOptional—
environment.actors.*.idstringRequired128 characters
environment.actors.*.namestringRequired160 characters
environment.actors.*.rolestringRequired1000 characters
environment.actors.*.openingstringOptionaltextarea
environment.actors.*.knowledgearrayOptional—
environment.actors.*.knowledge.*stringOptional—
environment.actors.*.affectstringOptionaltextarea
environment.actors.*.cuesarrayOptional—
environment.actors.*.cues.*objectOptional—
environment.actors.*.cues.*.idstringRequired128 characters
environment.actors.*.cues.*.conditionIdstringRequired128 characters
environment.actors.*.cues.*.linestringRequiredtextarea
environment.actors.*.cues.*.deliveryunionRequired—
environment.actors.*.cues.*.maxUsesintegerRequiredmin 1
environment.actors.*.briefstringRequired8000 characters · textarea
environment.actors.*.demographicsobjectOptional—
environment.actors.*.demographics.ageobjectOptionalage
environment.actors.*.demographics.age.valuenumberRequiredmin 0
environment.actors.*.demographics.age.unitunionRequired—
environment.actors.*.demographics.genderstringOptional160 characters · gender
environment.resetStepsarrayOptional—
environment.resetSteps.*stringOptional—
environment.equipmentarrayOptional64 items
environment.equipment.*stringOptional1000 characters
environment.patientSceneobjectOptionalscene
environment.patientScene.modelUrlstringRequired2000 characters
environment.patientScene.attributionstringRequired2000 characters
environment.patientScene.markersarrayRequired128 items
environment.patientScene.markers.*objectOptional—
environment.patientScene.markers.*.actionIdstringRequired128 characters
environment.patientScene.markers.*.positionstringRequired160 characters
environment.patientScene.markers.*.normalstringRequired160 characters
educationobjectRequired—
education.rationalestringOptional8000 characters · textarea
education.preparationarrayOptionalpreparation
education.preparation.*objectOptional—
education.preparation.*.idstringRequired128 characters
education.preparation.*.audienceunionRequired—
education.preparation.*.instructionsstringRequiredmarkdown
education.preparation.*.assetIdsarrayRequired—
education.preparation.*.assetIds.*stringOptional128 characters
education.objectivesarrayRequired32 items · objectives
education.objectives.*objectOptional—
education.objectives.*.idstringRequired128 characters
education.objectives.*.statementstringRequired1000 characters
education.objectives.*.evidenceActionIdsarrayOptional—
education.objectives.*.evidenceActionIds.*stringOptional128 characters
education.objectives.*.acgmeCompetenciesarrayOptional6 items
education.objectives.*.acgmeCompetencies.*unionOptional—
education.objectives.*.domainunionOptional—
education.objectives.*.performanceobjectOptional—
education.objectives.*.performance.contextstringRequired—
education.objectives.*.performance.expectedBehaviorstringRequired—
education.objectives.*.performance.successCriteriastringRequired—
education.objectives.*.performance.scopeunionRequired—
education.objectives.*.curriculumMappingsarrayOptional—
education.objectives.*.curriculumMappings.*objectOptional—
education.objectives.*.curriculumMappings.*.frameworkstringRequired—
education.objectives.*.curriculumMappings.*.versionstringRequired—
education.objectives.*.curriculumMappings.*.codestringRequired—
education.objectives.*.curriculumMappings.*.labelstringRequired—
education.objectives.*.learnerBriefstringOptional—
education.debriefPromptsarrayRequireddebrief
education.debriefPrompts.*objectOptional—
education.debriefPrompts.*.idstringRequired128 characters
education.debriefPrompts.*.objectiveIdsarrayOptional—
education.debriefPrompts.*.objectiveIds.*stringOptional128 characters
education.debriefPrompts.*.questionstringRequired12000 characters
education.debriefPrompts.*.facilitatorRationalestringOptionaltextarea
education.assessmentarrayOptional64 items · assessment
education.assessment.*objectOptional—
education.assessment.*.objectiveIdstringOptional128 characters
education.assessment.*.idstringRequired128 characters
education.assessment.*.labelstringRequired1000 characters
education.assessment.*.actionIdstringRequired128 characters
education.assessment.*.objectIdstringOptional128 characters
education.assessment.*.objectIdsarrayOptional1000 items
education.assessment.*.objectIds.*stringOptional128 characters
education.assessment.*.pointsnumberRequiredmin 1 · max 100
education.assessment.*.withinSecondsnumberOptionalmin 0 · max 86400 · s
education.assessment.*.feedbackstringRequired8000 characters · textarea
education.assessment.*.learningUrlstringOptional2000 characters
resourcesarrayOptional2048 items · resources
resources.*objectOptional—
resources.*.idstringRequired128 characters
resources.*.kindstringRequired—
resources.*.namestringRequired240 characters
resources.*.builderTitlestringOptional240 characters
resources.*.diagnosticobjectOptional—
resources.*.diagnostic.categoryunionRequired—
resources.*.diagnostic.specimenstringOptional—
resources.*.diagnostic.collectionInstructionsstringOptional—
resources.*.diagnostic.resultIdsarrayOptional—
resources.*.diagnostic.resultIds.*stringOptional128 characters
resources.*.diagnostic.acquisitionobjectOptional—
resources.*.diagnostic.acquisition.bodyRegionstringOptional—
resources.*.diagnostic.acquisition.viewstringOptional—
resources.*.diagnostic.acquisition.techniquestringOptional—
resources.*.diagnostic.orthostaticResponseobjectOptional—
resources.*.diagnostic.orthostaticResponse.patientIdstringOptional128 characters
resources.*.diagnostic.orthostaticResponse.systolicVariableIdstringOptional128 characters
resources.*.diagnostic.orthostaticResponse.diastolicVariableIdstringOptional128 characters
resources.*.diagnostic.orthostaticResponse.systolicDropnumberRequiredmin 0 · max 100
resources.*.diagnostic.orthostaticResponse.diastolicDropnumberRequiredmin 0 · max 100
resources.*.diagnostic.ecgobjectOptional—
resources.*.diagnostic.ecg.leadConfigurationstringRequired—
resources.*.diagnostic.ecg.paperSpeedMmPerSecondnumberOptional—
resources.*.diagnostic.ecg.gainMmPerMvnumberOptional—
resources.*.diagnostic.ecg.rhythmObservationIdstringOptional128 characters
resources.*.diagnostic.ecg.findingObservationIdsarrayRequired—
resources.*.diagnostic.ecg.findingObservationIds.*stringOptional128 characters
resources.*.diagnostic.ecg.recordingAssetIdstringRequired128 characters
resources.*.descriptionstringOptional8000 characters · textarea
resources.*.equipmentobjectOptional—
resources.*.equipment.typestringOptional—
resources.*.equipment.statusunionOptional—
resources.*.equipment.patientIdstringOptional128 characters
resources.*.equipment.sitestringOptional—
resources.*.equipment.sizestringOptional—
resources.*.equipment.measurementIdsarrayOptional—
resources.*.equipment.measurementIds.*stringOptional128 characters
resources.*.equipment.placementobjectOptional—
resources.*.equipment.placement.placedAtSecondsnumberOptional—
resources.*.equipment.placement.confirmationunionRequired—
resources.*.equipment.placement.notestringOptional—
resources.*.equipment.capabilitiesarrayOptional—
resources.*.equipment.capabilities.*stringOptional—
resources.*.equipment.monitorConnectionobjectOptional—
resources.*.equipment.monitorConnection.channelunionRequired—
resources.*.equipment.monitorConnection.connectedbooleanRequired—
resources.*.equipment.ventilationobjectOptional—
resources.*.equipment.ventilation.modestringRequired—
resources.*.equipment.ventilation.settingsarrayRequired—
resources.*.equipment.ventilation.settings.*objectOptional—
resources.*.equipment.ventilation.settings.*.namestringRequired—
resources.*.equipment.ventilation.settings.*.valuenumberRequired—
resources.*.equipment.ventilation.settings.*.unitstringRequired—
resources.*.equipment.ventilation.measurementIdsarrayRequired—
resources.*.equipment.ventilation.measurementIds.*stringOptional128 characters
resources.*.equipment.ventilation.alarmsarrayRequired—
resources.*.equipment.ventilation.alarms.*objectOptional—
resources.*.equipment.ventilation.alarms.*.idstringRequired128 characters
resources.*.equipment.ventilation.alarms.*.conditionIdstringRequired128 characters
resources.*.equipment.ventilation.alarms.*.messagestringRequired—
resources.*.equipment.ventilation.alarms.*.severityunionRequired—
resources.*.sourcestringOptional2000 characters
resources.*.responseobjectOptional—
resources.*.response.releaseOnStateIdstringOptional128 characters
resources.*.response.delaySecondsnumberOptionalmin 0
resources.*.response.effectIdsarrayOptional—
resources.*.response.effectIds.*stringOptional128 characters
resources.*.response.nextStateIdstringOptional128 characters
resources.*.sourceIdsarrayOptional—
resources.*.sourceIds.*stringOptional128 characters
resources.*.medicationobjectOptional—
resources.*.medication.ingredientstringRequired—
resources.*.medication.formulationstringRequired—
resources.*.medication.concentrationobjectOptional—
resources.*.medication.concentration.numeratorobjectRequired—
resources.*.medication.concentration.numerator.valuenumberRequired—
resources.*.medication.concentration.numerator.unitstringRequired—
resources.*.medication.concentration.denominatorobjectRequired—
resources.*.medication.concentration.denominator.valuenumberRequired—
resources.*.medication.concentration.denominator.unitstringRequired—
resources.*.medication.allowedRoutesarrayRequired—
resources.*.medication.allowedRoutes.*stringOptional—
resources.*.consultationobjectOptional—
resources.*.consultation.servicestringRequired—
resources.*.consultation.actorIdstringRequired128 characters
resources.*.consultation.requestedInformationarrayRequired—
resources.*.consultation.requestedInformation.*stringOptional—
resources.*.consultation.responseResultIdsarrayRequired—
resources.*.consultation.responseResultIds.*stringOptional128 characters
resources.*.procedureobjectOptional—
resources.*.procedure.indicationstringRequired—
resources.*.procedure.requiredResourceIdsarrayRequired—
resources.*.procedure.requiredResourceIds.*stringOptional128 characters
resources.*.procedure.stepsarrayRequired—
resources.*.procedure.steps.*unionOptional—
resources.*.procedure.steps.*.idstringRequired128 characters
resources.*.procedure.steps.*.instructionstringRequired—
resources.*.procedure.steps.*.evidencestringRequired—
resources.*.procedure.steps.*.criticalbooleanRequired—
resources.*.procedure.steps.*.actionIdstringOptional128 characters
resources.*.procedure.outcomeActionIdstringRequired128 characters
resources.*.procedure.complicationsarrayOptional—
resources.*.procedure.complications.*objectOptional—
resources.*.procedure.complications.*.idstringRequired128 characters
resources.*.procedure.complications.*.descriptionstringRequired—
resources.*.procedure.complications.*.conditionIdstringRequired128 characters
resources.*.procedure.complications.*.effectIdsarrayRequired—
resources.*.procedure.complications.*.effectIds.*stringOptional128 characters
resources.*.resultsarrayOptional—
resources.*.results.*objectOptional—
resources.*.results.*.idstringRequired128 characters
resources.*.results.*.contentstringRequired—
resources.*.results.*.observationIdsarrayRequired—
resources.*.results.*.observationIds.*stringOptional128 characters
resources.*.results.*.assetIdsarrayRequired—
resources.*.results.*.assetIds.*stringOptional128 characters
resources.*.results.*.disclosureunionRequired—
resources.*.results.*.disclosure.audiencearrayRequired—
resources.*.results.*.disclosure.audience.*unionOptional—
resources.*.results.*.disclosure.modeunionRequired—
resources.*.results.*.disclosure.resourceIdstringOptional128 characters
resources.*.results.*.disclosure.actionIdstringOptional128 characters
resources.*.results.*.disclosure.conditionIdstringOptional128 characters
resources.*.results.*.interpretationobjectOptional—
resources.*.results.*.interpretation.learnerstringOptional—
resources.*.results.*.interpretation.facilitatorstringRequired—
resources.*.results.*.panelNamestringOptional—
resources.*.results.*.specimenStatusunionOptional—
eventsobjectRequired—
events.flagsarrayOptional—
events.flags.*objectOptional—
events.flags.*.idstringRequired128 characters
events.flags.*.initialValuebooleanRequired—
events.conditionsarrayOptional—
events.conditions.*objectOptional—
events.conditions.*.idstringRequired128 characters
events.conditions.*.allarrayRequired—
events.conditions.*.all.*unionOptional—
events.conditions.*.all.*.targetIdstringRequired128 characters
events.conditions.*.all.*.operatorunionRequired—
events.conditions.*.all.*.valuenumberRequired—
events.schedulesarrayOptional—
events.schedules.*unionOptional—
events.schedules.*.idstringRequired128 characters
events.schedules.*.labelstringOptional—
events.schedules.*.descriptionstringOptional—
events.schedules.*.resourceIdstringOptional128 characters
events.schedules.*.cancelOnActionIdsarrayOptional—
events.schedules.*.cancelOnActionIds.*stringOptional128 characters
events.schedules.*.delaySecondsnumberRequired—
events.schedules.*.conditionIdstringOptional128 characters
events.schedules.*.priorityintegerRequired—
events.schedules.*.effectIdsarrayRequired—
events.schedules.*.effectIds.*stringOptional128 characters
events.schedules.*.nextStateIdstringOptional128 characters
events.schedules.*.repeatobjectOptional—
events.schedules.*.repeat.intervalSecondsnumberRequired—
events.schedules.*.repeat.countintegerRequiredmin 1
events.schedules.*.anchorobjectRequired—
events.schedules.*.anchor.kindstringRequired—
events.schedules.*.onAnchorStateExitunionOptional—
events.effectsarrayOptional—
events.effects.*unionOptional—
events.effects.*.idstringRequired128 characters
events.effects.*.kindstringRequired—
events.effects.*.targetIdstringOptional128 characters
events.effects.*.valuenumberOptional—
events.effects.*.unitstringOptional—
events.effects.*.durationSecondsnumberOptional—
events.effects.*.interpolationstringOptional—
events.effects.*.percentnumberOptionalmin -100 · max 1000
events.effects.*.patientIdstringOptional128 characters
events.effects.*.modelIdstringOptional—
events.effects.*.channelunionOptional—
events.statesarrayRequired128 items · graph
events.states.*objectOptional—
events.states.*.idstringRequired128 characters
events.states.*.titlestringRequired240 characters
events.states.*.entryConditionIdstringOptional128 characters
events.states.*.exitConditionIdstringOptional128 characters
events.states.*.onEnterEffectIdsarrayOptional—
events.states.*.onEnterEffectIds.*stringOptional128 characters
events.states.*.onExitEffectIdsarrayOptional—
events.states.*.onExitEffectIds.*stringOptional128 characters
events.states.*.learnerBriefstringRequired8000 characters · textarea
events.states.*.facilitatorBriefstringRequired8000 characters · textarea
events.states.*.objectiveIdsarrayOptional—
events.states.*.objectiveIds.*stringOptional128 characters
events.states.*.kindstringRequired—
events.states.*.monitorobjectOptionalmonitor
events.states.*.monitor.rhythmstringOptional—
events.states.*.monitor.pulsePresentbooleanOptional—
events.states.*.monitor.connectionsobjectOptional—
events.states.*.monitor.connections.ecgbooleanOptional—
events.states.*.monitor.connections.bloodPressurebooleanOptional—
events.states.*.monitor.connections.spo2booleanOptional—
events.states.*.monitor.connections.respirationbooleanOptional—
events.states.*.monitor.connections.temperaturebooleanOptional—
events.states.*.monitor.connections.capnographybooleanOptional—
events.states.*.monitor.connections.arterialPressurebooleanOptional—
events.states.*.keybooleanOptional—
events.states.*.resourceTriggerobjectOptional—
events.states.*.resourceTrigger.modestringRequired—
events.states.*.resourceTrigger.objectIdsarrayRequired1000 items
events.states.*.resourceTrigger.objectIds.*stringOptional128 characters
events.actionsarrayRequired512 items
events.actions.*objectOptional—
events.actions.*.idstringRequired128 characters
events.actions.*.labelstringRequired1000 characters
events.actions.*.descriptionstringOptional6000 characters · textarea
events.actions.*.patientIdstringOptional128 characters
events.actions.*.resourceIdstringOptional128 characters
events.actions.*.completionCriteriastringOptional6000 characters · textarea
events.actions.*.completionobjectOptional—
events.actions.*.completion.modestringRequired—
events.actions.*.completion.resourceIdsarrayRequired1000 items
events.actions.*.completion.resourceIds.*stringOptional128 characters
events.actions.*.availableInStateIdsarrayRequired—
events.actions.*.availableInStateIds.*stringOptional128 characters
events.actions.*.conditionIdstringOptional128 characters
events.actions.*.durationSecondsnumberOptionalmin 0
events.actions.*.repeatobjectOptional—
events.actions.*.repeat.maxUsesintegerOptionalmin 1
events.actions.*.repeat.cooldownSecondsnumberRequiredmin 0
events.actions.*.cancellablebooleanOptional—
events.actions.*.onPhaseExitunionOptional—
events.actions.*.outcomesarrayRequired—
events.actions.*.outcomes.*objectOptional—
events.actions.*.outcomes.*.idstringRequired128 characters
events.actions.*.outcomes.*.whenConditionIdstringOptional128 characters
events.actions.*.outcomes.*.effectIdsarrayRequired—
events.actions.*.outcomes.*.effectIds.*stringOptional128 characters
events.actions.*.outcomes.*.nextStateIdstringOptional128 characters
events.actions.*.kindstringOptional—
events.actions.*.medicationOrderobjectOptional—
events.actions.*.medicationOrder.resourceIdstringRequired128 characters
events.actions.*.medicationOrder.patientIdstringRequired128 characters
events.actions.*.medicationOrder.doseobjectRequired—
events.actions.*.medicationOrder.dose.valuenumberRequired—
events.actions.*.medicationOrder.dose.unitstringRequired—
events.actions.*.medicationOrder.routestringRequired—
events.actions.*.medicationOrder.rateobjectOptional—
events.actions.*.medicationOrder.rate.numeratorobjectRequired—
events.actions.*.medicationOrder.rate.numerator.valuenumberRequired—
events.actions.*.medicationOrder.rate.numerator.unitstringRequired—
events.actions.*.medicationOrder.rate.denominatorobjectRequired—
events.actions.*.medicationOrder.rate.denominator.valuenumberRequired—
events.actions.*.medicationOrder.rate.denominator.unitstringRequired—
events.actions.*.administrationunionOptional—
events.actions.*.administration.orderActionIdstringRequired128 characters
events.actions.*.administration.modeunionRequired—
events.actions.*.administration.rateobjectOptional—
events.actions.*.administration.rate.numeratorobjectRequired—
events.actions.*.administration.rate.numerator.valuenumberRequired—
events.actions.*.administration.rate.numerator.unitstringRequired—
events.actions.*.administration.rate.denominatorobjectRequired—
events.actions.*.administration.rate.denominator.valuenumberRequired—
events.actions.*.administration.rate.denominator.unitstringRequired—

A complete scenario

Execution capabilities · Fictional authored example

scenario-example.jsonJSON
{
  "format": "usim-scenario",
  "formatVersion": "2.0",
  "scenarioId": "usim-reference-1",
  "metadata": {
    "revision": 1,
    "license": {
      "identifier": "All rights reserved"
    },
    "review": {
      "status": "draft",
      "reviewerIds": [],
      "sourceIds": []
    },
    "sources": [],
    "title": "A clear handoff",
    "summary": "Fictional team communication practice with a delayed result and two approaches to clarifying the situation.",
    "contributors": [
      {
        "id": "contributor-author",
        "roles": [
          "author"
        ],
        "name": "u-sim example team"
      }
    ],
    "diagnosis": "Communication rehearsal",
    "specialty": "Simulation education",
    "level": "Intermediate",
    "durationMinutes": 10
  },
  "patients": [
    {
      "id": "patient-primary",
      "name": "Alex Morgan (fictional)",
      "context": "A fictional adult is awaiting handoff. The incoming team needs a shared understanding of the situation and who will follow up an outstanding result.",
      "demographics": {
        "age": {
          "value": 40,
          "unit": "years"
        },
        "gender": "Not specified",
        "weight": {
          "value": 70,
          "unit": "kg"
        },
        "height": {
          "value": 170,
          "unit": "cm"
        }
      },
      "monitor": {
        "connections": {}
      },
      "variables": [
        {
          "id": "patient-primary-hr",
          "concept": "usim:hr",
          "value": 80,
          "unit": "beats/min"
        },
        {
          "id": "patient-primary-sbp",
          "concept": "usim:sbp",
          "value": 120,
          "unit": "mmHg"
        },
        {
          "id": "patient-primary-dbp",
          "concept": "usim:dbp",
          "value": 75,
          "unit": "mmHg"
        },
        {
          "id": "patient-primary-rr",
          "concept": "usim:rr",
          "value": 16,
          "unit": "breaths/min"
        },
        {
          "id": "patient-primary-spo2",
          "concept": "usim:spo2",
          "value": 98,
          "unit": "%"
        },
        {
          "id": "patient-primary-temperature",
          "concept": "usim:temperature",
          "value": 37,
          "unit": "Cel"
        },
        {
          "id": "patient-primary-etco2",
          "concept": "usim:etco2",
          "value": 35,
          "unit": "mmHg"
        }
      ],
      "history": [
        {
          "id": "patient-primary-history-chief-complaint-1",
          "content": "Awaiting a team handoff",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "chief-complaint"
        },
        {
          "id": "patient-primary-history-present-illness-1",
          "content": "The current care summary is incomplete in this fictional exercise.",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "present-illness"
        },
        {
          "id": "patient-primary-history-medical-1",
          "content": "No additional history authored",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "medical"
        },
        {
          "id": "patient-primary-history-allergy-1",
          "content": "Example substance — Reaction: Authored rash — Reaction severity: mild",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "allergy",
          "allergy": {
            "substance": "Example substance",
            "reaction": "Authored rash",
            "severity": "mild"
          }
        },
        {
          "id": "patient-primary-history-family-1",
          "content": "Not part of this exercise",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "family"
        },
        {
          "id": "patient-primary-history-social-1",
          "content": "Fictional training context",
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "initial"
          },
          "category": "social"
        }
      ]
    }
  ],
  "environment": {
    "setting": "A simulated handoff space",
    "requirements": [
      {
        "id": "requirement-1",
        "description": "Facilitator brief reviewed"
      },
      {
        "id": "requirement-2",
        "description": "Learner roles assigned"
      }
    ],
    "equipment": [
      "Handoff note"
    ],
    "actors": [
      {
        "id": "outgoing-team",
        "name": "Outgoing colleague",
        "role": "Facilitator",
        "brief": "Reveal missing context when the learner asks a focused question."
      }
    ]
  },
  "education": {
    "objectives": [
      {
        "id": "objective-1",
        "statement": "Clarify missing information"
      },
      {
        "id": "objective-2",
        "statement": "Agree on ownership of the next step"
      }
    ],
    "debriefPrompts": [
      {
        "id": "debrief-1",
        "question": "How did you establish a shared understanding? Who took responsibility for the outstanding result?"
      }
    ],
    "preparation": [
      {
        "id": "preparation-handoff",
        "audience": "learner",
        "instructions": "Familiarity with a local handoff framework",
        "assetIds": []
      }
    ],
    "rationale": "Practice explicit communication and follow-up ownership."
  },
  "events": {
    "states": [
      {
        "id": "baseline",
        "title": "Receive the handoff",
        "kind": "baseline",
        "key": true,
        "learnerBrief": "The outgoing colleague is ready. How will you establish the shared picture?",
        "facilitatorBrief": "Offer incomplete context, then respond to the learner’s approach."
      },
      {
        "id": "assessment",
        "title": "Clarify the context",
        "kind": "phase",
        "key": true,
        "learnerBrief": "You have clarified the missing information. Agree on the next step.",
        "facilitatorBrief": "Ask the learner to make ownership explicit."
      },
      {
        "id": "waiting",
        "title": "Await the update",
        "kind": "phase",
        "learnerBrief": "A result is pending. Agree who will review it while the simulated clock advances.",
        "facilitatorBrief": "Advance simulated time to allow the update."
      },
      {
        "id": "update",
        "title": "The update arrives",
        "kind": "phase",
        "learnerBrief": "The pending update is available. Confirm who will communicate the result.",
        "facilitatorBrief": "Ask for a closed-loop confirmation.",
        "onEnterEffectIds": [
          "update-hr"
        ]
      },
      {
        "id": "conclusion",
        "title": "Handoff complete",
        "kind": "conclusion",
        "key": true,
        "learnerBrief": "The team has confirmed the situation and the next step. Pause for reflection.",
        "facilitatorBrief": "Use the debrief prompts to compare both approaches."
      }
    ],
    "effects": [
      {
        "id": "update-hr",
        "targetId": "patient-primary-hr",
        "value": 82,
        "unit": "beats/min",
        "kind": "set-variable"
      }
    ],
    "actions": [
      {
        "id": "clarify",
        "label": "Ask for missing context",
        "availableInStateIds": [
          "baseline"
        ],
        "outcomes": [
          {
            "id": "clarify-outcome",
            "effectIds": [],
            "nextStateId": "assessment"
          }
        ]
      },
      {
        "id": "review",
        "label": "Review the summary and pending result",
        "availableInStateIds": [
          "baseline"
        ],
        "outcomes": [
          {
            "id": "review-outcome",
            "effectIds": [],
            "nextStateId": "waiting"
          }
        ],
        "resourceId": "handoff-result"
      },
      {
        "id": "confirm",
        "label": "Confirm responsibilities with a read-back",
        "availableInStateIds": [
          "assessment"
        ],
        "outcomes": [
          {
            "id": "confirm-outcome",
            "effectIds": [],
            "nextStateId": "conclusion"
          }
        ]
      },
      {
        "id": "close",
        "label": "Confirm who will communicate the result",
        "availableInStateIds": [
          "update"
        ],
        "outcomes": [
          {
            "id": "close-outcome",
            "effectIds": [],
            "nextStateId": "conclusion"
          }
        ]
      }
    ],
    "schedules": [
      {
        "id": "update-due",
        "label": "Receive the scheduled update",
        "anchor": {
          "kind": "state-entry",
          "refId": "waiting"
        },
        "delaySeconds": 30,
        "priority": 0,
        "effectIds": [],
        "nextStateId": "update",
        "onAnchorStateExit": "continue"
      }
    ]
  },
  "resources": [
    {
      "id": "handoff-result",
      "kind": "information",
      "name": "Pending handoff update",
      "description": "A fictional delayed update used to rehearse follow-up ownership.",
      "source": "Authored fictional documentation example",
      "results": [
        {
          "id": "handoff-result-result",
          "content": "The requested handoff information is now available. Confirm that the incoming colleague has received it.",
          "observationIds": [],
          "assetIds": [],
          "disclosure": {
            "audience": [
              "learner",
              "facilitator"
            ],
            "mode": "on-resource-response",
            "resourceId": "handoff-result"
          }
        }
      ],
      "response": {
        "delaySeconds": 30
      }
    }
  ],
  "observations": [
    {
      "id": "patient-primary-examination-general",
      "patientId": "patient-primary",
      "code": "usim:examination:general",
      "kind": "finding",
      "disclosure": {
        "audience": [
          "learner",
          "facilitator"
        ],
        "mode": "initial"
      },
      "status": "known",
      "value": "Comfortable and speaking with the team"
    },
    {
      "id": "patient-primary-ros-general",
      "patientId": "patient-primary",
      "code": "usim:ros:general",
      "kind": "symptom",
      "disclosure": {
        "audience": [
          "learner",
          "facilitator"
        ],
        "mode": "initial"
      },
      "status": "known",
      "value": "No additional symptoms authored"
    }
  ]
}

This is a raw scenario object. Package envelopes add publication and format metadata around it. The structural schema does not replace reference, timing, or publication validation.