This wiki has undergone a migration to Confluence found Here
<meta name="googlebot" content="noindex">

Difference between revisions of "Static Model BNF Grammar"

From HL7Wiki
Jump to navigation Jump to search
(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

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 }