This wiki has undergone a migration to Confluence found Here
Difference between revisions of "Static Model BNF Grammar"
Jump to navigation
Jump to search
Line 6: | Line 6: | ||
typeBase ::= ( ‘A’-‘Z’ )+ | typeBase ::= ( ‘A’-‘Z’ )+ | ||
flavorExtension ::= ( “.” typeBase )+ | flavorExtension ::= ( “.” typeBase )+ | ||
− | typeArguments ::= | + | typeArguments ::= type ( “,” type )* |
+ | cardinality ::= “ [“ number ”..” numberOrStar “] “ | ||
+ | numberOrStar ::= (number | "*") | ||
defaultValue ::= “= “ anyText <!-- Must prohibit the “{“ character | defaultValue ::= “= “ anyText <!-- Must prohibit the “{“ character | ||
hl7Metadata ::= “{“ mandatoryConf (vocabBinding | fixedValue | enumeration | allowedRange | lengthLimits)? | hl7Metadata ::= “{“ mandatoryConf (vocabBinding | fixedValue | enumeration | allowedRange | lengthLimits)? |
Revision as of 14:17, 1 September 2009
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 ::= “= “ anyText <!-- Must prohibit the “{“ character 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 ::= “ < CD: ” ( 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 anyText 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 ::= ‘ = “’ 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 “)” <!-- Must exclude “(“ --> 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 att? stdTEXT ::= “CMET:” “(“ definingVocabulary ”)” 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 ::= 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 }