See Clarification of use of templateId for ongoing discussions, below is the current understanding.
TemplateId is a globally unique reference that can be used by look-up services and registries in an international distributed computing environment, and can be stored within each instance as a permanent record of the constraint artefact to which it conforms.
- The constraint applies from the "point of occurrence" (of the templateId attribute) in the model. A sender can assert any templateID anywhere they like. It must be ignored by receivers for all purposes except validation.
- receivers are not required to validate against the templates
- There's no reason to prohibit the declaration of any templates at all, because the declaration of non-recognized templates has no impact on the receiver.
- If an application rejects a message because that message contains a template the application doesn't recognize, that application would be considered non-conformant.
- The use of specific templateId may not be constrained, see Constraints on infrastructureRoot attributes
The example shows an instance (with ID 373645) of an observation (of type Barthel-index). The observation uses the REPC_MT000103.Barthel_Index template.
<Observation> <templateId root="2.16.840.1.1138188.8.131.52.2.4.12" extension="REPC_MT000103.Barthel_Index">
<id codeSystem="2.16.840.1.1138184.108.40.206" extension="373645"/> <effectiveTime value="200601191211"/> <value value="3"/> <!-- various bits omitted from this example --> <Observation/>