Closed gkustas closed 2 years ago
Having full playback seems fairly expensive. It also depends on actually being able to re-open a particular session, and that might be difficult. Finally, some things might cause windows to open or things to appear, so one doesn't want a real playback. I'd like to suggest an alternative:
@wayfarer3130 : I think you misunderstood - My proposal is for the hub to begin recording events after receiving an open event for DiagnosticReport, ImagingStudy, or Patient. That would be the "session trigger". I would consider these objects "contextual" resources since would reference other objects pertaining to the current session. I don't envision there being many events that occur for one session. I wouldn't call syncing "playback" either. It's really just the process of adding or deleting resources to the session based on the events received during the session. I think we're saying the same thing actually Bill. The get-current-study in the example above is only going to return the events associated with the "current context" which is defined implicitly by the DiagnosticReport-open event occurring. Does that make sense?
Stand by for a larger issue about to be opened in a collaborative effort we are having with Siemens. It will supersede this this issue and the DiagnosticReport issue, as well as introduce the Bundle resource for updates. We certainly look forward to your review and feedback!
Hey @gkustas, thanks for putting this together. I put my initial thoughts below, but will continue to think about it. I think there is a lot to consider here so might be a good thing to talk about on a future HL7 WG call or to even setup an ad hoc call to talk through everything.
Thanks again and looking forward to working through this some more.
Hey @wmaethner !!
Yes, I agree there is a lot to consider. Things have been moving rapidly as of late here in my company, as is often the case when RSNA gets closer :-)
I mentioned the recent discussions we're having with other vendors - all of which is exciting. As I said, Siemens (Web DI aka Eric Martin) and Nuance are working on a collaborative proposal for handing user context, and introducing DiagnosticReport as one of three "session trigger" or "contextual" resources, along with ImagingStudy-open and Patient-open. Eric's group will elaborate further, but regarding the "multiple case session" you describe:
We assume there will be only one "session" per topic active at any time, as far as FHIRCast context is concerned. It will be the responsibility of the client (if it chooses) to cache other "tabs", studies or other resources in the event of an interrupted workflow. So, the "current context" is reset every time one of the three "contextual resource" events occur.
Of course, all of this is work in progress and we're so glad to have anyone's feedback at this point. More soon!
Hi @wmaethner , there was an interaction "Query for Current Context" in the May2019Ballot version of the FHIRcast spec however it was then removed from the current version. We have a scenario that an user who already has a session established in an EHR trying to launch another application in context through single-sign-on. Since the event notification has occurred in the past the only way to synchronize the context in the new application is to use the "Query for Current Context" interaction. The new application is not SMART-on-FHIR enabled so it won't be able to support the SMART launch parameters as suggested by the current version of the FHIRcast spec to establish the initial context. What was the rationale to remove the support for "Query for Current Context"? How could we support the need for establishing the initial context in a non-SMART-on-FHIR app?
Incorporated in the STU3 version of the standard
Without some sort session context provided by the hub, a client that subscribes to a topic AFTER context has been set will be unable to synchronize with the other clients. One such scenario would be an application that crashes and then is restarted, or it could be the radiologist just didn't launch an app until they already loaded images or a patient in the first app.
While we don't want to burden the hub by requiring it "maintain state", I suggest that we require it to keep a list of notifications events for each topic session. In order to do this, we need to define a session: Consider the existing events ImagingStudy-open and Patient-open (as well as the newly proposed DiagnosticReport-open) as the "triggers" that signal a new topic session.
Example: Radiologist PACS/Reporting workflow
*This method was recently removed from the current STU FHIRCast spec. It may be proposed as a new replacement to the HL7 working group in STU2
**If we assume that all ImagingStudy, Patient and DiagnosticReport event payloads contain the entire current context (all imaging studies including priors, all observations, etc.), then the hub need only provide the last event that occurred in the topic session. If we decide to allow partial updates to the context, we will need to devise a consistent way (across all events) to post context updates, perhaps using HTTP method notations like PATCH and DELETE (for adding or deleting a resource to the current context).