This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Profile Tooling

From HL7Wiki
Jump to navigation Jump to search

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:

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 Trifolia
  • Using Clinical Information Modeling and Profiling Language (CIMPL)

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.

Publishing Profiles

Implementation Guides

Public Registries

Data Entry Tools