Static Model BNF Grammar
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> )* <defaultValue> :== “= “ <anyText> | “ R” | “ NP” | “ I” | “ U”
<vocabBinding> :== < conceptDomainBinding> | <valueSetBinding> | <codeBinding>
< conceptDomainBinding> :== “ < CD: ” ( <domainName> | ( “x_” <domainName> ) ) <domainName> :== <upperCamelCase> <valueSetBinding> :== <valueSetFull> | <valueSetShort> <valueSetFull> :== “ < V:” ( <valueSetName> | <oid> ) <valueSetVersion>? <strength> <anyText> <valueSetShort> :== <valueSetLT> | <valueSetLE> <valueSetLT> :== “ < “ ( ‘A’-‘Z’ )+ <valueSetLE> :== “ <= “ ( ‘A’-‘Z’ )+ <valueSetName> :== <upperCamelCase> | ( “x_” <upperCamelCase> ) ) <valueSetVersion> :== “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? <strength> :== “ CWE” | “ CNE” <codeBinding> :== <codeFull> | <codeShort> <codeFull > :== “ < = C:” ( <codeSystemName> | <oid> ) “#” <anyText> <codeSystemName> :== <upperCamelCase> <codeShort> :== “ =” <anyText> <fixedValue> :== ‘ = “’ <anyText> ‘”’ <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> “)” <realm> :== (‘A’-‘Z’){2} “-“ <oid> :== “2” (“.” ( ‘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’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ )*
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> <cardinality> :== “[”<number> “..” <number> “]” <hl7AssocMetadata> :== “{“ <mandatoryConf> <updateMode>? “}” <associationName> :== <lowerCamelCase>
Examples:
[1..1] {M}
assignedPerson
[0..1] {R {A: A,AR,R,D}}
assignedPerson
CMET Rendering
<cmet> :== “<CMET>”<stdText> <EOL> <cmetName> <EOL>” “ <attribution> <EOLseparatorLine> <modelatt> <stdTEXT> :== “CMET:” “(“ <definingVocabulary> ”)” <cmetName> :== <cmetAct> | <cmetEntity> | <cmetRole> | <cmetOther> <cmetAct> :== “A_”<upperCamelCase> <cmetEntity> :== “E_”<upperCamelCase> <cmetOther> :== “O_”<upperCamelCase> <cmetRole> :== “R_”<upperCamelCase> <attribution> :== “[” <cmetAttributionKindanyText> “]” <cmetAttributionKind> :== <anyText > <model> :== “(” <modelId> “)” <att> :== “classCode { < ” ( ‘A’-‘Z’ )+ “ }”
Examples:
<CMET>
R_AssignedPerson universal classCode { < OBS }
STUB rendering
<stub> :== <stdText>”<CMET>” <EOL> <stubName> <separatorLine> <att> <stdTEXT> :== “STUB:” “(“ <definingVocabulary> | “OTHER” ”)” <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 }