Standard FHIR Publishing Layout Pattern

From HL7Wiki
Jump to navigation Jump to search

This page describes the standard layout pattern for publishing FHIR related specification

For the purposes of this page, each {specification} is a single set of files in a directory structure that contains all the files that are the content of the specification.

Typically, the {specification} is a set of standalone static html files and supporting binaries that can be used anywhere.

Canonical URL

Every FHIR related specification has a {canonical} URL: this is the logical master URL at which the content is published. For example, the canonical URLs are fixed for HL7 published FHIR specifications:

  • FHIR: http://hl7.org/fhir
  • FHIRPath: http://hl7.org/fhirpath
  • US implementation guides: http://hl7.org/fhir/us/[code] where code is agreed when the IG is defined

The canonical URL is tied to the master web server that hosts the IG. The {root} directory is the physical directory on the web server that the {canonical} URL points to.

File Layout

Inside a {specification} the content can be any valid static HTML desired. Javascript is allowed, subject to the limitations noted [todo]

The standard home page is 'index.html'

Main Layout

The main layout is

{root}\directory.html

A master file that lists the formal releases of the specification - typically, milestone drafts for connectathon support, ballot subjects, and final publications. It should also reference the current build

{root}\{specification}

The current formally published version. e.g. STU1. When there is no formally published version, then this should be the latest milestone draft. After this is formally published as an STU, this is not necessarily the latest copy

{root}\{version}\{specification}

Archived past versions of the specification.

When you post a formal published version, you post it twice: once to {root} and once to {root}\{version}

Redirects

In addition, {specification} contains a set of redirects that get used when the {specification} is published to it's canonical location. For example:

  • the main FHIR {specification} contains patient.html. This is the logical definition for the Patient resource
  • the URL http://hl7.org/fhir/patient.html is the current official version for the Patient resource, and resolves to {root}\patient.html
  • The URL http://hl7.org/fhir/StructureDefinition/Patient is the canonical URL for the Patient resource
  • there is a redirect at {root}/StructureDefinition/Patient that redirects to http://hl7.org/fhir/patient.html. The exact format of the redirect depends on the server hosting the specification. For hl7.org, it's IIS, and an ASP redirect is used. The IG Publisher also produces redirects for Apache/nginx
  • the redirects are only ever used in the current version; redirects for canonical URLS in the draft versions are broken