> For the complete documentation index, see [llms.txt](https://docs.snomed.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.snomed.org/snomed-ct-specifications/snomed-ct-machine-readable-concept-model/4-logical-design.md).

# 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.

<a href="https://docs.google.com/forms/d/e/1FAIpQLScTmbZIf0UEQwYDkY27EEWBkaiYkHSbR0_9DmFrMLXoQLyL7Q/viewform?usp=pp_url&#x26;entry.1767247133=MRCM+Specification&#x26;entry.670899847=Logical%20Design" class="button primary">Provide Feedback</a>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.snomed.org/snomed-ct-specifications/snomed-ct-machine-readable-concept-model/4-logical-design.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
