Integrated Reporting Applications
0.1.1 - ci-build
Integrated Reporting Applications, published by IHE Radiology Technical Committee. This is not an authorized publication; it is the continuous build for version 0.1.1). This version is based on the current content of https://github.com/IHE/RAD.RTC-IMR/ and changes regularly. See the Directory of published versions
The Integrated Reporting Applications (IRA) profile helps applications that are used together during reporting (e.g. image display, report creator, clinical applications, AI tools, etc) to share information using a standard called FHIRcast. Each application can share what it is doing and the data it is creating, referred to as Context and Content, respectively. Other applications are notified so they can then intelligently synchronize their behavior or use the new data.
For example, the report creator could share that the user is starting a new report, and the other applications could synchronize by opening the corresponding study. An AI tool could generate a tumor measurement and the report creator could get that data and add an entry in the report, either automatically or triggered by a command from the radiologist.
This section defines the actors, transactions, and/or content modules in this profile. General definitions of actors are given in the Technical Frameworks General Introduction Appendix A. IHE Transactions can be found in the Technical Frameworks General Introduction Appendix B. Both appendices are located at https://profiles.ihe.net/GeneralIntro/.
Figure 1:XX.1-1 shows the actors directly involved in the IRA Profile and the relevant transactions between them. If needed for context, other actors that may be indirectly involved due to their participation in other related profiles are shown in dotted lines. Actors which have a required grouping are shown in conjoined boxes (see Section 1:XX.3).
Figure 1:XX.1-1: IRA Actor Diagram
Table 1:XX.1-1 lists the transactions for each actor directly involved in the IMR Profile. To claim compliance with this profile, an actor shall support all required transactions (labeled “R”) and may support the optional transactions (labeled “O”).
Table 1:XX.1-1: IRA Profile - Actors and Transactions
Actors | Transactions | Initiator or Responder | Optionality | Reference |
---|---|---|---|---|
Image Display | Subscribe to Reporting Session [RAD-X1] | Initiator | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Initiator | R | RAD TF-2: 4.X2 | |
Open Report Context [RAD-X3] | Initiator | R | RAD TF-2: 4.X3 | |
Close Report Context [RAD-X4] | Initiator | R | RAD TF-2: 4.X4 | |
Unsubscribe Session [RAD-X7] | Initiator | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Initiator | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Responder | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Responder | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Initiator | R | RAD TF-2: 4.X11 | |
Report Creator | Subscribe to Reporting Session [RAD-X1] | Initiator | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Initiator | R | RAD TF-2: 4.X2 | |
Open Report Context [RAD-X3] | Initiator | R | RAD TF-2: 4.X3 | |
Close Report Context [RAD-X4] | Initiator | R | RAD TF-2: 4.X4 | |
Unsubscribe Session [RAD-X7] | Initiator | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Initiator | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Responder | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Responder | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Initiator | R | RAD TF-2: 4.X11 | |
Worklist Client | Subscribe to Reporting Session [RAD-X1] | Initiator | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Initiator | R | RAD TF-2: 4.X2 | |
Open Report Context [RAD-X3] | Initiator | R | RAD TF-2: 4.X3 | |
Close Report Context [RAD-X4] | Initiator | R | RAD TF-2: 4.X4 | |
Unsubscribe Session [RAD-X7] | Initiator | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Initiator | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Responder | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Responder | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Initiator | R | RAD TF-2: 4.X11 | |
Evidence Creator | Subscribe to Reporting Session [RAD-X1] | Initiator | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Initiator | R | RAD TF-2: 4.X2 | |
Unsubscribe Session [RAD-X7] | Initiator | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Initiator | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Responder | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Responder | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Initiator | R | RAD TF-2: 4.X11 | |
Content Creator | Update Report Content [RAD-X5] | Initiator | O (Note 1) | RAD TF-2: 4.X5 |
Select Report Content [RAD-X6] | Initiator | O (Note 1) | RAD TF-2: 4.X6 | |
Watcher | Subscribe to Reporting Session [RAD-X1] | Initiator | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Initiator | R | RAD TF-2: 4.X2 | |
Unsubscribe Session [RAD-X7] | Initiator | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Initiator | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Responder | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Responder | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Initiator | R | RAD TF-2: 4.X11 | |
Hub | Subscribe to Reporting Session [RAD-X1] | Responder | R | RAD TF-2: 4.X1 |
Connect to Notification Channel [RAD-X2] | Responder | R | RAD TF-2: 4.X2 | |
Open Report Context [RAD-X3] | Responder | R | RAD TF-2: 4.X3 | |
Close Report Context [RAD-X4] | Responder | R | RAD TF-2: 4.X4 | |
Update Report Content [RAD-X5] | Responder | R | RAD TF-2: 4.X5 | |
Select Report Content [RAD-X6] | Responder | R | RAD TF-2: 4.X6 | |
Unsubscribe from Session [RAD-X7] | Responder | R | RAD TF-2: 4.X7 | |
Get Current Context [RAD-X8] | Responder | R | RAD TF-2: 4.X8 | |
Distribute Context Event [RAD-X9] | Initiator | R | RAD TF-2: 4.X9 | |
Generate SyncError Event [RAD-X10] | Initiator | R | RAD TF-2: 4.X10 | |
Notify Error [RAD-X11] | Responder | R | RAD TF-2: 4.X11 |
Note 1: A Content Creator shall support at least one of the update or select transactions.
Most requirements are documented in RAD TF-2 Transactions. This section documents any additional requirements on this profile’s actors.
The Image Display actor is responsible for presenting patients’ studies and relevant information to the user so that the user can make diagnostic decisions on the studies.
The Image Display provides tools for the user to navigate images in a study. It may include a worklist component that let the user select studies to read. It may also include tools to create evidence data such as annotations, key images, etc.
The Image Display shall be capable of being launched by another application. When launched, it shall use the provided hub.url
and hub.topic
to join a reporting session.
The Image Display shall be able to launch other applications and synchronize them to the same report context through the Hub. It shall have the following capabilities:
hub.url
and the reporting session ID as hub.topic
Note that the actual application launch method is out of scope of this profile See Application Launch Scenarios and Session Discovery for more details.
In Table 1:XX.1.1.1.1-1, for each Received Event, Context Key specifies the contexts in the received event and Resources specifies the FHIR resources used in the given context. The Image Display shall support all Behaviors shown as “R” in Optionality. The Image Display may support suggested behaviors (“O” in Optionality).
Table 1:XX.1.1.1.1-1: Event Handling Requirements
Received Event | Context Key | Resources | Optionality | Behavior |
---|---|---|---|---|
DiagnosticReport-open | report |
DiagnosticReport | R | Maintain association of report context to associated patient and study |
patient study |
Patient ImagingStudy |
R | Display the study images and patient metadata | |
DiagnosticReport-update | report |
DiagnosticReport | R | Reflect updated status (DiagnosticReport.status ) in worklist |
updates |
ImagingStudy | O | Display the comparison study | |
updates |
ImagingSelection | O | Display annotations to selected images | |
updates |
Observation | O | Display measurements and annotations | |
DiagnosticReport-select | select |
ImagingStudy | O | Bring the comparison study to focus |
select |
ImagingSelection | O | Bring selected images and annotations to focus | |
DiagnosticReport-close | report |
DiagnosticReport | R | Stop display the study images associated to the report context |
SyncError | operationoutcome |
OperationOutcome | O | Notify the user regarding the synchronization error, including the details of the error reported and the Subscriber that reported the error |
If the Image Display accepted an event initially (i.e. returning 202
Accepted) and later decided to refuse the context or failed to process the event, then it shall send a syncerror
event back to the Hub using Notify Error RAD-X11.
If the Image Display is grouped with a Content Creator to publish additional content events to a reporting session, then it shall publish events using at least one FHIR resource. The Image Display is highly recommended to publish events using one or more of the following FHIR resources that are expected to be useful in reporting:
Patient
: patient in the anchor contextImagingStudy
: imaging study in either the anchor context (i.e. the study subject to be reported) or as additional studies (e.g. a comparison study)ImagingSelection
: image / series references and simple annotationsObservation
: measurements and annotationsThe Report Creator actor is responsible for producing a diagnostic report for patients’ studies.
In order to complete a study dictation, the Report Creator:
The Report Creator provides tools for the user to insert report content such as findings and impressions. The Report Creator may use the report content shared by other applications through the Hub (e.g. image references shared by Image Display, or measurements shared by Evidence Creator) to directly update the report (e.g. insert measurements) or generate derived report content (e.g. inject hyperlinks from image references)
The Report Creator shall be capable of being launched by another application. When launched, it shall use the provided hub.url
and hub.topic
to join a reporting session.
The Report Creator shall be able to launch other applications and synchronize them to the same report context through the Hub. It shall have the following capabilities:
hub.url
and the reporting session ID as hub.topic
Note that the actual application launch method is out of scope of this profile See Application Launch Scenarios and Session Discovery for more details.
In Table 1:XX.1.1.2.1-1, for each Received Event, Context Key specifies the contexts in the received event and Resources specifies the FHIR resources used in the given context. The Report Creator shall support all Behaviors shown as “R” in Optionality. The Report Creator may support suggested behaviors (“O” in Optionality).
Table 1:XX.1.1.2.1-1: Event Handling Requirements
Event | Context Key | Resources | Optionality | Behavior |
---|---|---|---|---|
DiagnosticReport-open | report |
DiagnosticReport | R | Maintain association of report context to associated patient and study |
patient study |
Patient ImagingStudy |
R | Be ready for reporting for the study. If re-open a previously opened report context, resume to the previous state of the report context when it was interrupted. | |
DiagnosticReport-update | updates |
ImagingStudy | O | Add comparison study to report |
updates |
ImagingSelection | O | Add annotations of selected images to data collection for further processing | |
updates |
Observation | O | Add measurements and annotations to data collection for further processing | |
DiagnosticReport-select | select |
ImagingStudy | O | Select comparison study and able to apply user commands (See Note 1) |
select |
ImagingSelection | O | Select images and annotations and able to apply user commands (See Note 1) | |
DiagnosticReport-close | report |
DiagnosticReport | R | Stop display the study report |
SyncError | operationoutcome |
OperationOutcome | O | Notify the user regarding the synchronization error, including the details of the error reported and the Subscriber that reported the error |
Note 1: The Report Creator may provide application logic that can make use of the selected resources. For example, a nodule (as
ImagingSelection
) and corresponding measurements (asObservation
) are selected. Then the radiologist issues a voice command “insert hyperlink”. In this case, the Report Creator applies the command with the selected resources and insert a hyperlink reference to the nodule with measurement.
If the Report Creator accepted an event initially (i.e. returning 202
Accepted) and later decided to refuse the context or failed to process the event, then it shall send a syncerror
event back to the Hub using Notify Error RAD-X11.
The Report Creator shall be grouped with a Content Creator to publish report status update using the report anchor context DiagnosticReport resource. It may support other content sharing resources.
The Worklist Client actor is responsible for providing a reporting worklist to the user.
When a user selects studies from the worklist, the Worklist Client launches other applications (e.g. Image Display, Report Creator, etc.) if necessary. It opens a new report context to synchronize other applications through the Hub to enable dictation on the studies.
When a study dictation is complete, the Worklist Client consumes the report anchor context update event so that it can mark the study as dictated and remove it from the worklist.
The Worklist Client shall be capable of being launched by another application. When launched, it shall use the provided hub.url
and hub.topic
to join a reporting session.
The Worklist Client shall be able to launch other applications and synchronize them to the same report context through the Hub. It shall have the following capabilities:
hub.url
and the reporting session ID as hub.topic
Note that the actual application launch method is out of scope of this profile See Application Launch Scenarios and Session Discovery for more details.
In Table 1:XX.1.1.3.1-1, for each Received Event, Context Key specifies the contexts in the received event and Resources specifies the FHIR resources used in the given context. The Worklist Client shall support all Behaviors shown as “R” in Optionality. The Worklist Client may support suggested behaviors (“O” in Optionality).
Table 1:XX.1.1.3.1-1: Event Handling Requirements
Event | Context Key | Resources | Optionality | Behavior |
---|---|---|---|---|
DiagnosticReport-open | report |
DiagnosticReport | R | Maintain association of report context to associated patient and study. |
patient study |
Patient ImagingStudy |
R | Display the patient and study metadata | |
DiagnosticReport-update | report |
DiagnosticReport | R | Reflect updated status DiagnosticReport.status in worklist |
DiagnosticReport-select | select |
ImagingStudy | O | Select the study in worklist |
DiagnosticReport-close | report |
DiagnosticReport | R | Stop processing the study associated to the report context |
SyncError | operationoutcome |
OperationOutcome | O | Notify the user regarding the synchronization error, including the details of the error reported and the Subscriber that reported the error |
If the Worklist Client accepted an event initially (i.e. returning 202
Accepted) and later decided to refuse the context or failed to process the event, then it shall send a syncerror
event back to the Hub using Notify Error RAD-X11.
The Evidence Creator actor is responsible for consuming events in the reporting session and producing evidence data such as annotations, measurements, key image references, etc. for the patients’ studies. For example, it may detect lung nodules and produce measurements and bounding boxes of the nodules detected.
The Evidence Creator may capture the evidence data in format such as DICOM SR and shared with other systems using methods outside of this profile (e.g. as Evidence Creator in IHE AIR profile). In this case, other synchronizing applications in the same reporting session may not be aware of the evidence data created by the Evidence Creator.
Alternatively the Evidence Creator may capture the evidence data (e.g. lung nodule measurements as FHIR Observation resource, image references and bounding box as FHIR ImagingSelection resource) and share them by publishing content sharing events back to the reporting session through the Hub.
The Evidence Creator may be a standalone application such as an Specialty AI application, or it may be grouped with another actor such as Image Display.
The Evidence Creator shall be capable of being launched by another application. When launched, it shall use the provided hub.url
and hub.topic
to join a reporting session.
In Table 1:XX.1.1.4.1-1, for each Received Event, Context Key specifies the contexts in the received event and Resources specifies the FHIR resources used in the given context. The Evidence Creator shall support all Behaviors shown as “R” in Optionality. The Evidence Creator may support suggested behaviors (“O” in Optionality).
Table 1:XX.1.1.4.1-1: Event Handling Requirements
Event | Context Key | Resources | Optionality | Behavior |
---|---|---|---|---|
DiagnosticReport-open | report |
DiagnosticReport | R | Maintain association of report context to associated patient and study |
patient study |
Patient ImagingStudy |
R | Process the study data | |
DiagnosticReport-update | Any | Any | O | Update the report, patient or study record, or add/modify/delete received contents, if applicable. |
DiagnosticReport-select | Any | Any | O | Process the applicable selected resources |
DiagnosticReport-close | report |
DiagnosticReport | R | Stop processing the study data associated to the report context |
SyncError | operationoutcome |
OperationOutcome | O | Notify the user regarding the synchronization error, including the details of the error reported and the Subscriber that reported the error |
If the Evidence Creator accepted an event initially (i.e. returning 202
Accepted) and later decided to refuse the context or failed to process the event, then it shall send a syncerror
event back to the Hub using Notify Error RAD-X11.
If the Evidence Creator is grouped with a Content Creator to publish content events to a reporting session, then it shall publish events using at least one FHIR resource. The Evidence Creator is highly recommended to publish events using one or more of the following FHIR resources that are expected to be useful in reporting:
ImagingSelection
: image / series references and simple annotations such as bounding boxesObservation
: measurements and annotationsDocumentReference : results from IHE AI Results Profile using the JSON Representation of DICOM SR, or other documents |
The Content Creator is responsible for the creation and selection of the contents of the reporting session which are the basis of synchronization and collaboration between the subscribing actors.
Note: This actor represents content creation / selection capabilities that may be present in implementation of other actors. As such, the Content Creator is required to be grouped with another actor. This actor cannot be claimed as a standalone actor.
For example, when an Image Display user clicks on the bounding box of a detected nodule, the grouped Content Creator publishes a selection event referencing the affected images and bounding boxes as an ImagingSelection resource, and referencing the corresponding measurements as an Observation resource. Upon receiving the event, a Report Creator might show those details in a side panel to the user. Finally the user issues a voice command to the Report Creator to inject a hyperlink, which is adding to the finding section.
The Content Creator actor may publish context and/or content changes as events to a reporting session. The Content Creator may select one or more contents and publish the selection events.
The specific context or content changes captured by the Content Creator depends on the grouped actor and the specific deployment scenario. For example:
Grouped Actor | Potential Use | Relevant Resource |
---|---|---|
Report Creator | Communicate report status update | DiagnosticReport |
Evidence Creator | Image references Bounding Boxes |
ImagingSelection Observation |
Image Display | Comparison study used during reporting | ImagingStudy |
The Watcher actor is responsible for listening to events in a session and perform actions according to it business logic. The specific actions are out of scope of this profile.
For example, the Watcher consumes the initiation and termination of report contexts and calculates the turnaround time for different types of studies in different departments. Another example is that the Watcher monitors how often an Evidence Creator publishes content sharing events and correlates how effective an AI application is with respect to the turnaround time by comparison and time before and after the Evidence Creator is deployed.
The Watcher shall be capable of being launched by another application. When launched, it shall use the provided hub.url
and hub.topic
to join a reporting session.
In Table 1:XX.1.1.6.1-1, for each Received Event, Context Key specifies the contexts in the received event and Resources specifies the FHIR resources used in the given context. The Watcher shall support all Behaviors shown as “R” in Optionality. The Watcher may support suggested behaviors (“O” in Optionality).
Table 1:XX.1.1.6.1-1: Event Handling Requirements
Event | Context Key | Resources | Optionality | Behavior |
---|---|---|---|---|
DiagnosticReport-open | report |
DiagnosticReport | R | Maintain association of report context to aassociated patient and study |
patient study |
Patient ImagingStudy |
R | Process according to business logic | |
DiagnosticReport-update | Any | Any | O | Update the report, patient or study record, or add/modify/delete received contents, if applicable. |
DiagnosticReport-select | Any | Any | O | Process the applicable selected resources |
DiagnosticReport-close | report |
DiagnosticReport | R | Stop processing the report context |
SyncError | operationoutcome |
OperationOutcome | O | Process the synchronization error, including the details of the error reported and the Subscriber that reported the error |
If the Watcher accepted an event initially (i.e. returning 202
Accepted) and later decided to refuse the context or failed to process the event, then it shall send a syncerror
event back to the Hub using Notify Error RAD-X11.
The Hub actor is responsible for managing event flows between Subscribers in reporting sessions and maintaining the current context and transaction of content sharing in each session.
The Hub is responsible for authorizing the following:
Note: This profile does not mandate a specific authorization mechanism.
The Hub shall support content sharing.
The Hub shall monitor the established websocket connections. If it detects a websocket connection issue with a Subscriber, then the Hub shall
The Hub shall be able to process all valid events conforming to the FHIRcast Event Format received using FHIRcast Request Context Change requests.
Note: This implies that the Hub cannot only process events defined in this profile. The Hub is required to support other valid events regardless of whether they are defined in the FHIRcast Event Catalog. For example, Subscribers in a reporting session are permitted to send Request Context Change requests with events (e.g.
HeartBeat
,ImagingStudy-*
, etc.) beyond those explicitly defined in this profile.
For all received events, the Hub shall support the following core behaviors:
*-open
and *-close
events) (See Request Context Change)*-update
and *-select
events) (See Content Sharing)Additional profile requirements for specific events are defined in the corresponding transactions.
When a Hub has successfully processed a Close Report Context [RAD-X4] request, the Hub will establish a new current context. The Hub will select one of the existing open contexts in the session to be the new current context, typically the most recently opened context (i.e. resume a previous open context). If no open context exist, then current context will be empty.
When the Hub establishes a new current context, the Hub shall be capable of distributing a corresponding DiagnosticReport-open
context event as if it had received Open Report Context [RAD-X3] requests.
If the current context has associated contents, the Hub shall be capable of distributing corresponding DiagnosticReport-update
and/or DiagnosticReport-select
context events as if it had received Update Report Content [RAD-X5] and/or Select Report Content [RAD-X6] requests.
Note: These requirements are limited to processing reporting events in reporting sessions as defined in this profile. These requirements are not required for other events that the Hub received and processed.
Options that may be selected for each actor in this implementation guide, are listed in Table 1:XX.2-1 below. Dependencies between options, when applicable, are specified in notes.
Table 1:XX.2-1: IRA - Actors and Options
Actor | Option Name | Reference |
---|---|---|
Image Display | No options defined | - |
Report Creator | No options defined | - |
Worklist Client | No options defined | - |
Evidence Creator | No options defined | - |
Content Creator | No options defined | – |
Watcher | No options defined | - |
Hub | No options defined | – |
An actor from this profile (Column 1) shall implement all of the required transactions and/or content modules in this profile in addition to all of the requirements for the grouped actor (Column 3).
In some cases, required groupings are defined as at least one of an enumerated set of possible actors; this is designated by merging column one into a single cell spanning multiple potential grouped actors. Notes are used to highlight this situation.
Section 1:XX.5 describes some optional groupings that may be of interest for security considerations and Section 1:52.6 describes some optional groupings in other related profiles.
Table 1:XX.3-1: IRA Required Actor Groupings
IMR Actor | Grouping Condition | Actor(s) to be grouped with | Reference |
---|---|---|---|
Image Display | – | None | – |
Report Creator | – | None | – |
Worklist Client | – | None | – |
Evidence Creator | – | None | – |
Content Creator | Enable producing content sharing events | IRA / Any actor | IRA TF-1: 1.1 |
Watcher | – | None | – |
Hub | – | None | – |
At its heart, this profile synchronizes a group of applications using a Publish and Subscribe model as implemented by FHIRcast which in turn is an implementation of WebSub.
The following are some key concepts:
Subscribers
that register with and communicate with a Hub
Subscribers
do not communicate with other Subscribers
directly.Hub
only communicates with authenticated Subscribers
Subscribers
generate data that needs to be made available to other applications, or perform actions that the other applications should be notified of, they publish it by sending an event with the relevant details to the HubHub
forwards events received from Driving Applications to the other Synchronizing ApplicationsSubscribers
can configure their subscription to limit what types of events the Hub
sends to them.Subscribers
react to events from the Hub
based on their internal business logicSubscribers
do not need to be explicitly aware of what other subscribers (if any) are receiving their events or how they react to themHub
also maintains the collection of data it has received, organized them according to the contextSubscribers
can request the current context and associated contents from the Hub
Hub
can simultaneously manage multiple groups of Subscribers
and their associated data in different sessions
session
is identified by a unique “topic ID”Subscriber
that opens and closes context is referred to as the Driving Application. A Driving Application usually also launches other applications, providing them with the address of the Hub
and the topic ID
so they can join the same session
.The terminology used in FHIRcast and adopted in this profile can be found in the Glossary page.
The following is a representation of the data model.
Figure 1:XX.4,1.2-1: FHIRcast Concept Data Model
The following is a representation of the interaction model.
Note: The term
Driving Application
andSynchronizing Application
in the diagram are convenient terms instead of actual defined terms. They are used here to highlight the additional capabilities a driving application can do, in particular:
- Start a new reporting session
- Launch another application
- Open or close a report context
Figure 1:XX.4,1.2-1: FHIRcast Concept Interaction Model
A Session
is an abstract concept representing a shared workspace, such as a user’s login session across multiple applications or a shared view of one application distributed to multiple users. A session results from a user logging into an application and can encompass one or more workflows.
For instance, a reporting session is a shared workspace across multiple applications to communicate activities of a user, such as initiating a new report context when opening a study for reporting. These applications as Subscribers
share events using the Hub
. As long as there are Subscribers
associated to a Session
, the Session
stays open. Therefore a Session
has a long duration.
A Context
is a FHIR resource associated with a Session
which indicates a subject on which applications should synchronize as appropriate to their functionality. As soon as the subject is complete, the corresponding Context
can be closed. Therefore a Context
has a limited duration within a Session
.
Communication patterns between two systems fall in two general categories: Commands
and Events
.
Events
represent facts that have happened. For example, DiagnosticReport-open
represents an event that an application opens a study for reporting. Note that an event has an initiator but no target recipient(s). It is the responsibility of any applications that are interested in such events to subscribe them. Any applications subscribed to the event will receive the event and the application can determine how to process the event. The application that is producing the event is not aware of the actions being performed by the consuming applications, unless these consuming applications in turn publishes additional events.
On the other hand, Commands
represent intention. In addition to an initiator, Commands
have specific target recipient(s). For example, Send-Study represents an intention to send a study. The application that sends the commands often has direct knowledge of which applications should execute the commands, or delegate to a proxy service that has the knowledge.
In this profile, the messages that a Subscriber
sends to the Hub
represents an Event
. Each event captures what has happened, and there is no explicit recipient(s) specified.
Note: Some implementations may define commands using Extensions or custom events with explicit recipient(s). These are out of scope of this profile.
A driving application is a subscriber that initiates a context change request. From the driving application perspective, it is desirable for all subscribers to be synchronized as soon as possible. On the other hand, FHIRcast is a network protocol which incurs a non-trivial cost to send each event. Therefore any implementation should take into account when an action is considered to be complete or stable, and hence ready to be captured and communicated as events.
For example, when a user is actively making measurements or annotations, instead of capturing every change a user made (e.g. incremental changes in size or location of a shape) as an event which can result in many intermittent and partial events, an application may use specific triggers (e.g. when a user saves the changes) or an idle time threshold to detect when the user completed making the changes. The application then creates the corresponding event(s) to capture the result.
On the other hand, this profile is designed to communicate in-progress data as soon as possible. Therefore it is not desirable for the driving application to wait too long. For example, if the driving application supports exporting measurements and annotations as DICOM SR or other DICOM objects, it is not necessary to wait until the DICOM objects are created before sending the corresponding event.
This profile does not mandate any specific implementation design regarding when an application should capture the result of an action as an event. The intention is that the driving application will send an event as soon as feasible so that all subscribers in a reporting session can be synchronized and provide a good user experience.
Event Awareness
means an application, upon receiving an event from the Hub
, has the knowledge of an event has happened.
Event Consumption
means an application, upon receiving an event from the Hub
, reacts to the event and performed some actions according to its business logic.
This means from the content sharing application perspective, in order to synchronize the context with other applications, it may be desirable to publish frequent events so that other subscribers can be aware of the same context as in the content sharing application.
On the other hand, from the subscribing application perspective, it is up to its business logic to determine how to react to the received event. This business logic may be automatic or requires additional user input.
For example, when the user goes through the study images in Image Display (a content sharing application), for each nodule that the user identified (e.g. 1, 2, …, 9, 10), the Image Display publishes a corresponding event. In the Report Creator (a subscribing application), for each event received, it keeps track of the nodule in its nodule tracking bookmark. Once the user finished reviewing the full study, the user uses the nodule tracking bookmark in the Report Creator and selects the top 3 (e.g. 2, 5, 9) to include in the final report. Note that since the Report Creator is aware of all the nodules observed by synchronizing the context with the Image Display, selecting a subset of the nodules to be included in the final report (i.e. event consumption) is an operation internal to the Report Creator.
FHIRcast uses FHIR resources to capture the context and content in an event. These FHIR resources may be transient, meaning that they do not necessarily exist in any system, nor are they expected to be persisted by any system. Furthermore, even an application decides to persist the FHIR resource(s), it is not required to use the same resource ID in the event as the ID of the persisted resource. The application can generate new IDs instead.
Since the FHIR resources specified in the event may or may not be persisted in any FHIR server, to differentiate between the two cases, this profile defines that transient resources are identified by relative references (e.g. Patient/12345) and persisted resources that already exist are identified by full URL (e.g. http://myserver.com/Patient/12345).
The DiagnosticReport-open
event includes both the report
anchor context and associated contexts patient
and study
. Subsequent event(s) for this anchor context will only provide the report
context. Therefore, it is up to the Subscriber to record internally the patient
and study
contexts associated with the report
anchor context if that information is relevant to its business logic.
Occasionally a Context
may be interrupted because of suspension, meaning that before the Context
is closed, another Context
is opened. In this case, the information of the previous Context
is still maintained by the Hub
since it is not closed, but it is suspended (i.e. not the Current Context
).
For example, a radiologist needs to suspend the current report on a study in order to review another urgent study. When switching to the urgent study, the report context of the previously opened study is not closed. Instead a new report context is opened for the urgent study. In this case, the Current Context
is switched to the urgent study being opened. As soon as the user finished reviewing the urgent study and hence has closed the Context
of the urgent study, the suspended Context
will resume to be the Current Context
since it is the last opened Context
.
See Use Case #3 for more details.
The Hub can be a standalone application or embedded within another application (e.g. the Image Manager, Report Creator and Worklist Client are grouped with the Hub independently). As a result, which Hub to use for the reporting session needs to be configurable during deployment.
The Hub can be deployed on premises or in the cloud. The other actors may or may not be deployed in the same location as the Hub. Since this profile is aimed at providing streamline user experience for all integrated applications, the effectiveness of this profile depends on timely communications with the Hub, whether it is the context change request, or the subsequent event distribution. Therefore it is important to have a reliable low latency network connection between applications and the Hub, taking into account all the network appliances in between (e.g. firewall, reverse proxy, load balancer, etc.).
FHIRcast is a generic event distribution mechanism. Most transactions in this profile are generally applicable to any events. Any applications are permitted to use FHIRcast and the Hub for use cases beyond reporting. In this case, the application may consider using different sessions and events for different purposes. For example, an Image Manager may setup a separate advanced visualization session with an Evidence Creator and uses ImagingStudy-*
events for communication.
Furthermore, the Hub used in these cases may be different from the Hub used for the reporting session. Therefore an application needs to be prepared to support different sessions with different Hubs, and know which session to use for what purpose.
In a basic reporting session, a user uses two systems, the Image Display and the Report Creator, to complete reporting on a study.
The Basic Reporting Use Case is intended to capture the common reporting activities happened during a reporting session. The Image Display handles all user needs for displaying the study and the Report Creator handles all user needs for report creation.
Note: Figure 1:XX.4.2.2-1 shows a high level workflow and highlights the user interaction with the two actors involved. This use case is broken down into multiple steps. The steps shown in the diagram are not actual transactions. The interactions between the Image Display and Report Creator during a reporting session are omitted to highlight the user interactions more clearly. The hyperlinks provided in the diagram link to the subsections that describe the corresponding steps with actual transactions in details. Furthermore, the Examples tab contains sample events following this use case.
In this use case,
Note: In more complex scenarios, separate Worklist Client can be used to drive the Image Display and Report Creator, while the Image Display can launch separate Evidence Creator on demand to perform advanced visualization and measurements. See Use Case 2 for an example.
Figure 1:XX.4.2.2-1: Basic Reporting Flow in IRA Profile
When a radiologist starts reporting, the Image Display, as a Driving Application, starts a reporting session.
Note that there is no explicit creation of a session. If the Hub receives a session (i.e. topic ID) that does not already exist, then the Hub will automatically create the session and add the subscriber (i.e. Image Display) to the session.
The Image Display subscribes to events so that it can:
Once the Image Display completed its subscription, it launches the Report Creator. The Report Creator, as a Synchronizing Application, can follow the context and content events automatically.
Note that launching the Report Creator (or any Synchronizing Application) by the Image Display (or any Driving Application) may be implemented in different ways. For example, the Synchronizing Application can be started and terminated, or it can be put in focus and minimize when not needed but keep running in the background for efficiency, or a combination.
When launched, the first thing that the Report Creator does as a Synchronizing Application is to subscribe to the reporting session. The information about the Hub and the session is provided by the Image Display during launch.
Furthermore, the Report Creator queries the Hub to get the current context to ensure it has the latest context and content. Since the reporting session has just begun, and the Image Display has not yet opened any report context, the result of the query will be empty.
Figure 1:XX.4.2.1.2.1-1: Open Reporting Session Flow in IRA Profile
When the radiologist selects a study in the worklist in the Image Display, as a Driving Application, opens a new report context. Once the Hub accepted the event, it broadcasts the event to all Subscribers.
The Report Creator, as a Synchronizing Application, receives the event and opens the corresponding procedure for the study.
Furthermore, the event has a version ID. For the Image Display as a Driving Application, including the version ID when submitting the next event allows the Hub to ensure proper event sequence. For the Report Creator as a Synchronizing Application, keeping track of the version ID enables it to check if it missed any prior events. Event sequencing is important for content sharing because all updates and selects are expected to be applied in the same sequence as they are emitted by the Content Creator.
Figure 1:XX.4.2.1.2.1-2: Open Study in Context Flow in IRA Profile
Sometimes the radiologist may annotate the images with markups and measurements. When this happened, the Image Display, grouped with the Content Creator, updates the report context at the Hub with new content using Update Report Content [RAD-X5]. The Hub broadcasts the event to all Synchronizing Applications.
When the Report Creator receives and accepts the event, it can apply the updates according to its business logic. For example, it may automatically create a hyperlink in the report, or keeps track of the content in a panel for the user to perform other activities later.
Figure 1:XX.4.2.1.2.1-3: Add Content Flow in IRA Profile
Occasionally it is desirable to trigger activities on subscribers based on user navigation. With FHIRcast, this can be achieved using the content selection events.
Content selection can be used in various way:
Sometimes the radiologist selected certain elements (e.g. images, annotation, specific measurements, etc.) in the Image Display. When this happened, the Image Display, grouped with the Content Creator, sends a event to the Hub using Select Report Content [RAD-X6] indicating what contents have been selected. The Hub broadcasts the event to all Subscribers.
When the Report Creator receives the event, it can apply the selection according to its business logic. For example, it can highlight to the user what are selected so that the user can perform some actions. In this example, the radiologist uses a voice command to insert a hyperlink in the report. The Report Creator uses the selected content to generate the hyperlink.
Generally, selecting a content means putting the content in ‘focus’. Note that this profile is agnostic about the user interface implementation of ‘focus’, e.g., it may result in the selected contents being highlighted in the user interface, or it may result in the selected contents being flagged in the backend service. Specific behavior depends on the implementation.
Figure 1:XX.4.2.1.2.1-4: Select Content Flow in IRA Profile
The radiologist completes dictation and signs off the report on the Report Creator. The Report Creator sends an update event notifying about the report status change (e.g. complete normally, draft complete, sent to transcriptionist, etc.) The Image Display updates the status of the study in its worklist.
In this diagram, the Report Creator closes the report context after it sent the report status update event. Recall that this report context was opened by the Image Display.
Note: Alternatively, the Image Display can close the report context upon successfully processing the report status update event. Both scenarios are valid and which method is used is determined by site configuration of the Image Display and Report Creator.
The Hub sends the update event and the termination event to all Subscribers. Once the Hub successfully processed the termination event, it disallows any further interaction of that closed report context.
Upon receiving the termination event, the Image Display removes the study from its worklist.
Note: The Image Display may have different behavior when processing the termination event depending on the report status of the study. For example, it the status is draft completed, then the Image Display may set the study in a separate Draft worklist for later follow up.
The Report Creator may have some internal mechanism to keep the report for a grace period after signed off and before sending it out to other recipients. The Report Creator persists the report according to its business logic.
Figure 1:XX.4.2.1.2.1-5: Sign-off Report Flow in IRA Profile
The flow above shows the simple case with a sequential switching of report context. In this case, a report context is opened and then closed before the next report context is opened.
In practice, the radiologist is likely to continue with the next study in the worklist without any awareness of the events happening behind the scene. If the initiating Driving Application and terminating Driving Application are different as in this example, then it is possible that the radiologist moves to the next study and hence the Image Display opens a new report context before the Image Display receives the Close Report Context [RAD-X5] event of the reported study.
Such rapid context switching is supported by this profile. The Hub and each Subscriber maintain multiple open context simultaneously. As long as the context is not closed, it still exists. Each event is associated to a particular anchor context. Therefore a Subscriber can reliably match an event to its internal state according to the context ID of the anchor context in the event.
The following diagram shows what can happen in case of rapid switching of the report context.
Figure 1:XX.4.2.1.2.1-5b: Rapid Context Switching Flow in IRA Profile
Eventually, the radiologist completed all the studies in the worklist and closes the Report Creator. The Report Creator unsubscribes to the reporting session so that it will no longer receives any future events.
The Hub closes the connection to the Report Creator. Note that if there are other Subscribers on the same session, those applications are not affected and will continue to receive notification on the session.
Figure 1:XX.4.2.1.2.1-6: Close Reporting Session Flow in IRA Profile
This reporting workflow is more complex because there are 5 systems collaborating closely:
In this diagram, a single Evidence Creator performs multiple functions. Alternatively, there can be multiple Evidence Creators, each performing a specific function.
In this use case,
Figure 1:XX.4.2.2-1: Complex Reporting in IRA Profile
Occasionally a radiologist is interrupted while reporting on a study. She needs to open a different study (e.g. for consultation purpose) before the study that is currently in progress is ready for sign-off.
This profile permits a new report context to be opened before the previous report context is closed. The Hub can maintain multiple anchor contexts simultaneously within a reporting session. The current context is the most recent anchor context that has been opened but not yet closed. This current context enables all Synchronizing Applications to be synchronized and working on the same context all the time.
Once the interrupting study is complete, the Image Display closes the report context of the interrupting study. The Hub removes the context of the interrupting study and set the current context back to the previously opened study. Note that all associated context and contents remain in the Hub.
By default, the Hub will implicitly generate and distribute new DiagnosticReport-open
event for the resumed report context to all subscribers (See Hub Event Producing Requirements for more details.). As a result, all subscribers will resume to the same report context. If an application has business logic to resume something else rather than the previous report context, that application should send a new Open Report Context [RAD-X3] event to set the new report context accordingly.
Figure 1:XX.4.2.3-1: Interruption and Resume Flow in IRA Profile
Error handling is driven by two factors:
Figure 1:XX.4.2.4-1: Error Handling Flow in IRA Profile
Figure 1:XX.4.2.4-2 shows two sample use cases how error handling can be used in reporting.
Figure 1:XX.4.2.4-2: Error Handling Example Flows in IRA Profile
A radiologist wants to review a draft report created by a residence. She opens the draft report in the Report Creator. The Report Creator opens a new report context for the draft report, including the corresponding patient and study context. The Image Display receives the event distributed by the Hub and opens the study in context. The radiologist reviews the study associated to the report using the Image Display.
Later a radiologist selects a nodule measurement on the report. The Report Creator sends a content selection event for the observation. The Image Display receives the event and display the observation on the study.
In case a reporting session has not been started when the radiologist reviews the draft report, the Report Creator can start a new reporting session and launch the Image Display to join it.
This profile strongly recommends all actors to consider the FHIRcast Security Considerations.
This profile strongly recommends all actors group with an ITI ATNA Secure Application or Secure Node Actor using the Radiology Audit Trail Option.
The ATNA Profile requires actors to implement:
Furthermore, for the HTTP-based transactions, this profile strongly recommends the use of ITI Internet User Authorization (IUA) Profile to ensure that communications are only allowed for authenticated and authorized users and/or systems.
Additionally, although this profile does not specify any particular method for an application to launch other synchronizing applications, this profile strongly recommends the use of SMART App Launch for application launching. In addition to the use of OAuth2 as specified in the ITI IUA profile, FHIRcast extends SMART App Launch with FHIRcast specific OAuth2 scopes that can be used by the Hub to validate if the Subscriber is authorized to invoke the transaction. Furthermore, the authorization server returns the FHIRcast SMART launch parameters which can be used by the synchronizing applications to join the session. See Section 4.1.1 SMART on FHIR for more details.
Note that with FHIRcast, the authentication and authorization is controlled at the time of subscription and per context change request. Once the websocket connections are established, there is no further authorization for event distribution.
The events as defined in this profile contain personal demographic information and clinical information. It is appropriate for products implementing the this profile to include appropriate PHI controls. Specifying such mechanisms and features is outside the scope of this profile.
Table 1:XX.6-1 describes various actors in various other profiles that might be useful to group with IRA Profile actors.
Table 1:XX.6-1: IRA - Optional Actor Groupings
IMR Actor | Might group with | Potential Purpose |
---|---|---|
Report Creator | IMR Report Creator | To produce multi-media interactive report using the context and content received. |
IUA Authorization Client | To provide authorization claims when invoking a request with another actor. | |
IMR Report Creator | To receive image references and measurements input from Image Display for the interactive hyperlinks. | |
Image Display | SWF.b Image Display | To display patients' studies and share context and content with other synchronized applications |
IUA Authorization Client | To provide authorization claims when invoking a request with another actor. | |
IMR Image Display | To enhance the interactivity with the Report Creator after the Image Display is launched. | |
Worklist Client | IUA Authorization Client | To provide authorization claims when invoking a request with another actor. |
Evidence Creator | SWF.b Evidence Creator | To provide measurements and other evidence data and share the content with other synchronized applications. |
IUA Authorization Client | To provide authorization claims when invoking a request with another actor. | |
AIW-I Task Performer | To provide an additional method to share the output with other synchronizing applications in a reporting session. | |
AIR Evidence Creator | To support creating the various AI results. | |
Watcher | IUA Authorization Client | To provide authorization claims when invoking a request with another actor. |
AIW-I Watcher | To watch an additional infrastructure for events. | |
Hub | IUA Resource Server | To enforce only authorized access to the resources stored in the repository. |