This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Difference between revisions of "Binding Syntax"

From HL7Wiki
Jump to navigation Jump to search
Line 49: Line 49:
 
<b>StaticBindingSyntax</b> =  
 
<b>StaticBindingSyntax</b> =  
 
:"<span style="color:blue">When not null, the content of this element SHALL </span>" ValueSetAssertion EOL ;
 
:"<span style="color:blue">When not null, the content of this element SHALL </span>" ValueSetAssertion EOL ;
--[[User:Tklein|Tklein]] 20:48, 24 September 2010 (UTC)Methinks this should be ModelBindingSyntax
+
--[[User:Tklein|Tklein]] 20:48, 24 September 2010 (UTC)Methinks this should be ModelBindingSyntax.  If so, then this also has to embody the "OR" - it can reference a single VSA, or a single code.
  
  

Revision as of 22:40, 24 September 2010

Binding Syntax

This project is a joint effort between Implementation and Conformance and vocabulary.

Scope

Define the human readable expression of the vocabulary constraints in implementation guides (Model Bindings) and by Realms as published sets of Context Bindings. Define the expression of the Value Set Assertion, a Model Binding, a Context Binding, and a Context Domain constraint. Information expressed in the syntax should be isomorphic to the normative definition of the data items comprising vocabulary constraints in Core Principles and the MIF ballots.

Requirements

  • model binding to a single code or Value Set Assertion
  • context binding to a Value Set Assertion
  • dynamic/static stability
  • identification of MIN/MAX/IGNORE value sets in Value Set Assertion
  • identification of Coding Strength in the Value Set Assertion
  • constraining of a Concept Domain to a sub-Domain
  • publication of value set expansions (appendix)

A Model Binding is the direct association of a coded attribute or data type property to a specific Value Set Assertion or specific single fixed code from a coding system.

A Context Binding is the association between a Concept Domain, a Binding Realm, and one or more Value Set Assertions, along with effective timestamps and a sequence (if more than one Value Set Assertion is defined). The specific items that are included in a Context Binding are:

  • Context Domain or sub-Domain (required)
  • Binding Realm (required)
  • Value Set Assertion (required)
  • effective date (required)
  • end date (optional)
  • sequence (optional)

The last four items may be repeated as a group.

A Value Set Assertion is the mechanism to express the coded vocabulary constraint in a binding. A Value Aet Assertion has at least one required value set declared - the MAX; this is mandatory. A Value Set Assertion has two optional Value Sets that may be declared, the MIN and IGNORED. For more information about the MAX, MIN, and IGNORED value sets in a Value Set Assertion, and how mathematical set operations may be used to understand how these provide a localizable, extensible, yet controllable constraint, see the discussion in Core Principles of V3 Models, chapter 5. The value set must be declared using a unique identifier, preferably the OID of the value set. Each value set identified in a Value Set Assertion must have an associated Coding Strength declared. The entire Value Set Assertion has an optional Stability level declared; if not declared, the stability is Dynamic. If declared, the stability is Static, and the effective timestamp is that which is declared in the Value Set Assertion stability.

A Value Set Assertion is expressed using the following ten (10) elements:

  • MAX Value Set OID and/or name (mandatory)
  • MAX Value Set version date/time (optional)
  • MAX Value Set Coding Strength (CNE or CWE – mandatory)
  • MIN Value Set OID and/or name (optional)
  • MIN Value Set version date/time (optional)
  • MIN Value Set Coding Strength (CNE or CWE – conditional)
  • IGNORED Value Set OID and/or name (optional)
  • IGNORED Value Set version date/time (optional)
  • IGNORED Value Set Coding Strength (CNE or CWE – conditional)
  • STABILITY StaticDate (optional)

Note that Model Binding is generally specified in Implementation Guides, whereas Context Binding is generally published separately by a Realm (since a Context Binding is valid across all models in the Realm that make use of the bound Context Domain). However, context binding to the Example Realm is common in Implementation Guides. Note also that Model Binding cannot be used for advisory bindings; Context Binding to Example Realm should be used for those, or information should be placed into the 'Terminology Guidance' section of the Vocabulary Declaration of a coded model element for such advisory information.

Keywords

The keywords SHALL, SHOULD, MAY, NEED NOT, SHOULD NOT, and SHALL NOT in this document are to be interpreted as described in the HL7 Version 3 Publishing Facilitator's Guide. The keyword "SHALL" implies a lower cardinality of 1 but does not disallow NULL values. If NULL values are to be excluded, it will be via an additional explicit conformance statement.

EBNF grammar

StaticBindingSyntax =

"When not null, the content of this element SHALL " ValueSetAssertion EOL ;

--Tklein 20:48, 24 September 2010 (UTC)Methinks this should be ModelBindingSyntax. If so, then this also has to embody the "OR" - it can reference a single VSA, or a single code.


DynamicBindingSyntax =

