Page History
This section provides a short description of each ABNF rule listed above. The related brief and long syntax rules are grouped together with the same description. Where the syntaxes are the same, the rule is listed once and preceded with the text "BS/LS". Where the brief and long syntaxes are different, both rules are listed separately and preceded with "BS" and "LS" respectively.
BS/LS: expressionConstraint = ws ( refinedExpressionConstraint / compoundExpressionConstraint / dottedExpressionConstraint / subExpressionConstraint ) ws | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| An expression constraint is either a refined expression constraint, a compound expression constraint, a dotted expression constraint, or a sub expression constraint. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A refined expression constraint includes a subexpression constraint followed by a refinement. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: compoundExpressionConstraint = conjunctionExpressionConstraint / disjunctionExpressionConstraint / exclusionExpressionConstraint | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A compound expression constraint contains two or more expression constraints joined by either a conjunction, disjunction or exclusion. When potential ambiguity in binary operator precedence may occur, round brackets must be used to clearly disambiguate the order in which these operator are applied. Brackets are not required in expression constraints in which all binary operators are conjunctions, or all binary operators are disjunctions. Please note that unary operators (i.e. constraint operators and member of functions) are always applied before binary operators (i.e. conjunction, disjunction and exclusion). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: conjunctionExpressionConstraint = subExpressionConstraint 1*(ws conjunction ws subExpressionConstraint) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A conjunction expression constraint combines two or more expression constraints with a conjunction ("and") operator. More than one conjunction may be used without brackets. However any compound expression constraint (using a different binary operator) that appears within a conjunction expression constraint must be enclosed by brackets. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: disjunctionExpressionConstraint = subExpressionConstraint 1*(ws disjunction ws subExpressionConstraint) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A disjunction expression constraint combines two or more expression constraints with a disjunction ("or") operator. More than one disjunction may be used without brackets. However any compound expression constraint (using a different binary operator) that appears within a disjunction expression constraint must be enclosed by brackets. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: exclusionExpressionConstraint = subExpressionConstraint ws exclusion ws subExpressionConstraint | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
An exclusion expression constraint combines two expression constrains with an exclusion ("minus") operator. A single exclusion operator may be used without brackets. However when the operands of the exclusion expression constraint are compound, these compound expression constraints must be enclosed by brackets. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A dotted expression constraint contains a sub expression constraint, followed by one or more dotted attributes. When a single dotted attribute is used, the result is the set of attribute values (for the given attribute name) of each concept that results from evaluating the subExpressionConstraint. When more than one dotted attribute is used, each dottedExpressionAttribute is sequentially evaluated (from left to right) against the given result set. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: dottedExpressionAttribute = dot ws eclAttributeName | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A dotted expression attribute consists of a 'dot', followed by an attribute name. Please note that the attribute name may be represented by any sub expression constraint. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: subExpressionConstraint = [constraintOperator ws] [memberOf ws] (eclFocusConcept / "(" ws expressionConstraint ws ")") *(ws filterConstraint) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A sub expression constraint optionally begins with a constraint operator and/or a memberOf function. It then includes either a single focus concept or an expression constraint (enclosed in brackets). A sub expression constraint may optionally include one or more filter constraints at the end. Notes: A memberOf function should be used only when the eclFocusConcept or expressionConstraint refers to a reference set concept, a set of reference set concepts, or a wild card. When both a constraintOperator and a memberOf function are used, they are applied from the inside to out (i.e. from right to left) - see 5.4 Operator Precedence. Therefore, if a constraintOperator is followed by a memberOf function, then the memberOf function is processed prior to the constraintOperator. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: eclFocusConcept = eclConceptReference / wildCard | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A focus concept is a concept reference or a wild card. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: dot = "." | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A dot connects an expression constraint with an attribute whose values are included in the result. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: memberOf = "^" LS: memberOf = "^" / ("m"/"M") ("e"/"E") ("m"/"M") ("b"/"B") ("e"/"E") ("r"/"R") ("o"/"O") ("f"/"F") | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The 'memberOf' function returns the set of referenced components in the reference set whose concept identifier follows. In the brief syntax, the memberOf function is represented using the "^" symbol. In the long syntax, the text "memberOf " (case insensitive and followed by at least one white space) is also allowed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: eclConceptReference = conceptId [ws "|" ws term ws "|"] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A conceptReference is represented by a ConceptId, optionally followed by a | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: eclConceptReferenceSet = "(" ws eclConceptReference *(mws eclConceptReference) ws ")" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
A concept reference set includes one or more concept references separated by mandatory white space and enclosed in brackets. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: conceptId = sctId | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The ConceptId must be a valid
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: term = 1*nonwsnonpipe *( 1*SP 1*nonwsnonpipe ) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: wildCard = "*" LS: wildCard = "*" / ( ("a"/"A") ("n"/"N") ("y"/"Y")) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A wild card represents any concept in the given substrate. In the brief syntax, a wildcard is represented using the "*" symbol. In the long syntax, the text "ANY" (case insensitive) is also allowed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS/LS: constraintOperator = childOf / childOrSelfOf / descendantOrSelfOf / descendantOf / parentOf / parentOrSelfOf / ancestorOrSelfOf / ancestorOf | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| A constraint operator is either 'childOf', 'childOrSelfOf', 'descendantOrSelfOf', 'descendantOf', 'parentOf', 'parentOrSelfOf', 'ancestorOrSelfOf', or 'ancestorOf'. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: descendantOf = "<" LS: descendantOf = "<" / ( ("d"/"D") ("e"/"E") ("s"/"S") ("c"/"C") ("e"/"E") ("n"/"N") ("d"/"D")("a"/"A") ("n"/"N") ("t"/"T") ("o"/"O")("f"/"F") mws ) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The descendantOf operator returns the set of all subtypes of the given concept (or set of concepts). In the brief syntax, the descendantOf operator is represented using the symbol "<". In the long syntax, the text "descendantOf" (case insensitive and followed by at least one white space) is also allowed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: descendantOrSelfOf = "<<" LS: descendantOrSelfOf = "<<" / ( ("d"/"D") ("e"/"E") ("s"/"S") ("c"/"C") ("e"/"E") ("n"/"N") ("d"/"D") ("a"/"A") ("n"/"N") ("t"/"T") ("o"/"O")("r"/"R") ("s"/"S")("e"/"E") ("l"/"L") ("f"/"F") ("o"/"O")("f"/"F") mws ) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The descendantOrSelfOf operator returns the set of all subtypes of the given concept (or set of concepts), plus the concept (or set of concepts) itself. In the brief syntax, the descendantOrSelfOf operator is represented using the symbols "<<". In the long syntax, the text "descendantOrSelfOf" (case insensitive and followed by at least one white space) is also allowed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: childOf = "<!" LS: childOf = "<!" / (("c"/"C") ("h"/"H") ("i"/"I") ("l"/"L") ("d"/"D") ("o"/"O") ("f"/"F") mws ) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The childOf operator returns the set of all immediate children of the given concept (or set of concepts). In the brief syntax, the childOf operator is represented using the symbols "<!". In the long syntax, the text "childOf" (case insensitive and followed by at least one white space) is also allowed. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
BS: |
childOrSelfOf |
= "<<!" LS: |
childOrSelfOf |
= "<<!" / (("c"/"C") ("h"/"H") ("i"/"I") ("l"/"L") ("d"/"D") |
("o"/"O")("r"/"R") ("s"/"S")("e"/"E") ("l"/"L") ("f"/"F") |
("o"/"O") ("f"/"F") mws ) | |
The childOrSelfOf operator returns the set of all immediate children of the given concept (or set of concepts), plus the concept (or set of concepts) itself. In the brief syntax, the childOrSelfOf operator is represented using the symbols "<<!". In the long syntax, the text "childOrSelfOf" (case insensitive and followed by at least one white space) is also allowed. | |
BS: ancestorOf = ">" LS: ancestorOf = ">" / ( ("a"/"A") ("n"/"N") ("c"/"C") ("e"/"E") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("o"/"O")("f"/"F") mws ) | |
| The ancestorOf operator returns the set of all supertypes of the given concept (or set of concepts). In the brief syntax, the ancestorOf operator is represented using the symbol ">". In the long syntax, the text "ancestorOf " (case insensitive and followed by at least one white space) is also allowed. |
BS: ancestorOrSelfOf = ">>" LS: ancestorOrSelfOf = ">>" / ( ("a"/"A") ("n"/"N") ("c"/"C") ("e"/"E") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("o"/"O") ("r"/"R") ("s"/"S") ("e"/"E") ("l"/"L" ("f"/"F") ("o"/"O")("f"/"F") mws ) | |
| The ancestorOrSelfOf operator returns the set of all supertypes of the given concept (or set of concepts), plus the concept (or set of concepts) itself. In the brief syntax, the ancestorOrSelfOf operator is represented using the symbols ">>". In the long syntax, the text "ancestorOrSelfOf" (case insensitive and followed by at least one white space) is also allowed. |
BS: parentOf = ">!" LS: parentOf = ">!" / (("p"/"P") ("a"/"A") ("r"/"R") ("e"/"E") ("n"/"N") ("t"/"T") ("o"/"O") ("f"/"F") mws ) | |
| The parentOf operator returns the set of all immediate parents of the given concept (or set of concepts). In the brief syntax, the parentOf operator is represented using the symbols ">!". In the long syntax, the text "parentOf" (case insensitive and followed by at least one white space) is also allowed. |
BS: |
parentOrSelfOf |
= ">>!" LS: |
parentOrSelfOf |
= ">>!" / (("p"/"P") ("a"/"A") ("r"/"R") ("e"/"E") ("n"/"N") ("t"/"T") |
("o"/"O") ("r"/"R") ("s"/"S") ("e"/"E") ("l"/"L" ("f"/"F") |
("o"/"O") ("f"/"F") mws ) | |||||||||||||||||||||
The parentOrSelfOf operator returns the set of all immediate parents of the given concept (or set of concepts), plus the concept (or set of concepts) itself. In the brief syntax, the parentOrSelfOf operator is represented using the symbols ">>!". In the long syntax, the text "parentOrSelfOf" (case insensitive and followed by at least one white space) is also allowed. | |||||||||||||||||||||
BS/LS: conjunction = (("a"/"A") ("n"/"N") ("d"/"D") mws) / "," | |||||||||||||||||||||
| A conjunction is represented either by the word "and" (case insensitive and followed by at least one white space), or by a comma. | ||||||||||||||||||||
BS/LS: disjunction = ("o"/"O") ("r"/"R") mws | |||||||||||||||||||||
| A disjunction is represented by the word "or" (case insensitive and followed by at least one white space). | ||||||||||||||||||||
BS/LS: exclusion = ("m"/"M") ("i"/"I") ("n"/"N") ("u"/"U") ("s"/"S") mws | |||||||||||||||||||||
| The exclusion operator is represented by the word "minus" (case insensitive and followed by at least one white space). | ||||||||||||||||||||
BS/LS: eclRefinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet] | |||||||||||||||||||||
| A refinement contains all the grouped and ungrouped attributes that refine the set of clinical meanings satisfied by the expression constraint. Refinements may represent the conjunction or disjunction of two smaller refinements, and may optionally be placed in brackets. Where both conjunction and disjunction are used, brackets are mandatory to disambiguate the intended meaning. | ||||||||||||||||||||
BS/LS: conjunctionRefinementSet = 1*(ws conjunction ws subRefinement) | |||||||||||||||||||||
| A conjunction refinement set consists of one or more conjunction operators, each followed by a subRefinement. | ||||||||||||||||||||
BS/LS: disjunctionRefinementSet = 1*(ws disjunction ws subRefinement) | |||||||||||||||||||||
| A disjunction refinement set consists of one or more disjunction operators, each followed by a subRefinement. | ||||||||||||||||||||
BS/LS: subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")" | |||||||||||||||||||||
| A subRefinement is either an attribute set, an attribute group or a bracketed refinement. | ||||||||||||||||||||
BS/LS: eclAttributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet] | |||||||||||||||||||||
| An attribute set contains one or more
| ||||||||||||||||||||
BS/LS: conjunctionAttributeSet = 1*(ws conjunction ws subAttributeSet) | |||||||||||||||||||||
| A conjunction attribute set consists of one or more conjunction operators, each followed by a subAttributeSet. | ||||||||||||||||||||
BS/LS: disjunctionAttributeSet = 1*(ws disjunction ws subAttributeSet) | |||||||||||||||||||||
| A disjunction attribute set consists of one or more disjunction operators, each followed by a subAttributeSet. | ||||||||||||||||||||
BS/LS: subAttributeSet = eclAttribute / "(" ws eclAttributeSet ws ")" | |||||||||||||||||||||
| A subAttributeSet is either an attribute or a bracketed attribute set. | ||||||||||||||||||||
BS/LS: eclAttributeGroup = [ "[" cardinality "]" ws] "{" ws eclAttributeSet ws "}" | |||||||||||||||||||||
| An
| ||||||||||||||||||||
BS/LS: eclAttribute = [ "[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws QM stringValue QM / booleanComparisonOperator ws booleanValue) | |||||||||||||||||||||
| An
| ||||||||||||||||||||
BS/LS: cardinality = minValue to maxValue | |||||||||||||||||||||
| The cardinality represents a constraint on the minimum and maximum number of times that the given attribute or attribute group may appear in a matching expression. The cardinality is enclosed in square brackets with the minimum cardinality appearing first, followed by a separator (two dots in the brief syntax), and then the maximum cardinality. | ||||||||||||||||||||
BS/LS: minValue = nonNegativeIntegerValue | |||||||||||||||||||||
| A value that represents the minimum number of times that an attribute or attribute group may appear. The minimum cardinality must always be less than or equal to the maximum cardinality. | ||||||||||||||||||||
BS: to = ".." LS: to = ".." / (mws ("t"/"T") ("o"/"O") mws) | |||||||||||||||||||||
| In the brief syntax, the minimum and maximum cardinality are separated by two dots (i.e. ".."). In the long syntax, the text "to" (case insensitive with at least one white space before and after) is also allowed between the two cardinalities. | ||||||||||||||||||||
BS/LS: maxValue = nonNegativeIntegerValue / many | |||||||||||||||||||||
| A value that represents the maximum number of times that an attribute or attribute group may appear. A maximum cardinality of 'many' indicates that there is no limit on the number of times the attribute may appear. | ||||||||||||||||||||
BS: many = "*" LS: many = "*" / ( ("m"/"M") ("a"/"A") ("n"/"N") ("y"/"Y")) | |||||||||||||||||||||
| In the brief syntax, a cardinality of 'many' is represented using the symbol "*". In the long syntax, the text "many" (case insensitive, with no trailing space) is also allowed. | ||||||||||||||||||||
BS: reverseFlag = "R" LS: reverseFlag = (("r"/"R") ("e"/"E") ("v"/"V") ("e"/"E") ("r"/"R") ("s"/"S") ("e"/"E") ("o"/"O") ("f"/"F")) / "R" | |||||||||||||||||||||
| When a reverse flag is used on an attribute, the matching relationships are traversed in the reverse of the normal direction. This means that the target concept of each relationship must match the focus concept to which the attribute is applied, while the source concept of the relationship must match the attribute value. In the brief syntax, the reverse flag is represented using the character "R" (in uppercase). In the long syntax, the text "reverseOf " (case insensitive) is also allowed. | ||||||||||||||||||||
BS/LS: eclAttributeName = subExpressionConstraint | |||||||||||||||||||||
| The attribute name is the name of an attribute (or relationship type) to which a value is applied to refine the meaning of a containing expression constraint. The attribute name is represented using a subExpressionConstraint, as defined above. | ||||||||||||||||||||
BS: expressionComparisonOperator = "=" / "!=" LS: expressionComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" | |||||||||||||||||||||
| Attributes whose value is a concept may be compared to an expression constraint using either equals ("=") or not equals ("!="). In the long syntax "<>" and "not =" (case insensitive) are also valid ways to represent not equals. | ||||||||||||||||||||
BS: numericComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ">" LS: numericComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" / "<=" / "<" / ">=" / ">" | |||||||||||||||||||||
| Attributes whose value is numeric (i.e. integer or decimal) may be compared to a specific concrete value using a variety of comparison operators, including equals ("="), less than ("<"), less than or equals ("<="), greater than (">"), greater than or equals (">=") and not equals ("!="). In the long syntax "<>" and "not =" (case insensitive) are also valid ways to represent not equals. | ||||||||||||||||||||
BS: stringComparisonOperator = "=" / "!=" LS: stringComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" | |||||||||||||||||||||
| Attributes whose value is a string may be compared to an expression constraint using either equals ("=") or not equals ("!="). In the long syntax "<>" and "not =" (case insensitive) are also valid ways to represent not equals. | ||||||||||||||||||||
BS: booleanComparisonOperator = "=" / "!=" LS: booleanComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" | |||||||||||||||||||||
Attributes whose value is a boolean may be compared to an expression constraint using either equals ("=") or not equals ("!="). In the long syntax "<>" and "not =" (case insensitive) are also valid ways to represent not equals. | |||||||||||||||||||||
BS/LS: |
filterConstraint = |
" |
{{" ws filter *(ws "," ws filter) ws "}}" | |
A filterConstraint is a constraint used to filter the concepts in the result set, based on the given conditions. | |
BS/LS: |
filter = termFilter / languageFilter / typeFilter / dialectFilter | |
A filter is either a term filter, a language filter, a type filter or a dialect filter |
. | |
BS/LS: |
An integer value is either starts with a non-zero digit followed by zero to many additional digits, or is the integer zero itself.
BS/LS: decimalValue = integerValue "." 1*digit
termFilter = termKeyword ws booleanComparisonOperator ws (typedSearchTerm / typedSearchTermSet) | |
A termFilter starts with the 'term' keyword, followed by a boolean comparison operator and either a typed search term or a typed search term set (with optional white space between). For example: term = "respiratory". | |
BS/LS: |
termKeyword = ("t"/"T") (" |
e"/" |
E") (" |
r"/" |
R") (" |
m"/" |
M") |
The 'term' keyword uses the text "TERM" (case insensitive). | |
BS/LS: |
typedSearchTerm = ( [ match ws " |
:" ws ] matchSearchTermSet ) / ( wild ws ":" ws wildSearchTermSet ) | |
A typed search term is either a match search term set or a wild search term set. A match search term set is optionally preceded by the text "match" and a colon. A wild search term set must be preceded by the text "wild" and a colon. | |
BS/LS: |
typedSearchTermSet = "( |
A non-negative integer value (i.e. positive integers or zero), without a preceding plus sign ("+").
BS/LS: sctId = digitNonZero 5*17( digit )
Gloss | ||||
---|---|---|---|---|
|
" ws typedSearchTerm *(mws typedSearchTerm) ws ")" | |
A typed search term set consists of one or more typed search terms separated by mandatory white space and enclosed in brackets. | |
BS/LS: |
wild = |
( |
"w"/"W") ("i"/"I") ("l"/"L") ("d"/"D") | |||||||||||||||||||
A 'wildcard' search type is indicated by the word "wild" (case insensitive). | |||||||||||||||||||
BS/LS: match = ("m"/"M") ("a"/"A") ("t"/"T") ("c"/"C") ("h"/"H") | |||||||||||||||||||
A 'word prefix any order' search is indicated by the word "match" (case insensitive). | |||||||||||||||||||
BS/LS: matchSearchTerm = 1*(nonwsNonEscapedChar / escapedChar) | |||||||||||||||||||
A term used in a match search includes one or more of any non-whitespace printable character (other than double quotes or backslash) or an escaped character. | |||||||||||||||||||
BS/LS: matchSearchTermSet = QM ws matchSearchTerm *(mws matchSearchTerm) ws QM | |||||||||||||||||||
A term set in a match search includes one or more terms separated by mandatory whitespace and enclosed in quotation marks. | |||||||||||||||||||
BS/LS: wildSearchTerm = 1*(anyNonEscapedChar / escapedWildChar) | |||||||||||||||||||
A term used in a wildcard search includes one or more printable characters (other than double quotes or backslash) or an escaped character. | |||||||||||||||||||
BS/LS: wildSearchTermSet = QM wildSearchTerm QM | |||||||||||||||||||
A term set in a wildcard search includes a wildcard search term (optionally including whitespace) enclosed in quotation marks. | |||||||||||||||||||
BS/LS: languageFilter = language ws booleanComparisonOperator ws (languageCode / languageCodeSet) | |||||||||||||||||||
A language filter specifies the languages that a matching description may use. A language filter starts with the 'language' keyword, followed by a boolean comparison operator and either a single language code or a set of language codes. | |||||||||||||||||||
BS/LS: language = ("l"/"L") ("a"/"A") ("n"/"N") ("g"/"G") ("u"/"U") ("a"/"A") ("g"/"G") ("e"/"E") | |||||||||||||||||||
The 'language' keyword uses the text "LANGUAGE" (case insensitive). | |||||||||||||||||||
BS/LS: languageCode = 2alpha | |||||||||||||||||||
A language code is a 2 character alphanumeric string. | |||||||||||||||||||
BS/LS: languageCodeSet = "(" ws languageCode *(mws languageCode) ws ")" | |||||||||||||||||||
A language code set is one or more language codes, separated by mandatory whitespace, and enclosed in brackets. | |||||||||||||||||||
BS/LS: typeFilter = typeIdFilter / typeTokenFilter | |||||||||||||||||||
A type filter specifies the description types that a matching description may have. A type filter is either a typeId filter or a typeToken filter. | |||||||||||||||||||
BS/LS: typeIdFilter = typeId ws booleanComparisonOperator ws (eclConceptReference / eclConceptReferenceSet) | |||||||||||||||||||
A typeId filter starts with the 'typeId' keyword, followed by a boolean comparison operator, and either a single concept reference or a set of concept references. | |||||||||||||||||||
BS/LS: typeId = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E") ("i"/"I") ("d"/"D") | |||||||||||||||||||
The 'typeId' keyword uses the text "TYPEID" (case insensitive). | |||||||||||||||||||
BS/LS: typeTokenFilter = type ws booleanComparisonOperator ws (typeToken / typeTokenSet) | |||||||||||||||||||
A typeToken filter starts with the 'type' keyword, followed by a boolean comparison operator, and either a single type token or a set of type tokens. | |||||||||||||||||||
BS/LS: type = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E") | |||||||||||||||||||
The 'type' keyword uses the text "TYPE" (case insensitive). | |||||||||||||||||||
BS/LS: typeToken = synonym / fullySpecifiedName / definition | |||||||||||||||||||
A type token is either a 'synonym' token, a 'fully specified name' token or a 'definition' token. | |||||||||||||||||||
BS/LS: typeTokenSet = "(" ws typeToken *(mws typeToken) ws ")" | |||||||||||||||||||
A type token set is one or more type tokens, separated by mandatory whitespace and enclosed in brackets. | |||||||||||||||||||
BS: synonym = ("s"/"S") ("y"/"Y") ("n"/"N") LS: synonym = ("s"/"S") ("y"/"Y") ("n"/"N") [ ("o"/"O") ("n"/"N") ("y"/"Y") ("m"/"M") ] | |||||||||||||||||||
A 'synonym' token uses the text "SYN" (case insensitive). In the long syntax, the text "Synonym" (case insensitive) may be used instead. | |||||||||||||||||||
BS: fullySpecifiedName = ("f"/"F") ("s"/"S") ("n"/"N") BS: fullySpecifiedName = ( ("f"/"F") ("s"/"S") ("n"/"N") ) / ( ("f"/"F") ("u"/"U") ("l"/"L") ("l"/"L") ("y"/"Y") ("s"/"S") ("p"/"P") ("e"/"E") ("c"/"C") ("i"/"I") ("f"/"F") ("i"/"I") ("e"/"E") ("d"/"D") ("n"/"N") ("a"/"A") ("m"/"M") ("e"/"E") ) | |||||||||||||||||||
A 'fully specified name' token uses the text "FSN" (case insensitive). In the long syntax, the text "FullySpecifiedName" (case insensitive) may be used instead. | |||||||||||||||||||
BS: definition = ("d"/"D") ("e"/"E") ("f"/"F") LS: definition = ("d"/"D") ("e"/"E") ("f"/"F") [ ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ] | |||||||||||||||||||
A 'definition' token uses the text "DEF" (case insensitive). In the long syntax, the text "Definition" (case insensitive) may be used instead. | |||||||||||||||||||
BS/LS: dialectFilter = (dialectIdFilter / dialectAliasFilter) [ ws acceptabilitySet ] | |||||||||||||||||||
A dialect filter specifies the language reference sets to which a matching description must belong. A dialect filter consists of either a dialectId filter or a dialectAlias filter, optionally followed by a set of acceptability values. | |||||||||||||||||||
BS/LS: dialectIdFilter = dialectId ws booleanComparisonOperator ws (eclConceptReference / dialectIdSet) | |||||||||||||||||||
A dialectId filter starts with the 'dialectId' keyword, followed by a boolean comparison operator, and either a single concept reference or a set of dialectIds. | |||||||||||||||||||
BS/LS: dialectId = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("d"/"D") | |||||||||||||||||||
A 'dialectId' keyword uses the text "DIALECTID" (case insensitive). | |||||||||||||||||||
BS/LS: dialectAliasFilter = dialect ws booleanComparisonOperator ws (dialectAlias / dialectAliasSet) | |||||||||||||||||||
A dialectAlias filter starts with the 'dialect' keyword, followed by a boolean comparison operator, and either a single dialect alias or a set of dialect aliases. | |||||||||||||||||||
BS/LS: dialect = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T") | |||||||||||||||||||
A 'dialect' keyword uses the text "DIALECT" (case insensitive). | |||||||||||||||||||
BS/LS: dialectAlias = alpha *( dash / alpha / integerValue) | |||||||||||||||||||
A dialect alias consists of a single alphanumeric character followed by zero or more alphanumeric characters, integer values or dashes. | |||||||||||||||||||
BS/LS: dialectAliasSet = "(" ws dialectAlias [ws acceptabilitySet] *(mws dialectAlias [ws acceptabilitySet]) ws ")" | |||||||||||||||||||
A dialect alias set is one or more dialect aliases followed by an optional acceptability set, separated by mandatory white space, and enclosed in brackets. | |||||||||||||||||||
BS/LS: dialectIdSet= "(" ws eclConceptReference [ws acceptabilitySet] *(mws eclConceptReference [ws acceptabilitySet] ) ws ")" | |||||||||||||||||||
A dialect id set is one or more concept references followed by an optional acceptability set, separated by mandatory white space, and enclosed in brackets. | |||||||||||||||||||
BS/LS: acceptabilitySet = acceptabilityIdSet / acceptabilityTokenSet | |||||||||||||||||||
An acceptability set specifies the acceptabilities that a matching description must have in the language reference set specified by the preceding dialect filter. An acceptability set is either an acceptabilityId set or an acceptabilityToken set. | |||||||||||||||||||
BS/LS: acceptabilityIdSet = eclConceptReferenceSet | |||||||||||||||||||
An acceptabilityId set is a set of concept references. | |||||||||||||||||||
BS/LS: acceptabilityTokenSet = "(" ws acceptabilityToken *(mws acceptabilityToken) ws ")" | |||||||||||||||||||
An acceptability token set is one or more acceptability tokens, separated by mandatory whitespace, and enclosed in brackets. | |||||||||||||||||||
BS/LS: acceptabilityToken = acceptable / preferred | |||||||||||||||||||
An acceptability token is either an acceptable token and a preferred token. | |||||||||||||||||||
BS: acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T") LS: acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T") [ ("a"/"A") ("b"/"B") ("l"/"L") ("e"/"E") ] | |||||||||||||||||||
An acceptable token uses the text "ACCEPT" (case insensitive). In the long syntax, the text "Acceptable" (case insensitive) may be used instead. | |||||||||||||||||||
BS: preferred = ("p"/"P") ("r"/"R") ("e"/"E") ("f"/"F") ("e"/"E") ("r"/"R") LS: preferred = ("p"/"P") ("r"/"R") ("e"/"E") ("f"/"F") ("e"/"E") ("r"/"R") [ ("r"/"R") ("e"/"E") ("d"/"D") ] | |||||||||||||||||||
A preferred token uses the text "PREFER" (case insensitive). In the long syntax, the text "Preferred" (case insensitive) may be used instead. | |||||||||||||||||||
BS/LS: numericValue = ["-"/"+"] (decimalValue / integerValue) | |||||||||||||||||||
| A numeric value is either an integer or a decimal. Positive numbers optionally start with a plus sign ("+"), while negative integers begin with a minus sign ("-"). | ||||||||||||||||||
BS/LS: stringValue = 1*(anyNonEscapedChar / escapedChar) | |||||||||||||||||||
| A string value includes one or more of any printable ASCII characters enclosed in quotation marks. Quotes and backslash characters within the string must be preceded by the escape character ("\"). | ||||||||||||||||||
BS/LS: integerValue = digitNonZero *digit / zero | |||||||||||||||||||
| An integer value is either starts with a non-zero digit followed by zero to many additional digits, or is the integer zero itself. | ||||||||||||||||||
BS/LS: decimalValue = integerValue "." 1*digit | |||||||||||||||||||
| A decimal value starts with an integer. This is followed by a decimal point and one to many digits. | ||||||||||||||||||
BS/LS: booleanValue = true / false | |||||||||||||||||||
A boolean value is either true or false. | |||||||||||||||||||
BS/LS: true = ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E") | |||||||||||||||||||
A boolean value of true is represented by the word "true" (case insensitive). | |||||||||||||||||||
BS/LS: false = ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/"E") | |||||||||||||||||||
A boolean value of false is represented by the word "false" (case insensitive). | |||||||||||||||||||
BS/LS: nonNegativeIntegerValue = (digitNonZero *digit ) / zero | |||||||||||||||||||
| A non-negative integer value (i.e. positive integers or zero), without a preceding plus sign ("+"). | ||||||||||||||||||
BS/LS: sctId = digitNonZero 5*17( digit ) | |||||||||||||||||||
| A SNOMED CT id is used to represent an attribute id or a
| ||||||||||||||||||
BS/LS: ws = *( SP / HTAB / CR / LF / comment ) | |||||||||||||||||||
| Optional whitespace characters (space, tab, carriage return, linefeed or a comment) are ignored everywhere in the
| ||||||||||||||||||
BS/LS: mws = 1*( SP / HTAB / CR / LF / comment ) | |||||||||||||||||||
| Mandatory whitespace (i.e. space, tab, carriage return, linefeed or a comment) is required after certain keywords, including "And" and "Or". | ||||||||||||||||||
BS/LS: comment = "/*" *(nonStarChar / starWithNonLSlash) "*/" | |||||||||||||||||||
| A comment, which provides additional human-readable details about the expression constraint. Comments begin with a forward slash directly followed by a star (i.e. "/*") and end with a star directly followed by a forward slash (i.e. "*/"). | ||||||||||||||||||
BS/LS: nonStarChar = SP / HTAB / CR / LF / %x21-29 / %x2B-7E /UTF8-2 / UTF8-3 / UTF8-4 | |||||||||||||||||||
| A character that is not a star (i.e. not %x2A). | ||||||||||||||||||
BS/LS: starWithNonLSlash = %x2A nonLSlash | |||||||||||||||||||
| A star (i.e. "*") followed by a character that is not a forward slash (i.e. not "/"). | ||||||||||||||||||
BS/LS: nonLSlash = SP / HTAB / CR / LF / %x21-2E / %x30-7E /UTF8-2 / UTF8-3 / UTF8-4 | |||||||||||||||||||
| A character that is not a forward slash (i.e. not "/"). | ||||||||||||||||||
BS/LS: SP = %x20 | |||||||||||||||||||
| Space character. | ||||||||||||||||||
BS/LS: HTAB = %x09 | |||||||||||||||||||
| Tab character. | ||||||||||||||||||
BS/LS: CR = %x0D | |||||||||||||||||||
| Carriage return character. | ||||||||||||||||||
BS/LS: LF = %x0A | |||||||||||||||||||
| Line feed character. | ||||||||||||||||||
BS/LS: QM = %x22 | |||||||||||||||||||
| Quotation mark character. | ||||||||||||||||||
BS/LS: BS = %x5C ; back slash | |||||||||||||||||||
BS represents the backslash character "\". | |||||||||||||||||||
BS/LS: star = %x2A ; asterisk | |||||||||||||||||||
Star represents an asterisk "*". | |||||||||||||||||||
BS/LS: digit = %x30-39 | |||||||||||||||||||
| Any digit 0 through 9. | ||||||||||||||||||
BS/LS: zero = %x30 | |||||||||||||||||||
| The digit 0. | ||||||||||||||||||
BS/LS: digitNonZero = %x31-39 | |||||||||||||||||||
| Digits 1 through 9, but excluding 0. The first character of a
| ||||||||||||||||||
BS/LS: nonwsnonpipe= %x21-7B / %x7D |
Optional whitespace characters (space, tab, carriage return, linefeed or a comment) are ignored everywhere in the
Gloss | ||||
---|---|---|---|---|
|
Whitespace within a conceptId is an error.
Note: Whitespace before or after the last digit of a valid
is ignored.Gloss PreSpace false t Identifier - Non-consecutive spaces within a term are treated as a significant character of the term.
Note: Whitespace before the first or after the last non-whitespace character of a
is ignoredSpecref RefType field t term - Whitespace within the quotation marks of a concrete value is treated as a significant character.
BS/LS: mws = 1*( SP / HTAB / CR / LF / comment )
Mandatory whitespace (i.e. space, tab, carriage return, linefeed or a comment) is required after certain keywords, including "And" and "Or".
BS/LS: comment = "/*" *(nonStarChar / starWithNonLSlash) "*/"
A comment, which provides additional human-readable details about the expression constraint. Comments begin with a forward slash directly followed by a star (i.e. "/*") and end with a star directly followed by a forward slash (i.e. "*/").
-7E / UTF8-2 / UTF8-3 / UTF8-4 | |
|
A character that is not a star (i.e. not %x2A).
BS/LS: starWithNonLSlash = %x2A nonLSlash
Non whitespace (and non pipe) includes printable ASCII characters (these are also valid UTF8 characters encoded as one octet) and also includes all UTF8 characters encoded as 2- 3- or 4-octet sequences. It excludes space (which is %x20) and the pipe character " | |
BS/LS: |
anyNonEscapedChar = SP / HTAB / CR / LF / |
%x20-21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4 | |
|
anyNonEscapedChar includes any printable ASCII characters which do not need to be preceded by an escape character (i.e. |
" |
BS/LS: SP = %x20
Space character.
BS/LS: HTAB = %x09
Tab character.
BS/LS: CR = %x0D
Carriage return character.
BS/LS: LF = %x0A
Line feed character.
BS/LS: QM = %x22
Quotation mark character.
BS/LS: digit = %x30-39
Any digit 0 through 9.
BS/LS: zero = %x30
\"). This includes valid UTF8 characters encoded as one octet and all UTF8 characters encoded as 2, 3 or 4 octet sequences. It does, however, exclude the quotation mark (") and the backslash (). See RFC 3629 ( UTF-8, a
| ||||||||||||
BS/LS: |
Digits 1 through 9, but excluding 0.
escapedChar = BS QM / BS BS | |
| The double quotation mark and the back slash character must both be escaped within a string-based concrete value by preceding them with a back slash |
Gloss | ||||
---|---|---|---|---|
|
. | |
BS/LS: |
Non whitespace (and non pipe) includes printable ASCII characters (these are also valid UTF8 characters encoded as one octet) and also includes all UTF8 characters encoded as 2- 3- or 4-octet sequences. It excludes space (which is %x20) and the pipe character "
escapedWildChar = BS QM / BS BS / BS star | |
An escapedWildChar is one of the characters that must be escaped in a wildcard search term (i.e. " or \ or *), preceded by a backslash (i.e. \). The character sequence is therefore either \" or \\ or \*. | |
BS/LS: nonwsNonEscapedChar = %x21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8 |
Gloss | ||||
---|---|---|---|---|
|
Gloss | ||||
---|---|---|---|---|
|
-3 / UTF8-4 | |
A nonwsNonEscapedChar is any printable ASCII, UTF8-2, UTF8-3 or UTF8-4 character, excluding double quotes ("), backslash (\), and space ( ). | |
BS/LS: |
alpha = %x41-5A / %x61-7A | |
An alpha is any uppercase or lowercase character from "A" to "Z" (and "a" to "z") inclusive. | |
BS/LS: dash = %x2D | |
A dash is a hyphen (i.e. "-"). | |
BS/LS: UTF8-2 = %xC2-DF UTF8-tail | |
| UTF8 characters encoded as 2-octet sequences. |
BS/LS: UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) | |
| UTF8 characters encoded as 3-octet sequences. |
BS/LS: UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail ) | |
| UTF8 characters encoded as 4-octet sequences. |
BS/LS: UTF8-tail = %x80-BF | |
| UTF8 characters encoded as 8-octet sequences. |