RequestOrchestration
Introduction
Scope and Usage
This resource is a request resource from a FHIR workflow perspective - see Workflow, specifically Request.
The RequestOrchestration resource is used to represent a set of optional and related activities that may be performed for a specific patient or context. This resource is often, but not always, the result of applying a specific PlanDefinition to a particular patient. Other than differences that tie the RequestOrchestration to a particular subject and setting, the actionDefinition element of PlanDefinition is identical to the action element of the RequestOrchestration, allowing the same features and functionality to be used in both places to describe optionality of and relationships between activities in a workflow.
RequestOrchestrations can contain hierarchical groups of actions, where each specific action references the action to be performed (in terms of a Request resource), and each group describes additional behavior, relationships, and applicable conditions between the actions in the overall group.
Boundaries and Relationships
Explains how this resource relates to others. Particularly important is to differentiate between appropriate usages for related resources when an implementer might be confused about what to reference when.
Background and Context
Provides additional detail on exactly how the resource is to be used
Notes
Usage
The RequestOrchestration resource is used when there are temporal, co-occurrence or other dependencies between one or more steps of an overall workflow. For example, "do procedure A or procedure B, but not both" or "do procedure A after procedure B" or "Act on this ServiceRequest, then use the value of that observation in the calculation of the dose of this subsequent MedicationRequest". RequestOrchestrations that define actions (i.e. that are more than just narrative representations) will always reference other Request resources with an intent of "option".
Each "option" request can only be interpreted in the context of a RequestOrchestration that references it. This is because the RequestOrchestration defines the context in which the option request may/should/must occur, including any triggers, timing constraints, choices, sequencing requirements, etc. Typically such "option" requests will be contained resources due to this dependency. However, in some cases "option" requests may be stand-alone if they are immutable or tightly tied to a ActivityDefinition such that the option resources can safely be referenced without a risk of their content/intent changing
Elements in the "option" requests may include extensions for timing or other elements that allow calculation based on information found in the RequestOrchestration or other referenced "option" resources, as well as to expose elements within the "option" resource for referencing in other "option" resources. These extensions are:
- TODO
The RequestOrchestration and all of its referenced "option" Requests are treated as a single integrated Request whose status is the status of the RequestOrchestration. If there is a need to manage statuses of the different parts, separately, refer to the guidance here.
Documenting Choices
A RequestOrchestration can be used to document (wholly or in part) options that are to be chosen by the order filler when actually delivering care. There is no expectation for systems that fulfill a RequestOrchestration to specifically document which choices were made among the options defined. However, if this is needed, it could be accomplished with a 'filler-order' RequestOrchestration basedOn the 'original-order' RequestOrchestration that narrows the order to reflect the filling clinician's choices.
NOTE: The 'intent' of the requests referenced by a RequestOrchestration are never changed from Option to Order or some other value to convey 'selection'.
Completion
A RequestOrchestration is deemed to be complete when the requirements of the request options needed to satisfy at least one path through the overall request have been met or when the author of the RequestOrchestration deems it to be sufficiently complete.
StructureDefinition
Elements (Simplified)
- RequestOrchestration [0..*]: - A set of related requests
- RequestOrchestration.identifier [0..*]: Identifier Business identifier
- RequestOrchestration.instantiatesCanonical [0..*]: canonical Instantiates FHIR protocol or definition
- RequestOrchestration.instantiatesUri [0..*]: uri Instantiates external protocol or definition
- RequestOrchestration.basedOn [0..*]: Reference(Resource) Fulfills plan, proposal, or order
- RequestOrchestration.replaces [0..*]: Reference(Resource) Request(s) replaced by this request
- RequestOrchestration.groupIdentifier [0..1]: Identifier Composite request this is part of
- RequestOrchestration.status [1..1]: code required:request-status draft | active | on-hold | entered-in-error | ended | completed | revoked | unknown
- RequestOrchestration.intent [1..1]: code required:request-intent proposal | solicit-offer | offer-response | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
- RequestOrchestration.priority [0..1]: code required:request-priority routine | urgent | asap | stat
- RequestOrchestration.code [0..1]: CodeableConcept example:action-code What's being requested/ordered
- RequestOrchestration.subject [0..1]: [Reference(CareTeam](/Reference(CareTeam), Device, Group, HealthcareService, Location, Organization, Patient, Practitioner, PractitionerRole, RelatedPerson)) Who the request orchestration is about
- RequestOrchestration.encounter [0..1]: Reference(Encounter) Created as part of
- RequestOrchestration.authoredOn [0..1]: dateTime When the request orchestration was authored
- RequestOrchestration.author [0..1]: [Reference(Device](/Reference(Device), Practitioner, PractitionerRole)) Device or practitioner that authored the request orchestration
- RequestOrchestration.reason [0..*]: CodeableReference example:action-reason-code Why the request orchestration is needed
- RequestOrchestration.goal [0..*]: Reference(Goal) What goals
- RequestOrchestration.note [0..*]: Annotation Additional notes about the response
- RequestOrchestration.action [0..*]: BackboneElement Proposed actions, if any
- RequestOrchestration.action.linkId [0..1]: string Pointer to specific item from the PlanDefinition
- RequestOrchestration.action.prefix [0..1]: string User-visible prefix for the action (e.g. 1. or A.)
- RequestOrchestration.action.title [0..1]: string User-visible title
- RequestOrchestration.action.description [0..1]: markdown Short description of the action
- RequestOrchestration.action.textEquivalent [0..1]: markdown Static text equivalent of the action, used if the dynamic aspects cannot be interpreted by the receiving system
- RequestOrchestration.action.priority [0..1]: code required:request-priority routine | urgent | asap | stat
- RequestOrchestration.action.code [0..*]: CodeableConcept example:action-code Code representing the meaning of the action or sub-actions
- RequestOrchestration.action.documentation [0..*]: RelatedArtifact Supporting documentation for the intended performer of the action
- RequestOrchestration.action.goal [0..*]: Reference(Goal) What goals
- RequestOrchestration.action.condition [0..*]: BackboneElement Whether or not the action is applicable
- RequestOrchestration.action.condition.kind [1..1]: code required:action-condition-kind applicability | start | stop
- RequestOrchestration.action.condition.expression [0..1]: Expression Boolean-valued expression
- RequestOrchestration.action.input [0..*]: BackboneElement Input data requirements
- RequestOrchestration.action.input.title [0..1]: string User-visible title
- RequestOrchestration.action.input.requirement [0..1]: DataRequirement What data is provided
- RequestOrchestration.action.input.relatedData [0..1]: id What data is provided
- RequestOrchestration.action.output [0..*]: BackboneElement Output data definition
- RequestOrchestration.action.output.title [0..1]: string User-visible title
- RequestOrchestration.action.output.requirement [0..1]: DataRequirement What data is provided
- RequestOrchestration.action.output.relatedData [0..1]: string What data is provided
- RequestOrchestration.action.relatedAction [0..*]: BackboneElement Relationship to another action
- RequestOrchestration.action.relatedAction.targetId [1..1]: id What action this is related to
- RequestOrchestration.action.relatedAction.relationship [1..1]: code required:action-relationship-type before | before-start | before-end | concurrent | concurrent-with-start | concurrent-with-end | after | after-start | after-end
- RequestOrchestration.action.relatedAction.endRelationship [0..1]: code required:action-relationship-type before | before-start | before-end | concurrent | concurrent-with-start | concurrent-with-end | after | after-start | after-end
- RequestOrchestration.action.relatedAction.offset[x] [0..1]: Duration, Range Time offset for the relationship
- RequestOrchestration.action.timing[x] [0..1]: dateTime, Age, Period, Duration, Range, Timing, RelativeTime When the action should take place
- RequestOrchestration.action.location [0..1]: CodeableReference Where it should happen
- RequestOrchestration.action.participant [0..*]: BackboneElement Who should perform the action
- RequestOrchestration.action.participant.type [0..1]: code required:action-participant-type careteam | device | group | healthcareservice | location | organization | patient | practitioner | practitionerrole | relatedperson
- RequestOrchestration.action.participant.typeCanonical [0..1]: canonical Who or what can participate
- RequestOrchestration.action.participant.typeReference [0..1]: [Reference(BiologicallyDerivedProduct](/Reference(BiologicallyDerivedProduct), CareTeam, Device, Endpoint, HealthcareService, Location, Medication, MedicinalProductDefinition, Organization, Patient, Practitioner, PractitionerRole, RelatedPerson, Specimen, Substance, SubstanceDefinition)) Who or what can participate
- RequestOrchestration.action.participant.role [0..1]: CodeableConcept example:action-participant-role E.g. Nurse, Surgeon, Parent, etc
- RequestOrchestration.action.participant.function [0..1]: CodeableConcept example:action-participant-function E.g. Author, Reviewer, Witness, etc
- RequestOrchestration.action.participant.actor[x] [0..1]: canonical, [Reference(BiologicallyDerivedProduct](/Reference(BiologicallyDerivedProduct), CareTeam, Device, Endpoint, HealthcareService, Location, Medication, MedicinalProductDefinition, Organization, Patient, Practitioner, PractitionerRole, RelatedPerson, Specimen, Substance, SubstanceDefinition)) Who/what is participating?
- RequestOrchestration.action.type [0..1]: CodeableConcept extensible:action-type create | update | remove | fire-event
- RequestOrchestration.action.applicabilityBehavior [0..1]: code required:action-applicability-behavior all | any
- RequestOrchestration.action.groupingBehavior [0..1]: code required:action-grouping-behavior visual-group | logical-group | sentence-group
- RequestOrchestration.action.selectionBehavior [0..1]: code required:action-selection-behavior any | all | all-or-none | exactly-one | at-most-one | one-or-more
- RequestOrchestration.action.requiredBehavior [0..1]: code required:action-required-behavior must | could | must-unless-documented
- RequestOrchestration.action.precheckBehavior [0..1]: code required:action-precheck-behavior yes | no
- RequestOrchestration.action.cardinalityBehavior [0..1]: code required:action-cardinality-behavior single | multiple
- RequestOrchestration.action.resource [0..1]: Reference(Resource) The target of the action
- RequestOrchestration.action.definition[x] [0..1]: canonical, uri Description of the activity to be performed
- RequestOrchestration.action.transform [0..1]: canonical Transform to apply the template
- RequestOrchestration.action.dynamicValue [0..*]: BackboneElement Dynamic aspects of the definition
- RequestOrchestration.action.dynamicValue.path [0..1]: string The path to the element to be set dynamically
- RequestOrchestration.action.dynamicValue.expression [0..1]: Expression An expression that provides the dynamic value for the customization
- RequestOrchestration.action.action [0..*]: - Sub action
Mappings
- RequestOrchestration Mappings — 61 mapping entries
Resource Packs
list-RequestOrchestration-packs.xml
<?xml version="1.0" encoding="UTF-8"?>
<List xmlns="http://hl7.org/fhir">
<id value="RequestOrchestration-packs"/>
<status value="current"/>
<mode value="working"/>
</List>
Search Parameters
- author — reference — The author of the request orchestration —
RequestOrchestration.author - authored — date — The date the request orchestration was authored —
RequestOrchestration.authoredOn - based-on — reference — What this request fullfills. —
RequestOrchestration.basedOn - code — token — The code of the request orchestration —
RequestOrchestration.code - encounter — reference — The encounter the request orchestration applies to —
RequestOrchestration.encounter - group-identifier — token — The group identifier for the request orchestration —
RequestOrchestration.groupIdentifier - identifier — token — External identifiers for the request orchestration —
RequestOrchestration.identifier - instantiates-canonical — reference — The FHIR-based definition from which the request orchestration is realized —
RequestOrchestration.instantiatesCanonical - instantiates-uri — uri — The external definition from which the request orchestration is realized —
RequestOrchestration.instantiatesUri - intent — token — The intent of the request orchestration —
RequestOrchestration.intent - participant — reference — The participant in the requests in the orchestration —
RequestOrchestration.repeat(action).participant.actor.ofType(Reference) | RequestOrchestration.repeat(action).participant.actor.ofType(canonical) - patient — reference — The identity of a patient to search for request orchestrations —
RequestOrchestration.subject.where(resolve() is Patient) - priority — token — The priority of the request orchestration —
RequestOrchestration.priority - status — token — The status of the request orchestration —
RequestOrchestration.status - subject — reference — The subject that the request orchestration is about —
RequestOrchestration.subject - action-resource — reference — A resource in an action of the request orchestration —
RequestOrchestration.repeat(action).resource
Examples
- example — requestorchestration-example — Simple example request orchestration illustrating related actions with offsets
- kdn5-example — requestorchestration-kdn5-example — Example realization of the KDN5 PlanDefinition example
- requestorchestration-example — requestorchestration-example
- requestorchestration-examples-header — requestorchestration-examples-header
Mapping Exceptions
requestorchestration-fivews-mapping-exceptions.xml
Divergent Elements
- FiveWs.class → RequestOrchestration.intent
Unmapped Elements
- FiveWs.cause — Unknown
- FiveWs.version — Unknown
- FiveWs.witness — Unknown
- FiveWs.where — Unknown
- FiveWs.init — Unknown
- FiveWs.source — Unknown
- FiveWs.who — Unknown
- FiveWs.planned — Unknown
- FiveWs.done — Unknown
requestorchestration-request-mapping-exceptions.xml
Divergent Elements
- Request.identifier → RequestOrchestration.identifier
- shortUnmatched | reason=Unknown | pattern=Business Identifier for request orchestration | resource=Business identifier
- definitionUnmatched | reason=Unknown | pattern=Business identifiers assigned to this request orchestration by the author and/or other systems. These identifiers remain constant as the resource is updated and propagates from server to server. | resource=Allows a service to provide a unique, business identifier for the request.
- commentsUnmatched | reason=Unknown | pattern=The identifier.type element is used to distinguish between the identifiers assigned by the requester/placer and the performer/filler.
Note: This is a business identifier, not a resource identifier (see discussion). It is best practice for the identifier to only appear on a single resource instance, however business practices may occasionally dictate that multiple resource instances with the same identifier can exist - possibly even with different resource types. For example, multiple Patient and a Person resource instance might share the same social insurance number.
- requirementsUnmatched | reason=Unknown | pattern=Allows identification of the request orchestration as it is known by various participating systems and in a way that remains consistent across servers. | resource=Allows identification of the request as it is known by various participating systems and in a way that remains consistent across servers.
- Request.basedOn → RequestOrchestration.basedOn
- missingTypes | reason=Unknown | pattern=Reference(Request)
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Fulfills plan, proposal or order | resource=Fulfills plan, proposal, or order
- definitionUnmatched | reason=Unknown | pattern=A higher-level request resource (i.e. a plan, proposal or order) that is fulfilled in whole or in part by this request orchestration. Authorization from the 'basedOn' request flows through to the referencing request orchestration. | resource=A plan, proposal or order that is fulfilled in whole or in part by this request.
- commentsUnmatched | reason=Unknown | pattern=basedOn represents the 'authorization' chain for an action, not the 'reason for action'. For example, an order might be placed on hold under the authorization for a surgery. However the 'reason' for placing the hold is "to avoid interaction with anesthesia medications" .
- Request.replaces → RequestOrchestration.replaces
- missingTypes | reason=Unknown | pattern=Reference(Request)
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Request(s) replaced by this request orchestration | resource=Request(s) replaced by this request
- definitionUnmatched | reason=Unknown | pattern=Completed or terminated request(s) whose function is taken by this new request orchestration. | resource=Completed or terminated request(s) whose function is taken by this new request.
- Request.groupIdentifier → RequestOrchestration.groupIdentifier
- definitionUnmatched | reason=Unknown | pattern=A shared identifier common to all requests that were authorized more or less simultaneously by a single author, representing the identifier of the requisition, prescription or similar form. | resource=A shared identifier common to multiple independent Request instances that were activated/authorized more or less simultaneously by a single author. The presence of the same identifier on each request ties those requests together and may have business ramifications in terms of reporting of results, billing, etc. E.g. a requisition number shared by a set of lab tests ordered together, or a prescription number shared by all meds ordered at one time.
- Request.status → RequestOrchestration.status
- shortUnmatched | reason=Unknown | pattern=draft | active | on-hold | revoked | completed | entered-in-error | unknown | resource=draft | active | on-hold | entered-in-error | ended | completed | revoked | unknown
- definitionUnmatched | reason=Unknown | pattern=The current state of the request orchestration. | resource=The current state of the request. For request orchestrations, the status reflects the status of all the requests in the orchestration.
- commentsUnmatched | reason=Unknown | pattern=The status is generally fully in the control of the requester - they determine whether the order is draft or active and, after it has been activated, completed, cancelled or suspended. States relating to the activities of the performer are reflected on either the corresponding]](s) or using the]] resource. A nominal state-transition diagram can be found in the] documentation Unknown does not represent "other" - one of the defined statuses must apply. Unknown is used when the authoring system is not sure what the current status is. A status of 'active' when doNotPerform is true means that the request to not perform is currently in force.
A status of completed for a "doNotPerform" request indicates that the period of non-performance is now satisfied and the request no longer holds.
- Request.intent → RequestOrchestration.intent
- shortUnmatched | reason=Unknown | pattern=proposal | plan | order (immutable) | resource=proposal | solicit-offer | offer-response | plan | directive | order | original-order | reflex-order | filler-order | instance-order | option
- definitionUnmatched | reason=Unknown | pattern=Indicates the level of authority/intentionality associated with the request orchestration and where the request fits into the workflow chain. | resource=Indicates the level of authority/intentionality associated with the request and where the request fits into the workflow chain.
- commentsUnmatched | reason=Unknown | pattern=This element is expected to be immutable. E.g. A "proposal" instance should never change to be a "plan" instance or "order" instance. Instead, a new instance 'basedOn' the prior instance should be created with the new 'intent' value.
One exception to this is that the granularity of Request.intent is allowed to change. For example, a Request identified as an "order" might later be clarified to be a "filler-order". Or, in rarer cases (to meet recipient constraints), the reverse might also occur.
When resources map to this element, they are free to define as many codes as necessary to cover their space and will map to "proposal, plan or order". Can have multiple codes that map to one of these. E.g. "original order", "encoded order", "reflex order" would all map to "order". Expectation is that the set of codes is mutually exclusive or a strict all-encompassing hierarchy.
- Request.priority → RequestOrchestration.priority
- definitionUnmatched | reason=Unknown | pattern=Indicates how quickly the request orchestration should be addressed with respect to other requests. | resource=Indicates how quickly the request should be addressed with respect to other requests.
- Request.priority → RequestOrchestration.action.priority
- summary | reason=Unknown | pattern=true
- definitionUnmatched | reason=Unknown | pattern=Indicates how quickly the request orchestration should be addressed with respect to other requests. | resource=Indicates how quickly the action should be addressed with respect to other actions.
- Request.code → RequestOrchestration.code
- shortUnmatched | reason=Unknown | pattern=Service requested/ordered | resource=What's being requested/ordered
- definitionUnmatched | reason=Unknown | pattern=A code that identifies the specific service or action being asked to be done (or not done). | resource=A code that identifies what the overall request orchestration is.
- Request.code → RequestOrchestration.action.code
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Service requested/ordered | resource=Code representing the meaning of the action or sub-actions
- definitionUnmatched | reason=Unknown | pattern=A code that identifies the specific service or action being asked to be done (or not done). | resource=A code that provides meaning for the action or action group. For example, a section may have a LOINC code for a section of a documentation template.
- Request.subject → RequestOrchestration.subject
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Individual the service is ordered/prohibited for | resource=Who the request orchestration is about
- definitionUnmatched | reason=Unknown | pattern=The individual or set of individuals the action is to be performed/not performed on or for. | resource=The subject for which the request orchestration was created.
- requirementsUnmatched | reason=Unknown | pattern=Links the request to the Patient context.
- Request.encounter → RequestOrchestration.encounter
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Encounter the request orchestration is tied to | resource=Created as part of
- definitionUnmatched | reason=Unknown | pattern=The Encounter during which this request orchestration was created or to which the creation of this record is tightly associated. | resource=Describes the context of the request orchestration, if any.
- commentsUnmatched | reason=Unknown | pattern=This will typically be the encounter during which the request orchestration was created. However, some {{title}s may be initiated prior to or after the official completion of an encounter but still be tied to the context of the encounter (e.g. pre-admission activities).
- requirementsUnmatched | reason=Unknown | pattern=Links the request orchestration to the Encounter context.
- Request.occurrence[x] → RequestOrchestration.action.timing[x]
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=When service should (not) occur | resource=When the action should take place
- definitionUnmatched | reason=Unknown | pattern=The date or time(s) at which the activity or service is desired to occur or not occur. | resource=An optional value describing when the action should be performed.
- Request.authoredOn → RequestOrchestration.authoredOn
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=When request was created/transitioned to active | resource=When the request orchestration was authored
- definitionUnmatched | reason=Unknown | pattern=For draft request orchestrations, indicates the date of initial creation. For requests with other statuses, indicates the date of activation. | resource=Indicates when the request orchestration was created.
- Request.requester → RequestOrchestration.author
- missingTypes | reason=Unknown | pattern=Reference(Organization, Patient, RelatedPerson)
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Who/what is requesting service | resource=Device or practitioner that authored the request orchestration
- definitionUnmatched | reason=Unknown | pattern=Who initiated the {{request}} and has responsibility for its activation. | resource=Provides a reference to the author of the request orchestration.
- Request.performer → RequestOrchestration.action.participant
- missingTypes | reason=Unknown | pattern=Reference(Practitioner, PractitionerRole, Organization, CareTeam, HealthcareService, Patient, Device, RelatedPerson)
- extraTypes | reason=Unknown
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Specific desired (non)performer | resource=Who should perform the action
- definitionUnmatched | reason=Unknown | pattern=Indicates who or what is being asked to perform (or not perform) the {{request}}. | resource=The participant that should perform or be responsible for this action.
- Request.reason → RequestOrchestration.reason
- summary | reason=Unknown | pattern=true
- shortUnmatched | reason=Unknown | pattern=Why is service (not) needed? | resource=Why the request orchestration is needed
- definitionUnmatched | reason=Unknown | pattern=Describes why the request is being made in coded or textual form, or Indicates another resource whose existence justifies this request. | resource=Describes the reason for the request orchestration in coded or textual form.
- commentsUnmatched | reason=Unknown | pattern=Textual reasons can be captured using reasonCode.text. If doNoPerform is true, this will be the reason why the request is being made to not act.
- Request.supportingInfo → RequestOrchestration.action.documentation
- missingTypes | reason=Unknown | pattern=Reference(Any)
- extraTypes | reason=Unknown
- shortUnmatched | reason=Unknown | pattern=Extra information to use in performing request | resource=Supporting documentation for the intended performer of the action
- definitionUnmatched | reason=Unknown | pattern=Information that may be needed by/relevant to the performer in their execution of this request orchestration. | resource=Didactic or other informational resources associated with the action that can be provided to the CDS recipient. Information resources can include inline text commentary and links to web resources.
- commentsUnmatched | reason=Unknown | pattern=See guidance on notes vs. supportingInfo.
- Request.note → RequestOrchestration.note
- shortUnmatched | reason=Unknown | pattern=Comments made about request orchestration | resource=Additional notes about the response
- definitionUnmatched | reason=Unknown | pattern=Comments made about the request orchestration by the requester, performer, subject or other participants. | resource=Provides a mechanism to communicate additional information about the response.
- commentsUnmatched | reason=Unknown | pattern=See guidance on notes vs. supportingInfo.
Unmapped Elements
- Request.insurance — Unknown
- Request.deliverTo — Unknown
- Request.category — Unknown
- Request.reported — Unknown
- Request.relevantHistory — Unknown
- Request.statusReason — Unknown
- Request.performerType — Unknown
- Request.doNotPerform — Unknown
- Request.product — Unknown