forgelogo-feature2

Make your first FHIR profile – within one hour! (Updated version Sep. 2016)

By Ardon Toonstra – Rob’s former blogpost of about a year ago may be a bit outdated but definitely not irrelevant. As FHIR is picking up speed more and more people are starting to model FHIR to their specific needs. For the beginners in FHIR modelling – better known as “profiling” –  this updated blogpost is the way to go.

As an example I will create a national ‘Dutch Patient’ profile. Even though Ewout Kramer is in the core team of FHIR, none of the specific concepts of our small country made it into the core spec of FHIR. In this blog, I will demonstrate how to make a customized profile.

Step 1 – Downloading and running Forge

Go to https://simplifier.net/  and click on Download Forge on the home page. Then create a free account on Simplifier.net, the global FHIR registry, before downloading Forge. This account may come in handy as this enables you to view and share your work in a click of button.

Click on ‘Goto Installer’ and ‘Install Forge’ for DSTU2 1.02. Accept the terms of both Microsoft (for the .Net runtime if you do not already have that) and Furore (for Forge). I can assure you both companies really exist and do no harm. After installing both components, Forge will automatically launch.

Step 2 – Creating and naming your own profile

In Forge, choose File – New Profile. The resource tab is now opened. This screen shows all available FHIR base resources. Select the “Patient” resource and click the “Select” button. In the Session Explorer on the left side you now see “MyPatient”.

01-makeaprofile

If you click on MyPatient in the menu on the left you will open the Properties tab of MyPatient. Here you can amongst others: 1) enter a URL for your StructureDefinition (profile), 2) change the name of your StructureDefinition (profile) and 3) provide a description of your StructureDefinition.

02-makeaprofile

Step 3 – Use slicing to add your own unique identifier

Next to the Properties tab you will find the Element Tree tab. This tab holds the element tree that contains all the elements of the base resource “Patient”. Forge offers multiple actions to modify a StructureDefinition. For example, you can change the information of the base elements, slice elements, or add extensions to elements.

03-makeaprofile

Selecting an element in the tree will open the Element Properties on the right side of the screen. Examples of element properties are: the name, a short description, the cardinality and the datatype.

A patient usually has one (or more) identifiers. To specify multiple identifiers you can slice the element “identifier”. You do this by selecting the element you want to slice and click the Slice button. Once you sliced the element, you can add slices by clicking the “Add slice” button. For this example I added the Dutch Social Security Number, called burgerservicenummer. You can add more slices by selecting the element (identifier in this example) and clicking the “Add slice” button again.

04-makeaprofile

Once you have created the slice burgerservicenummer, you can edit its properties in the Element Properties screen.

05-makeaprofile

Step 4 – Use extensions to add a role to the contactperson of a patient

If the base resource does not contain all the elements you need, you can create an Extension for the element you need. Click on “New” and then on “New Extension” in the Solution explorer to create a new extension called “MyExtension”.

06-makeaprofile

The extension also has a Properties and Element Tree tab where you can modify the information of the extension. In this example I want to add a “Role” to the contactperson of a patient. In the Properties tab of the extension I changed the name of the extension to “Role”.

07-makeaprofile

To add the Role extension to the “contact” element in the PatientNL profile I first select the “contact” element. Secondly I click the “Extend” button.

08-makeaprofile

This action adds the “MyExtension” element to “contact” element.

09-makeaprofile

Selecting MyExtension will open the Element Properties window on the right side. In this window you can select the “Role” extension from a dropdown menu.

10-makeaprofile

Under Name you can specify the name of the role of the contactperson of the patient.

Step 5 – Use referencing to make the contactperson part of an organization

Sometimes you want an element in a profile to reference another profile. For example, the contact of a patient can be part of an organization. If the profile Organization exists, you can reference to this profile by adding the canonical URL to the organization element in contact. To do this first select the organization element.

11-makeaprofile

Then add the Profile URI to the reference data type in the Element Properties on the right site. If your customized profile Organization is opened in the Session Explorer Forge will automatically give that Profile URI as an option. Done!

12-makeaprofile

Step 6 – Saving your profile

