Temple

Revision as of 14:23, 16 May 2018 by Mdegraauw (talk | contribs) (The code editor)

Temple is an XML-based editor for templates. Temple is fast and well suited for those who are confomfortable with the template XML syntax. Temple is aware of names and id's of concepts, valueSets and templates and supports autocompletion of those. Temple has a built-in inspector (Ctrl+S) to quickly inspect references.

Starting Temple

Temple may be opened from the template viewer in ART, with the 'Temple' button, or directly. In the latter case, an editor with just some boilerplate template in it is opened. If opened from a browser with:

 {hostname}/temple/modules/temple.xquery?language=nl-NL

temple will be opened with empty template. Search for templates in a project using the search box in the inspector with prefix:searchstring notation. If opened like this:

 {hostname}/temple/modules/temple.xquery?language=nl-NL&prefix=demo1-

Temple starts in the demo1 project. If opened from ART, the template being viewed is opened. Temple is not an Orbeon XForms application, but eXist + HTML. This means that you need to be logged in to eXist to use Temple. Temple (or more correctly, your browser) may ask credentials when opening Temple.

The code editor

When opening a template, the corresponding templateAssociation is automatically retrieved. If it does not exist, it is created in Temple (though not saved yet). The attributes @templateId and @effectiveDate are not shown on templateAssociation. On saving, Temple will copy them from the template. (If you add them manually, they will be overwritten on save.)

If you need a new template/@id, simply type in 'new', and Temple will create a legal template/@id when saving:

<template id="new"

You can (manually) enter a new @effectiveDate, or choose from the drop-down. In the drop-down, 'now' translates to the time Temple was opened (i.e. "2014-01-21T13:16:08") and 'today' translates to the start of today (i.e. "2014-01-21T00:00:00").

The following rules apply when saving a template:

  • If @id and @effectiveDate exist, template and templateAssociation are overwritten.
  • If @id exists, and @effectiveDate not, a new template is created (in effect, a new version of the template).
  • If @id = 'new', a new template is created. An @effectiveDate must be supplied by the user.
  • If templateAssociation does not exist, it is created (maybe empty, if no concepts are provided).

When saving, Temple will validate against the DECOR schema. If there are errors, those will be displayed. This will land you on an error page, so go back in the browser to edit further. It's also possible to validatte without saving. If the template is valid, after saving you will stay on the edited template page, thus allowing to Save and continue working. Only when creating a template with @id='new', you will be redirected to an empty page, and will have to navigate to the new template from ART (where you might need to refresh the page you were on).

Temple will add names to:

  • templateAssociation/concept/@ref
  • include/@ref
  • @contains
  • @valueSet

when those are referenced by id. The names are discarded again when saving.

The editor supports 'Find' and 'Replace' with the default CodeMirror shortcuts. (Make sure the cursor is in the Code area, otherwise the browser behavior will overrule the shortcuts.)

The inspector

When the cursor is in on any construct containing the name or id of a template, a valueSet or concept, press Ctrl-I to inspect it. Temple will look for an effectiveDate or flexibility on the same line of code and use that, and else will use 'dynamic'. For instance, put the cursor inside the id in:

 <element name="hl7:id" datatype="II.NL.BSN" id="2.16.840.1.113883.3.1937.99.62.3.11.7.1">

and press Ctrl-S to inspect the referenced concept(s). Within the inspector one can also inspect further, for instance to inspect the parent of a concept or an included template. Searchable id's are color-coded. When inspecting something on id (and effectiveDate) a global search in the DECOR repository is done. When searching on name, a local search in current project is done.

The inspector has a search box which gets all artefacts (concepts, transactions, valueSets and templates) containing a search string. Supported searches are:

  • 'address' : Search for all artefacts containing 'address' in current project.
  • 'all:address' or '*:address': Search for artefacts containing 'address' in current project and BBR's referenced in current project.
  • 'demo1:address' : Search for all artefacts containing 'address' in DECOR 'demo1-' project (if available on seerver). This allows searching in other projects than current project.

Bookmarks

When editing a template, clicking the 'empty star' button will add a bookmark. The empty star becomes a filled star. The 'Bookmarks' button will show all bookmarked templates in the inspector. Clicking the 'filled star' will remove the bookmark again.

Shortcuts

While editing a template, temple supports the following shortcuts:

  • The attribute cc on element offers a shortcut to adding the most common combinations of @minimumMultiplicity, @maximumMultiplicity, @conformance and @isMandatory. Example:
    cc="1..1 M" expands into minimumMultiplicity="1" maximumMultiplicity="1" isMandatory="true"
  • The attribute as on attribute offers a shortcut to adding the most common HL7 V3 attributes like classCode and moodCode as name/value pair. Example:
    as="classCode" expands into name="classCode" value=""