"When not null, content for all Structural Model elements with a Vocabulary Declaration of Concept Domain " @conceptDomain
" with a binding realm context of " @bindingRealmName
" SHALL comply with one of the following Value Set Assertions, respecting the identified date ranges and listed in order of preference: "
DynamicBinding+ EOL ; (* Sorted by @bindingPriority *)

--Tklein 20:50, 24 September 2010 (UTC)Shouldn't this be ContextBindingSyntax? Also - why does it refer to "Structural Model Elements" - I assume you refer to coded model elements and datatype properties - but I was unaware that this nomenclature was in common use in HL7. I think it is unnecessary to explicitly state "respecting the identified date ranges": what would be the syntax and meaning of NOT respecting the effectiveDate and endDate in the VSA? What is the meaning of "SHALL comply with"? In the first binding syntax I think you are saying it the right way but are only halfway there: "the content of the element SHALL ". The old syntax was clear: "The content of the element SHALL be drawn from ". I know this is not technically correct; both the old binding directly to a single value set and the new binding to a list of Value Set Assertions, are the definition of a vocabulary constraint, not a picklist (which the other phraseology implies). I think we need to improve this.


DynamicBinding =

EOL " - On or following " @effectiveDate
[ " but prior to " @expiryDate ] (* If @expiryDate is present *)
", " ValueSetAssertion ;

--Tklein 20:50, 24 September 2010 (UTC)Methinks this should be ContextBinding


ValueSetAssertion =

MaxValueSet [ MinValueSet ] [ IgnoreValueSet ] StaticDynamic ;
(* MinValueSet and IgnoreValueSet appear if the minimumValueSet or maximumValueSet, respectively, are defined in the value set assertion *)

MaxValueSet =

"be drawn from " ValueSet
( " if an appropriate code exists within that expansion, otherwise a local code or original text MAY be used." | "." ) ;
(* ValueSet is taken from element maximumValueSet. First option is used if @codingStrength is CWE, second if CNE *)

MinValueSet =

" In addition, all applications SHALL at a minimum support " ValueSet "."
[ " As well, SHALL must support all local codes and originalText." ] ;
(* ValueSet is taken from element minimumValueSet. Last clause used if @codingStrength is CWE *)

IgnoreValueSet =

" When receiving, all applications SHALL ignore - not process or raise an error when receiving - " ValueSet
( " as well as all local codes and original text." | "." ) ;
(* ValueSet is taken from element ignoredValueSet. First option is used if @codingStrength is CWE, second if CNE *)

StaticDynamic =

" All of the above expansions SHALL be resolved based on the "
[ "date " @staticBindingDate "." | "date of processing." ] ;
(* First option is used if @staticBindingDate is present, otherwise use second option *)

ValueSet =

" the set of codes in the expansion of Value Set"
[ ValueSetName ] [ ValueSetId ] [ ValueSetDef ] [ <ValueSetVersion> ] ;
(* At least one of ValueSetName, ValueSetId and ValueSetDef must be present *)

ValueSetName =

" " @name ;

ValueSetId =

" with the identifier " @id ;

ValueSetDef =

" containing all codes descended from root code " @rootCode
( " including" | " excluding" ) " that root code" ;
(* Use the first option when @includeRoot is true, second option otherwise *)

ValueSetVersion = " using the version defined on " @versionDate [ " at " @versionTime ] ;

Examples

Model Binding:

Single Code Binding:

Value Set Assertion Binding:


--Tklein 02:22, 14 September 2010 (UTC)I'm thinking a model binding to a set of codes will look more like this:

A code element SHALL be present where the value of @code is asserted by MAX Value Set 2.16.840.1.113883.19.3 LoincDocumentTypeCode 20100422 CWE, MIN Value Set 2.16.840.1.113883.19.6 MinimumDocumentTypeCode CNE with stability 20101015

CONF-ex1: A code element SHALL be present where the value of @code is selected from Value Set 2.16.840.1.113883.19.3 LoincDocumentTypeCode DYNAMIC.

CONF-ex2: A code element SHALL be present where the value of @code is 34133-9 Summarization of episode note 2.16.840.1.113883.6.1 LOINC STATIC.

Context Binding:

Value Set Assertion Binding:

--Tklein 02:22, 14 September 2010 (UTC)And a context binding something like this:

Context Domain ActIssuePriority SHALL be bound to MAX Value Set 2.16.840.1.113883.1.11.19358 AcknowledgementDetailType in Realm R1

Context Domain Constraining to a Context sub-Domain:

Expression of a Value Set Assertion:

Open Issues

  • conditions (true/false)
  • combined constraints: to be concatenated via "and" (must be reflected in BNF grammar)
  • current grammar is not the current state of binding in HL7 v3 models; current state uses Value Set Assertion for binding
  • Value Set Assertions are defined in the Implementation Guides
  • Value Sets may be identified by OID or name
  • Must be a way to assert ad hoc constraints to implement OCL-like restrictions on the bindings