If your profile has a yellow star in the Session Explorer the profile has unsaved changes. To save your newly created profile you can select your profile in the Session Explorer and click the save icon. Ctrl + Shift + S allows you to save all profiles at the same time.

13-makeaprofile

In the Save as dialog box, choose your name for the .xml file in which your Conformance Resource will be stored. You will also need to save Role, since it’s definition is a separate StructureDefinition resource. Both the PatientNL.xml and Role.xml file can be viewed with any xml browser, to see what Forge actually created.

As a default setting your profile is saved as a differential, which means it only saves the changes you made in comparison with the base resource. If you want to save your complete profile as an xml or json file, go to Options and check “Save snapshot component”.

Share your work with your team or the FHIR community at large!

Because Forge is integrated with Simplifier.net and you now have an account it is possible to directly render and share your work online via Simplifier.net. This blog shows you the couple of mouse clicks that are needed.

FHIR Implementation Guides in Simplifier.net

Earlier today we released version 13.5 of the FHIR Registry Simplifier.net. This version contains a number of bugfixes and minor improvements plus two major features in Beta: the Implementation Guide Editor & Viewer and GitHub Integration. Let’s focus on the first. Implementation Guides (IGs) are an important communication channel for interoperability projects. It’s where people (developers, architects, product owners etc.) go to learn how FHIR is implemented in a certain use-case. IG support contains a big chunk of functionality, which is why we chose to release this feature in BETA and ask users for input (see previous blog post). Some nice features of IG support are drag&drop, auto-generated titles, improved help, sort, and a preview button, which brings you directly to the IG Viewer.

IG support is a feature of the paid plans of Simplifier.net (although free for Beta testers!). Lately, we got a lot of questions from the community about the plans and our pricing policy. We decided to put the first version of the feature page and the pricing page on-line. Not all features have been implemented yet. For instance, we are working hard on validation and collaboration. We hope to release these features by the end of this year, early next year. Simplifier.net will be the one-stop-shop for FHIR projects.

Simplifier.NET

How to publish your profile – within one hour

By Ardon Toonstra – After completing your FHIR profiles, the next step will probably be to make them available to the world. Publishing your profiles will enable, for instance, app developers to build on your work. It may even be possible that your published profiles become the cornerstone of nationwide IT infrastructure for decades!

Assuming you have used Forge to author your profiles it will be very easy to publish your work thanks to the integration of Forge with Simplifier. Besides Simplifier, Forge is able to publish to any FHIR server with the click of a button. In this post, however, we will elaborate on publishing profiles to Simplifier. Simplifier is a registry for all FHIR resources. It facilitates you in using FHIR more efficient because of the ability to search and use previous work. Moreover, Simplifier can be used as platform to work on your profiles with multiple developers. I will come back on this shortly, but let me first demonstrate you how to publish your profile in two steps!

Forge: upload to Simplifier

After finishing your profile in Forge go to ‘File’ at the top menu and click ‘Publish to Simplifier.net’ (or press Ctrl + U instead). In the following screen you will be asked to give your Simplifier.net credentials. In case you do not have a Simplifier account, just register here. Create a project by going to your personal portal, the tab ‘your projects’ and click the button ‘create a new project’. Next, after you provided your credentials click Connect and wait a second until the Status says ‘Passed’. Now, you can select your project in which you want to publish your profile. Click the save button to finish the upload.

01_How to Publish

Forge integration with Simplifier

Simplifier: publish

Forge returns to its editor screen and your profile is now online at Simplifier. If your profile is truly ready for the world you can publish it at Simplifier. The next step will be to find your just uploaded profile in your project at Simplifier. Go to your personal portal on Simplifier and select the project under ‘Your Projects’. Click on your uploaded profile which can be found under the tab ‘Resources’. In your profile page, click the ‘Publish’ button in the top right beneath your username. That’s it, your profile is online and marked as published at Simplifier!

 

Finally

