This wiki has undergone a migration to Confluence found Here

Process for Publishing a FHIR IG

From HL7Wiki
Revision as of 19:55, 31 March 2019 by GrahameGrieve (talk | contribs)
Jump to navigation Jump to search

Publishing a FHIR IG

This process is followed by anyone when publishing a FHIR IG to


To follow this process, you must have:

  • permission from the FHIR Product Director to publish FHIR IGs (including write access to the google sheet)
  • permission from FMG+TSC to publish the particular FHIR IGs
  • an FTP acccount with access to the source for

You must also know how to run the IGPublisher locally

Record Keeping

All publication runs must be recorded in the google spreadsheet at

When you being processing the publication request, create a new row in the sheet, and add the following columns:

  • Operator : Your name
  • IG Name : The formal name for the ballot or publication request
  • IG Source : The github repository URL where the source is located - Check that the repository URL is HL7 (or an other wise approved Organization - consult CTO for approved list)
  • Primary Editor : the name of the editor who will handle any QA issues
  • IG approval: The URL of the wiki page that FMG Approved for the proposal of the IG (if there isn't one, consult the FHIR product director)
  • new IG : "yes" if this is the first time that any version is being published for this IG (whatever version - draft or ballot)


The following checks must be run:

  • TSC Approval: check that TSC has signed off on the publication, and record "yes" in the spreadsheet
  • Realm: add the realm code identified in the IG approval page. Check that this is consistent with the stated scope of the ballot and in the TSC approval
  • Code: add the code as identified in the IG Approval page (note that the name of the github repository does not need to be the same)
  • fill out the canonical ({realm}/{code}) and packageId (hl7.fhir.{realm}.{code}) values.
    • If this is is a new IG: Look up the URL {canonical}/package-list.json and check that it doesn't exist
    • if this is not a new IG: Look up the URL {canonical}/package-list.json and check that the canonical url and packageId and the name of the IG in the package list agree with the details for the IG (canonical and packageId must be identical, name can vary a little).
  • Find the IG (based on it's github URL org and name) in, and check that the IG was built in the last 24 hours. If not, rebuild it. Wait for it to rebuild (refresh the page, or watch
  • now check the qa page (rightmost link on the IG Builds page).
    • check that the packageId and canonical URL in the first line are correct against the spreadsheet, and check that the stated path starts with {canonical}
    • Review any errors in the page, paying particular attention the publication QA checks at the top
    • If there are any errors, refer to the FHIR product Director for approval
    • Once ok, record "yes (N)" in Build QA column, where N is the number of errors
  • in the version column, record the version as stated in the first line (after the {packageId#} part
    • if this is a new IG: the version should be 0.1.0, or as approved by the FHIR Product Director
    • if this is a not a new IG: check that the FHIR Product Director has approved the version
  • in the subdir column, record the subfolder stated in the publication path
    • If it does not conform to the pattern YYYYMMM (with the date correct) or STU{X}, check with the FHIR product director
  • Now review the actual guide (left most link in the IG build page)
  • Check that the header conforms to the FHIR Implementation Guide Publishing Requirements:
    • check that the header shows the name of the IG and the ballot status correctly.
    • check that the header shows the correct HL7 logo
    • check that the header includes the yellow publish box that displays correctly (don't worry about what it actually says)
    • if all checks out, "yes" in the header column
  • Check that the footer conforms to the FHIR Implementation Guide Publishing Requirements:
    • check that the following items are shown in the footer: packageId, version, FHIR version, publishing committee, history link, propose changes link, Copyright (© 20YY+), generated date
    • if all checks out, "yes" in the footer column

Local Build

Now that the main checks have been done, you need to do a local build. To do that, you need a copy of the IG Publisher - see IG Publisher Documentation for assistance

  • clone the github repository to your local drive
    • you can call it whatever you want, but you must retain this folder for audit purposes in some backed up location)
  • run the IG publisher, clearing the terminology cache (run the org.hl7.fhir.igpublisher.jar -ig {local-clone} -resetTx)
  • check that the local {local-clone}/output/qa.html file matches the CI build qa.html

You are now good to publish the IG