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
Line 9: Line 9:
 
cardinality          ::= “ [“ number ”..” numberOrStar “] “
 
cardinality          ::= “ [“ number ”..” numberOrStar “] “
 
numberOrStar        ::= (number | "*")
 
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)?  
 
                         updateMode? extensionOid? businessNames? “ }”
 
                         updateMode? extensionOid? businessNames? “ }”
  
Line 56: Line 56:
 
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’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' )*
 
</pre>
 
</pre>
  
Line 79: Line 79:
  
 
===Examples:===
 
===Examples:===
1..1 {M} assignedPerson
+
1..1 {M}<br/>
 +
assignedPerson
  
0..1 {R {A: A,AR,R,D}} assignedPerson
+
 
 +
0..1 {R {A: A,AR,R,D}}<br/>
 +
assignedPerson
  
 
== CMET Rendering==
 
== CMET Rendering==
Line 97: Line 100:
  
 
===Examples:===
 
===Examples:===
<CMET>
+
<CMET><br/>
 
R_AssignedPerson universal
 
R_AssignedPerson universal
 +
 
--------------------
 
--------------------
 +
 
classCode { < OBS }
 
classCode { < OBS }
  
Line 114: Line 119:
  
 
===Examples:===
 
===Examples:===
<STUB>
+
<STUB><br/>
 
R_Payload
 
R_Payload
 
-------------------
 
-------------------
 
classCode { < ROL }
 
classCode { < ROL }

Revision as of 15:03, 4 September 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 )*
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
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                  ::= ('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’ | ‘ ‘ | ‘-‘ | ‘_’ | ‘#’ | ‘&’ | ':' | '/' | '.' )*

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>” EOL cmetName EOL ” “ 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 }