This wiki has undergone a migration to Confluence found Here


From HL7Wiki
(Redirected from What is a Template?)
Jump to navigation Jump to search

Simple definition

A template is a pattern.

SAIF-CD Definition

  • A template is an artifact that constrains a model or model fragment.
    • REF: SAIF-CD:Figure 12: Information Framework Concept Map

HL7 V3 Definition=

Definition: a template is an expression of a set of constraints on the RIM which is used to apply additional constraints to a portion of an instance of data which is expressed in terms of some other Static Model. Templates are used to further define and refine these existing models within a narrower and more focused scope. A template is represented as a Static Model, optionally with additional constraints expressed in some computable form. In addition, there is a set of metadata associated with every template template to describe the purpose and use of the template. (source: May2007 Template ballot)

Lloyd McK: a template needs to be

  • ITS independent,
  • enforced without human intervention,
    • there are constraints that can't be enforced in this fashion (e.g. narritive text related to the code in this attribute SHALL describe ..). Those are not HL7 templates.
  • applied/based on RIM based structures.

20070430 MON Q1, joint Mnm/Strucdoc:

  • CDA implementation guides contain textual constraints, some of which may be expressable in the form of Templates. Won't be implementable any time soon. Methodology can be sorted out, remainder is up to tooling.


  • What's the difference between a Template and a CMET?
    • The short answer:
      • A CMET is a model/schema, used as a building block in other models/schemas.
      • A template is a model/schema, used to constrain a more general model/schema.
    • Fundamentally, we have serialized static models. Those static models can be used in different ways - as payloads, as the bindings for one or more CMETs, or as templates. A given static model can be used for any or all of these purposes.
      • When used as a CMET it becomes an integrated part of a message model, plugged in. There is one message model made up of components and you can make one message schema from it that validates all your constraints.
      • When used as a template, it doesn't become part of the message model itself (and isn't present in the message schema). It is an extra model in its own right that can be used to describe additional things not in the base message model. Use as templates is determined at runtime by the sender.