We just released the Simplifier Package Server Public Beta! You now can now properly version and publish your profiles, and experiment working with a published set of profiles from others just by installing a package.
The concept of FHIR Packages is a 'working draft standard' intended to become part of the FHIR specification. You can find the draft here. The Simplifier Team developed the package standard in close coordination with the FHIR product director and the FHIR core team. As we really believe in packages, and to help boost the launch of FHIR Packages, we built a package server into Simplifier that you can now use as a reference implementation. Simplifier now is a fully working FHIR Package Server.
Start using it
Starting today you can create packages from your FHIR projects in Simplifier. They can immediately be installed and used by people who want to user your profiles.
You can also now start implementing FHIR packages in your own tools. We will soon open source a Fhir package library for C#/.NET to get you up to speed quickly.
The FHIR package standard is compatible with NPM, so you can use an NPM client to connect to the Simplifier Package Server. But we suggest you use our FHIR commandline tool Torinox, because it has full understanding of FHIR and of packages, and will allow you to use packages for validation, snapshot generation and creating your own FHIR profile projects with package dependencies.
The Simplifier FHIR packages feature is released as a public beta. That means that it is stable and ready to use, but that you should not yet rely on it for production environments, since there might be some changes in the product or the draft standard.
Background: the problem that had to be solved
Not long after the first draft of FHIR DSTU1, versioning became an issue. Nobody was yet focused in versioning their profiles, let alone having the time to add a consistent version modifier at the end of each canonical resoures. We understand that completely. Versioning is a problem that you don't want to deal before you publish your profiles, and even then you don't want to spend days fixing all the canonical URL's and all references, especially in projects with hundreds or thousands of profiles.
More background can be found in Ewout's original blog post on versioning.
Packages solves that problem, just like they do for other kinds of software development. They combine two powerful concepts:
- Grouping of profiles and other conformance resources
- Referencing other packages.
As an author and as a consumer of FHIR profiles, this solves a very big problem for you: you don't have to version your individual profiles anymore. You just have to version your package. If people want consume your profiles, instead of having to fix each of their own profiles to fix the references, they now will just have to update one package reference.
Creating Packages in Simplifier
You're able to create a package with the current state of your Simplifier project on the Package tab of your project. Just select 'Create' -> 'Create new package'. Give your package a name and a version and press the Create button and you're done. It's that simple - anyone can now able to consume your package.
Package Dependencies in Simplifier
In order to up the game, you can also go to the next tab in your project: Dependencies. Here you can add package references to your project. These references will be come part of your package manifest, and the manifest will make sure that those packages are also installed when somebody installs your package.
Until now Canonical references in Simplifier are resolved based on the project that most likely owns them: the project that has a matching canonical base. But those resources are not versioned. In the very near future, Simplifier will immediately switch to package resolution once you turn on packages dependencies. This will make sure that all your references are safely pinned to a specific version of external profiles. And the Simplifier Package Server will also guarantee that this will never change.
Trying out installing packages
In order to give you a quick start, we already have made one tool ready for consuming packages: Torinox, our cross platform FHIR command line tool.
Torinox is easy to use command line tool that gives you a host of small FHIR tools. The name of Torinox inspired by the Victorinox Swiss Army Knife: a multitool. You can download Torinox from Simplifier.
Torinox allows you to do a lot of things with FHIR resources. You can use it for bundling resources and splitting bundles. Or transform fhir resources from or to JSON or XML. It has an easy way to fetch resources from any FHIR server, and many more utilities. In addition to that all, Torinox now has also become a package client. We have published a separate blog post about installing packages with Torinox
In the coming weeks we will start implementing validation, snapshot generation and link generation based on package dependencies in Simplifier. Next on our roadmap is also to implement FHIR packages into Forge.
If you would like to know more, I will give a presentation on packages in detail on the Amsterdam FHIR Devdays, Nov. 14-16.