• 3 min read

Microsoft FHIR Server for Azure extends to SQL

Since the launch of the open source FHIR Server for Azure on GitHub last November, we have been humbled by the tremendously positive response and surge in the use of FHIR in the healthcare community.

This blog post was co-authored by Doug Seven, Senior Director, Microsoft Health Engineering and Michael Hansen, Senior Program Manager, Microsoft Health Engineering.

Since the launch of the open source FHIR Server for Azure on GitHub last November, we have been humbled by the tremendously positive response and surge in the use of FHIR in the healthcare community. There has been great interest in Microsoft expanding capabilities in the FHIR service, and today we are pleased to announce that the open source FHIR Server for Azure now supports both Azure Cosmos DB and SQL backed persistence providers. With the SQL persistence provider, developers will be able to perform complex search queries that join information across multiple FHIR resource types and leverage transactions.

Why we are adding SQL to the FHIR Server for Azure

The FHIR service relies on a data persistence provider for storing and searching FHIR resources. The initial release of the FHIR service included a data persistence provider based on Azure Cosmos DB, which is a globally distributed, multi-model database for any scale. Azure Cosmos DB is ideal for healthcare scenarios where users need arbitrary scale and low latency. As our developer community continues to expand healthcare applications with FHIR, new use cases and features of the FHIR specification have emerged that are a natural fit for a relational database such as SQL Server. For example, SQL can enable search queries that would correspond to a database join (chained searches, _include, _revinclude) and enable atomic transactions where the entire set of changes succeed or fail as a single entity.

Many healthcare organizations are already aware of the benefits of SQL for managing relational data. Combining the power of SQL with data in the native FHIR format provides new options and applications to accelerate the use of FHIR. To get started, the latter half of this blog post gives you an easy to use demonstration on how to deploy the SQL based FHIR service and interact with the API.

Introducing FHIR R4

In December 2018, HL7 announced FHIR v4.0.0 (aka FHIR R4). This release is significant because a number of the most mature resource definitions became normative, meaning they will be backwards compatible in future releases. We are pleased to announce support for FHIR R4 in the open source FHIR Server for Azure. Available immediately in open source, this enables developers to configure their FHIR server to use the latest iteration of the FHIR specification with trust that the thirteen most commonly used resources, including Patient, Observation, and StructureDefinition, are “locked” and expected to remain consistent in future iterations of the specification.

Getting started in FHIR

Starting with FHIR is easy. Both the open source FHIR Server for Azure and the Azure API for FHIR managed service allow you to provision a FHIR service in just a few minutes. The FHIR Server for Azure repository includes an Azure Resource Manager template for deploying the FHIR server with a SQL persistence provider.

Deployment

To deploy this template in Azure use this deployment link, which will open a custom template deployment form.

Azure Resource Manager template for deploying the FHIR server wirh a SQL persistence provider

At a minimum, you must provide a resource group, service name, and SQL service administrator password. If no security details (authority and audience) are provided, the instance will be provisioned with no security. For details on provisioning with security enabled, see the FHIR Server deployment instructions.

Testing

After deployment, use a tool like Postman to test the FHIR service. First check the capability statement from the /metadata endpoint.

Check the capability statement from the /metadata endpoint in Postman

Next, insert a patient with a POST to /Patient.

Insert a patient with a POST to /Patient

Finally, test that you can search patients.

Search for patients in Postman

FHIR in your organization

Whether you chose to leverage Azure Cosmos DB or the SQL persistence provider, there are many choices in terms of database schema and indexing. The open source FHIR Server for Azure showcases a design choice that will cover a broad set of use cases and enables you to optimize as needed for your specific use case. We encourage you to explore the source code, deploy the SQL configuration of the server, and provide us with feedback!

We’re thrilled to see the industry embracing FHIR! This week our team is at the HL7 FHIR DevDays, hosted on the Microsoft campus in Redmond, Washington. If you’re attending DevDays and are interested in learning more about the design consideration, please attend the session entitled “Building a SQL persistence provider for a FHIR server” or stop by the Microsoft coding table!

FHIR® is the registered trademark of HL7 and is used with the permission of HL7.