This wiki has undergone a migration to Confluence found Here
Difference between revisions of "Static Model BNF Grammar"
Jump to navigation
Jump to search
(7 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
typeBase ::= ( ‘A’-‘Z’ )+ | typeBase ::= ( ‘A’-‘Z’ )+ | ||
flavorExtension ::= ( “.” typeBase )+ | flavorExtension ::= ( “.” typeBase )+ | ||
− | typeArguments ::= | + | typeArguments ::= type ( “,” type )* |
− | defaultValue ::= “= “ | + | cardinality ::= “[“ number ”..” numberOrStar “] “ |
− | hl7Metadata ::= “{“ mandatoryConf (vocabBinding | fixedValue | enumeration | allowedRange | lengthLimits)? | + | numberOrStar ::= (number | "*") |
+ | defaultValue ::= “= “ anyDefaultText | ||
+ | hl7Metadata ::= “ { “ mandatoryConf (vocabBinding | fixedValue | enumeration | allowedRange | lengthLimits)? | ||
updateMode? extensionOid? businessNames? “ }” | updateMode? extensionOid? businessNames? “ }” | ||
− | mandatoryConf ::= | + | mandatoryConf ::= “M” (* isMandatory = true, required *) |
− | | | + | | “R” (* isMandatory = false, required *) |
− | | | + | | “NP” (* isMandatory = false, not permitted *) |
− | | | + | | “I” (* isMandatory = false, ignored *) |
− | | | + | | “U” (* isMandatory = false, unspecified *) |
vocabBinding ::= conceptDomainBinding | valueSetBinding | codeBinding | vocabBinding ::= conceptDomainBinding | valueSetBinding | codeBinding | ||
− | conceptDomainBinding ::= “ < | + | conceptDomainBinding ::= “ < D:” ( domainName | ( “x_” domainName ) ) |
domainName ::= upperCamelCase | domainName ::= upperCamelCase | ||
− | valueSetBinding ::= valueSetFull | + | valueSetBinding ::= valueSetFull (* used for all non-immutable codes *) |
− | | valueSetShort | + | | valueSetShort (* used for all immutable codes *) |
− | valueSetFull ::= “ < V:” ( valueSetName | oid ) valueSetVersion? strength | + | valueSetFull ::= “ < V:” ( valueSetName | oid ) valueSetVersion? strength |
valueSetShort ::= valueSetLT | valueSetLE | valueSetShort ::= valueSetLT | valueSetLE | ||
− | valueSetLT ::= “ < “ ( ‘A’-‘Z’ )+ | + | valueSetLT ::= “ < “ ( ‘A’-‘Z’ )+ (* all specializations of specified root code *) |
− | valueSetLE ::= “ <= “ ( ‘A’-‘Z’ )+ | + | valueSetLE ::= “ <= “ ( ‘A’-‘Z’ )+ (* —specified root code and all specializations *) |
valueSetName ::= upperCamelCase | ( “x_” upperCamelCase ) ) | valueSetName ::= upperCamelCase | ( “x_” upperCamelCase ) ) | ||
− | valueSetVersion ::= “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? | + | valueSetVersion ::= “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? (* date with optional time *) |
strength ::= “ CWE” | “ CNE” | strength ::= “ CWE” | “ CNE” | ||
− | codeBinding ::= codeFull | + | codeBinding ::= codeFull (* used for all non-immutable codes *) |
− | | codeShort | + | | codeShort (* used for all immutable codes *) |
− | codeFull ::= “ | + | codeFull ::= “ = C:” ( codeSystemName | oid ) “#” anyText |
codeSystemName ::= upperCamelCase | codeSystemName ::= upperCamelCase | ||
codeShort ::= “ =” anyText | codeShort ::= “ =” anyText | ||
− | fixedValue ::= ‘ = “’ | + | fixedValue ::= ‘ = “’ anyDefaultText ‘”’ |
enumeration ::= “ = [“ enumerationVals “]” | enumeration ::= “ = [“ enumerationVals “]” | ||
enumerationVals ::= ‘”’ anyText ‘”’ ( ‘, “’ anyText ‘”’ )* | enumerationVals ::= ‘”’ anyText ‘”’ ( ‘, “’ anyText ‘”’ )* | ||
Line 48: | Line 50: | ||
extensionOid ::= “ EXT:” oid | extensionOid ::= “ EXT:” oid | ||
businessNames ::= businessName (“ “ businessNames)? | businessNames ::= businessName (“ “ businessNames)? | ||
− | businessName ::= “ (“ realm? anyText “)” | + | businessName ::= “ (“ realm? anyText “)” (* Must exclude “(“ *) |
realm ::= (‘A’-‘Z’){2} “-“ | realm ::= (‘A’-‘Z’){2} “-“ | ||
− | oid ::= | + | oid ::= ('0'-'9')+ (“.” ( ‘0’-‘9’ )+ )+ |
number ::= ( ‘0’-‘9’ )+ | number ::= ( ‘0’-‘9’ )+ | ||
upperCamelCase ::= ( ‘A’-’Z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* | upperCamelCase ::= ( ‘A’-’Z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* | ||
lowerCamelCase ::= ( ‘a’-’z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* | lowerCamelCase ::= ( ‘a’-’z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* | ||
− | anyText ::= ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ )* | + | anyText ::= ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' )* |
+ | anyDefaultText ::= ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' | '{' | '}' | '[' | ']' | '(' | ')' | ';' | '@' | '+' )* | ||
+ | (* Note: Some of the content in anyDefaultText will cause issues with determinism. Applications will need to rely *) | ||
+ | (* on the declared type and abstract datatype rules to perform more intelligent parsing. *) | ||
</pre> | </pre> | ||
Line 71: | Line 76: | ||
<pre> | <pre> | ||
association ::= cardinality hl7AssocMetadata EOL associationName | association ::= cardinality hl7AssocMetadata EOL associationName | ||
− | |||
hl7AssocMetadata ::= “{“ mandatoryConf (" " updateMode)? “}” | hl7AssocMetadata ::= “{“ mandatoryConf (" " updateMode)? “}” | ||
associationName ::= lowerCamelCase | associationName ::= lowerCamelCase | ||
Line 77: | Line 81: | ||
===Examples:=== | ===Examples:=== | ||
− | 1..1 {M} assignedPerson | + | 1..1 {M}<br/> |
+ | assignedPerson | ||
− | 0..1 {R {A: A,AR,R,D}} assignedPerson | + | |
+ | 0..1 {R {A: A,AR,R,D}}<br/> | ||
+ | assignedPerson | ||
== CMET Rendering== | == CMET Rendering== | ||
<pre> | <pre> | ||
− | cmet ::= “<CMET>” | + | cmet ::= “<CMET>” EOL cmetName ” “ attribution EOL separatorLine att? |
− | |||
cmetName ::= cmetAct | cmetEntity | cmetRole | cmetOther | cmetName ::= cmetAct | cmetEntity | cmetRole | cmetOther | ||
cmetAct ::= “A_” upperCamelCase | cmetAct ::= “A_” upperCamelCase | ||
Line 96: | Line 102: | ||
===Examples:=== | ===Examples:=== | ||
− | <CMET> | + | <CMET><br/> |
+ | R_AssignedPerson universal | ||
− | |||
-------------------- | -------------------- | ||
+ | |||
classCode { < OBS } | classCode { < OBS } | ||
== STUB rendering== | == STUB rendering== | ||
<pre> | <pre> | ||
− | stub ::= | + | stub ::= ”<STUB>” EOL stubName separatorLine att? |
− | |||
stubName ::= stubAct | stubEntity | stubRole | stubOther | stubName ::= stubAct | stubEntity | stubRole | stubOther | ||
stubAct ::= “A_” upperCamelCase | stubAct ::= “A_” upperCamelCase | ||
Line 115: | Line 121: | ||
===Examples:=== | ===Examples:=== | ||
− | <STUB> | + | <STUB><br/> |
− | |||
R_Payload | R_Payload | ||
------------------- | ------------------- | ||
classCode { < ROL } | classCode { < ROL } |
Latest revision as of 22:39, 21 February 2011
Contents
for RMIM attribute rendering
attribute ::= attName “: “ type “ “ cardinality defaultValue? hl7Metadata attName ::= lowerCamelCase type ::= typeBase flavorExtension? ( “(“ typeArguments “)” )? typeBase ::= ( ‘A’-‘Z’ )+ flavorExtension ::= ( “.” typeBase )+ typeArguments ::= type ( “,” type )* cardinality ::= “[“ number ”..” numberOrStar “] “ numberOrStar ::= (number | "*") defaultValue ::= “= “ anyDefaultText hl7Metadata ::= “ { “ mandatoryConf (vocabBinding | fixedValue | enumeration | allowedRange | lengthLimits)? updateMode? extensionOid? businessNames? “ }” mandatoryConf ::= “M” (* isMandatory = true, required *) | “R” (* isMandatory = false, required *) | “NP” (* isMandatory = false, not permitted *) | “I” (* isMandatory = false, ignored *) | “U” (* isMandatory = false, unspecified *) vocabBinding ::= conceptDomainBinding | valueSetBinding | codeBinding conceptDomainBinding ::= “ < D:” ( domainName | ( “x_” domainName ) ) domainName ::= upperCamelCase valueSetBinding ::= valueSetFull (* used for all non-immutable codes *) | valueSetShort (* used for all immutable codes *) valueSetFull ::= “ < V:” ( valueSetName | oid ) valueSetVersion? strength valueSetShort ::= valueSetLT | valueSetLE valueSetLT ::= “ < “ ( ‘A’-‘Z’ )+ (* all specializations of specified root code *) valueSetLE ::= “ <= “ ( ‘A’-‘Z’ )+ (* —specified root code and all specializations *) valueSetName ::= upperCamelCase | ( “x_” upperCamelCase ) ) valueSetVersion ::= “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? (* date with optional time *) strength ::= “ CWE” | “ CNE” codeBinding ::= codeFull (* used for all non-immutable codes *) | codeShort (* used for all immutable codes *) codeFull ::= “ = C:” ( codeSystemName | oid ) “#” anyText codeSystemName ::= upperCamelCase codeShort ::= “ =” anyText fixedValue ::= ‘ = “’ anyDefaultText ‘”’ enumeration ::= “ = [“ enumerationVals “]” enumerationVals ::= ‘”’ anyText ‘”’ ( ‘, “’ anyText ‘”’ )* allowedRange ::= “ = [“ number “..” number “]” lengthLimits ::= “ Len=” ( fixedLength | lengthRange ) fixedLength ::= number lengthRange ::= number “..” number updateMode ::= “ {“ mode ( “: “ modeList )? “}” modeList ::= mode | mode “,” modeList mode ::= 'A' | ‘AR’ | 'D' | ‘K’ | ‘N’ | ‘R’ | ‘REF’ | 'U' extensionOid ::= “ EXT:” oid businessNames ::= businessName (“ “ businessNames)? businessName ::= “ (“ realm? anyText “)” (* Must exclude “(“ *) realm ::= (‘A’-‘Z’){2} “-“ oid ::= ('0'-'9')+ (“.” ( ‘0’-‘9’ )+ )+ number ::= ( ‘0’-‘9’ )+ upperCamelCase ::= ( ‘A’-’Z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* lowerCamelCase ::= ( ‘a’-’z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* anyText ::= ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' )* anyDefaultText ::= ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' | '{' | '}' | '[' | ']' | '(' | ')' | ';' | '@' | '+' )* (* Note: Some of the content in anyDefaultText will cause issues with determinism. Applications will need to rely *) (* on the declared type and abstract datatype rules to perform more intelligent parsing. *)
Examples:
moodCode: CS [1..1] { M <= INT }
code: CD [0..1] { R < CD: ActProcedureCode (CA-Procedure Type) }
code: CV [1..1] { M < = C:LN#123456 }
sequenceNumber: INT [1..1] { M =[1..10] }
addr: DSET(AD) [0..*] { R {A: A,AR,R,D} (Mailing addresses) }
RMIM Association rendering
association ::= cardinality hl7AssocMetadata EOL associationName hl7AssocMetadata ::= “{“ mandatoryConf (" " updateMode)? “}” associationName ::= lowerCamelCase
Examples:
1..1 {M}
assignedPerson
0..1 {R {A: A,AR,R,D}}
assignedPerson
CMET Rendering
cmet ::= “<CMET>” EOL cmetName ” “ attribution EOL separatorLine att? cmetName ::= cmetAct | cmetEntity | cmetRole | cmetOther cmetAct ::= “A_” upperCamelCase cmetEntity ::= “E_” upperCamelCase cmetOther ::= “O_” upperCamelCase cmetRole ::= “R_” upperCamelCase attribution ::= “[” cmetAttributionKindanyText “]” cmetAttributionKind ::= anyText att ::= “classCode { < ” ( ‘A’-‘Z’ )+ “ }”
Examples:
<CMET>
R_AssignedPerson universal
classCode { < OBS }
STUB rendering
stub ::= ”<STUB>” EOL stubName separatorLine att? stubName ::= stubAct | stubEntity | stubRole | stubOther stubAct ::= “A_” upperCamelCase stubEntity ::= “E_” upperCamelCase stubRole ::= “R_” upperCamelCase stubbOther ::= “O_” upperCamelCase att ::= “classCode { < ” ( ‘A’-‘Z’ )+ “ }”
Examples:
<STUB>
R_Payload
classCode { < ROL }