Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
< 404684003 |Clinical finding| :
116676008 |Associated morphology| != << 26036001 |Obstruction|descendantOf 404684003 |Clinical finding| :
116676008 |Associated morphology| NOT = descendantOrSelfOf 26036001 |Obstruction|<< 19829001 |Disorder of lung| MINUS << 301867009 |Edema of trunk|<< 19829001 |Disorder of lung| MINUS ^ 700043003 |Example problem list concepts reference set|< 404684003 |Clinical finding| :
116676008 |Associated morphology| =
((<< 56208002 |Ulcer| AND << 50960005 |Hemorrhage| ) MINUS << 26036001 |Obstruction| )< 404684003 |Clinical finding| :
[0..0] 116676008 |Associated morphology| = << 26036001 |Obstruction|< 404684003 |Clinical finding| :
[0..0] 116676008 |Associated morphology| != << 26036001 |Obstruction|< 404684003 |Clinical finding| :
[0..0] 116676008 |Associated morphology| != << 26036001 |Obstruction| and
[1..*] 116676008 |Associated morphology| = << 26036001 |Obstruction|


< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis|< 404684003 |Clinical finding| :
{ 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis| },
{ 363698007 |Finding site| = << 53085002 |Right ventricular structure| ,
116676008 |Associated morphology| = << 56246009 |Hypertrophy| }descendantOf 404684003 |Clinical finding| :
{ 363698007 |Finding site| = descendantOrSelfOf 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = descendantOrSelfOf 415582006 |Stenosis| },
{ 363698007 |Finding site| = descendantOrSelfOf 53085002 |Right ventricular structure| ,
116676008 |Associated morphology| = descendantOrSelfOf 56246009 |Hypertrophy| }<< 404684003 |Clinical finding| :
<< 47429007 |Associated with| = << 267038008 |Edema|descendantOrSelfOf 404684003 |Clinical finding| :
descendantOrSelfOf 47429007 |Associated with| = descendantOrSelfOf 267038008 |Edema|<< 404684003 |Clinical finding| :
>>42752001 |Due to| = << 267038008 |Edema|descendantOrSelfOf 404684003 |Clinical finding| :
ancestorOrSelfOf 42752001 |Due to| = descendantOrSelfOf 267038008 |Edema|< 763158003 |Medicinal product (product)| :
411116001 |Has manufactured dose form (attribute)| = << 385268001 |Oral dose form (dose form)| ,
{
<< 127489000 |Has active ingredient (attribute)| = << 372687004 |Amoxicillin (substance)|,
1142135004 |Has presentation strength numerator value (attribute)| >= #250,
732945000 |Has presentation strength numerator unit (attribute)| = 258684004 |milligram (qualifier value)|
}< 763158003 |Medicinal product (product)| :
411116001 |Has manufactured dose form (attribute)| = << 385268001 |Oral dose form (dose form)|,
{
<< 127489000 |Has active ingredient (attribute)| = << 372687004 |Amoxicillin (substance)| ,
1142135004 |Has presentation strength numerator value (attribute)| >= #250,
1142135004 |Has presentation strength numerator value (attribute)| <= #800,
732945000 |Has presentation strength numerator unit (attribute)| = 258684004 |milligram (qualifier value)|
}< 373873005 |Pharmaceutical / biologic product| :
3460481009 |Has product name| = "PANADOL"< 373873005 |Pharmaceutical / biologic product| :
859999999102 |Is in national benefit scheme| = TRUE< 91723000 |Anatomical structure| :
R 363698007 |Finding site| = < 125605004 |Fracture of bone|descendantOf 91723000 |Anatomical structure| :
reverseOf 363698007 |Finding site| = descendantOf 125605004 |Fracture of bone|< 91723000 |Anatomical structure| AND (< 125605004 |Fracture of bone| . 363698007 |Finding site| )< 125605004 |Fracture of bone| . 363698007 |Finding site|< 105590001 |Substance| :
R << 127489000 |Has active ingredient| = < 27658006 |Product containing amoxicillin|descendantOf 105590001 |Substance| :
ReverseOf descendantOrSelfOf 127489000 |Has active ingredient| = descendantOf 27658006 |Product containing amoxicillin|< 105590001 |Substance| AND ( < 27658006 |Product containing amoxicillin| . << 127489000 |Has active ingredient| )< 27658006 |Product containing amoxicillin| . << 127489000 |Has active ingredient|< 19829001 |Disorder of lung| . < 47429007 |Associated with| . 363698007 |Finding site|((< 19829001 |Disorder of lung| ) . < 47429007 |Associated with| ) . 363698007 |Finding site|< 404684003 |Clinical finding| : * = 79654002 |Edema|descendantOf 404684003 |Clinical finding| : ANY = 79654002 |Edema|< 404684003 |Clinical finding| : 116676008 |Associated morphology| = *descendantOf 404684003 |Clinical finding| : 116676008 |Associated morphology| = ANY< 19829001 |Disorder of lung| :
116676008 |Associated morphology| = << 79654002 |Edema|descendantOf 19829001 |Disorder of lung| :
116676008 |Associated morphology| = descendantOrSelfOf 79654002 |Edema|*: 246075003 |Causative agent| = 387517004 |Paracetamol| ANY : 246075003 |Causative agent| = 387517004 |Paracetamol| 




