# Logical Design

## Overview

In this chapter, we describe the logical design of the SNOMED CT MRCM.

Each SNOMED CT Module may have a concept model that is captured using a MRCM. A MRCM contains a set of domains and a set of attributes, which may be applied to one or more domains. The MRCM specifies the cardinality and valid range of each attribute, and indicates whether or not the attribute should be grouped. The domain, range, cardinality and grouped indicator for each attribute is also combined into a single 'attribute rule', which is represented using a SNOMED CT Expression Constraint. For each domain, the set of valid attributes and their associated rules are compiled into two SNOMED CT 'domain templates' – for precoordinated concept authoring and postcoordinated expression authoring respectively. These domain templates may be further specialized to support customized authoring of specific subdomains.

The figure below illustrates the major components of the MRCM described above.

<figure><img src="https://1646579895-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwLJPOzgAQsSAYr6nhvCl%2Fuploads%2Fgit-blob-b05b7522990b4566c538a87f47ee8cb8d8037d9e%2F31987247.png?alt=media" alt=""><figcaption><p>Abstract Model of the SNOMED CT MRCM</p></figcaption></figure>

## Details

The figure below illustrates the logical design of the SNOMED CT MRCM using a UML class diagram.

<figure><img src="https://1646579895-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwLJPOzgAQsSAYr6nhvCl%2Fuploads%2Fgit-blob-50631eed0c8e8407f10989b7782ce85a93be62ec%2F106704702.png?alt=media" alt=""><figcaption><p>Logical Model of the SNOMED CT MRCM</p></figcaption></figure>

This UML class diagram illustrates that a SNOMED CT Edition contains a set of modules, which may each be associated with a set of MRCM domains and attribute rules.

Each domain has exactly one domainConstraint represented using a SNOMED CT Expression Constraint (which specifies the valid concepts in the domain). A domain also has a proximalPrimitiveConstraint (which specifies the domain constraint used for proximal primitive modelling in this domain), a proximalPrimitiveRefinement (which specifies any mandatory refinements that must be applied when proximal primitive modelling in this domain) , a precoordinatedDomainTemplate (which provides a general template of all possible attributes that may be applied to this domain when defining a precoordinated concept), and a postcoordinatedDomainTemplate (which provides a general template of all possible attributes that may be applied to this domain when defining a postcoordinated expression). A domain also includes a reference to where further human-readable information about the domain is captured within the Editorial Guide.

Each attribute rule is associated with a specific rule strength (e.g. [723597001 | Mandatory concept model rule|](http://snomed.info/id/723597001) ) and content type (e.g. [723596005 | All SNOMED CT content|](http://snomed.info/id/723596005) ). An Attribute Rule may either associate an attribute with the domains to which it may be applied (i.e. an Attribute Domain Rule), or it may associate an attribute with the range of valid concepts that may be used as its value (i.e. an Attribute Range Rule). Attribute Domain Rules also define whether or not each attribute is considered to be grouped (by a Description Logic reasoner) for the given domain, and the attribute cardinalities for that domain.
