Page tree
Skip to end of metadata
Go to start of metadata

This process describes a way to process the IG in a way that it is ready for publication on a website, with resolvable references.

1.    Setup the working folder

  1. Create a working folder for your implementation guide publication (all releases of the IG will be in added to that folder, and the folder can be updated to the web server).
    • e.g. Publication 
  2. Download the publisher jar to this folder and `cd` into it
  3. Clone the history template to a folder called fhir-ig-history-template in this folder (or add it as a submodule if you want)

    You can use other history templates:

  4. Add the registry (clone or submodule) submodule to a folder called ig-registry

  5. In the working folder, create a folder that will be your web root (typically the folder that you will publish to the web)

    example: md webroot
  6. Create a publish.ini in the webroot folder, like this:




    Where {pid} is the format for the package id, which is a series of dotted names such as foo.fee.{category}.{code} and {url} is the format for the canonical URL http://foor.fee/{category}/{code}

    {category} is optional

    {code} is mandatory

    Note: the url must be same as the IG's canonical URL

  7. Create an empty folder ig-build-zips

  8. Create history template files in the templates folder - To Do

  9. Create a folder [<category>/]<code> where category and code are the IG category (optional) and the IG code.

2.    Setup the IG for publication

  1. Change or retain these parameters from the ImplementationGuide:

    {ig_id}: e.g. my-ig

    {ig_url}: ImplementationGuide.url: e.g.

    {ig_version}: ImplementationGuide.version: e.g. 0.1.0

    {ig_package_id}: ImplementationGuide.packageId: e.g.

  2. Run the publisher to make sure everything is ok:

    java -jar ../publisher.jar -ig .
  3. Create a file called publication.request.json in the webroot folder. see IG Publication Request Documentation

3. Add a new release (run this for every new release)

  1. Create a file called publication.request.json in the webroot folder. see IG Publication Request Documentation
  2. Run the publisher with the go-publish option:

    java -jar publisher.jar -go-publish -source my-ig -destination webroot -registry ../ig-registry/fhir-ig-list.json -history ../ig-history -milestone
  3. Create a file publication-request.json:

     "package-id": "{ig_package_id}",
    "version" = {ig_version},
    "desc" = {rel-desc},
    "descmd" = {rel-desc},
     "path" = {canonical}/{ig_version},
    "status" = {rel-status}, ci-build|draft|qa-preview|ballot|trial-use|release|update|normative+trial-use
    "sequence" = (sequence Group, e.g. DSTU, Main... )
    "changes": (optional link to a page describing changes)

  4. That should do it. you should now have in your www folder the ig content, and onside it one folder for each release (e.g. /0.1.0, /0.2.0). In the root folder you should also have the history folder which would look like this (besides the template, of course)


  • No labels


  1. should step 1.4 be to create a fork of ig-registry, followed by the creation of a branch in that fork? In order to submit your changes (the ig-build process given does update this folder) back to the FHIR ig-registry, the changes need to be on a forked repo with a pull-request. The ig-registry is managed differently.

    Then at the very bottom one must then commit the changes that the IG build process made to the ig-registry folder, push them to a named branch, and then create a pull-request. 

    Then you need to plea to the gods (aka Grahame Grieve) to accept your pull-request on the ig-registry.

    Or is these steps wrong? Or are these steps only necessary for organizations that want their IG in the ig-registry?

  2. Jose Costa-Teixeira Lloyd McKenzie Grahame Grieve - Would be good to get this page updated to indicate the use of go-publish. this page still is instructing to use publish-update