I promised you to continue about using Simplifier as a platform to work on your profiles with different users/developers. One of the reasons this works is the integration of Forge and Simplifier. Imagine that you would like to get feedback on your designed FHIR profiles. To arrange this, just upload the profiles to Simplifier and provide the desired users with the project name or link to your project. In this way you show them the rendered profiles in a coherent way and provide them the ability to download the profiles in XML or JSON format. Members of the same project, assuming they have the necessary user rights, can easily update the profiles by importing them into Forge and upload them again as described above. Thereby making FHIR even simpler!

If you have any questions, feel free to comment or contact us at simplifier@furore.com.

Create my first FHIR Implementation Guide using Simplifier

The much appreciated beta testers of Simplifier can use the new Implementation Guide (IG) editor. To become a beta tester, follow the instructions on this link! In this blogpost I will show you how to make an IG using Simplifier. For your IG, you can use your own resources and/or any of the publically available resources placed on Simplifier. This IG makes use of my project’s resources  which I uploaded by a link to my GitHub repository. In a former blog, I showed how to link a project to a GitHub repository.

Step 1 – Create an IG

As a beta tester the ‘Implementation Guides’ tab in your portal will be visible. Click the big green button and provide a title to create your first IG. The IG will appear in the menu with the options Browse, Edit and Delete. The Edit button opens the IG editor.

1.IGblog

Personal portal in Simplifier

Step 2 – Define the outline of your IG

The IG editor opens with the root page. On this page you can adjust the title and select one of two IG rendering format. For now, we leave it at the default ‘Two Level Menu’. Feel free to experiment! Add a child page to the root element by clicking the icon that appears when you hover above the tree elements in the left section of the IG editor. Give the newly made page an appropriate name. Add more base and child pages to make the outline of your IG.

In our ‘Two Level’ rendering format, the first level elements will form the navigation bar in the top of the IG. If you add child pages to one of those elements, that section of the navigation bar will have a dropdown menu, which will include it’s child pages. A third level will form the different paragraphs, including a navigation menu on the side. Please experiment with these multiple levels of pages, and let us know what you think!

Step 3 – Provide the content of your IG

You can fill the IG content in a fast and good-looking way thanks to the Markdown based editor and Simplifier’s resources. For the use of Markdown features in this editor I would like to refer you to this page or Google. Use the preview on the right section to see the progress of your work of the current page. Click on the “Preview” button to preview the entire IG. Simplifier automatically saves your work so don’t worry if you leave the editor or if you cannot find the save button (it is not there!). In the last part of this blog, I will elaborate further on how to include publicly available resources on Simplifier.

Step 4 – Include rendered resources from Simplifier

In my IG, I want to include the rendered trees and tables of the FHIR StructureDefinitions in my project SIG. One of them is a profile on an Observation resource named LabObservationNorway and is located at https://simplifier.net/SIG/LabObservationNorway4. Therefore, I type the statements {{tree:SIG/LabObservationNorway4}} and {{table:SIG/LabObservationNorway4}} in the editor on the page named ‘LabObservationNorway’. To see the result in the preview section press  ‘Ctrl+Enter’ or refresh the page with the button on the right. Next, let’s include a link to an example instance of this profile. This works in a same manner using the location on Simplifier. The statement {{link:SIG/Observation-example9}} will give a link to that particular example.

The IG editor has more statements that can be used. The {{structure:project/resource}} statement gives another version of the rendered tree. For example, it has a different layout and allows you to collapse the tree. This rendering, however, is at the moment still work in progress. Moreover, it is possible to include table of contents anywhere in the IG. There are two variations, one contains all pages of the IG ( {{index:root}} ) and the other contains a table of contents of the current pagee( {{index:current}} ). Lastly, {{namingsystems:project}} will list all the NamingSystems of a project. More options within the IG editor will follow. If you have any suggestions, let us know!

4.IGblog

IG Editor

Finally

Simplifier’s IG editor lets you combine FHIR resources together with textual guidance in an fast, coherent and straightforward way, thereby creating a useful and easy to read IG. The above mentioned example IG can be found here. If you haven’t done so already: become a beta tester to create your own IG and play around yourself. Keep in mind that the IG editor is still a beta feature and improvements can be expected. Feedback is much appreciated and can be easily provided through the feedback button on the top right.

Use your GitHub repository to automatically render and share your work with the FHIR community