< 373873005 |Pharmaceutical / biologic product| :
[1..3] 127489000 |Has active ingredient| = < 105590001 |Substance|descendantOf 373873005 |Pharmaceutical / biologic product| :
[1 to 3] 127489000 |Has active ingredient| = descendantOf 105590001 |Substance|< 373873005 |Pharmaceutical / biologic product| :
[0..1] 127489000 |Has active ingredient| = < 105590001 |Substance|descendantOf 373873005 |Pharmaceutical / biologic product| :
[0 to 1] 127489000 |Has active ingredient| = descendantOf 105590001 |Substance|< 373873005 |Pharmaceutical / biologic product| :
[1..*] 127489000 |Has active ingredient| = < 105590001 |Substance|descendantOf 373873005 |Pharmaceutical / biologic product| :
[1 to many] 127489000 |Has active ingredient| = descendantOf 105590001 |Substance|< 373873005 |Pharmaceutical / biologic product| :
[1..1] 127489000 |Has active ingredient| = < 105590001 |Substance|< 373873005 |Pharmaceutical / biologic product| :
[1..*] 127489000 |Has active ingredient| = < 105590001 |Substance|< 373873005 |Pharmaceutical / biologic product| :
127489000 |Has active ingredient| = < 105590001 |Substance|404684003 |Clinical finding| :
{ 116676008 |Associated morphology| = 72704001 |Fracture|,
363698007 |Finding site| = 299701004 |Bone of forearm|,
363698007 |Finding site| = 62413002 |Bone structure of radius| }< 404684003 |Clinical finding| :
[1..1] 363698007 |Finding site| = < 91723000 |Anatomical structure|< 404684003 |Clinical finding| :
[2..*] 363698007 |Finding site| = < 91723000 |Anatomical structure|< 404684003 |Clinical finding| :
{ [2..*] 363698007 |Finding site| = < 91723000 |Anatomical structure| }< 373873005 |Pharmaceutical / biologic product| :
[1..3] { [1..*] 127489000 |Has active ingredient| = < 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
[1..3] { 127489000 |Has active ingredient| = < 105590001 |Substance| }descendantOf 373873005 |Pharmaceutical / biologic product| :
[1 to 3] { [1 to many] 127489000 |Has active ingredient| =
descendantOf 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
[0..1] { 127489000 |Has active ingredient| = < 105590001 |Substance| }descendantOf 373873005 |Pharmaceutical / biologic product| :
[0 to 1] { 127489000 |Has active ingredient| = descendantOf 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
[1..*] { 127489000 |Has active ingredient| = < 105590001 |Substance| }descendantOf 373873005 |Pharmaceutical / biologic product| :
[1 to *] { 127489000 |Has active ingredient| = descendantOf 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
{ 127489000 |Has active ingredient| = < 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
{ [1..*] 127489000 |Has active ingredient| = < 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
[1..*] { 127489000 |Has active ingredient| = < 105590001 |Substance| }< 373873005 |Pharmaceutical / biologic product| :
[1..] { [1..] 127489000 |Has active ingredient| = < 105590001 |Substance| }< 404684003 |Clinical finding| :
{ 363698007 |Finding site| = 299701004 |Bone of forearm| },
{ 363698007 |Finding site| = 62413002 |Bone structure of radius| }< 404684003 |Clinical finding| :
[1..1] { 363698007 |Finding site| = < 91723000 |Anatomical structure| }< 404684003 |Clinical finding| :
[0..0] { [2..*] 363698007 |Finding site| = < 91723000 |Anatomical structure| }< 105590001 |Substance| : [3..3] R 127489000 |Has active ingredient| = *

/* Disorders of lung with edema /
< 19829001 |Disorder of lung| : / Descendants of disorder of lung /
116676008 |Associated morphology| = << 79654002 |Edema|
/ Where the associated morphology is edema or a subtype */< 19829001 |Disorder of lung| :
116676008 |Associated morphology| = << 79654002 |Edema|
!!< ( >> 427089005 |Diabetes mellitus due to cystic fibrosis| AND ^ 816080008 |International Patient Summary| )bottom ( >> 427089005 |Diabetes mellitus due to cystic fibrosis| AND ^ 816080008 |International Patient Summary| )!!> ( < 386617003 |Digestive system finding| . 363698007 |Finding site| )top ( < 386617003 |Digestive system finding| . 363698007 |Finding site| )( < 386617003 |Digestive system finding| . 363698007 |Finding site| )
MINUS < ( < 386617003 |Digestive system finding| . 363698007 |Finding site| )( >> 427089005 |Diabetes mellitus due to cystic fibrosis| AND ^ 816080008 |International Patient Summary| ) MINUS > ( >> 427089005 |Diabetes mellitus due to cystic fibrosis| AND ^ 816080008 |International Patient Summary| )!!< ( >> 45133009 |Neurotoxic shellfish poisoning| AND ^ 991411000000109 |Emergency care diagnosis simple reference set| )

^ 447562003 |ICD-10 complex map reference set| {{ M mapTarget = "J45.9" }}^ 447562003 |ICD-10 complex map reference set| {{ M mapTarget = "J45" }}^ 447562003 |ICD-10 complex map reference set| {{ M mapTarget = wild:"J45*" }}^ 447562003 |ICD-10 complex map reference set| {{ M mapTarget = wild:"J45.9" }}^ 447562003 |ICD-10 complex map reference set| {{ M mapGroup = #2, mapPriority = #1, mapTarget = "J45.9" }}^ 447562003 |ICD-10 complex map reference set| {{ M mapGroup != #2, mapPriority < #2, mapTarget = wild:"J*" }}^ [targetComponentId] 900000000000527005 |SAME AS association reference set| {{ M referencedComponentId = 67415000 |Hay asthma| }}^ 900000000000534007 |Module dependency reference set| {{ M moduleId = << 32570231000036109 |Australian maintained module| }}^ 816080008 |International Patient Summary| {{ M effectiveTime >= "20210731" }}^ 816080008 |International Patient Summary| {{ M active = 0 }}^ 816080008 |International Patient Summary| {{ M active = "*" }}816210007 | SNOMED CT to MedDRA simple map reference set| , the following expression constraint could be used:<! 404684003 |Clinical finding|childOf 404684003 |Clinical finding|<<! 404684003 |Clinical finding|childOrSelfOf 404684003 |Clinical finding|> 40541001 |Acute pulmonary edema|ancestorOf 40541001 |Acute pulmonary edema|>> 40541001 |Acute pulmonary edema|ancestorOrSelfOf 40541001 |Acute pulmonary edema|>! 40541001 |Acute pulmonary edema|parentOf 40541001 |Acute pulmonary edema|>>! 40541001 |Acute pulmonary edema|parentOrSelfOf 40541001 |Acute pulmonary edema|^ 700043003 |Example problem list concepts reference set|memberOf 700043003 |Example problem list concepts reference set|^ [referencedComponentId] 700043003 |Example problem list concepts reference set|^ [targetComponentId] 734138000 |Anatomy structure and entire association reference set|^ [referencedComponentId, mapTarget] 816210007 |SNOMED CT to MedDRA simple map reference set| ^[*] 447562003 |ICD-10 complex map reference set|*ANY<< 138875005 |SNOMED CT concept|*<<*>>*<*<!*>*>!*^*^R 73211009 |Diabetes mellitus|refsetContainingAny 73211009 |Diabetes mellitus|LOINC#54486-6LOINC#"54486-6"<404684003 |Clinical finding|descendantOf 404684003 |Clinical finding|<< 73211009 |Diabetes mellitus|descendantOrSelfOf 73211009 |Diabetes mellitus|

<< (^ 700043003 |Example problem list concepts reference set| )< ( 125605004 |Fracture of bone| . 363698007 |Finding site| )< 272673000 |Bone structure|< 125605004 |Fracture of bone| . 363698007 |Finding site|(< 125605004 |Fracture of bone| ). 363698007 |Finding site|^ (< 450973005 |GP/FP health issue reference set| )^ 450990004 |Adverse drug reactions reference set for GP/FP health issue|
OR ^ 450989008 |Allergies reference set for GP/FP health issue|
OR ^ 450985002 |Disorders and diseases reference set for GP/FP health issue|
OR ^ 450988000 |Family history reference set for GP/FP health issue|
OR ^ 450991000 |Processes and procedures reference set for GP/FP health issue|
OR ^ 450986001 |Results reference set for GP/FP health issue|
OR ^ 450992007 |Social history reference set for GP/FP health issue|
OR ^ 450984003 |Symptoms and signs reference set for GP/FP health issue|(< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| )
AND ^ 700043003 |Example problem list concepts reference set|^ 700043003 |Example problem list concepts reference set|
AND (< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| )(< 404684003 |Clinical finding| : 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| )
AND (< 64572001 |Disease| : 116676008 |Associated morphology| = << 415582006 |Stenosis| )(<< 17636008 |Specimen collection| : 424226004 |Using device| = << 19923001 |Catheter| ) . 363701004 |Direct substance|(<< 404684003 |Clinical finding (finding)| OR << 272379006 |Event (event)| ):
255234002 |After| = << 71388002 |Procedure|<< 125605004 |Fracture of bone| :
[0..0] ((<< 410662002 |Concept model attribute| MINUS 363698007 |Finding site| )
MINUS 116676008 |Associated morphology| ) = *(<< 410662002 |Concept model attribute| MINUS 363698007 |Finding site| ) MINUS 116676008 |Associated morphology|< 404684003 |Clinical finding| :
47429007 |Associated with| = (< 404684003 |Clinical finding| :
116676008 |Associated morphology| = << 55641003 |Infarct| )



expressionConstraint = ws ( refinedExpressionConstraint / compoundExpressionConstraint / dottedExpressionConstraint / subExpressionConstraint ) ws
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
compoundExpressionConstraint = conjunctionExpressionConstraint / disjunctionExpressionConstraint / exclusionExpressionConstraint
conjunctionExpressionConstraint = subExpressionConstraint 1*(ws conjunction ws subExpressionConstraint)
disjunctionExpressionConstraint = subExpressionConstraint 1*(ws disjunction ws subExpressionConstraint)
exclusionExpressionConstraint = subExpressionConstraint ws exclusion ws subExpressionConstraint
dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute)
dottedExpressionAttribute = dot ws eclAttributeName
subExpressionConstraint = [constraintOperator ws] ( [refsetOperator ws] (eclFocusConcept / "(" ws expressionConstraint ws ")") ) *(ws conceptFilterConstraint) [ws historySupplement]
eclFocusConcept = eclConceptReference / wildCard
dot = "."
refsetOperator = memberOf / refsetContainingAny
memberOf = "^"
refsetContainingAny = "^R"
eclConceptReference = conceptId [ws "|" ws term ws "|"]
eclConceptReferenceSet = "(" ws eclConceptReference 1*(mws eclConceptReference) ws ")"
conceptId = sctId
term = 1*nonwsNonPipe *( 1*SP 1*nonwsNonPipe )
wildCard = "*"
constraintOperator = childOf / childOrSelfOf / descendantOrSelfOf / descendantOf / parentOf / parentOrSelfOf / ancestorOrSelfOf / ancestorOf / top / bottom
descendantOf = "<"
descendantOrSelfOf = "<<"
childOf = "<!"
childOrSelfOf = "<<!"
ancestorOf = ">"
ancestorOrSelfOf = ">>"
parentOf = ">!"
parentOrSelfOf = ">>!"
top = "!!>"
bottom = "!!<"
conjunction = (("a"/"A") ("n"/"N") ("d"/"D") mws) / ","
disjunction = ("o"/"O") ("r"/"R") mws
exclusion = ("m"/"M") ("i"/"I") ("n"/"N") ("u"/"U") ("s"/"S") mws
eclRefinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet]
conjunctionRefinementSet = 1*(ws conjunction ws subRefinement)
disjunctionRefinementSet = 1*(ws disjunction ws subRefinement)
subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")"
eclAttributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet]
conjunctionAttributeSet = 1*(ws conjunction ws subAttributeSet)
disjunctionAttributeSet = 1*(ws disjunction ws subAttributeSet)
subAttributeSet = eclAttribute / "(" ws eclAttributeSet ws ")"
eclAttributeGroup = "{" ws eclAttributeSet ws "}"
eclAttribute = eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (concreteString / concreteStringSet) / booleanComparisonOperator ws booleanValue)
eclAttributeName = subExpressionConstraint
expressionComparisonOperator = "=" / "!="
numericComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ">"
stringComparisonOperator = "=" / "!="
booleanComparisonOperator = "=" / "!="
idComparisonOperator = "=" / "!="
matchSearchTerm = 1*(nonwsNonEscapedChar / escapedChar)
matchSearchTermSet = QM ws matchSearchTerm *(mws matchSearchTerm) ws QM
concreteStringSet = "(" ws concreteString *(mws concreteString) ws ")"
concreteString = QM concreteStringCharacters QM
concreteStringCharacters = 1*(anyNonEscapedChar / escapedWildChar)
conceptFilterConstraint = "{{" ws ("c" / "C") ws conceptFilter *(ws "," ws conceptFilter) ws "}}"
conceptFilter = activeFilter
activeFilter = activeKeyword ws booleanComparisonOperator ws activeValue
activeKeyword = ("a"/"A") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
activeValue = activeTrueValue / activeFalseValue / wildCard
activeTrueValue = "1" / "true"
activeFalseValue = "0" / "false"
historySupplement = "{{" ws "+" ws historyKeyword [ historyProfileSuffix / ws historySubset ] ws "}}"
historyKeyword = ("h"/"H") ("i"/"I") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("y"/"Y")
historyProfileSuffix = historyMinimumSuffix / historyModerateSuffix / historyMaximumSuffix
historyMinimumSuffix = ("-"/"_") ("m"/"M") ("i"/"I") ("n"/"N")
historyModerateSuffix = ("-"/"_") ("m"/"M") ("o"/"O") ("d"/"D")
historyMaximumSuffix = ("-"/"_") ("m"/"M") ("a"/"A") ("x"/"X")
historySubset = "(" ws expressionConstraint ws ")"
numericValue = ["-"/"+"] (decimalValue / integerValue)
stringValue = 1*(anyNonEscapedChar / escapedChar)
integerValue = digitNonZero *digit / zero
decimalValue = integerValue "." 1*digit
booleanValue = true / false
true = ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E")
false = ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/"E")
nonNegativeIntegerValue = (digitNonZero *digit ) / zero
sctId = digitNonZero 5*17( digit )
ws = *( SP / HTAB / CR / LF / comment ) ; optional white space
mws = 1*( SP / HTAB / CR / LF / comment ) ; mandatory white space
comment = "/*" *(nonStarChar / starWithNonFSlash) "*/"
nonStarChar = SP / HTAB / CR / LF / %x21-29 / %x2B-7E /UTF8-2 / UTF8-3 / UTF8-4
starWithNonFSlash = %x2A nonFSlash
nonFSlash = SP / HTAB / CR / LF / %x21-2E / %x30-7E /UTF8-2 / UTF8-3 / UTF8-4
SP = %x20 ; space
HTAB = %x09 ; tab
CR = %x0D ; carriage return
LF = %x0A ; line feed
QM = %x22 ; quotation mark
BS = %x5C ; back slash
star = %x2A ; asterisk
digit = %x30-39
zero = %x30
digitNonZero = %x31-39
nonwsNonPipe = %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / UTF8-4
anyNonEscapedChar = SP / HTAB / CR / LF / %x20-21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
escapedChar = BS QM / BS BS
escapedWildChar = BS QM / BS BS / BS star
nonwsNonEscapedChar = %x21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
alpha = %x41-5A / %x61-7A
dash = %x2D
UTF8-2 = %xC2-DF UTF8-tail
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail = %x80-BF









{{ D term = "heart att" }}< 64572001 |Disease| {{ term = "heart att"}}
< 64572001 |Disease| {{ term = "heart", term = "att"}}
< 64572001 |Disease| {{ term = match:"heart att"}}
< 64572001 |Disease| {{ term = "att heart"}}< 64572001 |Disease| {{ term = ("heart" "card")}}< 64572001 |Disease| {{ term = wild:"cardi*opathy"}}< 64572001 |Disease| {{ term = wild:"cardiopathy"}}< 64572001 |Disease| {{ term = (match:"gas" wild:"*itis")}}< 64572001 |Disease| {{ term = "eye"}} {{ term = wild:"*itis"}}< 64572001 |Disease| {{ D term = wild:"*pancrea*"}}< 64572001 |Disease| {{ D term = wild:"*esoph*"}}< 64572001 |Disease| {{ term = "hjärt", language = sv }}< 64572001 |Disease| {{ term = "hjärt", language = sv }} {{ term = "heart", language = en }}< 56265001 |Heart disease| {{ term = "heart", type = fsn }}< 56265001 |Heart disease| {{ term = "hjärt", language = SV, type = syn }}< 56265001 |Heart disease| {{ term = "hjärta", language = sv, typeId = 900000000000013009 |synonym| }}< 56265001 |Heart disease| {{ term = "heart", type = (syn fsn) }}< 56265001 |Heart disease| {{ term = "heart", typeId = ( 900000000000013009 |Synonym| 900000000000003001 |Fully specified name| ) }}< 64572001 |Disease| {{ dialect = en-au }}< 64572001 |Disease| {{ dialectId = 32570271000036106 |Australian English language reference set| }}< 64572001 |Disease| {{ term = "cardio", dialect = en-nz }}< 64572001 |Disease| {{ term = "card", dialect = ( en-nhs-clinical en-nhs-pharmacy ) }}< 64572001 |Disease| {{ term = "box", type = syn, dialect = en-us (prefer) }}< 64572001 |Disease| {{ term = "box", typeId = 900000000000013009 |Synonym| , dialect = en-us ( 900000000000548007 |Preferred| ) }}< 64572001 |Disease| {{ term = "box", type = syn, dialect = en-nhs-clinical (prefer), dialect = en-gb (accept) }}< 64572001 |Disease| {{ term = "box", type = syn, dialect = ( en-gb (prefer) en-nhs-clinical (prefer) ) }}< 64572001 |Disease| {{ term = "box", type = syn, dialect = ( en-gb en-nhs-clinical ) (prefer) }}< 125605004 |Fracture of bone| {{ term != "fracture", type = syn, dialect = en-us (prefer)}}< 125605004 |Fracture of bone| {{ term != "fracture", dialect = en-us}}< 125605004 |Fracture of bone| MINUS < 125605004 |Fracture of bone| {{ term != "fracture"}}< 125605004 |Fracture of bone| MINUS * {{ term != "fracture"}}* MINUS * {{ type = syn, dialect = en-nz (prefer) }}< 195967001 |Asthma| {{ D moduleId = 731000124108 |US National Library of Medicine maintained module| }}< 404684003 |Clinical finding| {{ D type = def, moduleId = 900000000000207008 |SNOMED CT core module| }}< 125605004 |Fracture of bone| {{ D effectiveTime = "20210131" }}< 125605004 |Fracture of bone| {{ D effectiveTime != "20210131" }}< 125605004 |Fracture of bone| {{ D effectiveTime >= "20190731" }}< 125605004 |Fracture of bone| {{ D effectiveTime <= "20190731" }}< 125605004 |Fracture of bone| {{ D effectiveTime = ("20190131" "20190731" "20200131" "20200731" }}< 125605004 |Fracture of bone| {{ D effectiveTime != ("20190131" "20190731" "20200131" "20200731" }}< 125605004 |Fracture of bone| {{ D effectiveTime = "" }}^ 816080008 |International Patient Summary| {{ D active = 1 }}^ 816080008 |International Patient Summary| {{ D active = true }}^ 816080008 |International Patient Summary| {{ D active = 0 }}^ 816080008 |International Patient Summary| {{ D active = false }}^ 816080008 |International Patient Summary| {{ D active = "*" }}*{{ D id = 3032638017 }}< 195967001 |Asthma (disorder)| {{ D id = 3032638017 }}< 195967001 |Asthma (disorder)| {{ D id = (1208972017 2674140012 3043971012) }}(< 195967001 |Asthma (disorder)| {{+HISTORY}}) {{ D id = 264553015 }}expressionConstraint = ws ( refinedExpressionConstraint / compoundExpressionConstraint / dottedExpressionConstraint / subExpressionConstraint ) ws
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
compoundExpressionConstraint = conjunctionExpressionConstraint / disjunctionExpressionConstraint / exclusionExpressionConstraint
conjunctionExpressionConstraint = subExpressionConstraint 1*(ws conjunction ws subExpressionConstraint)
disjunctionExpressionConstraint = subExpressionConstraint 1*(ws disjunction ws subExpressionConstraint)
exclusionExpressionConstraint = subExpressionConstraint ws exclusion ws subExpressionConstraint
dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute)
dottedExpressionAttribute = dot ws eclAttributeName
subExpressionConstraint = [constraintOperator ws] ( ( [refsetOperator ws] (eclFocusConcept / "(" ws expressionConstraint ws ")") *(ws memberFilterConstraint)) / (eclFocusConcept / "(" ws expressionConstraint ws ")") ) *(ws (descriptionFilterConstraint / conceptFilterConstraint)) [ws historySupplement]
eclFocusConcept = eclConceptReference / wildCard / altIdentifier
dot = "."
refsetOperator = memberOf / refsetContainingAny
memberOf = ( "^" / ("m"/"M") ("e"/"E") ("m"/"M") ("b"/"B") ("e"/"E") ("r"/"R") ("o"/"O") ("f"/"F") ) [ ws "[" ws (refsetFieldNameSet / wildCard) ws "]" ]
refsetContainingAny = "^R" / ( ("r"/"R") ("e"/"E") ("f"/"F") ("s"/"S") ("e"/"E") ("t"/"T") ("c"/"C") ("o"/"O") ("n"/"N") ("t"/"T") ("a"/"A") ("i"/"I") ("n"/"N") ("i"/"I") ("n"/"N") ("g"/"G") ("a"/"A") ("n"/"N") ("y"/"Y") )
refsetFieldNameSet = refsetFieldName *( ws "," ws refsetFieldName )
refsetFieldName = 1*alpha
eclConceptReference = conceptId [ws "|" ws term ws "|"]
eclConceptReferenceSet = "(" ws eclConceptReference 1*(mws eclConceptReference) ws ")"
conceptId = sctId
term = 1*nonwsNonPipe *( 1*SP 1*nonwsNonPipe )
altIdentifier = (QM altIdentifierSchemeAlias "#" altIdentifierCodeWithinQuotes QM / altIdentifierSchemeAlias "#" altIdentifierCodeWithoutQuotes) [ws "|" ws term ws "|"]
altIdentifierSchemeAlias = alpha *(dash / alpha / integerValue)
altIdentifierCodeWithinQuotes = 1*anyNonEscapedChar
altIdentifierCodeWithoutQuotes = 1*(alpha / digit / dash / "." / "_")
wildCard = "*" / ( ("a"/"A") ("n"/"N") ("y"/"Y") )
constraintOperator = childOf / childOrSelfOf / descendantOrSelfOf / descendantOf / parentOf / parentOrSelfOf / ancestorOrSelfOf / ancestorOf / top / bottom
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 )
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 )
childOf = "<!" / (("c"/"C") ("h"/"H") ("i"/"I") ("l"/"L") ("d"/"D") ("o"/"O") ("f"/"F") mws )
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 )
ancestorOf = ">" / ( ("a"/"A") ("n"/"N") ("c"/"C") ("e"/"E") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("o"/"O") ("f"/"F") mws )
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 )
parentOf = ">!" / (("p"/"P") ("a"/"A") ("r"/"R") ("e"/"E") ("n"/"N") ("t"/"T") ("o"/"O") ("f"/"F") mws )
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 )
top = "!!>" / (("t"/"T") ("o"/"O") ("p"/"P") mws )
bottom = "!!<" / (("b"/"B") ("o"/"O") ("t"/"T") ("t"/"T") ("o"/"O") ("m"/"M") mws )
conjunction = (("a"/"A") ("n"/"N") ("d"/"D") mws) / ","
disjunction = ("o"/"O") ("r"/"R") mws
exclusion = ("m"/"M") ("i"/"I") ("n"/"N") ("u"/"U") ("s"/"S") mws
eclRefinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet]
conjunctionRefinementSet = 1*(ws conjunction ws subRefinement)
disjunctionRefinementSet = 1*(ws disjunction ws subRefinement)
subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")"
eclAttributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet]
conjunctionAttributeSet = 1*(ws conjunction ws subAttributeSet)
disjunctionAttributeSet = 1*(ws disjunction ws subAttributeSet)
subAttributeSet = eclAttribute / "(" ws eclAttributeSet ws ")"
eclAttributeGroup = ["[" cardinality "]" ws] "{" ws eclAttributeSet ws "}"
eclAttribute = ["[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (concreteString / concreteStringSet) / booleanComparisonOperator ws booleanValue)
cardinality = minValue to maxValue
minValue = nonNegativeIntegerValue
to = ".." / (mws ("t"/"T") ("o"/"O") mws)
maxValue = nonNegativeIntegerValue / many
many = "*" / ( ("m"/"M") ("a"/"A") ("n"/"N") ("y"/"Y"))
reverseFlag = ( ("r"/"R") ("e"/"E") ("v"/"V") ("e"/"E") ("r"/"R") ("s"/"S") ("e"/"E") ("o"/"O") ("f"/"F")) / "R"
eclAttributeName = subExpressionConstraint
expressionComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>"
numericComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" / "<=" / "<" / ">=" / ">"
timeComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" / "<=" / "<" / ">=" / ">"
stringComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>"
booleanComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>"
idComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>"
descriptionFilterConstraint = "{{" ws [ "d" / "D" ] ws descriptionFilter *(ws "," ws descriptionFilter) ws "}}"
descriptionFilter = termFilter / languageFilter / typeFilter / dialectFilter / moduleFilter / effectiveTimeFilter / activeFilter / descriptionIdFilter
descriptionIdFilter = descriptionIdKeyword ws idComparisonOperator ws (descriptionId / descriptionIdSet)
descriptionIdKeyword = ("i"/"I") ("d"/"D")
descriptionId = sctId
descriptionIdSet = "(" ws descriptionId *(mws descriptionId) ws ")"
termFilter = termKeyword ws stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet)
termKeyword = ("t"/"T") ("e"/"E") ("r"/"R") ("m"/"M")
typedSearchTerm = ( [ matchKeyword ws ":" ws ] matchSearchTermSet ) / ( wild ws ":" ws wildSearchTermSet )
typedSearchTermSet = "(" ws typedSearchTerm *(mws typedSearchTerm) ws ")"
concreteStringSet = "(" ws concreteString *(mws concreteString) ws ")"
concreteString = QM concreteStringCharacters QM
concreteStringCharacters = 1*(anyNonEscapedChar / escapedChar)
wild = ("w"/"W") ("i"/"I") ("l"/"L") ("d"/"D")
matchKeyword = ("m"/"M") ("a"/"A") ("t"/"T") ("c"/"C") ("h"/"H")
matchSearchTerm = 1*(nonwsNonEscapedChar / escapedChar)
matchSearchTermSet = QM ws matchSearchTerm *(mws matchSearchTerm) ws QM
wildSearchTerm = 1*(anyNonEscapedChar / escapedWildChar)
wildSearchTermSet = QM wildSearchTerm QM
languageFilter = language ws booleanComparisonOperator ws (languageCode / languageCodeSet)
language = ("l"/"L") ("a"/"A") ("n"/"N") ("g"/"G") ("u"/"U") ("a"/"A") ("g"/"G") ("e"/"E")
languageCode = 2alpha
languageCodeSet = "(" ws languageCode *(mws languageCode) ws ")"
typeFilter = typeIdFilter / typeTokenFilter
typeIdFilter = typeId ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
typeId = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E") ("i"/"I") ("d"/"D")
typeTokenFilter = type ws booleanComparisonOperator ws (typeToken / typeTokenSet)
type = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E")
typeToken = synonym / fullySpecifiedName / definition
typeTokenSet = "(" ws typeToken *(mws typeToken) ws ")"
synonym = ("s"/"S") ("y"/"Y") ("n"/"N") [ ("o"/"O") ("n"/"N") ("y"/"Y") ("m"/"M") ]
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") )
definition = ("d"/"D") ("e"/"E") ("f"/"F") [ ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ]
dialectFilter = (dialectIdFilter / dialectAliasFilter) [ ws acceptabilitySet ]
dialectIdFilter = dialectId ws booleanComparisonOperator ws (subExpressionConstraint / dialectIdSet)
dialectId = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("d"/"D")
dialectAliasFilter = dialect ws booleanComparisonOperator ws (dialectAlias / dialectAliasSet)
dialect = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T")
dialectAlias = alpha *( dash / alpha / integerValue)
dialectAliasSet = "(" ws dialectAlias [ws acceptabilitySet] *(mws dialectAlias [ws acceptabilitySet]) ws ")"
dialectIdSet = "(" ws eclConceptReference [ws acceptabilitySet] *(mws eclConceptReference [ws acceptabilitySet] ) ws ")"
acceptabilitySet = acceptabilityConceptReferenceSet / acceptabilityTokenSet
acceptabilityConceptReferenceSet = "(" ws eclConceptReference *(mws eclConceptReference) ws ")"
acceptabilityTokenSet = "(" ws acceptabilityToken *(mws acceptabilityToken) ws ")"
acceptabilityToken = acceptable / preferred
acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T") [ ("a"/"A") ("b"/"B") ("l"/"L") ("e"/"E") ]
preferred = ("p"/"P") ("r"/"R") ("e"/"E") ("f"/"F") ("e"/"E") ("r"/"R") [ ("r"/"R") ("e"/"E") ("d"/"D") ]
conceptFilterConstraint = "{{" ws ("c" / "C") ws conceptFilter *(ws "," ws conceptFilter) ws "}}"
conceptFilter = definitionStatusFilter / moduleFilter / effectiveTimeFilter / activeFilter
definitionStatusFilter = definitionStatusIdFilter / definitionStatusTokenFilter
definitionStatusIdFilter = definitionStatusIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
definitionStatusIdKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S") ("i"/"I") ("d"/"D")
definitionStatusTokenFilter = definitionStatusKeyword ws booleanComparisonOperator ws (definitionStatusToken / definitionStatusTokenSet)
definitionStatusKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S")
definitionStatusToken = primitiveToken / definedToken
definitionStatusTokenSet = "(" ws definitionStatusToken *(mws definitionStatusToken) ws ")"
primitiveToken = ("p"/"P") ("r"/"R") ("i"/"I") ("m"/"M") ("i"/"I") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
definedToken = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("e"/"E") ("d"/"D")
moduleFilter = moduleIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
moduleIdKeyword = ("m"/"M") ("o"/"O") ("d"/"D") ("u"/"U") ("l"/"L") ("e"/"E") ("i"/"I") ("d"/"D")
effectiveTimeFilter = effectiveTimeKeyword ws timeComparisonOperator ws ( timeValue / timeValueSet )
effectiveTimeKeyword = ("e"/"E") ("f"/"F") ("f"/"F") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E") ("t"/"T") ("i"/"I") ("m"/"M") ("e"/"E")
timeValue = QM [ year month day ] QM
timeValueSet = "(" ws timeValue *(mws timeValue) ws ")"
year = digitNonZero digit digit digit
month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12"
day = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" / "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" / "24" / "25" / "26" / "27" / "28" / "29" / "30" / "31"
activeFilter = activeKeyword ws booleanComparisonOperator ws activeValue
activeKeyword = ("a"/"A") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
activeValue = activeTrueValue / activeFalseValue / wildCard
activeTrueValue = "1" / "true"
activeFalseValue = "0" / "false"
memberFilterConstraint = "{{" ws ("m" / "M") ws memberFilter *(ws "," ws memberFilter) ws "}}"
memberFilter = moduleFilter / effectiveTimeFilter / activeFilter / memberFieldFilter
memberFieldFilter = refsetFieldName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet) / booleanComparisonOperator ws booleanValue / ws timeComparisonOperator ws (timeValue / timeValueSet) )
historySupplement = "{{" ws "+" ws historyKeyword [ historyProfileSuffix / ws historySubset ] ws "}}"
historyKeyword = ("h"/"H") ("i"/"I") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("y"/"Y")
historyProfileSuffix = historyMinimumSuffix / historyModerateSuffix / historyMaximumSuffix
historyMinimumSuffix = ("-"/"_") ("m"/"M") ("i"/"I") ("n"/"N")
historyModerateSuffix = ("-"/"_") ("m"/"M") ("o"/"O") ("d"/"D")
historyMaximumSuffix = ("-"/"_") ("m"/"M") ("a"/"A") ("x"/"X")
historySubset = "(" ws expressionConstraint ws ")"
numericValue = ["-"/"+"] (decimalValue / integerValue)
stringValue = 1*(anyNonEscapedChar / escapedChar)
integerValue = digitNonZero *digit / zero
decimalValue = integerValue "." 1*digit
booleanValue = true / false
true = ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E")
false = ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/"E")
nonNegativeIntegerValue = (digitNonZero *digit ) / zero
sctId = digitNonZero 5*17( digit )
ws = *( SP / HTAB / CR / LF / comment ) ; optional white space
mws = 1*( SP / HTAB / CR / LF / comment ) ; mandatory white space
comment = "/*" *(nonStarChar / starWithNonFSlash) "*/"
nonStarChar = SP / HTAB / CR / LF / %x21-29 / %x2B-7E /UTF8-2 / UTF8-3 / UTF8-4
starWithNonFSlash = %x2A nonFSlash
nonFSlash = SP / HTAB / CR / LF / %x21-2E / %x30-7E /UTF8-2 / UTF8-3 / UTF8-4
SP = %x20 ; space
HTAB = %x09 ; tab
CR = %x0D ; carriage return
LF = %x0A ; line feed
QM = %x22 ; quotation mark
BS = %x5C ; back slash
star = %x2A ; asterisk
digit = %x30-39
zero = %x30
digitNonZero = %x31-39
nonwsNonPipe = %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / UTF8-4
anyNonEscapedChar = SP / HTAB / CR / LF / %x20-21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
escapedChar = BS QM / BS BS
escapedWildChar = BS QM / BS BS / BS star
nonwsNonEscapedChar = %x21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
alpha = %x41-5A / %x61-7A
dash = %x2D
UTF8-2 = %xC2-DF UTF8-tail
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail = %x80-BF< 56265001 |Heart disease| {{ C definitionStatus = primitive }}< 56265001 |Heart disease| {{ C definitionStatusId = 900000000000074008 |Primitive| }}< 56265001 |Heart disease| {{ C definitionStatus = defined }}< 56265001 |Heart disease| {{ C definitionStatusId = 900000000000073002 |Defined| }}< 64572001 |Disease| {{ C definitionStatus = primitive }} {{ D term = "heart"}}< 195967001 |Asthma| {{ C moduleId = 731000124108 |US National Library of Medicine maintained module| }}< 195967001 |Asthma| {{ C definitionStatus = primitive, moduleId = 900000000000207008 |SNOMED CT core module| }}< 125605004 |Fracture of bone| {{ C effectiveTime = "20210131" }}< 125605004 |Fracture of bone| {{ C effectiveTime != "20210131" }}< 125605004 |Fracture of bone| {{ C effectiveTime >= "20190731" }}< 125605004 |Fracture of bone| {{ C effectiveTime <= "20190731" }}< 125605004 |Fracture of bone| {{ C effectiveTime = ("20190131" "20190731" "20200131" "20200731" }}< 125605004 |Fracture of bone| {{ C effectiveTime != ("20190131" "20190731" "20200131" "20200731" }}< 125605004 |Fracture of bone| {{ C effectiveTime = "" }}^ 816080008 |International Patient Summary| {{ C active = 1 }}^ 816080008 |International Patient Summary| {{ C active = true }}^ 816080008 |International Patient Summary| {{ C active = 0 }}^ 816080008 |International Patient Summary| {{ C active = false }}
<< 195967001 |Asthma| OR
^ 900000000000527005 |SAME AS association reference set| {{ M targetComponentId = << 195967001 |Asthma| }}<< 195967001 |Asthma| {{ + HISTORY ( 900000000000527005 |SAME AS association reference set| ) }}[[+ecl @ecl_query]] {{ + HISTORY ( [[+ecl @history_refset_query]] ) }}[[+ecl @ecl_query]] OR ^ [[+ecl @history_refset_query]] {{ M targetComponentId = [[+ecl @ecl_query]] }}<< 195967001 |Asthma| {{ + HISTORY-MIN }}<< 195967001 |Asthma| {{ + HISTORY ( 900000000000527005 |SAME AS association reference set| ) }}<< 195967001 |Asthma| {{ + HISTORY-MOD }}<< 195967001 |Asthma| {{ + HISTORY ( 900000000000527005 |SAME AS association reference set| OR 900000000000526001 |REPLACED BY association reference set| OR 900000000000528000 |WAS A association reference set| OR 1186924009 |PARTIALLY EQUIVALENT TO association reference set| ) }}<< 195967001 |Asthma| {{ + HISTORY-MAX }}<< 195967001 |Asthma| {{ + HISTORY (< 900000000000522004 |Historical association reference set| ) }}<< 195967001 |Asthma| {{ + HISTORY (*) }}<< 195967001 |Asthma| {{ + HISTORY }}<< 306206005 |Referral to service (procedure)|<< 306206005 |Referral to service (procedure)| {{ + HISTORY-MIN }}<< 53430007 |Pain of breast (finding)| {{ + HISTORY-MAX }}< 19829001 |Disorder of lung| OR < 301867009 |Edema of trunk|< 19829001 |Disorder of lung| AND ^ 700043003 |Example problem list concepts reference set|< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| AND
^ 700043003 |Example problem list concepts reference set|(< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| ) AND
^ 700043003 |Example problem list concepts reference set|< 19829001 |Disorder of lung| AND (< 301867009 |Edema of trunk| AND
^ 700043003 |Example problem list concepts reference set| )< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| OR
^ 700043003 |Example problem list concepts reference set|(< 19829001 |Disorder of lung| AND < 301867009 |Edema of trunk| ) OR
^ 700043003 |Example problem list concepts reference set|< 19829001 |Disorder of lung| AND (< 301867009 |Edema of trunk| OR
^ 700043003 |Example problem list concepts reference set| )< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure|,
116676008 |Associated morphology| = << 415582006 |Stenosis|< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
116676008 |Associated morphology| = << 415582006 |Stenosis|< 404684003 |Clinical finding| :
116676008 |Associated morphology| = << 55641003 |Infarct| OR
42752001 |Due to| = << 22298006 |Myocardial infarction|< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
116676008 |Associated morphology| = << 415582006 |Stenosis| AND
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|< 404684003 |Clinical finding| :
( 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
116676008 |Associated morphology| = << 415582006 |Stenosis| ) AND
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
( 116676008 |Associated morphology| = << 415582006 |Stenosis| AND
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor| )< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
116676008 |Associated morphology| = << 415582006 |Stenosis| OR
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|< 404684003 |Clinical finding| :
( 363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
116676008 |Associated morphology| = << 415582006 |Stenosis| ) OR
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor|< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| AND
( 116676008 |Associated morphology| = << 415582006 |Stenosis| OR
42752001 |Due to| = << 445238008 |Malignant carcinoid tumor| )< 404684003 |Clinical finding| :
{ 363698007 |Finding site| = << 39057004 |Pulmonary valve structure|,
116676008 |Associated morphology| = << 415582006 |Stenosis| } OR
{ 363698007 |Finding site| = << 53085002 |Right ventricular structure|,
116676008 |Associated morphology| = << 56246009 |Hypertrophy| }^ 450990004 |Adverse drug reactions reference set for GP/FP health issue| :
246075003 |Causative agent| = (< 373873005 |Pharmaceutical / biologic product| OR < 105590001 |Substance| )< 404684003 |Clinical finding| : 116676008 |Associated morphology| =
(<< 56208002 |Ulcer| AND << 50960005 |Hemorrhage| )



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.
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
; A refined expression constraint includes a subexpression constraint followed by a refinement.
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).
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.
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.
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.
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.
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.
subExpressionConstraint = [constraintOperator ws] ( ( [memberOf ws] (eclFocusConcept / "(" ws expressionConstraint ws ")") *(ws memberFilterConstraint)) / (eclFocusConcept / "(" ws expressionConstraint ws ")") ) *(ws (descriptionFilterConstraint / conceptFilterConstraint)) [ws historySupplement]
; 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). If the memberOf function is applied, a member filter constraint may be used. A sub expression constraint may then optionally include one or more concept or description filter constraints, followed optionally by a history supplement.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 section on the Order of Operation. Therefore, if a constraintOperator is followed by a memberOf function, then the memberOf function is processed prior to the constraintOperator.
eclFocusConcept = eclConceptReference / wildCard
; A focus concept is a concept reference or a wild card.
dot = "." ; Brief syntax only
; A dot connects an expression constraint with an attribute whose values are included in the result.
memberOf = "^" [ ws "[" ws (refsetFieldNameSet / wildCard) ws "]" ]**LS:**memberOf = ( "^" / ("m"/"M") ("e"/"E") ("m"/"M") ("b"/"B") ("e"/"E") ("r"/"R") ("o"/"O") ("f"/"F") ) [ ws "[" ws (refsetFieldNameSet / wildCard) ws "]" ]
; By default, the 'memberOf' function returns the set of referenced components in the set of reference sets which 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. If a set of reference set fields is listed in square brackets after the memberOf function, then the values of these fields are returned.
refsetFieldNameSet = refsetFieldName *( ws "," ws refsetFieldName )
; A refsetFieldNameSet is a set of one or more reference set fields, separated by a comma and optional whitespace.
refsetFieldName = 1*alpha
; A refsetFieldName is the set of alphabetic characters used to name a reference set field.
eclConceptReference = conceptId [ws "|" ws term ws "|"]
; A conceptReference is represented by a ConceptId, optionally followed by a term enclosed by a pair of "|" characters. Whitespace before or after the ConceptId is ignored as is any whitespace between the initial "|" characters and the first non-whitespace character in the term or between the last non-whitespace character and before second "|" character.
eclConceptReferenceSet = "(" ws eclConceptReference 1*(mws eclConceptReference) ws ")"
; A concept reference set includes two or more concept references separated by mandatory white space and enclosed in brackets.
conceptId = sctId
; The ConceptId must be a valid SNOMED CT identifier for a concept. The initial digit may not be zero. The smallest number of digits is six, and the maximum is 18.
term = 1nonwsnonpipe ( 1SP 1nonwsnonpipe )
; The term must be the term from a SNOMED CT description that is associated with the concept identified by the preceding concept identifier. For example, the term could be the preferred description, or the preferred description associated with a particular translation. The term may include valid UTF-8 characters except for the pipe
wildCard = "" ; Brief syntax
wildCard = "" / ( ("a"/"A") ("n"/"N") ("y"/"Y")) ; Long syntax
; 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.
constraintOperator = childOf / childOrSelfOf / descendantOrSelfOf / descendantOf / parentOf / parentOrSelfOf / ancestorOrSelfOf / ancestorOf
; A constraint operator is either 'childOf', 'childOrSelfOf', 'descendantOrSelfOf', 'descendantOf', 'parentOf', 'parentOrSelfOf', 'ancestorOrSelfOf', or 'ancestorOf'.
descendantOf = "<" ; Brief syntax
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 ) ; Long syntax
; 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 = "<<" ; Brief syntax
**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 ) ; Long syntax
; 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.
childOf = "<!" ; Brief syntax
childOf = "<!" / (("c"/"C") ("h"/"H") ("i"/"I") ("l"/"L") ("d"/"D") ("o"/"O") ("f"/"F") mws ) ; Long syntax
; 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.
childOrSelfOf = "<<!" ; Brief syntax
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 ) ; Long syntax
; 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.
ancestorOf = ">" ; Brief syntax
ancestorOf = ">" / ( ("a"/"A") ("n"/"N") ("c"/"C") ("e"/"E") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("o"/"O")("f"/"F") mws ) ; Long syntax
; 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.
ancestorOrSelfOf = ">>" ; Brief syntax
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 ) ; Long syntax
; 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.
parentOf = ">!" ; Brief syntax
parentOf = ">!" / (("p"/"P") ("a"/"A") ("r"/"R") ("e"/"E") ("n"/"N") ("t"/"T") ("o"/"O") ("f"/"F") mws ) ; Long syntax
; 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.
parentOrSelfOf = ">>!" ; Brief syntax
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 ) ; Long syntax
; 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.
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.
disjunction = ("o"/"O") ("r"/"R") mws
; A disjunction is represented by the word "or" (case insensitive and followed by at least one white space).
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).
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.
conjunctionRefinementSet = 1(ws conjunction ws subRefinement)
; A conjunction refinement set consists of one or more conjunction operators, each followed by a subRefinement.
disjunctionRefinementSet = 1(ws disjunction ws subRefinement)
; A disjunction refinement set consists of one or more disjunction operators, each followed by a subRefinement.
subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")"
; A subRefinement is either an attribute set, an attribute group or a bracketed refinement.
eclAttributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet]
; An attribute set contains one or more attribute name-value pairs separated by a conjunction or disjunction operator. An attribute set may optionally be placed in brackets.
conjunctionAttributeSet = 1(ws conjunction ws subAttributeSet)
; A conjunction attribute set consists of one or more conjunction operators, each followed by a subAttributeSet.
disjunctionAttributeSet = 1(ws disjunction ws subAttributeSet)
; A disjunction attribute set consists of one or more disjunction operators, each followed by a subAttributeSet.
subAttributeSet = eclAttribute / "(" ws eclAttributeSet ws ")"
; A subAttributeSet is either an attribute or a bracketed attribute set.
eclAttributeGroup = [ "[" cardinality "]" ws] "{" ws eclAttributeSet ws "}"
; An attribute group contains a collection of attributes that operate together as part of the refinement of the containing expression constraint. An attribute group may optionally be preceded by a cardinality. An attribute group cardinality indicates the minimum and maximum number of attribute groups that must satisfy the given attributeSet constraint for the expression constraint to be satisfied.
eclAttribute = [ "[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet) / booleanComparisonOperator ws booleanValue)
; An attribute is a name-value pair expressing a single refinement of the containing expression constraint. Either the attribute value must satisfy (or not) the given expression constraint, the attribute value is compared with a given numeric value (integer or decimal) using a numeric comparison operator, the attribute value must match (or not match) the given typedSearchTerm or typedSearchTermSet, or the attribute value must be equal to (or not equal to) the given boolean value. The attribute may optionally be preceded by a cardinality constraint and/or a reverse flag.
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.
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.
to = ".." ; Brief syntax
to = ".." / (mws ("t"/"T") ("o"/"O") mws) ; Long syntax
; 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.
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.
many = "" ; Brief syntax
many = "" / ( ("m"/"M") ("a"/"A") ("n"/"N") ("y"/"Y")) ; Long syntax
; 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.
reverseFlag = "R" ; Brief syntax
reverseFlag = (("r"/"R") ("e"/"E") ("v"/"V") ("e"/"E") ("r"/"R") ("s"/"S") ("e"/"E") ("o"/"O") ("f"/"F")) / "R" ; Long syntax
; 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.
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.
expressionComparisonOperator = "=" / "!=" ; Brief syntax
expressionComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" ; Long syntax
; 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.
numericComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ; Brief syntax
numericComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" / "<=" / "<" / ">=" / ">" ; Long syntax
; 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.
timeComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ">" ; Brief syntax
timeComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" / "<=" / "<" / ">=" / ">" ; Long syntax
; Date and time values may be compared 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.
stringComparisonOperator = "=" / "!="
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.
booleanComparisonOperator = "=" / "!="
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.
idComparisonOperator = "=" / "!=" ; Brief syntax
idComparisonOperator = "=" / "!=" / ("n"/"N") ("o"/"O") ("t"/"T") ws "=" / "<>" ; Long syntax
; Filter criteria whose value is a SCTID may be compared to a SNOMED CT identifier using either equals ("=") or not equals ("!="). In the long syntax "<>" and "not =" (case insensitive) are also valid ways to represent not equals.
descriptionFilterConstraint = "{{" ws ["d", / "D"] ws descriptionFilter *(ws "," ws descriptionFilter) ws "}}"
; A descriptionFilterConstraint is a constraint used to filter the concepts in the result set, according to whether or not the given conditions match at least one of the concept's descriptions. A description filter constraint is always enclosed in double curly braces. Within these braces, it should (preferably) start with the letter 'D' followed by one or more description filters.
descriptionFilter = termFilter / languageFilter / typeFilter / dialectFilter / moduleFilter / effectiveTimeFilter / activeFilter / descriptionIdFilter
; A description filter is either a term filter, a language filter, a type filter, a dialect filter, a module filter, an effective time filter, an active filter or a description id filter.
descriptionIdFilter = descriptionIdKeyword ws idComparisonOperator ws (descriptionId / descriptionIdSet)
; A descriptionIdFilter starts with the 'id' keyword, followed by an id comparison operator and either a single description id or a set of description ids.
descriptionIdKeyword = ("i"/"I") ("d"/"D")
; The description id keyword uses the text "id" (case insensitive)
descriptionId = sctId
; The descriptionId must be a valid SNOMED CT identifier for a description. The initial digit may not be zero. The smallest number of digits is six, and the maximum is 18.
descriptionIdSet = "(" ws descriptionId *(mws descriptionId) ws ")"
; A description id set consists of one or more description ids separated by mandatory white space and enclosed in brackets.
termFilter = termKeyword ws stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet)
; A termFilter starts with the 'term' keyword, followed by a string comparison operator and either a typed search term or a typed search term set (with optional white space between). For example: term = "respiratory".
termKeyword = ("t"/"T") ("e"/"E") ("r"/"R") ("m"/"M")
; The term keyword uses the text "term" (case insensitive).
typedSearchTerm = ( [ matchKeyword 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.
typedSearchTermSet = "(" 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.
wild = ("w"/"W") ("i"/"I") ("l"/"L") ("d"/"D")
; A wildcard search type is indicated by the word "wild" (case insensitive).
matchKeyword = ("m"/"M") ("a"/"A") ("t"/"T") ("c"/"C") ("h"/"H")
; A word prefix any order search is indicated by the word "match" (case insensitive).
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.
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.
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.
wildSearchTermSet = QM wildSearchTerm QM
; A term set in a wildcard search includes a wildcard search term (optionally including whitespace) enclosed in quotation marks.
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.
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).
languageCode = 2alpha
; A language code is a 2 character alphanumeric string.
languageCodeSet = "(" ws languageCode *(mws languageCode) ws ")"
; A language code set is one or more language codes, separated by mandatory whitespace, and enclosed in brackets.
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.
typeIdFilter = typeId ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
; A typeId filter starts with the 'typeId' keyword, followed by a boolean comparison operator, and either a subExpressionConstraint or a set of concept references.
typeId = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E") ("i"/"I") ("d"/"D")
; The 'typeId' keyword uses the text "TYPEID" (case insensitive).
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.
type = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E")
; The 'type' keyword uses the text "TYPE" (case insensitive).
typeToken = synonym / fullySpecifiedName / definition
; A type token is either a 'synonym' token, a 'fully specified name' token or a 'definition' token.
typeTokenSet = "(" ws typeToken *(mws typeToken) ws ")"
; A type token set is one or more type tokens, separated by mandatory whitespace and enclosed in brackets.
synonym = ("s"/"S") ("y"/"Y") ("n"/"N") ; Brief syntax
synonym = ("s"/"S") ("y"/"Y") ("n"/"N") [ ("o"/"O") ("n"/"N") ("y"/"Y") ("m"/"M") ] ; Long syntax
; A 'synonym' token uses the text "SYN" (case insensitive). In the long syntax, the text "Synonym" (case insensitive) may be used instead.
fullySpecifiedName = ("f"/"F") ("s"/"S") ("n"/"N")**LS: 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.
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.
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.
dialectIdFilter = dialectId ws booleanComparisonOperator ws (subExpressionConstraint / dialectIdSet)
; A dialectId filter starts with the 'dialectId' keyword, followed by a boolean comparison operator, and either a subExpressionConstraint or a set of dialectIds.
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).
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
dialect = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T")
; A 'dialect' keyword uses the text "DIALECT" (case insensitive).
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.
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.
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.
acceptabilitySet = acceptabilityConceptReferenceSet / 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 a set of one or more concept references or an acceptabilityToken set.
acceptabilityConceptReferenceSet = "(" ws eclConceptReference *(mws eclConceptReference) ws ")"
; An acceptability concept reference set is a set of one or more references to concepts that are a < 900000000000511003 |Acceptability|.
acceptabilityTokenSet = "(" ws acceptabilityToken *(mws acceptabilityToken) ws ")"
; An acceptability token set is one or more acceptability tokens, separated by mandatory whitespace, and enclosed in brackets.
acceptabilityToken = acceptable / preferred
; An acceptability token is either an acceptable token and a preferred token.
acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T") ; Brief syntax
acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T") [ ("a"/"A") ("b"/"B") ("l"/"L") ("e"/"E") ] ; Long syntax
; An acceptable token uses the text "ACCEPT" (case insensitive). In the long syntax, the text "Acceptable" (case insensitive) may be used instead.
preferred = ("p"/"P") ("r"/"R") ("e"/"E") ("f"/"F") ("e"/"E") ("r"/"R")
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.
conceptFilterConstraint = "{{" ws ("c" / "C") ws conceptFilter *(ws "," ws conceptFilter) ws "}}"
; A concept filter constraint is a constraint used to filter the concepts in the result set, according to whether or not the concept matches the given conditions. A concept filter constraint is always enclosed in double curly braces. Within these braces, it starts with the letter 'C' followed by one or more constraint filters.
conceptFilter = definitionStatusFilter / moduleFilter / effectiveTimeFilter / activeFilter
; A concept filter is either a definition status filter, a module filter, an effective time filter or an active filter.
definitionStatusFilter = definitionStatusIdFilter / definitionStatusTokenFilter
; A definition status filter is constraint that either filters the results of a query, based on each concept's definition status identifier or a token.
definitionStatusIdFilter = definitionStatusIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceset)
; A definition status filter is a constraint that filters the results of a query, based on whether or not each concept's definition status matches a given identifier. The filter starts with the keyword "definitionStatusId", followed by a boolean comparison operator and either a subexpression constraint or a set of concept references that are a subtype of 900000000000444006 | Definition status|.
definitionStatusIdKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S") ("i"/"I") ("d"/"D")
; The definition status id keyword is the text "definitionStatusId" (in any combination of upper or lower case).
definitionStatusTokenFilter = definitionStatusKeyword ws booleanComparisonOperator ws (definitionStatusToken / definitionStatusTokenSet)
; A definition status filter is a constraint that filters the results of a query, based on whether or not each concept's definition status matches a given token.
definitionStatusKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S")
; The definition status keyword is the text "definitionStatus" (in any combination of upper or lower case).
definitionStatusToken = primitiveToken / definedToken
; A definition status token is either a primitive token or a defined token.
definitionStatusTokenSet = "(" ws definitionStatusToken *(mws definitionStatusToken) ws ")"
; A definition status token set consists of one or more definition status tokens separated by mandatory white space and enclosed in brackets.
primitiveToken = ("p"/"P") ("r"/"R") ("i"/"I") ("m"/"M") ("i"/"I") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
; A primitive token represents the definition status 900000000000074008 | Primitive| using the text "primitive" (in any combination of upper and lower case characters).
definedToken = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("e"/"E") ("d"/"D")
; A defined token represents the definition status 900000000000073002 | Defined| using the text "defined" (in any combination of upper and lower case characters).
moduleFilter =moduleIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
; A module filter is a constraint that filters the results of a query based on the module to which each concept belongs. The filter starts with the keyword "moduleId", followed by a boolean comparison operator and either a subexpression constraint or a set of concept references that are a subtype of 900000000000443000 | Module|.
moduleIdKeyword = ("m"/"M") ("o"/"O") ("d"/"D") ("u"/"U") ("l"/"L") ("e"/"E") ("i"/"I") ("d"/"D")
; The module id keyword is the text "moduleId" (in any combination of upper or lower case).
effectiveTimeFilter = effectiveTimeKeyword ws timeComparisonOperator ws ( timeValue / timeValeSet )
; An effective time filter is a constraint that filters the results of a query based on the effective time assigned to each concept.
effectiveTimeKeyword = ("e"/"E") ("f"/"F") ("f"/"F") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E") ("t"/"T") ("i"/"I") ("m"/"M") ("e"/"E")
; The effective time keyword is the text "effectiveTime" (in any combination of upper or lower case).
timeValue = QM [ year month day ] QM
; A time value is a 8 digit string that represents the year, month and day of a specific date.
timeValueSet = "(" ws timeValue *(mws timeValue) ws ")"
; A time value set consists of one or more time values separated by mandatory white space and enclosed in brackets.
year = digitNonZero digit digit digit
; A year is a 4 digit string starting with a non-zero digit.
month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12"
; A month is a 2 digit string from "01" to "12" that represents a specific month of the year (e.g. "01" represents January)
day = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" / "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" / "24" / "25" / "26" / "27" / "28" / "29" / "30" / "31"
; A day is a 2 digit string from "01" to "31" that represents a specific day within a month of a year.
activeFilter = activeKeyword ws booleanComparisonOperator ws activeValue
; An active filter is a constraint that filters the results of a query based on the active status of each concept
activeKeyword = ("a"/"A") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
; The active keyword is the text "active" (in any combination of upper or lower case).
activeValue = activeTrueValue / activeFalseValue
; An active value represents the active status of a concept, and is either true (i.e. the concept is active) or false (i.e. the concept is inactive).
activeTrueValue = "1" / "true"
; An active true value is a value that represents an active concept. This value is either "1" or "true".
activeFalseValue = "0" / "false"
; An active false value is a value that represents an inactive concept. This value is either "0" or "false".
memberFilterConstraint = "{{" ws ("m" / "M") ws memberFilter *(ws "," ws memberFilter) ws "}}"
; A member filter constraint is a constraint used to filter the rows in one or more result sets, according to values of particular fields. A member filter constraint is always surrounded by double curly braces. Within these braces, it starts with the letter 'M' followed by one or more member filters.
memberFilter = moduleFilter / effectiveTimeFilter / activeFilter / memberFieldFilter
; A member filter is either a module filter, an effective time filter, an active filter, or a member field filter.
memberFieldFilter = refsetFieldName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet) / booleanComparisonOperator ws booleanValue / ws timeComparisonOperator ws (timeValue / timeValueSet) )
; A member field filter always has three parts - (1) the reference set field name, (2) a comparison operator, and (3) the criteria on which to match the field's value. If the refset field is of type SNOMED CT concept, then an expression comparison operator is used, followed by a subexpression constraint. If the refset field is a numeric type, then a numeric comparison operator is used, followed by a hash symbol ("#") and a numeric value. If the refset field is of type string, then a string comparison operator is used, followed by a typed search term or a typed search term set. If the refset field is of type boolean, then a boolean comparison operator is used, followed by a boolean value. And if the refset field is of type dateTime, then a time comparison operator is used, followed by a time value or time value set.
historySupplement = "{{" ws "+" ws historyKeyword [ historyProfileSuffix / ws historySubset ] ws "}}"
; A history supplement augments the results of the expression constraint with relevant inactive concepts. A history supplement is always surrounded by double curly braces. Within these braces, it starts with a plus symbol (i.e. "+"), followed by the history keyword. The history keyword is optionally followed by either a profile suffix, or a history subset.
historyProfileSuffix = historyMinimumSuffix / historyModerateSuffix / historyMaximumSuffix
; A history profile suffix is either the suffix for history minimum, history moderate or history maximum.
historyMinimumSuffix = ("-"/"_")("m"/"M") ("i"/"I") ("n"/"N")
; The history minimum suffix is "-MIN" (case insensitive). The suffix may start with either a hyphen (i.e. "-") or an underscore (i.e. "").
historyModerateSuffix = ("-"/"") ("m"/"M") ("o"/"O") ("d"/"D")
; The history moderate suffix is "-MOD" (case insensitive). The suffix may start with either a hyphen (i.e. "-") or an underscore (i.e. "").
historyMaximumSuffix = ("-"/"") ("m"/"M") ("a"/"A") ("x"/"X")
; The history maximum suffix is "-MAX" (case insensitive). The suffix may start with either a hyphen (i.e. "-") or an underscore (i.e. "_").
historySubset = "(" ws expressionConstraint ws ")"
; A history subset is an expression constraint that defines a set of historical association reference sets, surrounded by round brackets. Only descendants of 900000000000522004 | Historical association reference set| may be included in a history subset.
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 ("-").
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 ("").
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.
decimalValue = integerValue "." 1*digit
; A decimal value starts with an integer. This is followed by a decimal point and one to many digits.
booleanValue = true / false
; A boolean value is either true or false.
true = ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E")
; A boolean value of true is represented by the word "true" (case insensitive).
false = ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/"E")
; A boolean value of false is represented by the word "false" (case insensitive).
nonNegativeIntegerValue = (digitNonZero *digit ) / zero
; A non-negative integer value (i.e. positive integers or zero), without a preceding plus sign ("+").
sctId = digitNonZero 5*17( digit )
; A SNOMED CT id is used to represent an attribute id or a concept id. The initial digit may not be zero. The smallest number of digits is six, and the maximum is 18.
ws = *( SP / HTAB / CR / LF / comment )
; Optional whitespace characters (space, tab, carriage return, linefeed or a comment) are ignored everywhere in the expression except:
; 1) Whitespace within a conceptId is an error.
; Note: Whitespace before or after the last digit of a valid Identifier is ignored.
; 2) 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 term is ignored
; 3) Whitespace within the quotation marks of a concrete value is treated as a significant character.
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".
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. "/").
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).
starWithNonLSlash = %x2A nonLSlash
; A star (i.e. "*") followed by a character that is not a forward slash (i.e. not "/").
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 "/").
SP = %x20
; Space character.
HTAB = %x09
; Tab character.
CR = %x0D
; Carriage return character.
LF = %x0A
; Line feed character.
QM = %x22
; Quotation mark character.
BS = %x5C ; back slash
; BS represents the backslash character "".
star = %x2A ; asterisk
; Star represents an asterisk "*".
digit = %x30-39
; Any digit 0 through 9.
zero = %x30
; The digit 0.
digitNonZero = %x31-39
; Digits 1 through 9, but excluding 0.The first character of a concept identifier is constrained to a digit other than zero.
nonwsnonpipe = %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / UTF8-4
; 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 "
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. ""). 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 transformation format of ISO 10646 authored by the Network Working Group).
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.
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 \.
nonwsNonEscapedChar = %x21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
; A nonwsNonEscapedChar is any printable ASCII, UTF8-2, UTF8-3 or UTF8-4 character, excluding double quotes ("), backslash (\), and space ( ).
alpha = %x41-5A / %x61-7A
; An alpha is any uppercase or lowercase character from "A" to "Z" (and "a" to "z") inclusive.
dash = %x2D
; A dash is a hyphen (i.e. "-").
UTF8-2 = %xC2-DF UTF8-tail
;UTF8 characters encoded as 2-octet sequences.
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.
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.
UTF8-tail = %x80-BF
; UTF8 characters encoded as 8-octet sequences.< ^ 700043003 |Example problem list concepts reference set|< 19829001 |Disorder of lung| OR ^ 700043003 |Example problem list concepts reference set| MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|(< 19829001 |Disorder of lung| OR ^ 700043003 |Example problem list concepts reference set| ) MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|< 19829001 |Disorder of lung| OR (^ 700043003 |Example problem list concepts reference set| MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter| )< 19829001 |Disorder of lung| MINUS ^ 700043003 |Example problem list concepts reference set| MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|(< 19829001 |Disorder of lung| MINUS ^ 700043003 |Example problem list concepts reference set| ) MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|< 19829001 |Disorder of lung| MINUS (^ 700043003 |Example problem list concepts reference set| MINUS ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter| )< 19829001 |Disorder of lung| AND ^ 700043003 |Example problem list concepts reference set|
< 19829001 |Disorder of lung| OR ^ 700043003 |Example problem list concepts reference set|
< 19829001 |Disorder of lung| MINUS ^ 700043003 |Example problem list concepts reference set|
< 19829001 |Disorder of lung| OR ^ 700043003 |Example problem list concepts reference set|
OR ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|
< 19829001 |Disorder of lung| AND ^ 700043003 |Example problem list concepts reference set|
AND ^ 450976002 |Disorders and diseases reference set for GP/FP reason for encounter|< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis| {{ term = "insufficiency" }}(< 404684003 |Clinical finding| :
363698007 |Finding site| = << 39057004 |Pulmonary valve structure| ,
116676008 |Associated morphology| = << 415582006 |Stenosis| ) {{ term = "insufficiency" }}^ 734139008 |Anatomy structure and part association reference set|
AND ^ 734138000 |Anatomy structure and entire association reference set|
{{ + HISTORY ( 900000000000527005 |SAME AS association reference set| ) }}( ^ 734139008 |Anatomy structure and part association reference set|
AND ^ 734138000 |Anatomy structure and entire association reference set| )
{{ + HISTORY ( 900000000000527005 |SAME AS association reference set| ) }}
expressionConstraint = ws ( refinedExpressionConstraint / compoundExpressionConstraint / dottedExpressionConstraint / subExpressionConstraint ) ws
refinedExpressionConstraint = subExpressionConstraint ws ":" ws eclRefinement
compoundExpressionConstraint = conjunctionExpressionConstraint / disjunctionExpressionConstraint / exclusionExpressionConstraint
conjunctionExpressionConstraint = subExpressionConstraint 1*(ws conjunction ws subExpressionConstraint)
disjunctionExpressionConstraint = subExpressionConstraint 1*(ws disjunction ws subExpressionConstraint)
exclusionExpressionConstraint = subExpressionConstraint ws exclusion ws subExpressionConstraint
dottedExpressionConstraint = subExpressionConstraint 1*(ws dottedExpressionAttribute)
dottedExpressionAttribute = dot ws eclAttributeName
subExpressionConstraint = [constraintOperator ws] ( ( [refsetOperator ws] (eclFocusConcept / "(" ws expressionConstraint ws ")") *(ws memberFilterConstraint)) / (eclFocusConcept / "(" ws expressionConstraint ws ")") ) *(ws (descriptionFilterConstraint / conceptFilterConstraint)) [ws historySupplement]
eclFocusConcept = eclConceptReference / wildCard / altIdentifier
dot = "."
refsetOperator = memberOf / refsetContainingAny
memberOf = "^" [ ws "[" ws (refsetFieldNameSet / wildCard) ws "]" ]
refsetContainingAny = "^R"
refsetFieldNameSet = refsetFieldName *(ws "," ws refsetFieldName)
refsetFieldName = 1*alpha
eclConceptReference = conceptId [ws "|" ws term ws "|"]
eclConceptReferenceSet = "(" ws eclConceptReference 1*(mws eclConceptReference) ws ")"
conceptId = sctId
term = 1*nonwsNonPipe *( 1*SP 1*nonwsNonPipe )
altIdentifier = (QM altIdentifierSchemeAlias "#" altIdentifierCodeWithinQuotes QM / altIdentifierSchemeAlias "#" altIdentifierCodeWithoutQuotes) [ws "|" ws term ws "|"]
altIdentifierSchemeAlias = alpha *(dash / alpha / integerValue)
altIdentifierCodeWithinQuotes = 1*anyNonEscapedChar
altIdentifierCodeWithoutQuotes = 1*(alpha / digit / dash / "." / "_")
wildCard = "*"
constraintOperator = childOf / childOrSelfOf / descendantOrSelfOf / descendantOf / parentOf / parentOrSelfOf / ancestorOrSelfOf / ancestorOf / top / bottom
descendantOf = "<"
descendantOrSelfOf = "<<"
childOf = "<!"
childOrSelfOf = "<<!"
ancestorOf = ">"
ancestorOrSelfOf = ">>"
parentOf = ">!"
parentOrSelfOf = ">>!"
top = "!!>"
bottom = "!!<"
conjunction = (("a"/"A") ("n"/"N") ("d"/"D") mws) / ","
disjunction = ("o"/"O") ("r"/"R") mws
exclusion = ("m"/"M") ("i"/"I") ("n"/"N") ("u"/"U") ("s"/"S") mws
eclRefinement = subRefinement ws [conjunctionRefinementSet / disjunctionRefinementSet]
conjunctionRefinementSet = 1*(ws conjunction ws subRefinement)
disjunctionRefinementSet = 1*(ws disjunction ws subRefinement)
subRefinement = eclAttributeSet / eclAttributeGroup / "(" ws eclRefinement ws ")"
eclAttributeSet = subAttributeSet ws [conjunctionAttributeSet / disjunctionAttributeSet]
conjunctionAttributeSet = 1*(ws conjunction ws subAttributeSet)
disjunctionAttributeSet = 1*(ws disjunction ws subAttributeSet)
subAttributeSet = eclAttribute / "(" ws eclAttributeSet ws ")"
eclAttributeGroup = ["[" cardinality "]" ws] "{" ws eclAttributeSet ws "}"
eclAttribute = ["[" cardinality "]" ws] [reverseFlag ws] eclAttributeName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (concreteString / concreteStringSet) / booleanComparisonOperator ws booleanValue)
cardinality = minValue to maxValue
minValue = nonNegativeIntegerValue
to = ".."
maxValue = nonNegativeIntegerValue / many
many = "*"
reverseFlag = "R"
eclAttributeName = subExpressionConstraint
expressionComparisonOperator = "=" / "!="
numericComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ">"
timeComparisonOperator = "=" / "!=" / "<=" / "<" / ">=" / ">"
stringComparisonOperator = "=" / "!="
booleanComparisonOperator = "=" / "!="
idComparisonOperator = "=" / "!="
descriptionFilterConstraint = "{{" ws [ "d" / "D" ] ws descriptionFilter *(ws "," ws descriptionFilter) ws "}}"
descriptionFilter = termFilter / languageFilter / typeFilter / dialectFilter / moduleFilter / effectiveTimeFilter / activeFilter / descriptionIdFilter
descriptionIdFilter = descriptionIdKeyword ws idComparisonOperator ws (descriptionId / descriptionIdSet)
descriptionIdKeyword = ("i"/"I") ("d"/"D")
descriptionId = sctId
descriptionIdSet = "(" ws descriptionId *(mws descriptionId) ws ")"
termFilter = termKeyword ws stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet)
termKeyword = ("t"/"T") ("e"/"E") ("r"/"R") ("m"/"M")
typedSearchTerm = ( [ matchKeyword ws ":" ws ] matchSearchTermSet ) / ( wild ws ":" ws wildSearchTermSet )
typedSearchTermSet = "(" ws typedSearchTerm *(mws typedSearchTerm) ws ")"
concreteStringSet = "(" ws concreteString *(mws concreteString) ws ")"
concreteString = QM concreteStringCharacters QM
concreteStringCharacters = 1*(anyNonEscapedChar / escapedWildChar)
wild = ("w"/"W") ("i"/"I") ("l"/"L") ("d"/"D")
matchKeyword = ("m"/"M") ("a"/"A") ("t"/"T") ("c"/"C") ("h"/"H")
matchSearchTerm = 1*(nonwsNonEscapedChar / escapedChar)
matchSearchTermSet = QM ws matchSearchTerm *(mws matchSearchTerm) ws QM
wildSearchTerm = 1*(anyNonEscapedChar / escapedWildChar)
wildSearchTermSet = QM wildSearchTerm QM
languageFilter = language ws booleanComparisonOperator ws (languageCode / languageCodeSet)
language = ("l"/"L") ("a"/"A") ("n"/"N") ("g"/"G") ("u"/"U") ("a"/"A") ("g"/"G") ("e"/"E")
languageCode = 2alpha
languageCodeSet = "(" ws languageCode *(mws languageCode) ws ")"
typeFilter = typeIdFilter / typeTokenFilter
typeIdFilter = typeId ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
typeId = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E") ("i"/"I") ("d"/"D")
typeTokenFilter = type ws booleanComparisonOperator ws (typeToken / typeTokenSet)
type = ("t"/"T") ("y"/"Y") ("p"/"P") ("e"/"E")
typeToken = synonym / fullySpecifiedName / definition
typeTokenSet = "(" ws typeToken *(mws typeToken) ws ")"
synonym = ("s"/"S") ("y"/"Y") ("n"/"N")
fullySpecifiedName = ("f"/"F") ("s"/"S") ("n"/"N")
definition = ("d"/"D") ("e"/"E") ("f"/"F")
dialectFilter = (dialectIdFilter / dialectAliasFilter) [ ws acceptabilitySet ]
dialectIdFilter = dialectId ws booleanComparisonOperator ws (subExpressionConstraint / dialectIdSet)
dialectId = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("d"/"D")
dialectAliasFilter = dialect ws booleanComparisonOperator ws (dialectAlias / dialectAliasSet)
dialect = ("d"/"D") ("i"/"I") ("a"/"A") ("l"/"L") ("e"/"E") ("c"/"C") ("t"/"T")
dialectAlias = alpha *( dash / alpha / integerValue)
dialectAliasSet = "(" ws dialectAlias [ws acceptabilitySet] *(mws dialectAlias [ws acceptabilitySet] ) ws ")"
dialectIdSet = "(" ws eclConceptReference [ws acceptabilitySet] *(mws eclConceptReference [ws acceptabilitySet] ) ws ")"
acceptabilitySet = acceptabilityConceptReferenceSet / acceptabilityTokenSet
acceptabilityConceptReferenceSet = "(" ws eclConceptReference *(mws eclConceptReference) ws ")"
acceptabilityTokenSet = "(" ws acceptabilityToken *(mws acceptabilityToken) ws ")"
acceptabilityToken = acceptable / preferred
acceptable = ("a"/"A") ("c"/"C") ("c"/"C") ("e"/"E") ("p"/"P") ("t"/"T")
preferred = ("p"/"P") ("r"/"R") ("e"/"E") ("f"/"F") ("e"/"E") ("r"/"R")
conceptFilterConstraint = "{{" ws ("c" / "C") ws conceptFilter *(ws "," ws conceptFilter) ws "}}"
conceptFilter = definitionStatusFilter / moduleFilter / effectiveTimeFilter / activeFilter
definitionStatusFilter = definitionStatusIdFilter / definitionStatusTokenFilter
definitionStatusIdFilter = definitionStatusIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
definitionStatusIdKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S") ("i"/"I") ("d"/"D")
definitionStatusTokenFilter = definitionStatusKeyword ws booleanComparisonOperator ws (definitionStatusToken / definitionStatusTokenSet)
definitionStatusKeyword = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("i"/"I") ("t"/"T") ("i"/"I") ("o"/"O") ("n"/"N") ("s"/"S") ("t"/"T") ("a"/"A") ("t"/"T") ("u"/"U") ("s"/"S")
definitionStatusToken = primitiveToken / definedToken
definitionStatusTokenSet = "(" ws definitionStatusToken *(mws definitionStatusToken) ws ")"
primitiveToken = ("p"/"P") ("r"/"R") ("i"/"I") ("m"/"M") ("i"/"I") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
definedToken = ("d"/"D") ("e"/"E") ("f"/"F") ("i"/"I") ("n"/"N") ("e"/"E") ("d"/"D")
moduleFilter = moduleIdKeyword ws booleanComparisonOperator ws (subExpressionConstraint / eclConceptReferenceSet)
moduleIdKeyword = ("m"/"M") ("o"/"O") ("d"/"D") ("u"/"U") ("l"/"L") ("e"/"E") ("i"/"I") ("d"/"D")
effectiveTimeFilter = effectiveTimeKeyword ws timeComparisonOperator ws ( timeValue / timeValueSet )
effectiveTimeKeyword = ("e"/"E") ("f"/"F") ("f"/"F") ("e"/"E") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E") ("t"/"T") ("i"/"I") ("m"/"M") ("e"/"E")
timeValue = QM [ year month day ] QM
timeValueSet = "(" ws timeValue *(mws timeValue) ws ")"
year = digitNonZero digit digit digit
month = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12"
day = "01" / "02" / "03" / "04" / "05" / "06" / "07" / "08" / "09" / "10" / "11" / "12" / "13" / "14" / "15" / "16" / "17" / "18" / "19" / "20" / "21" / "22" / "23" / "24" / "25" / "26" / "27" / "28" / "29" / "30" / "31"
activeFilter = activeKeyword ws booleanComparisonOperator ws activeValue
activeKeyword = ("a"/"A") ("c"/"C") ("t"/"T") ("i"/"I") ("v"/"V") ("e"/"E")
activeValue = activeTrueValue / activeFalseValue / wildCard
activeTrueValue = "1" / "true"
activeFalseValue = "0" / "false"
memberFilterConstraint = "{{" ws ("m" / "M") ws memberFilter *(ws "," ws memberFilter) ws "}}"
memberFilter = moduleFilter / effectiveTimeFilter / activeFilter / memberFieldFilter
memberFieldFilter = refsetFieldName ws (expressionComparisonOperator ws subExpressionConstraint / numericComparisonOperator ws "#" numericValue / stringComparisonOperator ws (typedSearchTerm / typedSearchTermSet) / booleanComparisonOperator ws booleanValue / ws timeComparisonOperator ws (timeValue / timeValueSet) )
historySupplement = "{{" ws "+" ws historyKeyword [ historyProfileSuffix / ws historySubset ] ws "}}"
historyKeyword = ("h"/"H") ("i"/"I") ("s"/"S") ("t"/"T") ("o"/"O") ("r"/"R") ("y"/"Y")
historyProfileSuffix = historyMinimumSuffix / historyModerateSuffix / historyMaximumSuffix
historyMinimumSuffix = ("-"/"_") ("m"/"M") ("i"/"I") ("n"/"N")
historyModerateSuffix = ("-"/"_") ("m"/"M") ("o"/"O") ("d"/"D")
historyMaximumSuffix = ("-"/"_") ("m"/"M") ("a"/"A") ("x"/"X")
historySubset = "(" ws expressionConstraint ws ")"
numericValue = ["-"/"+"] (decimalValue / integerValue)
stringValue = 1*(anyNonEscapedChar / escapedChar)
integerValue = digitNonZero *digit / zero
decimalValue = integerValue "." 1*digit
booleanValue = true / false
true = ("t"/"T") ("r"/"R") ("u"/"U") ("e"/"E")
false = ("f"/"F") ("a"/"A") ("l"/"L") ("s"/"S") ("e"/"E")
nonNegativeIntegerValue = (digitNonZero *digit ) / zero
sctId = digitNonZero 5*17( digit )
ws = *( SP / HTAB / CR / LF / comment ) ; optional white space
mws = 1*( SP / HTAB / CR / LF / comment ) ; mandatory white space
comment = "/*" *(nonStarChar / starWithNonFSlash) "*/"
nonStarChar = SP / HTAB / CR / LF / %x21-29 / %x2B-7E /UTF8-2 / UTF8-3 / UTF8-4
starWithNonFSlash = %x2A nonFSlash
nonFSlash = SP / HTAB / CR / LF / %x21-2E / %x30-7E /UTF8-2 / UTF8-3 / UTF8-4
SP = %x20 ; space
HTAB = %x09 ; tab
CR = %x0D ; carriage return
LF = %x0A ; line feed
QM = %x22 ; quotation mark
BS = %x5C ; back slash
star = %x2A ; asterisk
digit = %x30-39
zero = %x30
digitNonZero = %x31-39
nonwsNonPipe = %x21-7B / %x7D-7E / UTF8-2 / UTF8-3 / UTF8-4
anyNonEscapedChar = SP / HTAB / CR / LF / %x20-21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
escapedChar = BS QM / BS BS
escapedWildChar = BS QM / BS BS / BS star
nonwsNonEscapedChar = %x21 / %x23-5B / %x5D-7E / UTF8-2 / UTF8-3 / UTF8-4
alpha = %x41-5A / %x61-7A
dash = %x2D
UTF8-2 = %xC2-DF UTF8-tail
UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail )
UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / %xF4 %x80-8F 2( UTF8-tail )
UTF8-tail = %x80-BF