bmm_version = <"2.4"> rm_publisher = <"openehr"> schema_name = <"am"> rm_release = <"1.4.0"> schema_revision = <"1.4.0.2"> schema_lifecycle_state = <"stable"> schema_description = <"openEHR Archetype Model"> schema_author = <"Thomas Beale , code-generator"> includes = < ["openehr_base_1.3.0"] = < id = <"openehr_base_1.3.0"> > > packages = < ["org.openehr.am.aom14"] = < name = <"org.openehr.am.aom14"> packages = < ["openehr_archetype_profile"] = < name = <"openehr_archetype_profile"> classes = <"C_ORDINAL", "C_CODED_TEXT", "C_QUANTITY", "C_QUANTITY_ITEM", "ORDINAL"> > ["archetype"] = < name = <"archetype"> classes = <"ARCHETYPE", ...> packages = < ["assertion"] = < name = <"assertion"> classes = <"ASSERTION", "ASSERTION_VARIABLE", "EXPR_ITEM", "EXPR_LEAF", "EXPR_OPERATOR", "EXPR_UNARY_OPERATOR", "EXPR_BINARY_OPERATOR", "OPERATOR_KIND"> > ["constraint_model"] = < name = <"constraint_model"> classes = <"ARCHETYPE_CONSTRAINT", "C_OBJECT", "C_ATTRIBUTE", "C_DEFINED_OBJECT", "CARDINALITY", "ARCHETYPE_INTERNAL_REF", "ARCHETYPE_SLOT", "C_SINGLE_ATTRIBUTE", "CONSTRAINT_REF", "C_MULTIPLE_ATTRIBUTE", "C_DOMAIN_TYPE", "C_REFERENCE_OBJECT", "C_PRIMITIVE_OBJECT", "C_COMPLEX_OBJECT"> > ["ontology"] = < name = <"ontology"> classes = <"ARCHETYPE_TERM", "ARCHETYPE_ONTOLOGY"> > ["primitive"] = < name = <"primitive"> classes = <"C_BOOLEAN", "C_STRING", "C_INTEGER", "C_REAL", "C_TIME", "C_DATE", "C_DATE_TIME", "C_DURATION", "C_PRIMITIVE"> > > > > > > class_definitions = < ["C_ORDINAL"] = < name = <"C_ORDINAL"> documentation = <"Constrainer class for Ordinal data."> ancestors = <"C_DOMAIN_TYPE", ...> properties = < ["list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"list"> documentation = <"Value set of allowed Ordinals in the constraint."> type_def = < container_type = <"List"> type = <"ORDINAL"> > cardinality = <|>=0|> > > > ["C_CODED_TEXT"] = < name = <"C_CODED_TEXT"> documentation = <"Constrainer class for Coded text data."> ancestors = <"C_DOMAIN_TYPE", ...> properties = < ["terminology"] = (P_BMM_SINGLE_PROPERTY) < name = <"terminology"> documentation = <"Terminology identifier."> is_mandatory = type = <"String"> > ["code_list"] = (P_BMM_GENERIC_PROPERTY) < name = <"code_list"> documentation = <"Optional list of codes from the terminology. No list means any code from the terminology is allowed."> type_def = < generic_parameters = <"String", ...> root_type = <"List"> > > ["reference"] = (P_BMM_SINGLE_PROPERTY) < name = <"reference"> type = <"String"> > > > ["C_QUANTITY"] = < name = <"C_QUANTITY"> documentation = <"Constrainer class for Quantity data."> ancestors = <"C_DOMAIN_TYPE", ...> properties = < ["property"] = (P_BMM_SINGLE_PROPERTY) < name = <"property"> documentation = <"Name of physical property for Quantities being constrained."> is_mandatory = type = <"String"> > ["list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"list"> documentation = <"Value set of allowed individual Quantity item constraints in this Quantity constraint."> type_def = < container_type = <"List"> type = <"C_QUANTITY_ITEM"> > cardinality = <|>=0|> > > > ["C_QUANTITY_ITEM"] = < name = <"C_QUANTITY_ITEM"> documentation = <"Constrainer class for a single Quantity."> properties = < ["magnitude"] = (P_BMM_GENERIC_PROPERTY) < name = <"magnitude"> documentation = <"Quantity magnitude constraint."> is_mandatory = type_def = < generic_parameters = <"Real", ...> root_type = <"Interval"> > > ["units"] = (P_BMM_SINGLE_PROPERTY) < name = <"units"> documentation = <"Optional units constraint."> type = <"String"> > > > ["ORDINAL"] = < name = <"ORDINAL"> documentation = <"Constrainer object representing a single Ordinal value."> properties = < ["symbol"] = (P_BMM_SINGLE_PROPERTY) < name = <"symbol"> documentation = <"Terminology code providing the Ordinal's symbol."> is_mandatory = type = <"CODE_PHRASE"> > ["value"] = (P_BMM_SINGLE_PROPERTY) < name = <"value"> documentation = <"Ordinal value."> is_mandatory = type = <"Integer"> > > > ["ARCHETYPE"] = < name = <"ARCHETYPE"> documentation = <"Archetype equivalent to ARCHETYPED class in Common reference model. Defines semantics of identfication, lifecycle, versioning, composition and specialisation."> ancestors = <"AUTHORED_RESOURCE", ...> properties = < ["definition"] = (P_BMM_SINGLE_PROPERTY) < name = <"definition"> documentation = <"Root node of the definition of this archetype."> is_mandatory = type = <"C_COMPLEX_OBJECT"> > ["ontology"] = (P_BMM_SINGLE_PROPERTY) < name = <"ontology"> documentation = <"The ontology of the archetype."> is_mandatory = type = <"ARCHETYPE_ONTOLOGY"> > ["adl_version"] = (P_BMM_SINGLE_PROPERTY) < name = <"adl_version"> documentation = <"ADL version if archetype was read in from an ADL sharable archetype."> type = <"String"> > ["archetype_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"archetype_id"> documentation = <"Multi-axial identifier of this archetype in archetype space."> is_mandatory = type = <"ARCHETYPE_ID"> > ["uid"] = (P_BMM_SINGLE_PROPERTY) < name = <"uid"> documentation = <"OID identifier of this archetype."> type = <"HIER_OBJECT_ID"> > ["concept"] = (P_BMM_SINGLE_PROPERTY) < name = <"concept"> documentation = <"The normative meaning of the archetype as a whole, expressed as a local archetype code, typically “at0000”."> is_mandatory = type = <"String"> > ["parent_archetype_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"parent_archetype_id"> documentation = <"Identifier of the specialisation parent of this archetype."> type = <"ARCHETYPE_ID"> > ["invariants"] = (P_BMM_CONTAINER_PROPERTY) < name = <"invariants"> documentation = <"Invariant statements about this object. Statements are expressed in first order predicate logic, and usually refer to at least two attributes."> type_def = < container_type = <"List"> type = <"ASSERTION"> > cardinality = <|>=0|> > > functions = < ["concept_name"] = < name = <"concept_name"> documentation = <"The concept name of the archetype in language a_lang; corresponds to the term definition of the concept attribute in the archetype ontology."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > parameters = < ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > > post_conditions = < ["post-condition"] = <"Result.is_equal (definition.node_id)"> > > ["physical_paths"] = < name = <"physical_paths"> documentation = <"Set of language-independent paths extracted from archetype. Paths obey Xpath-like syntax and are formed from alternations of C_OBJECT.node_id and C_ATTRIBUTE.rm_attribute_name values. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > > ["logical_paths"] = < name = <"logical_paths"> documentation = <"Set of language-dependent paths extracted from archetype. Paths obey the same syntax as physical_paths, but with node_ids replaced by their meanings from the ontology. "> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > parameters = < ["lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"lang"> type = <"String"> > > > ["specialisation_depth"] = < name = <"specialisation_depth"> documentation = <"Specialisation depth of this archetype; larger than 0 if this archetype has a parent. Derived from terminology.specialisation_depth."> result = (P_BMM_SIMPLE_TYPE) < type = <"Integer"> > post_conditions = < ["post-condition"] = <"Result = terminology.specialisation_depth"> > > ["is_specialised"] = < name = <"is_specialised"> documentation = <"True if this archetype is a specialisation of another. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["post-condition"] = <"Result implies parent_archetype_id /= Void"> > > ["is_valid"] = < name = <"is_valid"> documentation = <"True if the archetype is valid overall; various tests should be used, including checks on node_ids, internal references, and constraint references."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"not (node_ids_valid and internal_references_valid and constraint_references_valid) implies not Result"> > > ["node_ids_valid"] = < name = <"node_ids_valid"> documentation = <"True if every node_id found on a C_OBJECT node is found in ontology.term_codes."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["previous_version"] = < name = <"previous_version"> documentation = <"Version of predecessor archetype of this archetype, if any."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > is_nullable = > ["internal_references_valid"] = < name = <"internal_references_valid"> documentation = <"True if every ARCHETYPE_INTERNAL_REF. target_path refers to a legitimate node in the archetype definition."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["constraint_references_valid"] = < name = <"constraint_references_valid"> documentation = <"True if every CONSTRAINT_REF.reference found on a C_OBJECT node in the archetype definition is found in ontology.constraint_codes."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["short_concept_name"] = < name = <"short_concept_name"> documentation = <"The short concept name of the archetype extracted from the archetype_id."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["version"] = < name = <"version"> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > > invariants = < ["Inv_concept_valid"] = <"ontology.has_term_code (concept_code)"> ["Inv_specialisation_validity"] = <"is_specialised implies specialisation_depth > 0"> ["Inv_invariants_valid"] = <"invariants /= Void implies not invariants.is_empty"> ["Inv_uid_validity"] = <"uid /= Void implies not uid.is_empty"> ["Inv_version_validity"] = <"version /= Void and then version.is_equal(archetype_id.version_id)"> ["Inv_description_valid"] = <"description /= Void"> ["Inv_original_language_valid"] = <"original_language /= void and then language /= Void"> > > ["ASSERTION"] = < name = <"ASSERTION"> documentation = <"Structural model of a typed first order predicate logic assertion, in the form of an expression tree, including optional variable definitions. "> properties = < ["tag"] = (P_BMM_SINGLE_PROPERTY) < name = <"tag"> documentation = <"Expression tag, used for differentiating multiple assertions."> type = <"String"> > ["string_expression"] = (P_BMM_SINGLE_PROPERTY) < name = <"string_expression"> documentation = <"String form of expression, in case an expression evaluator taking String expressions is used for evaluation. "> type = <"String"> > ["expression"] = (P_BMM_SINGLE_PROPERTY) < name = <"expression"> documentation = <"Root of expression tree."> is_mandatory = type = <"EXPR_ITEM"> > ["variables"] = (P_BMM_CONTAINER_PROPERTY) < name = <"variables"> documentation = <"Definitions of variables used in the assertion expression."> type_def = < container_type = <"List"> type = <"ASSERTION_VARIABLE"> > cardinality = <|>=0|> > > invariants = < ["Tag_valid"] = <"tag /= Void implies not tag.is_empty"> ["Expression_valid"] = <"expression /= Void and then expression.type.is_equal(“BOOLEAN”)"> > > ["ASSERTION_VARIABLE"] = < name = <"ASSERTION_VARIABLE"> documentation = <"Definition of a named variable used in an assertion expression."> properties = < ["name"] = (P_BMM_SINGLE_PROPERTY) < name = <"name"> documentation = <"Name of variable."> is_mandatory = type = <"String"> > ["definition"] = (P_BMM_SINGLE_PROPERTY) < name = <"definition"> documentation = <"Formal definition of the variable."> is_mandatory = type = <"String"> > > > ["EXPR_ITEM"] = < name = <"EXPR_ITEM"> documentation = <"Abstract parent of all expression tree items."> is_abstract = properties = < ["type"] = (P_BMM_SINGLE_PROPERTY) < name = <"type"> documentation = <"Type name of this item in the mathematical sense. For leaf nodes, must be the name of a primitive type, or else a reference model type. The type for any relational or boolean operator will be “Boolean”, while the type for any arithmetic operator, will be “Real” or “Integer”."> is_mandatory = type = <"String"> > > > ["EXPR_LEAF"] = < name = <"EXPR_LEAF"> documentation = <"Expression tree leaf item representing one of: * a manifest constant of any primitive type; * a path referring to a value in the archetype; * a constraint; * a variable reference. "> ancestors = <"EXPR_ITEM", ...> properties = < ["reference_type"] = (P_BMM_SINGLE_PROPERTY) < name = <"reference_type"> documentation = <"Type of reference: “constant”, “attribute”, “function”, “constraint”. The first three are used to indicate the referencing mechanism for an operand. The last is used to indicate a constraint operand, as happens in the case of the right-hand operand of the ‘matches’ operator."> is_mandatory = type = <"String"> > ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"The value referred to; a manifest constant, an attribute path (in the form of a String), or for the right-hand side of a ‘matches’ node, a constraint, often a C_PRIMITIVE_OBJECT."> is_mandatory = type = <"Any"> > > > ["EXPR_OPERATOR"] = < name = <"EXPR_OPERATOR"> documentation = <"Abstract parent of operator types."> ancestors = <"EXPR_ITEM", ...> is_abstract = properties = < ["precedence_overridden"] = (P_BMM_SINGLE_PROPERTY) < name = <"precedence_overridden"> documentation = <"True if the natural precedence of operators is overridden in the expression represented by this node of the expression tree. If True, parentheses should be introduced around the totality of the syntax expression corresponding to this operator node and its operands."> type = <"Boolean"> > ["operator"] = (P_BMM_SINGLE_PROPERTY) < name = <"operator"> documentation = <"Code of operator."> is_mandatory = type = <"OPERATOR_KIND"> > > > ["EXPR_UNARY_OPERATOR"] = < name = <"EXPR_UNARY_OPERATOR"> documentation = <"Unary operator expression node."> ancestors = <"EXPR_OPERATOR", ...> properties = < ["operand"] = (P_BMM_SINGLE_PROPERTY) < name = <"operand"> documentation = <"Operand node."> is_mandatory = type = <"EXPR_ITEM"> > > > ["EXPR_BINARY_OPERATOR"] = < name = <"EXPR_BINARY_OPERATOR"> documentation = <"Binary operator expression node."> ancestors = <"EXPR_OPERATOR", ...> properties = < ["left_operand"] = (P_BMM_SINGLE_PROPERTY) < name = <"left_operand"> documentation = <"Left operand node."> is_mandatory = type = <"EXPR_ITEM"> > ["right_operand"] = (P_BMM_SINGLE_PROPERTY) < name = <"right_operand"> documentation = <"Right operand node."> is_mandatory = type = <"EXPR_ITEM"> > > > ["OPERATOR_KIND"] = (P_BMM_ENUMERATION_STRING) < name = <"OPERATOR_KIND"> documentation = <"Enumeration type for operator types in assertion expressions."> ancestors = <"String", ...> item_names = <"op_eq", "op_ne", "op_le", "op_lt", "op_ge", "op_gt", "op_matches", "op_not", "op_and", "op_or", "op_xor", "op_implies", "op_for_all", "op_exists", "op_plus", "op_minus", "op_multiply", "op_divide", "op_exponent"> item_documentations = <"Equals operator (= or ==)", "Not equals operator (!= or /=)", "Less-than or equals operator (<=)", "Less-than operator (<=)", "Greater-than or equals operator (>=)", "Greater-than operator (>)", "Matches operator (matches or is_in)", "Not logical operator", "And logical operator", "Or logical operator.", "Xor logical operator", "Implies logical operator", "For-all (universal) quantifier", "Exists quantifier", "Arithmetic plus operator (+)", "Arithmetic minus operator (-)", "Arithmetic multiplication operator (*)", "Arithmetic division operator (/)", "Arithmetic exponentiation operator (^)"> > ["ARCHETYPE_CONSTRAINT"] = < name = <"ARCHETYPE_CONSTRAINT"> documentation = <"Archetype equivalent to LOCATABLE class in openEHR Common reference model. Defines common constraints for any inheritor of LOCATABLE in any reference model. "> is_abstract = functions = < ["is_subset_of"] = < name = <"is_subset_of"> documentation = <"True if constraints represented by this node, ignoring any sub-parts, are narrower or the same as other. Typically used during validation of special-ised archetype nodes."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["other"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"other"> type = <"ARCHETYPE_CONSTRAINT"> > > > ["is_valid"] = < name = <"is_valid"> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["path"] = < name = <"path"> documentation = <"Path of this node relative to root of archetype."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > > ["has_path"] = < name = <"has_path"> documentation = <"True if the relative path a_path exists at this node."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_path"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_path"> type = <"String"> > > > > invariants = < ["Post"] = <"Result = soc_parent /= Void or parent.soc_parent /= Void"> ["Path_exists"] = <"path /= Void"> > > ["C_OBJECT"] = < name = <"C_OBJECT"> documentation = <"Abstract model of constraint on any kind of object node. "> ancestors = <"ARCHETYPE_CONSTRAINT", ...> is_abstract = properties = < ["rm_type_name"] = (P_BMM_SINGLE_PROPERTY) < name = <"rm_type_name"> documentation = <"Reference model type that this node corresponds to. "> is_mandatory = type = <"String"> > ["occurrences"] = (P_BMM_GENERIC_PROPERTY) < name = <"occurrences"> documentation = <"Occurrences of this object node in the data, under the owning attribute. Upper limit can only be greater than 1 if owning attribute has a cardinality of more than 1)."> is_mandatory = type_def = < generic_parameters = <"Integer", ...> root_type = <"Interval"> > > ["node_id"] = (P_BMM_SINGLE_PROPERTY) < name = <"node_id"> documentation = <"Semantic identifier of this node, used to distinguish sibling nodes. All nodes must have a node_id; for nodes under a container C_ATTRIBUTE, the id must be an id-code must be defined in the archetype terminology. For valid structures, all node ids are at-codes. For C_PRIMITIVE_OBJECTs, it will have the special value Primitive_node_id."> is_mandatory = type = <"String"> > > > ["C_ATTRIBUTE"] = < name = <"C_ATTRIBUTE"> documentation = <"Abstract model of constraint on any kind of attribute node."> ancestors = <"ARCHETYPE_CONSTRAINT", ...> is_abstract = properties = < ["rm_attribute_name"] = (P_BMM_SINGLE_PROPERTY) < name = <"rm_attribute_name"> documentation = <"Reference model attribute within the enclosing type represented by a C_OBJECT."> is_mandatory = type = <"String"> > ["existence"] = (P_BMM_GENERIC_PROPERTY) < name = <"existence"> documentation = <"Constraint on every attribute, regardless of whether it is singular or of a container type, which indicates whether its target object exists or not (i.e. is mandatory or not)."> is_mandatory = type_def = < generic_parameters = <"Integer", ...> root_type = <"Interval"> > > ["children"] = (P_BMM_CONTAINER_PROPERTY) < name = <"children"> documentation = <"Child C_OBJECT nodes. Each such node represents a constraint on the type of this attribute in its reference model. Multiples occur both for multiple items in the case of container attributes, and alternatives in the case of singular attributes. "> type_def = < container_type = <"List"> type = <"C_OBJECT"> > cardinality = <|>=0|> > > functions = < ["any_allowed"] = < name = <"any_allowed"> documentation = <"True if any value (i.e. instance) of the reference model attribute represented by this C_ATTIRBUTE is allowed."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"Result := children = Void or else children.is_empty"> > > > invariants = < ["Rm_attribute_name_valid"] = <"not rm_attribute_name.is_empty"> ["Existence_set"] = <"existence.lower >= 0 and existence.upper <= 1"> ["Children_validity"] = <"any_allowed xor children /= Void"> > > ["C_DEFINED_OBJECT"] = < name = <"C_DEFINED_OBJECT"> documentation = <"Abstract parent type of C_OBJECT subtypes that are defined by value, i.e. whose definitions are actually in the archetype rather than being by reference. "> ancestors = <"C_OBJECT", ...> is_abstract = properties = < ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"Value to be assumed if none sent in data."> type = <"Any"> > > functions = < ["valid_value"] = < name = <"valid_value"> documentation = <"True if a_value is valid with respect to constraint expressed in concrete instance of this type."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_value"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_value"> type = <"Any"> > > > ["prototype_value"] = < name = <"prototype_value"> documentation = <"Generate a prototype value from this constraint object."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Any"> > > ["has_assumed_value"] = < name = <"has_assumed_value"> documentation = <"True if there is an assumed value. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["default_value"] = < name = <"default_value"> documentation = <"Generate a default value from this constraint object."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Any"> > is_nullable = > ["any_allowed"] = < name = <"any_allowed"> documentation = <"True if any value of the reference model type being constrained is allowed. Redefine in descendants."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"Result = attributes.is_empty"> > > > invariants = < ["Assumed_value_valid"] = <"has_assumed_value implies valid_value(assumed_value)"> > > ["CARDINALITY"] = < name = <"CARDINALITY"> documentation = <"Express constraints on the cardinality of container objects which are the values of multiply-valued attributes, including uniqueness and ordering, providing the means to state that a container acts like a logical list, set or bag. The cardinality cannot contradict the cardinality of the corresponding attribute within the relevant reference model."> properties = < ["interval"] = (P_BMM_GENERIC_PROPERTY) < name = <"interval"> documentation = <"The interval of this cardinality. "> is_mandatory = type_def = < generic_parameters = <"Integer", ...> root_type = <"Interval"> > > ["is_ordered"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_ordered"> documentation = <"True if the members of the container attribute to which this cardinality refers are ordered. "> is_mandatory = type = <"Boolean"> > ["is_unique"] = (P_BMM_SINGLE_PROPERTY) < name = <"is_unique"> documentation = <"True if the members of the container attribute to which this cardinality refers are unique."> is_mandatory = type = <"Boolean"> > > functions = < ["is_bag"] = < name = <"is_bag"> documentation = <"True if the semantics of this cardinality represent a bag, i.e. unordered, non-unique membership."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["is_list"] = < name = <"is_list"> documentation = <"True if the semantics of this cardinality represent a list, i.e. ordered, non-unique membership."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["is_set"] = < name = <"is_set"> documentation = <"True if the semantics of this cardinality represent a bag, i.e. unordered, non-unique membership."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > > ["ARCHETYPE_INTERNAL_REF"] = < name = <"ARCHETYPE_INTERNAL_REF"> documentation = <"A constraint defined by proxy, using a reference to an object constraint defined elsewhere in the same archetype. Note that since this object refers to another node, there are two objects with available occurrences values. The local occurrences value on an ARCHETYPE_INTERNAL_REF should always be used; when setting this from a serialised form, if no occurrences is mentioned, the target occurrences should be used (not the standard default of {1..1}); otherwise the locally specified occurrences should be used as normal. When serialising out, if the occurrences is the same as that of the target, it can be left out."> ancestors = <"C_REFERENCE_OBJECT", ...> properties = < ["target_path"] = (P_BMM_SINGLE_PROPERTY) < name = <"target_path"> documentation = <"Reference to an object node using archetype path notation."> is_mandatory = type = <"String"> > > invariants = < ["Consistency"] = <"not any_allowed"> ["Target_path_valid"] = <"target_path /= Void and then not target_path.is_empty"> > > ["ARCHETYPE_SLOT"] = < name = <"ARCHETYPE_SLOT"> documentation = <"Constraint describing a slot' where another archetype can occur. "> ancestors = <"C_REFERENCE_OBJECT", ...> properties = < ["includes"] = (P_BMM_CONTAINER_PROPERTY) < name = <"includes"> documentation = <"List of constraints defining other archetypes that could be included at this point. "> type_def = < container_type = <"List"> type = <"ASSERTION"> > cardinality = <|>=0|> > ["excludes"] = (P_BMM_CONTAINER_PROPERTY) < name = <"excludes"> documentation = <"List of constraints defining other archetypes that cannot be included at this point. "> type_def = < container_type = <"List"> type = <"ASSERTION"> > cardinality = <|>=0|> > > invariants = < ["Includes_valid"] = <"includes /= Void implies not includes.is_empty"> ["Excludes_valid"] = <"excludes /= Void implies not excludes.is_empty"> ["Validity"] = <"any_allowed xor (includes /= Void or excludes /= Void)"> > > ["C_SINGLE_ATTRIBUTE"] = < name = <"C_SINGLE_ATTRIBUTE"> documentation = <"Concrete model of constraint on a single-valued attribute node. The meaning of the inherited children attribute is that they are alternatives."> ancestors = <"C_ATTRIBUTE", ...> functions = < ["alternatives"] = < name = <"alternatives"> documentation = <"List of alternative constraints for the single child of this attribute within the data."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"C_OBJECT"> > is_nullable = > > invariants = < ["Members_valid"] = <"alternatives /= Void and then alternatives.for_all(co: C_OBJECT | co.occurrences.upper <= 1)"> > > ["CONSTRAINT_REF"] = < name = <"CONSTRAINT_REF"> documentation = <"Reference to a constraint described in the same archetype, but outside the main constraint structure. This is used to refer to constraints expressed in terms of external resources, such as constraints on terminology value sets."> ancestors = <"C_REFERENCE_OBJECT", ...> properties = < ["reference"] = (P_BMM_SINGLE_PROPERTY) < name = <"reference"> documentation = <"Reference to a constraint in the archetype local ontology."> is_mandatory = type = <"String"> > > invariants = < ["Consistency"] = <"not any_allowed"> > > ["C_MULTIPLE_ATTRIBUTE"] = < name = <"C_MULTIPLE_ATTRIBUTE"> documentation = <"Concrete model of constraint on multiply-valued (ie. container) attribute node."> ancestors = <"C_ATTRIBUTE", ...> properties = < ["cardinality"] = (P_BMM_SINGLE_PROPERTY) < name = <"cardinality"> documentation = <"Cardinality of this attribute constraint, if it constraints a container attribute."> is_mandatory = type = <"CARDINALITY"> > > functions = < ["members"] = < name = <"members"> documentation = <"List of constraints representing members of the container value of this attribute within the data. Semantics of the uniqueness and ordering of items in the container are given by the cardinality."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"C_OBJECT"> > is_nullable = > > > ["C_DOMAIN_TYPE"] = < name = <"C_DOMAIN_TYPE"> documentation = <"Abstract parent type of domain-specific constrainer types, to be defined in external packages."> ancestors = <"C_DEFINED_OBJECT", ...> is_abstract = functions = < ["standard_equivalent"] = < name = <"standard_equivalent"> documentation = <"Standard (i.e. C_OBJECT) form of constraint."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"C_COMPLEX_OBJECT"> > > > > ["C_REFERENCE_OBJECT"] = < name = <"C_REFERENCE_OBJECT"> documentation = <"Abstract parent type of C_OBJECT subtypes that are defined by reference."> ancestors = <"C_OBJECT", ...> is_abstract = > ["C_PRIMITIVE_OBJECT"] = < name = <"C_PRIMITIVE_OBJECT"> documentation = <"Constraint on a primitive type."> ancestors = <"C_DEFINED_OBJECT", ...> properties = < ["item"] = (P_BMM_SINGLE_PROPERTY) < name = <"item"> documentation = <"Object actually defining the constraint."> is_mandatory = type = <"C_PRIMITIVE"> > > functions = < ["any_allowed"] = < name = <"any_allowed"> documentation = <"True if any value of the type being constrained in item is allowed."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"Result = item = Void"> > > > invariants = < ["Item_valid"] = <"any_allowed xor item /= Void"> > > ["C_COMPLEX_OBJECT"] = < name = <"C_COMPLEX_OBJECT"> documentation = <"Constraint on complex objects, i.e. any object that consists of other object constraints."> ancestors = <"C_DEFINED_OBJECT", ...> properties = < ["attributes"] = (P_BMM_CONTAINER_PROPERTY) < name = <"attributes"> documentation = <"List of constraints on attributes of the reference model type represented by this object."> type_def = < container_type = <"List"> type = <"C_ATTRIBUTE"> > cardinality = <|>=0|> > > functions = < ["any_allowed"] = < name = <"any_allowed"> documentation = <"True if any value of the reference model type being constrained is allowed."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > post_conditions = < ["Post"] = <"Result = attributes.is_empty"> > > > invariants = < ["Attributes_valid"] = <" any_allowed xor (attributes /= Void and not attributes.is_empty)"> > > ["ARCHETYPE_TERM"] = < name = <"ARCHETYPE_TERM"> documentation = <"Representation of any coded entity (term or constraint) in the archetype ontology."> properties = < ["code"] = (P_BMM_SINGLE_PROPERTY) < name = <"code"> documentation = <"Code of this term. "> is_mandatory = type = <"String"> > ["items"] = (P_BMM_GENERIC_PROPERTY) < name = <"items"> documentation = <"Hash of keys (“text”, “description” etc) and corresponding values."> type_def = < generic_parameters = <"String", "String"> root_type = <"Hash"> > > > functions = < ["keys"] = < name = <"keys"> documentation = <"List of all keys used in this term."> result = (P_BMM_CONTAINER_TYPE) < container_type = <"List"> type = <"String"> > is_nullable = > > invariants = < ["Code_valid"] = <"not code.is_empty"> > > ["ARCHETYPE_ONTOLOGY"] = < name = <"ARCHETYPE_ONTOLOGY"> documentation = <"Local ontology of an archetype."> properties = < ["term_codes"] = (P_BMM_CONTAINER_PROPERTY) < name = <"term_codes"> documentation = <"List of all term codes in the ontology. Most of these correspond to “at” codes in an ADL archetype, which are the node_ids on C_OBJECT descendants. There may be an extra one, if a different term is used as the overall archetype concept from that used as the node_id of the outermost C_OBJECT in the definition part."> is_mandatory = type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=1|> > ["constraint_codes"] = (P_BMM_CONTAINER_PROPERTY) < name = <"constraint_codes"> documentation = <"List of all term codes in the ontology. These correspond to the “ac” codes in an ADL archetype, or equivalently, the CONSTRAINT_REF.reference values in the archetype definition."> is_mandatory = type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=1|> > ["parent_archetype"] = (P_BMM_SINGLE_PROPERTY) < name = <"parent_archetype"> documentation = <"Archetype which owns this terminology."> is_mandatory = type = <"ARCHETYPE"> > ["terminologies_available"] = (P_BMM_CONTAINER_PROPERTY) < name = <"terminologies_available"> documentation = <"List of terminologies to which term or constraint bindings exist in this terminology."> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> > ["specialisation_depth"] = (P_BMM_SINGLE_PROPERTY) < name = <"specialisation_depth"> documentation = <"Specialisation depth of this archetype. Unspecialised archetypes have depth 0, with each additional level of specialisation adding 1 to the specialisation_depth."> is_mandatory = type = <"Integer"> > ["term_attribute_names"] = (P_BMM_CONTAINER_PROPERTY) < name = <"term_attribute_names"> is_mandatory = type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=1|> > > functions = < ["has_language"] = < name = <"has_language"> documentation = <"True if terminology ‘a_terminology’ is present in archetype ontology."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > > > ["has_terminology"] = < name = <"has_terminology"> documentation = <"True if terminology `a_terminology' is present in archetype ontology. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_terminology_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_terminology_id"> type = <"String"> > > > ["has_term_code"] = < name = <"has_term_code"> documentation = <"True if term_codes has a_code."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > > ["has_constraint_code"] = < name = <"has_constraint_code"> documentation = <"True if constraint_codes has a_code."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > > ["term_definition"] = < name = <"term_definition"> documentation = <"Term definition for a code, in a specified language. "> result = (P_BMM_SIMPLE_TYPE) < type = <"ARCHETYPE_TERM"> > parameters = < ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > pre_conditions = < ["Pre"] = <"has_language (a_lang)"> ["Pre2"] = <"has_term_code (a_code)"> > > ["constraint_definition"] = < name = <"constraint_definition"> documentation = <"Constraint definition for a code, in a specified language."> result = (P_BMM_SIMPLE_TYPE) < type = <"ARCHETYPE_TERM"> > parameters = < ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > ["a_lang"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_lang"> type = <"String"> > > pre_conditions = < ["Pre"] = <"has_language (a_lang)"> ["Pre_2"] = <"has_constraint_code (a_code)"> > > ["term_binding"] = < name = <"term_binding"> documentation = <"Binding of constraint corresponding to a_code in target external terminology a_terminology_id, as a string, which is usually a formal query expression."> result = (P_BMM_SIMPLE_TYPE) < type = <"CODE_PHRASE"> > parameters = < ["a_terminology"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_terminology"> type = <"String"> > ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > pre_conditions = < ["Pre"] = <"has_term_binding (a_terminology_id, a_code)"> > > ["constraint_binding"] = < name = <"constraint_binding"> documentation = <"Binding of constraint corresponding to a_code in target external terminology a_terminology_id, as a string, which is usually a formal query expression."> result = (P_BMM_SIMPLE_TYPE) < type = <"String"> > parameters = < ["a_terminology_id"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_terminology_id"> type = <"String"> > ["a_code"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_code"> type = <"String"> > > > > invariants = < ["Original_language_validity"] = <"code_set (Code_set_id_languages).has_concept_id (original_language)"> ["concept_code_validity"] = <"id_codes.has (concept_code)"> ["Term_bindings_validity"] = <"bindings /= void implies not bindings.is_empty"> ["Parent_archetype_valid"] = <"parent_archetype.ontology = Current"> > > ["C_BOOLEAN"] = < name = <"C_BOOLEAN"> documentation = <"Constraint on instances of Boolean. Both attributes cannot be set to False, since this would mean that the Boolean value being constrained cannot be True or False."> ancestors = <"C_PRIMITIVE", ...> properties = < ["true_valid"] = (P_BMM_SINGLE_PROPERTY) < name = <"true_valid"> documentation = <"True if the value True is allowed."> is_mandatory = type = <"Boolean"> > ["false_valid"] = (P_BMM_SINGLE_PROPERTY) < name = <"false_valid"> documentation = <"True if the value False is allowed."> is_mandatory = type = <"Boolean"> > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Boolean"> > > > ["C_STRING"] = < name = <"C_STRING"> documentation = <"Constraint on instances of STRING. "> ancestors = <"C_PRIMITIVE", ...> properties = < ["pattern"] = (P_BMM_SINGLE_PROPERTY) < name = <"pattern"> documentation = <"Regular expression pattern for proposed instances of String to match."> type = <"String"> > ["list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"list"> documentation = <"Set of Strings specifying constraint."> type_def = < container_type = <"List"> type = <"String"> > cardinality = <|>=0|> > ["list_open"] = (P_BMM_SINGLE_PROPERTY) < name = <"list_open"> documentation = <"True if the list is being used to specify the constraint but is not considered exhaustive."> is_mandatory = type = <"Boolean"> > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"String"> > > functions = < ["valid_value"] = < name = <"valid_value"> documentation = <"True if a_value is valid with respect to constraint expressed in concrete instance of this type. "> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_value"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_value"> type = <"String"> > > > > > ["C_INTEGER"] = < name = <"C_INTEGER"> documentation = <"Constraint on instances of Integer."> ancestors = <"C_PRIMITIVE", ...> properties = < ["list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"list"> documentation = <"Set of Integers specifying constraint."> type_def = < container_type = <"List"> type = <"Integer"> > cardinality = <|>=0|> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Range of Integers specifying constraint."> type_def = < generic_parameters = <"Integer", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Integer"> > > > ["C_REAL"] = < name = <"C_REAL"> documentation = <"Constraint on instances of Real."> ancestors = <"C_PRIMITIVE", ...> properties = < ["list"] = (P_BMM_CONTAINER_PROPERTY) < name = <"list"> documentation = <"Set of Reals specifying constraint."> type_def = < container_type = <"List"> type = <"Real"> > cardinality = <|>=0|> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Range of Real specifying constraint."> type_def = < generic_parameters = <"Real", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Real"> > > > ["C_TIME"] = < name = <"C_TIME"> documentation = <"ISO 8601-compatible constraint on instances of Time. There is no validity flag for ‘hour’, since it must always be by definition mandatory in order to have a sensible time at all. Syntax expressions of instances of this class include “HH:??:xx” (time with optional minutes and seconds not allowed)."> ancestors = <"C_PRIMITIVE", ...> properties = < ["minute_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"minute_validity"> documentation = <"Validity of minute in constrained time."> type = <"VALIDITY_KIND"> > ["second_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"second_validity"> documentation = <"Validity of second in constrained time."> type = <"VALIDITY_KIND"> > ["millisecond_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"millisecond_validity"> documentation = <"Validity of millisecond in constrained time."> type = <"VALIDITY_KIND"> > ["timezone_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"timezone_validity"> documentation = <"Validity of timezone in constrained date."> type = <"VALIDITY_KIND"> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Interval of Times specifying constraint."> type_def = < generic_parameters = <"Iso8601_time", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Iso8601_time"> > > functions = < ["validity_is_range"] = < name = <"validity_is_range"> documentation = <"True if validity is in the form of a range; useful for developers to check which kind of constraint has been set."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Pattern_validity"] = <"pattern /= Void implies valid_iso8601_time_constraint_pattern (pattern)"> ["Minute_validity_optional"] = <"minute_validity = {VALIDITY_KIND}.optional implies (second_validity = {VALIDITY_KIND}.optional or second_validity = {VALIDITY_KIND}.disallowed)"> ["Minute_validity_disallowed"] = <"minute_validity = {VALIDITY_KIND}.disallowed implies second_validity = {VALIDITY_KIND}.disallowed"> ["Second_validity_optional"] = <"second_validity = {VALIDITY_KIND}.optional implies (millisecond_validity = {VALIDITY_KIND}.optional or millisecond_validity = {VALIDITY_KIND}.disallowed)"> ["Second_validity_disallowed"] = <"second_validity = {VALIDITY_KIND}.disallowed implies millisecond_validity = {VALIDITY_KIND}.disallowed Validity_is_range: validity_is_range = (range /= Void)"> > > ["C_DATE"] = < name = <"C_DATE"> documentation = <"ISO 8601-compatible constraint on instances of Date in the form either of a set of validity values, or an actual date range. There is no validity flag for ‘year’, since it must always be by definition mandatory in order to have a sensible date at all. Syntax expressions of instances of this class include “YYYY-??-??” (date with optional month and day)."> ancestors = <"C_PRIMITIVE", ...> properties = < ["day_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"day_validity"> documentation = <"Validity of day in constrained date."> type = <"VALIDITY_KIND"> > ["month_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"month_validity"> documentation = <"Validity of month in constrained date."> type = <"VALIDITY_KIND"> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Interval of Dates specifying constraint."> type_def = < generic_parameters = <"Iso8601_date", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Iso8601_date"> > > invariants = < ["Pattern_validity"] = <"pattern /= Void implies valid_iso8601_date_constraint_pattern(pattern)"> ["Month_validity_optional"] = <"month_validity = {VALIDITY_KIND}.optional implies (day_validity = {VALIDITY_KIND}.optional or day_validity = {VALIDITY_KIND}.disallowed)"> ["Month_validity_disallowed"] = <"month_validity = {VALIDITY_KIND}.disallowed implies day_validity = {VALIDITY_KIND}.disallowed"> ["Validity_is_range"] = <"validity_is_range = (range /= Void)"> > > ["C_DATE_TIME"] = < name = <"C_DATE_TIME"> documentation = <"ISO 8601-compatible constraint on instances of Date_Time. There is no validity flag for ‘year’, since it must always be by definition mandatory in order to have a sensible date/time at all. Syntax expressions of instances of this class include “YYYY-MM-DDT??:??:??” (date/time with optional time) and “YYYY-MMDDTHH:MM:xx” (date/time, seconds not allowed)."> ancestors = <"C_PRIMITIVE", ...> properties = < ["month_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"month_validity"> documentation = <"Validity of month in constrained date."> type = <"VALIDITY_KIND"> > ["day_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"day_validity"> documentation = <"Validity of day in constrained date."> type = <"VALIDITY_KIND"> > ["hour_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"hour_validity"> documentation = <"Validity of hour in constrained time."> type = <"VALIDITY_KIND"> > ["minute_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"minute_validity"> documentation = <"Validity of minute in constrained time."> type = <"VALIDITY_KIND"> > ["second_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"second_validity"> documentation = <"Validity of second in constrained time."> type = <"VALIDITY_KIND"> > ["millisecond_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"millisecond_validity"> documentation = <"Validity of millisecond in constrained time."> type = <"VALIDITY_KIND"> > ["timezone_validity"] = (P_BMM_SINGLE_PROPERTY) < name = <"timezone_validity"> documentation = <"Validity of timezone in constrained date."> type = <"VALIDITY_KIND"> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Range of Date_times specifying constraint."> type_def = < generic_parameters = <"Iso8601_date_time", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Iso8601_date_time"> > > functions = < ["validity_is_range"] = < name = <"validity_is_range"> documentation = <"True if validity is in the form of a range; useful for developers to check which kind of constraint has been set."> result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > > invariants = < ["Pattern_validity"] = <"pattern /= Void implies valid_iso8601_date_time_constraint_pattern(pattern)"> ["Month_validity_optional:"] = <"month_validity = {VALIDITY_KIND}.optional implies (day_validity = {VALIDITY_KIND}.optional or day_validity = {VALIDITY_KIND}.disallowed)"> ["Month_validity_disallowed"] = <"month_validity = {VALIDITY_KIND}.disallowed implies day_validity = {VALIDITY_KIND}.disallowed"> ["Day_validity_optional"] = <"day_validity = {VALIDITY_KIND}.optional implies (hour_validity = {VALIDITY_KIND}.optional or hour_validity = {VALIDITY_KIND}.disallowed)"> ["Day_validity_disallowed"] = <"day_validity = {VALIDITY_KIND}.disallowed implies hour_validity = {VALIDITY_KIND}.disallowed"> ["Hour_validity_optional"] = <"hour_validity = {VALIDITY_KIND}.optional implies (minute_validity = {VALIDITY_KIND}.optional or minute_validity = {VALIDITY_KIND}.disallowed)"> ["Hour_validity_disallowed"] = <"hour_validity = {VALIDITY_KIND}.disallowed implies minute_validity = {VALIDITY_KIND}.disallowed"> ["Minute_validity_optional"] = <"minute_validity = {VALIDITY_KIND}.optional implies (second_validity = {VALIDITY_KIND}.optional or second_validity = {VALIDITY_KIND}.disallowed)"> ["Minute_validity_disallowed"] = <"minute_validity = {VALIDITY_KIND}.disallowed implies second_validity = {VALIDITY_KIND}.disallowed"> ["Second_validity_optional"] = <"second_validity = {VALIDITY_KIND}.optional implies (millisecond_validity = {VALIDITY_KIND}.optional or millisecond_validity = {VALIDITY_KIND}.disallowed)"> ["Second_validity_disallowed"] = <"second_validity = {VALIDITY_KIND}.disallowed implies millisecond_validity = {VALIDITY_KIND}.disallowed"> ["Validity_is_range"] = <"validity_is_range = (range /= Void)"> > > ["C_DURATION"] = < name = <"C_DURATION"> documentation = <"ISO 8601-compatible constraint on instances of Duration. In ISO 8601 terms, constraints might are of the form “PWD” (weeks and/or days), “PDTHMS” (days, hours, minutes, seconds) and so on. Both range and the constraint pattern can be set at the same time, corresponding to the ADL constraint `\"PWD/|P0W..P50W|\"`. As for all of openEHR, two ISO 8601 exceptions are allowed: * the ‘W’ (week) designator can be mixed in - the allowed patterns are: `P[Y|y][M|m][D|d][T[H|h][M|m][S|s]]` and `P[W|w]`; * the values used in an interval constraint may be negated, i.e. a leading minus (`'-'`) sign may be used. "> ancestors = <"C_PRIMITIVE", ...> properties = < ["years_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"years_allowed"> type = <"Boolean"> > ["months_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"months_allowed"> documentation = <"True if months are allowed in the constrained Duration."> type = <"Boolean"> > ["weeks_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"weeks_allowed"> type = <"Boolean"> > ["days_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"days_allowed"> documentation = <"True if days are allowed in the constrained Duration."> type = <"Boolean"> > ["hours_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"hours_allowed"> documentation = <"True if hours are allowed in the constrained Duration."> type = <"Boolean"> > ["minutes_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"minutes_allowed"> documentation = <"True if minutes are allowed in the constrained Duration."> type = <"Boolean"> > ["seconds_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"seconds_allowed"> type = <"Boolean"> > ["fractional_seconds_allowed"] = (P_BMM_SINGLE_PROPERTY) < name = <"fractional_seconds_allowed"> documentation = <"True if fractional seconds are allowed in the constrained Duration."> type = <"Boolean"> > ["range"] = (P_BMM_GENERIC_PROPERTY) < name = <"range"> documentation = <"Range of Durations specifying constraint."> type_def = < generic_parameters = <"Iso8601_duration", ...> root_type = <"Interval"> > > ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"The value to assume if this item is not included in data, due to being part of an optional structure."> type = <"Iso8601_duration"> > > > ["C_PRIMITIVE"] = < name = <"C_PRIMITIVE"> documentation = <"Parent of types representing constraints on primitive types."> is_abstract = properties = < ["assumed_value"] = (P_BMM_SINGLE_PROPERTY) < name = <"assumed_value"> documentation = <"Value to be assumed if none sent in data."> type = <"Any"> > > functions = < ["default_value"] = < name = <"default_value"> documentation = <"Generate a default value from this constraint object."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Any"> > > ["has_assumed_value"] = < name = <"has_assumed_value"> documentation = <"True if there is an assumed value."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > > ["valid_value"] = < name = <"valid_value"> documentation = <"True if a_value is valid with respect to constraint expressed in concrete instance of this type."> is_abstract = result = (P_BMM_SIMPLE_TYPE) < type = <"Boolean"> > parameters = < ["a_value"] = (P_BMM_SINGLE_FUNCTION_PARAMETER) < name = <"a_value"> type = <"Any"> > > > > invariants = < ["Assumed_value_valid"] = <"has_assumed_value implies valid_value(assumed_value)"> > > >