Recently Simplifier released new features for the early FHIR adopters. Become a beta tester to get access to these features. One of these features is the ability to link your project with a GitHub repository. GitHub integration fetches your resources from a repository in GitHub and adds them to your Simplifier project.  Sharing and rendering your resources online and keeping them up-to-date has never been simpler!

Let me show you how easy it is.

Let’s assume you have a GitHub repository, that contains resources ready to upload to Simplifier. You can start the linking process by logging in to your account on Simplifier and create or select a project in your portal. In your project page, go to Options and click ‘Link to GitHub Repository’.

1.GitHub

You will be redirected to the GitHub login or, when you are already logged in in GitHub, straight to the page where you will be asked by Github to authorize that Simplifier can access your repository.

2.GitHub

After you authorized Simplifier to your GitHub repository, you are redirected back to Simplifier where you will be asked to select which repository and which branch you want to link to your project.

You can also configure how to deal with files that cannot be imported and whether to also remove resources from your project when they are removed from your repository. By clicking on the create button all the resources from the linked repository are instantly added to your project.

3.GitHub

At any later time, you can check the status of the link with Github and modify it if necessary by going to your project, options and clicking on ‘GitHub WebHook Status’. This brings you to a page where an overview of the uploaded files and current settings are given.

4.GitHub

That’s it! Your project is now linked to a GitHub repository. In a next blog, I will show how an implementation guide can be made using Simplifier. Feel free to give any feedback by using the feedback button located at the top of the page in Simplifier.

Clinical research enters the sharing economy with #FHIR

The famous examples of the sharing economy are, of course, Airbnb, Uber, BlaBlacar, Peerby etc. A less prominent example is Sync for Science. In Sync for Science patients share their medical data with clinical researchers. The idea is brilliant and simple: more patients in trials, more data points, less cost, less burden on the healthcare system. Just what is needed for research in precision medicine. No wonder the US Government launched Sync for Science to support its Precision Medicine Initiative.

Standardization is a key component of Sync for Science. The people involved in Sync for Science chose for the SMART on FHIR approach of open FHIR APIs. No new standards, stick to where the health IT market is heading, which means the FHIR data model, the REST protocol for data exchange and OAuth for security.This is the set of standards that participants in the Argonaut project adhere to (you know, Argonaut, the US initiative to accelerate interoperability using FHIR). The list of participants in Argonaut is as impressive as it is US oriented. Europe is lagging behind.

Luckily, Josh Mandel from Harvard Medical School, one of the driving forces of Sync for Science, will be in Amsterdam during the FHIR Developer Days 2016 (16-18 November). We asked him to elaborate on Sync for Science when he is here. We believe Sync for Science may well be a breakthrough project for FHIR and deserves to be followed in Europe.

More about FHIR Developer Days 2016, click here. President Obama on precision medicine and Sync for Science, click here. Obama is prevented from attending DevDays.

Apple ResearchKit, Android ResearchStack and #FHIR

One the exciting topics at FHIR Developer Days 2016 is the use of FHIR in medical research. Expert in this field is Pascal Pfiffner (bio), who will talk, among other things, about ResearchKit and ResearchStack. ResearchKit (Apple) and ResearchStack (Android) are open source frameworks for researchers to inform and consent patients, and to collect personal health data from participants in trials. ResearchKit/ResearchStack have out-of-the box functionality for patient consent, surveys for Patient Reported Outcomes and collecting health data from sensors in the phone or devices connected to the phone.

However, ResearchKit/ResearchStack have no facilities to integrate this data further upstream, e.g. to the EHR of the doctor or the system of the researcher. This is where FHIR comes into play. Pascal Pfiffner’s research in this realm has been focused on a standardized way of integrating ResearchKit/ResearchStack data with back-end systems, using FHIR. He calls this C3-PRO: the Consent, Contact, and Community framework for Patient Reported Outcomes (http://c3-pro.org).

During FHIR Developer Days Pascal will elaborate on the progress of his team in this field and facilitate developers during a hackathon session focused on medical research.

Architecture3cpro.png

The architecture of C3-PRO

For more information, here is the link to the track.