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 |
|||
Line 1: | Line 1: | ||
== for RMIM attribute rendering == | == for RMIM attribute rendering == | ||
− | <attribute | + | <pre> |
+ | attribute :== attName “: “ type “ “ cardinality defaultValue? hl7Metadata | ||
+ | attName :== lowerCamelCase | ||
+ | type :== typeBase flavorExtension? ( “(“ typeArguments “)” )? | ||
+ | typeBase :== ( ‘A’-‘Z’ )+ | ||
+ | flavorExtension :== ( “.” typeBase )+ | ||
+ | typeArguments :== <type> ( “,” <type> )* | ||
+ | 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’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ )* | ||
+ | </pre> | ||
===Examples: === | ===Examples: === | ||
Line 112: | Line 69: | ||
== RMIM Association rendering == | == RMIM Association rendering == | ||
− | <association | + | <pre> |
− | + | association :== cardinality hl7AssocMetadata EOL associationName | |
− | + | cardinality :== “[” number “..” number “]” | |
− | + | hl7AssocMetadata :== “{“ mandatoryConf updateMode? “}” | |
+ | associationName :== lowerCamelCase | ||
+ | </pre> | ||
===Examples:=== | ===Examples:=== | ||
Line 125: | Line 84: | ||
== CMET Rendering== | == CMET Rendering== | ||
− | <cmet | + | <pre> |
− | + | 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’ )+ “ }” | ||
+ | </pre> | ||
===Examples:=== | ===Examples:=== | ||
Line 143: | Line 104: | ||
== STUB rendering== | == STUB rendering== | ||
− | <stub | + | <pre> |
− | + | 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’ )+ “ }” | ||
+ | </pre> | ||
===Examples:=== | ===Examples:=== |
Revision as of 23:36, 2 August 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> )* 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 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 }