Introducing Hyperlight: Virtual machine-based security for functions at scale
The Microsoft Azure Core Upstream team is excited to announce the Hyperlight…
HL7 FHIR (Fast Healthcare Interoperability Resources) is an open standard for healthcare interoperability. Microsoft contributes enthusiastically to FHIR and the health standards community, from developing open source servers, tools, and libraries to hosting managed services in Azure, as well as technical evangelism and development of core specifications.
From time to time on this blog, our team will share thoughts, design challenges, and implementation progress with the community for transparency and feedback. Today’s post is the first installment, which focuses on upcoming changes to FHIR Subscriptions.
As FHIR adoption grows, the community begins to tackle more complex workflows. Critical in many of these workflows is the ability to send notifications to clients based on actions happening within a server. One mechanism for managing event notifications to clients is FHIR’s built-in Subscription resource. In the upcoming FHIR release (R5), there is a significant redesign of the Subscription resource and the notifications mechanisms around it.
The redesign introduces the ability for servers to send notifications that include either references (by resource ID) or the full contents of resources involved in an event. As the new design has matured, we’ve had in-depth community discussions about what should be included in notifications and below is a summary of the results.
As context, at its core, a Subscription generates notifications about state changes. A state change implies two views of the world: the state prior to the change, which I’ll refer to as the ‘previous’ state, and the state after the change, which I’ll refer to as the ‘current’ state. When considering a RESTful server (e.g., a FHIR server), state changes can be sorted into three buckets: create, delete, and update (the CUD in CRUD – since reads don’t change state).
There is one more issue that I’d like to cover, which is the possibility of missing intermediate states. There are several scenarios where this is possible: high frequency updates to a resource, server processing queue backup, transmission times to clients, etc. If knowing all intermediate states is important to your workflow, the implementation server must support versioned links on all resources of interest and provide guaranteed delivery – both of which are beyond the scope of FHIR Subscriptions.
By using versioned resource links, each update in a server will be unique, and clients can retrieve those exact versions at their leisure. By supporting guaranteed delivery, a server can ensure that a client hasn’t missed any states due to transmission. Given that these are not the expected behaviors of generic servers, workflows should expect that the only knowable state of the server is the ‘current’ state. To use the official language: “Here Be Dragons!” – take care in your design.
We’re targeting the May 2020 ballot cycle for the Subscription redesign, and we’re eager for your early feedback. The draft specifications are hosted on the FHIR CI Server and our testing infrastructure is hosted on Azure. The best place to reach us is the Subscriptions Stream on the official FHIR Chat Server and we’re hosting a Subscriptions track at the CMS Connectathon #1 (January 7-8 in Baltimore, Maryland, US) and supporting the Subscriptions track at HL7 FHIR Connectathon #23 (February 2-3 in Sydney, Australia). We hope to hear from many of you in the coming weeks and look forward to seeing you at these events.
Other feedback or questions? Let us know in the comments below.
FHIR® is the registered trademark of HL7 and is used with the permission of HL7.