Difference between revisions of "Static Model BNF Grammar"
(New page: == for RMIM attribute rendering == <attribute> :== <attName> “: “ <type> “ “ <cardinality> <defaultValue>? <hl7Metadata> <attName> :== <lowerCamelCase> <type> :== <typeBase> <flavo...) |
|||
Line 1: | Line 1: | ||
== for RMIM attribute rendering == | == for RMIM attribute rendering == | ||
<attribute> :== <attName> “: “ <type> “ “ <cardinality> <defaultValue>? <hl7Metadata> | <attribute> :== <attName> “: “ <type> “ “ <cardinality> <defaultValue>? <hl7Metadata> | ||
+ | |||
<attName> :== <lowerCamelCase> | <attName> :== <lowerCamelCase> | ||
+ | |||
<type> :== <typeBase> <flavorExtension>? ( “(“ <typeArguments> “)” )? | <type> :== <typeBase> <flavorExtension>? ( “(“ <typeArguments> “)” )? | ||
+ | |||
<typeBase> :== ( ‘A’-‘Z’ )+ | <typeBase> :== ( ‘A’-‘Z’ )+ | ||
+ | |||
<flavorExtension> :== ( “.” <typeBase> )+ | <flavorExtension> :== ( “.” <typeBase> )+ | ||
+ | |||
<typeArguments> :== <type> ( “,” <type> )* | <typeArguments> :== <type> ( “,” <type> )* | ||
+ | |||
<defaultValue> :== “= “ <anyText> <!-- Must prohibit the “{“ character | <defaultValue> :== “= “ <anyText> <!-- Must prohibit the “{“ character | ||
− | <hl7Metadata> :== “{“ <mandatoryConf> (<vocabBinding> | <fixedValue> | <enumeration> | <allowedRange> | <lengthLimits>)? <updateMode> ? <extensionOid> ? <businessNames>? “ }” | + | |
+ | <hl7Metadata> :== “{“ <mandatoryConf> (<vocabBinding> | <fixedValue> | <enumeration> | <allowedRange> | <lengthLimits>)? | ||
+ | <updateMode> ? <extensionOid> ? <businessNames>? “ }” | ||
+ | |||
<mandatoryConf> :== “ M” <!-- isMandatory = true, required --> | <mandatoryConf> :== “ M” <!-- isMandatory = true, required --> | ||
+ | |||
| “ R” <!-- isMandatory = false, required --> | | “ R” <!-- isMandatory = false, required --> | ||
+ | |||
| “ NP” <!-- isMandatory = false, not permitted --> | | “ NP” <!-- isMandatory = false, not permitted --> | ||
+ | |||
| “ I” <!-- isMandatory = false, ignored --> | | “ I” <!-- isMandatory = false, ignored --> | ||
+ | |||
| “ U” <!-- isMandatory = false, unspecified --> | | “ U” <!-- isMandatory = false, unspecified --> | ||
+ | |||
<vocabBinding> :== < conceptDomainBinding> | <valueSetBinding> | <codeBinding> | <vocabBinding> :== < conceptDomainBinding> | <valueSetBinding> | <codeBinding> | ||
+ | |||
< conceptDomainBinding> :== “ < CD: ” ( <domainName> | ( “x_” <domainName> ) ) | < conceptDomainBinding> :== “ < CD: ” ( <domainName> | ( “x_” <domainName> ) ) | ||
+ | |||
<domainName> :== <upperCamelCase> | <domainName> :== <upperCamelCase> | ||
+ | |||
<valueSetBinding> :== <valueSetFull> <!-- used for all non-immutable codes --> | <valueSetBinding> :== <valueSetFull> <!-- used for all non-immutable codes --> | ||
+ | |||
| <valueSetShort> <!-- used for all immutable codes --> | | <valueSetShort> <!-- used for all immutable codes --> | ||
+ | |||
<valueSetFull> :== “ < V:” ( <valueSetName> | <oid> ) <valueSetVersion>? <strength> <anyText> | <valueSetFull> :== “ < V:” ( <valueSetName> | <oid> ) <valueSetVersion>? <strength> <anyText> | ||
+ | |||
<valueSetShort> :== <valueSetLT> | <valueSetLE> | <valueSetShort> :== <valueSetLT> | <valueSetLE> | ||
+ | |||
<valueSetLT> :== “ < “ ( ‘A’-‘Z’ )+ <!-- all specializations of specified root code --> | <valueSetLT> :== “ < “ ( ‘A’-‘Z’ )+ <!-- all specializations of specified root code --> | ||
+ | |||
<valueSetLE> :== “ <= “ ( ‘A’-‘Z’ )+ <!-- —specified root code and all specializations --> | <valueSetLE> :== “ <= “ ( ‘A’-‘Z’ )+ <!-- —specified root code and all specializations --> | ||
+ | |||
<valueSetName> :== <upperCamelCase> | ( “x_” <upperCamelCase> ) ) | <valueSetName> :== <upperCamelCase> | ( “x_” <upperCamelCase> ) ) | ||
+ | |||
<valueSetVersion> :== “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? <!-- date with optional time --> | <valueSetVersion> :== “#” ( ‘0’-‘9’ ){8} ( ( ‘0’-‘9’ ){6} )? <!-- date with optional time --> | ||
+ | |||
<strength> :== “ CWE” | “ CNE” | <strength> :== “ CWE” | “ CNE” | ||
+ | |||
<codeBinding> :== <codeFull> <!-- used for all non-immutable codes --> | <codeBinding> :== <codeFull> <!-- used for all non-immutable codes --> | ||
+ | |||
| <codeShort> <!-- used for all immutable codes --> | | <codeShort> <!-- used for all immutable codes --> | ||
+ | |||
<codeFull > :== “ < = C:” ( <codeSystemName> | <oid> ) “#” <anyText> | <codeFull > :== “ < = C:” ( <codeSystemName> | <oid> ) “#” <anyText> | ||
+ | |||
<codeSystemName> :== <upperCamelCase> | <codeSystemName> :== <upperCamelCase> | ||
+ | |||
<codeShort> :== “ =” <anyText> | <codeShort> :== “ =” <anyText> | ||
+ | |||
<fixedValue> :== ‘ = “’ <anyText> ‘”’ | <fixedValue> :== ‘ = “’ <anyText> ‘”’ | ||
+ | |||
<enumeration> :== “ = [“ <enumerationVals> “]” | <enumeration> :== “ = [“ <enumerationVals> “]” | ||
+ | |||
<enumerationVals> :== ‘”’ <anyText> ‘”’ ( ‘, “’ <anyText> ‘”’ )* | <enumerationVals> :== ‘”’ <anyText> ‘”’ ( ‘, “’ <anyText> ‘”’ )* | ||
+ | |||
<allowedRange> :== “ = [“ <number> “..” <number> “]” | <allowedRange> :== “ = [“ <number> “..” <number> “]” | ||
+ | |||
<lengthLimits> :== “ Len=” ( <fixedLength> | <lengthRange> ) | <lengthLimits> :== “ Len=” ( <fixedLength> | <lengthRange> ) | ||
+ | |||
<fixedLength> :== <number> | <fixedLength> :== <number> | ||
+ | |||
<lengthRange> :== <number> “..” <number> | <lengthRange> :== <number> “..” <number> | ||
+ | |||
<updateMode> :== “ {“ <mode> ( “: “ <modeList> )? “}” | <updateMode> :== “ {“ <mode> ( “: “ <modeList> )? “}” | ||
+ | |||
<modeList> :== <mode> | <mode> “,” <modeList> | <modeList> :== <mode> | <mode> “,” <modeList> | ||
+ | |||
<mode> ::= 'A' | ‘AR’ | 'D' | ‘K’ | ‘N’ | ‘R’ | ‘REF’ | 'U' | <mode> ::= 'A' | ‘AR’ | 'D' | ‘K’ | ‘N’ | ‘R’ | ‘REF’ | 'U' | ||
+ | |||
<extensionOid> :== “ EXT:” <oid> | <extensionOid> :== “ EXT:” <oid> | ||
+ | |||
<businessNames> :== <businessName> (“ “ <businessNames>)? | <businessNames> :== <businessName> (“ “ <businessNames>)? | ||
+ | |||
<businessName> :== “ (“ <realm>? <anyText> “)” <!-- Must exclude “(“ --> | <businessName> :== “ (“ <realm>? <anyText> “)” <!-- Must exclude “(“ --> | ||
+ | |||
<realm> :== (‘A’-‘Z’){2} “-“ | <realm> :== (‘A’-‘Z’){2} “-“ | ||
+ | |||
<oid> :== “2” (“.” ( ‘0’-‘9’ )* )+ | <oid> :== “2” (“.” ( ‘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’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ )* | ||
+ | |||
===Examples: === | ===Examples: === | ||
moodCode: CS [1..1] { M <= INT } | moodCode: CS [1..1] { M <= INT } | ||
+ | |||
code: CD [0..1] { R < CD: ActProcedureCode (CA-Procedure Type) } | code: CD [0..1] { R < CD: ActProcedureCode (CA-Procedure Type) } | ||
+ | |||
code: CV [1..1] { M < = C:LN#123456 } | code: CV [1..1] { M < = C:LN#123456 } | ||
+ | |||
sequenceNumber: INT [1..1] { M =[1..10] } | sequenceNumber: INT [1..1] { M =[1..10] } | ||
+ | |||
addr: DSET(AD) [0..*] { R {A: A,AR,R,D} (Mailing addresses) } | addr: DSET(AD) [0..*] { R {A: A,AR,R,D} (Mailing addresses) } | ||
Revision as of 19:14, 31 July 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>
| “ 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 }