This wiki has undergone a migration to Confluence found Here
Difference between revisions of "Static Model BNF Grammar"
Jump to navigation
Jump to search
m |
|||
(14 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== for RMIM attribute rendering == | == for RMIM attribute rendering == | ||
<pre> | <pre> | ||
− | attribute : | + | attribute ::= attName “: “ type “ “ cardinality defaultValue? hl7Metadata |
− | attName : | + | attName ::= lowerCamelCase |
− | type : | + | type ::= typeBase flavorExtension? ( “(“ typeArguments “)” )? |
− | typeBase : | + | typeBase ::= ( ‘A’-‘Z’ )+ |
− | flavorExtension : | + | flavorExtension ::= ( “.” typeBase )+ |
− | typeArguments := | + | typeArguments ::= type ( “,” type )* |
− | defaultValue : | + | cardinality ::= “[“ number ”..” numberOrStar “] “ |
− | hl7Metadata : | + | 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 : | + | vocabBinding ::= conceptDomainBinding | valueSetBinding | codeBinding |
− | conceptDomainBinding : | + | conceptDomainBinding ::= “ < D:” ( domainName | ( “x_” domainName ) ) |
− | domainName : | + | domainName ::= upperCamelCase |
− | valueSetBinding : | + | valueSetBinding ::= valueSetFull (* used for all non-immutable codes *) |
− | | valueSetShort | + | | valueSetShort (* used for all immutable codes *) |
− | valueSetFull : | + | valueSetFull ::= “ < V:” ( valueSetName | oid ) valueSetVersion? strength |
− | valueSetShort : | + | valueSetShort ::= valueSetLT | valueSetLE |
− | valueSetLT : | + | valueSetLT ::= “ < “ ( ‘A’-‘Z’ )+ (* all specializations of specified root code *) |
− | valueSetLE : | + | valueSetLE ::= “ <= “ ( ‘A’-‘Z’ )+ (* —specified root code and all specializations *) |
− | valueSetName : | + | valueSetName ::= upperCamelCase | ( “x_” upperCamelCase ) ) |
− | valueSetVersion : | + | valueSetVersion ::= “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? (* date with optional time *) |
− | strength : | + | strength ::= “ CWE” | “ CNE” |
− | codeBinding : | + | codeBinding ::= codeFull (* used for all non-immutable codes *) |
− | | codeShort | + | | codeShort (* used for all immutable codes *) |
− | codeFull : | + | codeFull ::= “ = C:” ( codeSystemName | oid ) “#” anyText |
− | codeSystemName : | + | codeSystemName ::= upperCamelCase |
− | codeShort : | + | codeShort ::= “ =” anyText |
− | fixedValue : | + | fixedValue ::= ‘ = “’ anyDefaultText ‘”’ |
− | enumeration : | + | enumeration ::= “ = [“ enumerationVals “]” |
− | enumerationVals : | + | enumerationVals ::= ‘”’ anyText ‘”’ ( ‘, “’ anyText ‘”’ )* |
− | allowedRange : | + | allowedRange ::= “ = [“ number “..” number “]” |
− | lengthLimits : | + | lengthLimits ::= “ Len=” ( fixedLength | lengthRange ) |
− | fixedLength : | + | fixedLength ::= number |
− | lengthRange : | + | lengthRange ::= number “..” number |
− | updateMode : | + | updateMode ::= “ {“ mode ( “: “ modeList )? “}” |
− | modeList : | + | modeList ::= mode | mode “,” modeList |
− | mode : | + | mode ::= 'A' | ‘AR’ | 'D' | ‘K’ | ‘N’ | ‘R’ | ‘REF’ | 'U' |
− | extensionOid : | + | extensionOid ::= “ EXT:” oid |
− | businessNames : | + | businessNames ::= businessName (“ “ businessNames)? |
− | businessName : | + | businessName ::= “ (“ realm? anyText “)” (* Must exclude “(“ *) |
− | realm : | + | realm ::= (‘A’-‘Z’){2} “-“ |
− | oid := | + | oid ::= ('0'-'9')+ (“.” ( ‘0’-‘9’ )+ )+ |
− | number : | + | number ::= ( ‘0’-‘9’ )+ |
− | upperCamelCase : | + | upperCamelCase ::= ( ‘A’-’Z’ )+ ( ‘a’-‘z’ | ’A’-‘Z’ | ‘0’-‘9’ )* |
− | lowerCamelCase : | + | 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 70: | Line 75: | ||
== RMIM Association rendering == | == RMIM Association rendering == | ||
<pre> | <pre> | ||
− | association : | + | association ::= cardinality hl7AssocMetadata EOL associationName |
− | + | hl7AssocMetadata ::= “{“ mandatoryConf (" " updateMode)? “}” | |
− | + | associationName ::= lowerCamelCase | |
− | associationName : | ||
</pre> | </pre> | ||
===Examples:=== | ===Examples:=== | ||
− | + | 1..1 {M}<br/> | |
− | + | assignedPerson | |
− | + | ||
− | + | 0..1 {R {A: A,AR,R,D}}<br/> | |
+ | assignedPerson | ||
== CMET Rendering== | == CMET Rendering== | ||
<pre> | <pre> | ||
− | cmet | + | cmet ::= “<CMET>” EOL cmetName ” “ attribution EOL separatorLine att? |
− | + | cmetName ::= cmetAct | cmetEntity | cmetRole | cmetOther | |
− | cmetName : | + | cmetAct ::= “A_” upperCamelCase |
− | cmetAct : | + | cmetEntity ::= “E_” upperCamelCase |
− | cmetEntity : | + | cmetOther ::= “O_” upperCamelCase |
− | cmetOther : | + | cmetRole ::= “R_” upperCamelCase |
− | cmetRole : | + | attribution ::= “[” cmetAttributionKindanyText “]” |
− | attribution : | + | cmetAttributionKind ::= anyText |
− | cmetAttributionKind : | + | att ::= “classCode { < ” ( ‘A’-‘Z’ )+ “ }” |
− | |||
− | att : | ||
</pre> | </pre> | ||
===Examples:=== | ===Examples:=== | ||
− | + | <CMET><br/> | |
R_AssignedPerson universal | 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 ::= “A_” upperCamelCase |
− | stubAct : | + | stubEntity ::= “E_” upperCamelCase |
− | stubEntity : | + | stubRole ::= “R_” upperCamelCase |
− | stubRole : | + | stubbOther ::= “O_” upperCamelCase |
− | stubbOther : | + | att ::= “classCode { < ” ( ‘A’-‘Z’ )+ “ }” |
− | att : | ||
</pre> | </pre> | ||
===Examples:=== | ===Examples:=== | ||
− | + | <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 }