Profile Tooling
Content on this page has been migrated to Confluence here: https://confluence.hl7.org/display/FHIR/Profile+Tooling
This page gathers together links for tools that work with or on profiles for FHIR. Tools are categorised into several functional categories:
Contents
Editing / Authoring Profiles
The following choices exist for editing profiles
- By Hand
- Use a schema drive editor against Profile.xsd in the FHIR schemas
- start with an existing profile (look for the link under the structure definition on the page for the resource)
- edit the profile as you see fit
- Note: profiles are full rich description of the content, and so they're pretty hard to edit by hand. You an do this but it's not the intention
- From Spreadsheets
- this is how some of the profiles in the specification are produced
- use the FHIR Build Process following the method used here: FHIR Profile authoring
- this is the preferred platform for pre-DSTU internal HL7 development
- Using Forge
- Using Trifolia
- see [1]
- Using Clinical Information Modeling and Profiling Language (CIMPL)
- see [2]
Note: Using an externally-maintained tool such as Forge or Trifolia is the preferred long-term platform and should be used by non-HL7-internal stakeholders
Validating Resources against Profiles
You can validate a resource against a profile in several different ways.
- use the web interface at http://fhir3.healthintersections.com.au/open
- find the profile on fhir3.healthintersections.com.au server by searching through the profiles
- if your profile isn't there, you can put it on the server - paste it into the edit box at the bottom of the page, check the operation is "transaction", and choose Upload
- now, go back to fhir3.healthintersections.com.au/open, paste your resource into the edit box at the bottom of the page, choose "validate" for the operation, and pick the relevant profile, and choose upload
- get a list of errors
- You can use the [validation] interaction
- use a RESTful client like [POSTman], or write code to do this in the background
- post the resource as described by the validation operation, and tag it with the profile you wish it to be tested against (see below)
- most servers require the profile to be hosted on the server itself
- You can use the validator package
- This is a java jar that you can use to validate a resource
- get the validator from the FHIR downloads page for the version of FHIR you are using- download the validation pack, and unzip it
- run it like this: java -jar org.hl7.fhir.validator.jar [source] -defn [validation.zip] -profile [url]
- [source] is a file name of the resource to validate, or a URL at which to find it
- [validation.zip] is the file name of the file validation.zip included in the tool zip download from above
- [url] - the file name or url of the profile to use when validating the resource. if this is not provided, the resource is validated against the base
- You can use the java classes directly
- see the java package org.hl7.fhir.instance.validation in the [FHIR svn]
- The fhir2.healthintersections.com.au source is available at [[3]]
- this can used if desired
Marking that a resource conforms to a profile
Resources can declare that they conform to a profile by being "tagged" with the URI that identifies the profile. The tags are moved as Atom category elements in a bundle, or in the category header in an HTTP call. This is an example profile tag in a bundle (e.g. Atom Feed):
<category term="http://hl7.org/fhir/tag/message" label="Message" scheme="http://hl7.org/fhir/tag"/>
And in the HTTP Headers:
Category: http://hl7.org/fhir/tag/message; scheme="http://hl7.org/fhir/tag"; label="Message"
Note that just because a resource conforms to the rules of a profile, it is not guaranteed to actually conforms to it. The server can choose to test this or not.