SDC4 Type Reference

Generated from the reference model (src/rm/sdc4/sdc4.xsd, namespace https://semanticdatacharter.com/ns/sdc4/), the SDCStudio component models and the Component Wizard's type grid by scripts/generate_type_reference.py. It is not edited by hand: a test fails when the schema, the models or the grid change without regenerating it.

How to read it. A type has three names: the label on the Component Wizard's grid, the component model in SDCStudio, and the complex type in the published XSD. Each entry gives what the type is for, what a record carries (In the record: the schema elements, in the schema's own words), and what you set when you create the component (What you set: the model fields, in the wizard's own words). The common elements and fields that every component carries are listed once, below the hierarchy.

The hierarchy

The abstract bases carry the shared elements and fields: XdAny for every value type, XdOrdered for anything with an order (ordinals, dates, quantities), XdQuantified for anything with a magnitude. Cluster and the contextual types sit beside them on Common.

graph TD
  Common --> XdAny
  XdAny --> XdOrdered
  XdOrdered --> XdQuantified
  XdAny --> XdBoolean
  XdAny --> XdLink
  XdAny --> XdString
  XdAny --> XdToken
  XdAny --> XdFile
  XdOrdered --> XdOrdinal
  XdQuantified --> XdCount
  XdQuantified --> XdQuantity
  XdQuantified --> XdFloat
  XdQuantified --> XdDouble
  XdOrdered --> XdTemporal
  XdAny --> XdInterval
  XdAny --> ReferenceRange
  XdAny --> SimpleReferenceRange
  XdAny --> Units
  XdAny --> XdBooleanList
  XdAny --> XdStringList
  XdAny --> XdTokenList
  XdQuantified --> XdDecimalList
  XdQuantified --> XdDoubleList
  XdQuantified --> XdIntegerList
  XdQuantified --> XdNonNegativeIntegerList
  XdQuantified --> XdPositiveIntegerList
  Common --> Cluster
  Common --> Party
  Common --> Participation
  Common --> Audit
  Common --> Attestation

What every component carries

In the record. Every Xd value in a Governed Data Record can carry these elements beside its value. The schema defines them once on XdAnyType:

Element Type Occurs Meaning
label string optional Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be a global XML element name or class name in conventional modeling.
act string optional Access Control Tag. If this is used it must contain a valid term from the Access Control System linked to by the containing Data Model.
ExceptionalValue substitution group many In an invalid instance, the application can indicate here why data is missing or invalid. The sub-types are based on ISO 21090 NULL Flavors entries, with additions noted from real-world usage.
vtb dateTime optional Valid Time Begin. If present this must be a valid datetime including timezone. It is used to indicate the beginning time that information is considered valid.
vte dateTime optional Valid Time End. If present this must be a valid date-time including timezone. It is used to indicate the ending time that information is considered valid or the time the information expired or will expire.
tr dateTime optional Time Recorded. If present this must be a valid date-time. It is used to indicate the the actual date and time the data was recorded.
modified dateTime optional Time Modified. If present this must be a valid date-time stamp. It is used to indicate the the actual date and time the data was last changed.
latitude lattype optional Latitude in decimal format. Value range -90.000000 to 90.000000.
longitude lontype optional Longitude in decimal format. Value range -180.000000 to 180.000000.

What you set. Every component has these fields from Common:

Field Kind What it sets
project one Project Choose the name of your Project.
public yes/no Public components are available to every other modeler. If not public then the component is only visible within the project it was defined in.
label text A human readable label used to identify this model in DMGEN. This will also be used in generated app UI.
description text Enter a free text description for this complexType. Include a usage statement and any possible misuses. This is used as the annotation for the MC and as help text in the UI.
lang a choice Choose the language of this MC.
seq text Enter the sequence number (aka. TabIndex) for this component in the UI. Components nested in a Cluster are grouped together. When two or more components have the same number they will be sorted by label.
validate yes/no Hard validation is when the UI enforces criteria on input fields. Soft validation allows users to input any value, warns them when it is not within parameters of the component. Then offers to allow correction or select an Exceptional Value as explanation.

Every Xd value type adds the XdAny switches that decide which of the common elements a record must or may carry:

Field Kind What it sets
require_act yes/no Check this box to require an Access Control Tag element.
act_class text Enter an Access Control Tag class definition from your chosen vocabulary (e.g., W3C DPV, ISO 27001, custom taxonomy). This value will be included in the ACT element.
require_vtb yes/no Check this box to require a Valid Time Begin element.
require_vte yes/no Check this box to require a Valid Time End element.
require_tr yes/no Check this box to require a Date & Time Recorded element.
require_mod yes/no Check this box to require a Date & Time for last modified element.
require_location yes/no Check this box to require a decimal longitude and latitude location.
ui_type one of choose, input, dropdown, radiogroup, radio, checkbox Choose the preferred UI Type for this component. Use UX best practices. Be aware that the generator may override your selection.
allow_vtb yes/no Check this box to allow a Valid Time Begin element even when not required.
allow_vte yes/no Check this box to allow a Valid Time End element even when not required.
allow_tr yes/no Check this box to allow a Date & Time Recorded element even when not required.
allow_mod yes/no Check this box to allow a Date & Time for last modified element even when not required.
allow_location yes/no Check this box to allow a decimal longitude and latitude location even when not required.

Semantic links. Every component and model carries a set of RDF predicate-object pairs (pred_obj) that link it to terms in published ontologies; they are set on the Semantic Linking step of each wizard. Lifecycle. published locks a component for use in models; retired (with retired_at and retired_reason) hides it from lists and new models while every record made from it stays valid. Neither is edited directly: Save & Publish, Copy and Retire are the controls.

Shared by ordered types (XdOrderedType)

Abstract type defining the concept of ordered values, which includes ordinals as well as true quantities. The implementations require the functions '' and is_strictly_comparable_to ('==').

Element Type Occurs Meaning
ReferenceRange substitution group many Optional list of ReferenceRanges for this value in its particular measurement context.
normal-status string optional Optional normal status indicator of value with respect to normal range for this value. Often included by lab, even if the normal range itself is not included. Coded by ordinals in series HHH, HH, H, (nothing), L, LL, LLL, etc.
Field Kind What it sets
normal_status text Enter text that indicates a normal status. Example: This should be a Symbol in a XdOrdinal, a date range in a XdTemporal, a value range in a XdCount, etc.
simple_rr one SimpleReferenceRange
reference_ranges several ReferenceRange Select the appropriate ReferenceRange that defines each ordered value. The listing is by Project: Reference Range Name.

Shared by quantified types (XdQuantifiedType)

Abstract type defining the concept of true quantified values, i.e. values which are not only ordered, but which have a precise magnitude.

Element Type Occurs Meaning
magnitude-status MagnitudeStatus optional An optional status that describes the relationship of this quantity's value to a contextual target or expected value. The target value itself is not defined here but is known from the context of the measurement, such as a process control limit, a clinical reference range, or a business rule. Example: A temperature sensor reports a value of 140C. If the system's target operational temperature is 160C, the magnitude-status for the 140C reading would be 'less_than'.
accuracy_margin decimal optional Models ACCURACY. Defines the margin of systematic error, representing how close a measurement is to the true value. This value is expressed as a plus-or-minus percentage of the magnitude. For example, a value of '2.5' indicates the true value is within +/- 2.5% of the stated magnitude.
precision_digits nonNegativeInteger optional Models PRECISION. Defines the resolution of the measurement by specifying the number of significant digits after the decimal point. This is especially useful for decimal-based quantities where trailing zeros are significant. For example, a magnitude of '10.50' with a precision_digits of '2' indicates the measurement is precise to the hundredths place.
Field Kind What it sets
min_magnitude decimal The minimum allowed value for a magnitude. If there isn't a min. then leave blank.
max_magnitude decimal Any maximum allowed value. If there isn't a max. then leave blank.
min_inclusive decimal Enter the minimum (inclusive) value for this concept.
max_inclusive decimal Enter the maximum (inclusive) value for this concept.
min_exclusive decimal Enter the minimum (exclusive) value for this concept.
max_exclusive decimal Enter the maximum (exclusive) value for this concept.
total_digits integer Enter the maximum number of digits for this concept, excluding the decimal separator and the decimal places.
require_ms yes/no MagnitudeStatus provides a general indication of the accuracy of the magnitude expressed in the XdQuantified subtypes. Should be used to inform users and not for decision support uses.
require_error yes/no Error margin of measurement, indicating error in the recording method or instrument (+/- %). A logical value of 0 indicates 100% accuracy, i.e. no error.
require_accuracy yes/no Accuracy of the value in the magnitude attribute in the range 0% to (+/-)100%. A value of 0 means that the accuracy is unknown.
allow_ms yes/no Allow a UI component for this element even if it is not required.
allow_error yes/no Allow a UI component for this element even if it is not required.
allow_accuracy yes/no Allow a UI component for this element even if it is not required.

Data Types

The twelve value types. Each carries one value (or, for Temporal, one of nine representations) plus what every component carries.

Wizard label Model The grid says
String XdString Text values with optional length and format constraints
Boolean XdBoolean True/false values with custom labels
Count XdCount Integer values with magnitude constraints
Quantity XdQuantity Decimal values with units and precision
Temporal XdTemporal Date, time, datetime, and duration values
Float XdFloat Single-precision floating point values
Double XdDouble Double-precision floating point values
Ordinal XdOrdinal Ordered/ranked categorical values
Link XdLink URI references to external resources
File XdFile File/media content with encoding metadata
Token XdToken Tokenized string values (no whitespace)
Interval XdInterval Bounded ranges with upper/lower limits

String (XdString)

Use it for. Free text and coded text: names, addresses, notes, and any pick-list without an inherent order. The permitted values are bound into the component, so the list stops being validation on one sheet and becomes part of the definition everyone inherits.

In the schema: XdStringType, extending XdAnyType. Inherits XdAny.

The string data type can contain characters, line feeds, carriage returns, and tab characters. The use cases are for any free form text entry or for any enumerated lists. Additionally the minimum and maximum lengths may be set and regular expression patterns may be specified.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdstring-value string optional The string value of the item.
xdstring-language language optional Optional indicator of the localized language in which this data-type is written. Used when the language used here is different from the enclosing Data Model.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_length integer Enter the minimum number of characters that are required for this string. If the character is optional, leave it blank.
max_length integer Enter the maximum number of characters that are required for this string. If the character is optional, leave it blank.
exact_length integer Enter the exact length of the string. It should be defined only when the number of characters is always fixed (e.g. codes and identifiers).
enums text, one per line Enter the set of values of the string (e.g.Male,Female). One per line.
enum_descr text, one per line Enter the set of descriptions for the enumerations. One per line.
definitions text, one per line Enter a URI (preferably a URL) defining each enumeration. One per line.
def_val text Enter a default value (up to 255 characters) for the string if desired. Cannot contain 'http://' nor 'https://'. Notice that if other restrictions are used, this default is ignored.
str_fmt text Enter a regular expression used to constrain the string to a specific format. See the XML reduced regex set here: https://uibakery.io/regex-library/xml

Boolean (XdBoolean)

Use it for. A yes-or-no with both answers named: Granted and Denied, not 1 and 0. Six months later nobody has to ask what the 1 meant.

In the schema: XdBooleanType, extending XdAnyType. Inherits XdAny.

An enumerated type which represents boolean decisions. Such as true/false or yes/no answers. Useful where it is essential to devise the meanings (often questions in subjective data) carefully so that the only allowed result values result in one the options; true or false but are presented to the user as a list of options. The possible choices for True or False are enumerations in the DM. The reference model defines 'true-value' and 'false-value' in an xsd:choice so only one or the other may be present in the instance data. The XdBooleanType should not be used as a replacement for enumerated choice types such as male/female, or similar choice sets. Such values should be modeled as XdStrings with enumerations and may reference a controlled vocabulary. In any case, the choice set often has more than two values. The elements, 'true-value' and 'false-value' are contained in an xsd:choice and only one or the other is instantiated in the instance data with its value coming from the enumerations defined in a Data Model.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
true-value string one of A string that represents a boolean True in the implementation. These are constrained by a set of enumerations in the CM.
false-value string one of A string that represents a boolean False in the implementation. These are constrained by a set of enumerations in the CM.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
trues text, one per line Enter the set of values that are Boolean TRUEs. For instance, if this is a 'Yes/No' type of concept, usually the 'Yes' is a Boolean TRUE. Enter one per line.
falses text, one per line Enter the set of values that are Boolean FALSEs. For instance, if this is a 'Yes/No' type of concept, usually the 'No' is a Boolean FALSE. Enter one per line.

Count (XdCount)

Use it for. Counting discrete things: pallets, visits, employees, doses dispensed. Always a whole number, and it carries its own unit, so the value is not 17 but 17 pallets.

In the schema: XdCountType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

Countable quantities. Used for countable types such as pregnancies and steps (taken by a physiotherapy patient), number of cigarettes smoked in a day, etc. The thing(s) being counted must be represented in the units element. Misuse:Not used for amounts of physical entities (which all have standardized units).

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdcount-value integer optional Integer value of the counted items.
xdcount-units XdStringType required The name or type of the items counted. Examples are cigarettes, drinks, pregnancies, episodes, widgets, etc. May or may not come from a standard terminology.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
units one Units Choose a units of measurement of this concept.

Quantity (XdQuantity)

Use it for. Measuring something, with required units: 2.5 kg, 120 mmHg, 499.00 USD. If a value can be halved and still mean something it is a measurement. Money is a Quantity and the currency is the unit.

In the schema: XdQuantityType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

Quantified type representing specific quantities, i.e. quantities expressed as a magnitude and units. Can also be used for time durations, where it is more convenient to treat these as simply a number of individual seconds, minutes, hours, days, months, years, etc. when no temporal calculation is to be performed.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdquantity-value decimal optional Numeric decimal value of the quantity.
xdquantity-units XdStringType required The name or type of the quantity. Examples are "kg", "mmHg", "ms-1", "km/h". Should come from a standard terminology.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
fraction_digits integer Enter the maximum number of decimal places.
units one Units Choose a units of measurement of this concept.

Temporal (XdTemporal)

Use it for. Dates and times at a deliberate granularity: a date of birth is a date, an event is a date and a time, a lease is a duration. Saying which one you mean stops the receiving system inventing midnight.

In the schema: XdTemporalType, extending XdOrderedType. Inherits XdOrdered, XdAny.

Type defining a temporal value. It allows for varying levels of precision by offering a choice of exactly one temporal representation, from a full dateTime to a partial date like a year-month. In a Data Model, this type is constrained via restriction to a subset of the choices, allowing the modeler to define precisely which temporal representations are permitted for a given field (e.g., allowing only xsd:date or xsd:gYearMonth for a date of birth).

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdtemporal-date date one of Represents a specific calendar date (YYYY-MM-DD), with an optional timezone.
xdtemporal-time time one of Represents a recurring time of day (hh:mm:ss.sss), with an optional timezone.
xdtemporal-datetime dateTime one of Represents a specific instant in time (YYYY-MM-DDThh:mm:ss.sss), with an optional timezone.
xdtemporal-duration duration one of Represents a duration of time as defined by ISO 8601 (e.g., P1Y2M3D).
xdtemporal-year gYear one of Represents a specific Gregorian calendar year (YYYY).
xdtemporal-year-month gYearMonth one of Represents a specific Gregorian month in a specific year (YYYY-MM).
xdtemporal-month gMonth one of Represents a recurring Gregorian month (--MM--).
xdtemporal-month-day gMonthDay one of Represents a recurring Gregorian day in a recurring month (--MM-DD).
xdtemporal-day gDay one of Represents a recurring Gregorian day (---DD).

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
allow_duration yes/no If Duration is allowed, no other types will be permitted.
allow_date yes/no Check this box if complete date entry is allowed.
allow_time yes/no Check this box if time only entry is allowed.
allow_datetime yes/no Check this box if complete dates and times are allowed.
allow_day yes/no Check this box if day only is allowed.
allow_month yes/no Check this box if month only is allowed.
allow_year yes/no Check this box if year only entry is allowed.
allow_year_month yes/no Check this box if combination of years and months are allowed.
allow_month_day yes/no Check this box if combination of months and days are allowed.

Float (XdFloat)

Use it for. A 32-bit IEEE floating-point value with optional units, for scientific and engineering data where that representation is the right one. Not for money or business measures: those are Quantities.

In the schema: XdFloatType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

Quantified type representing specific a value as a floating point (32 bit) number and optional units. This is a xsd:float.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdfloat-value float optional Float value. This type accepts several "special" values: positive zero (0), negative zero (-0) (which is greater than positive 0 but less than any negative value), infinity (INF) (which is greater than any value), negative infinity (-INF) (which is less than any float, and "not a number" (NaN)
xdfloat-units XdStringType optional The name or type of the float value. May or may not come from a standardized vocabulary.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
units one Units Choose a units of measurement of this concept.

Double (XdDouble)

Use it for. A 64-bit IEEE floating-point value with optional units, for scientific and engineering data where that representation is the right one. Not for money or business measures: those are Quantities.

In the schema: XdDoubleType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

Quantified type representing specific a value as a 64 bit number and optional units. This is a xsd:double.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xddouble-value double optional Double value. This type accepts several "special" values: positive zero (0), negative zero (-0) (which is greater than positive 0 but less than any negative value), infinity (INF) (which is greater than any value), negative infinity (-INF) (which is less than any float, and "not a number" (NaN)
xddouble-units XdStringType optional The name or type of the value. May or may not come from a standardized vocabulary.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
units one Units Choose a units of measurement for this concept.

Ordinal (XdOrdinal)

Use it for. Ordered categories: mild, moderate, severe; bronze, silver, gold. Carries the symbol a person reads and the rank a machine sorts by, and each symbol can point at its definition.

In the schema: XdOrdinalType, extending XdOrderedType. Inherits XdOrdered, XdAny.

Models rankings and scores, e.g., pain, Apgar values, educational level, and the Likert Scale where there is; * implied ordering, * no implication that the distance between each value is constant, and * the total number of values is finite. Note that the term 'ordinal' in mathematics means natural numbers only. In this case, any decimal is allowed since negative, and zero values are used by medical and other professionals for centering values around a neutral point. Also, decimal values are sometimes used such as 0.5 or .25 Examples of sets of ordinal values are; * -3, -2, -1, 0, 1, 2, 3 -- reflex response values * 0, 1, 2 -- Apgar values Also used for recording any clinical or other data which is customarily recorded using symbolic values. Examples; * the results on a urinalysis strip, e.g. {neg, trace, +, ++, +++} are used for leukocytes, protein, nitrites etc; * for non-haemolysed blood {neg, trace, moderate}; * for haemolysed blood {neg, trace, small, moderate, large}. Elements ordinal and symbol MUST have the same number of enumerations in the RMC.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
ordinal decimal required Value in ordered enumeration of values. The base integer is zero with any number of integer values used to order the symbols. Example 1: 0 = Trace, 1 = +, 2 = ++, 3 = +++, etc. Example 2: 0 = Mild, 1 = Moderate, 2 = Severe
symbol string required Coded textual representation of this value in the enumeration, which may be strings made from "+", or other enumerations of terms such as "mild", "moderate", "severe", or even the same number series as the values, e.g. "1", "2", "3".

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
ordinals text, one per line Enter the ordered enumeration of values. The base integer is zero with any number of integer values used to order the symbols. Example A: 0 = Trace, 1 = +, 2 = ++, 3 = +++, etc. Example B: 0 = Mild, 1 = Moderate, 2 = Severe. One per line.
symbols text, one per line Enter the symbols or the text that represent the ordinal values, which may be strings made from '+' symbols, or other enumerations of terms such as 'mild', 'moderate', 'severe', or even the same number series used for the ordinal values, e.g. '1', '2', '3'.. One per line.
annotations text, one per line Enter a URI for as a definition for each symbol. One per line. If the URI is the same for each symbol then just put it on the first line.

Use it for. A reference to another record or resource that carries the relationship in words (this document is the subject_of that one) rather than as a bare foreign key.

In the schema: XdLinkType, extending XdAnyType. Inherits XdAny.

Used to specify a Universal Resource Identifier. Set the pattern facet to accommodate your needs in the DM. Intended use is to provide a mechanism that can be used to link together Data Models. The relation element allows for the use of a descriptive term for the link with an optional URI pointing to the source vocabulary. In most usecases the modeler will define all three of these using the 'fixed' attribute. Other usecases will have the 'relation' and 'relation-uri' elements fixed and the application will provide the 'link-value'.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
link anyURI optional A dereferenceable (or not) URL to another CMC or other model like entity.
relation string required A required term, normally drawn from a vocabulary or ontology such as the OBO RO.
relation-uri anyURI optional A URI where the definition of the relation element term can be found. Normally points to an ontology such as the OBO RO http://purl.obolibrary.org/obo/ro.owl

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
link text The Link URI that points to the linked item.
relation text The relationship describing the link. Usually constrained by an ontology such as OBO RO.
relation_uri text The relationship URI. Points to the vocabulary, ontology, etc that provides the relation.

File (XdFile)

Use it for. A file or media item, embedded in the record or referenced by URI, with its media type, encoding, size and hash.

In the schema: XdFileType, extending XdAnyType. Inherits XdAny.

A type to use for encapsulated content (aka. files) for image, audio and other media types with a defined MIME type. This type provides a choice of embedding the content into the data or using a URL to point to the content.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
size integer optional Original size in bytes of unencoded encapsulated data. I.e. encodings such as base64, hexadecimal, etc. do not change the value of this element.
encoding string optional Name of character encoding scheme in which this value is encoded. Coded from the IANA charcater set table: http://www.iana.org/assignments/character-sets Unicode is the default assumption in S3Model, with UTF-8 being the assumed encoding. This element allows for variations from these assumptions.
xdfile-language language optional Optional indicator of the localized language of the content. Typically remains optional in the CMC and used at runtime when the content is in a different language from the enclosing CMC.
formalism string optional Name of the formalism or syntax used to inform an application regarding a candidate parser to use on the content. Examples might include: 'ATL', 'MOLA', 'QVT', 'GDL', 'GLIF', etc.
media-type string optional Media (MIME) type of the original media-content w/o any compression. See IANA registered types: http://www.iana.org/assignments/media-types/media-types.xhtml
compression-type string optional Compression/archiving mime-type. If this elements does not exist then it means there is no compression/archiving. For a list of common mime-types for compression/archiving see: http://en.wikipedia.org/wiki/List_of_archive_formats.
hash-result string optional Hash function result of the 'media-content'. There must be a corresponding hash function type listed for this to have any meaning. See: http://en.wikipedia.org/wiki/List_of_hash_functions#Cryptographic_hash_functions
hash-function string optional Hash function used to compute hash-result. See: http://en.wikipedia.org/wiki/List_of_hash_functions#Cryptographic_hash_functions
alt-txt string optional Text to display in lieu of multimedia display or execution.
uri anyURI one of URI reference to electronic information stored outside the record as a file, database entry etc, if supplied as a reference.
media-content base64Binary one of The content, if stored locally. The CMC modeler chooses either a uri or local content element.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
media_type text, one per line The allowed Media Types (formerly known as MIME Types) of the included data, one per line; i.e. text/html
encoding text List of encoding types at IANA.
language a choice Choose the DEFAULT language of the content.
alt_txt text Default alternative text label to display when the content cannot be displayed.
content_mode one of select, url, embed Select how the content will referenced, either via a URL or included in the data instance.

Token (XdToken)

Use it for. Codes and identifiers: an SKU, an ICD-10 code, a policy number. Leading, trailing and repeated whitespace is normalized, so a stray space in one system never makes the same code fail to match.

In the schema: XdTokenType, extending XdAnyType. Inherits XdAny.

The token data type represents normalized strings where leading and trailing whitespace is removed and internal whitespace is normalized to single spaces. This type is useful for identifiers, codes, and other normalized text values that should not contain excessive whitespace. The use cases are for identifiers, codes, enumerated values, and other normalized text entries.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdtoken-value token optional The token value of the item. This is a normalized string where leading and trailing whitespace is removed and internal whitespace is normalized to single spaces.
xdtoken-language language optional Optional indicator of the localized language in which this data-type is written. Used when the language used here is different from the enclosing Data Model.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_length integer Enter the minimum number of characters that are required for this token. If the token is optional, leave it blank.
max_length integer Enter the maximum number of characters that are required for this token. If the token is optional, leave it blank.
exact_length integer Enter the exact length of the token. It should be defined only when the number of characters is always fixed (e.g. codes and identifiers).
enums text, one per line Enter the set of values of the token (e.g. Male,Female). One per line.
enum_descr text, one per line Enter the set of descriptions for the enumerations. One per line.
definitions text, one per line Enter a URI (preferably a URL) defining each enumeration. One per line.
def_val text Enter a default value (up to 255 characters) for the token if desired. Cannot contain 'http://' nor 'https://'. Notice that if other restrictions are used, this default is ignored.
str_fmt text Enter a regular expression used to constrain the token to a specific format. See the XML reduced regex set here: https://uibakery.io/regex-library/xml
language a choice Choose the language of this token type.

Interval (XdInterval)

Use it for. A bounded range of ordered values: integers, decimals, floats, doubles, dates, times, date-times or durations. Used mostly as the interval of a reference range.

In the schema: XdIntervalType, extending XdAnyType. Inherits XdAny.

A generic type for defining an interval (i.e., range) of ordered values. It is primarily used to define reference ranges for quantified data.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
lower InvlType optional The lower boundary of the interval. Must be of the same datatype as the 'upper' boundary.
upper InvlType optional The upper boundary of the interval. Must be of the same datatype as the 'lower' boundary.
lower_included boolean required
upper_included boolean required
lower_bounded boolean required
upper_bounded boolean required
interval-units InvlUnits optional

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
lower text Enter the lower value of the interval. This will be used to set the minInclusive facet.
upper text Enter the upper value of the interval. This will be used to set the maxInclusive facet.
interval_type one of None, int, decimal, float, dateTime, date, time, duration The datatype of the upper and lower values.
lower_included yes/no Uncheck this box if the lower value is excluded in the interval
upper_included yes/no Uncheck this box if the upper value is excluded in the interval
lower_bounded yes/no Uncheck this box if the lower value is unbounded. If unchecked, instances must be set to xsi:nil='true'
upper_bounded yes/no Uncheck this box if the lower value is unbounded. If unchecked, instances must be set to xsi:nil='true'
units_name text OPTIONAL: Enter the common name or abbreviation for these units.
units_uri text Enter the URL pointing to the definition for these units. This is mandatory if you entered a Units Name.

List Types

The eight list types carry several values of one kind in one component. In the record the values are one space-delimited string; the model sets how many items, whether duplicates are allowed and whether order matters. The five numeric lists are quantified: they carry units and magnitude constraints like their scalar counterparts.

Wizard label Model The grid says
Boolean List XdBooleanList List of boolean values
String List XdStringList List of string values
Token List XdTokenList List of token values
Decimal List XdDecimalList List of decimal values with units
Double List XdDoubleList List of double values with units
Integer List XdIntegerList List of integer values with units
Non-Negative Int List XdNonNegativeIntegerList List of non-negative integers
Positive Int List XdPositiveIntegerList List of positive integers

Boolean List (XdBooleanList)

Use it for. Several yes-or-no flags of one kind in one component, space-delimited in the record.

In the schema: XdBooleanListType, extending XdAnyType. Inherits XdAny.

A data type for a white space-delimited list of boolean values. This type provides efficient storage and transmission of multiple boolean values in a single field. Useful for scientific measurements, batch processing results, and other scenarios where multiple related boolean values need to be transmitted together.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdbooleanlist-value BooleanListSimpleType optional Space-delimited list of boolean values. Values should be 'true' or 'false' separated by single spaces.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.

String List (XdStringList)

Use it for. Several text values of one kind in one component: tags, aliases, keywords.

In the schema: XdStringListType, extending XdAnyType. Inherits XdAny.

A data type for a white space-delimited list of string values. This type provides efficient storage and transmission of multiple string values in a single field. Useful for identifiers, codes, and other scenarios where multiple related string values need to be transmitted together.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdstringlist-value StringListSimpleType optional Space-delimited list of string values. Values should be valid strings separated by single spaces.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.

Token List (XdTokenList)

Use it for. Several codes of one kind in one component, each normalized as a Token is.

In the schema: XdTokenListType, extending XdAnyType. Inherits XdAny.

A data type for a white space-delimited list of normalized token values. This type provides efficient storage and transmission of multiple normalized token values in a single field. Useful for identifiers, codes, and other scenarios where multiple related normalized token values need to be transmitted together. Token values have leading and trailing whitespace removed and internal whitespace normalized to single spaces.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdtokenlist-value TokenListSimpleType optional Space-delimited list of normalized token values. Values should be valid tokens separated by single spaces. Token values have leading and trailing whitespace removed and internal whitespace normalized to single spaces.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.

Decimal List (XdDecimalList)

Use it for. Several decimal readings of one kind with one set of units: a series of measurements.

In the schema: XdDecimalListType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

A data type for a white space-delimited list of decimal values. This type provides efficient storage and transmission of multiple decimal values in a single field. Useful for scientific measurements, statistical data, and other scenarios where multiple related decimal values need to be transmitted together. All values in the list share the same units.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xddecimallist-value DecimalListSimpleType optional Space-delimited list of decimal values. Values should be valid decimal numbers separated by single spaces.
xddecimallist-units XdStringType required The name or type of the decimal list values. Examples are "kg", "mmHg", "ms-1", "km/h". Should come from a standard terminology. All values in the list share these units.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.
units text The units for all values in this list (e.g., 'degrees Celsius', 'counts per second')

Double List (XdDoubleList)

Use it for. Several double-precision readings of one kind with one set of units.

In the schema: XdDoubleListType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

A data type for a white space-delimited list of double precision values. This type provides efficient storage and transmission of multiple double values in a single field. Useful for scientific measurements, mathematical computations, and other scenarios where multiple related double precision values need to be transmitted together. All values in the list share the same units.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xddoublelist-value DoubleListSimpleType optional Space-delimited list of double precision values. Values should be valid double numbers separated by single spaces.
xddoublelist-units XdStringType required The name or type of the double list values. Examples are "kg", "mmHg", "ms-1", "km/h". Should come from a standard terminology. All values in the list share these units.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.
units text The units for all values in this list (e.g., 'degrees Celsius', 'counts per second')

Integer List (XdIntegerList)

Use it for. Several whole numbers of one kind with one set of units.

In the schema: XdIntegerListType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

A data type for a white space-delimited list of integer values. This type provides efficient storage and transmission of multiple integer values in a single field. Useful for counts, indices, and other scenarios where multiple related integer values need to be transmitted together. All values in the list share the same units.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdintegerlist-value IntegerListSimpleType optional Space-delimited list of integer values. Values should be valid integers separated by single spaces.
xdintegerlist-units XdStringType required The name or type of the integer list values. Examples are "items", "counts", "indices". Should come from a standard terminology. All values in the list share these units.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.
units text The units for all values in this list (e.g., 'degrees Celsius', 'counts per second')

Non-Negative Int List (XdNonNegativeIntegerList)

Use it for. Several whole numbers of one kind that cannot be negative, with one set of units.

In the schema: XdNonNegativeIntegerListType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

A data type for a white space-delimited list of non-negative integer values. This type provides efficient storage and transmission of multiple non-negative integer values in a single field. Useful for counts, indices, and other scenarios where multiple related non-negative integer values need to be transmitted together. All values in the list share the same units.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdnonnegativeintegerlist-value NonNegativeIntegerListSimpleType optional Space-delimited list of non-negative integer values. Values should be valid non-negative integers separated by single spaces.
xdnonnegativeintegerlist-units XdStringType required The name or type of the non-negative integer list values. Examples are "items", "counts", "indices". Should come from a standard terminology. All values in the list share these units.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.
units text The units for all values in this list (e.g., 'degrees Celsius', 'counts per second')

Positive Int List (XdPositiveIntegerList)

Use it for. Several whole numbers of one kind that must be greater than zero, with one set of units.

In the schema: XdPositiveIntegerListType, extending XdQuantifiedType. Inherits XdQuantified, XdOrdered, XdAny.

A data type for a white space-delimited list of positive integer values. This type provides efficient storage and transmission of multiple positive integer values in a single field. Useful for counts, indices, and other scenarios where multiple related positive integer values need to be transmitted together. All values in the list share the same units.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdpositiveintegerlist-value PositiveIntegerListSimpleType optional Space-delimited list of positive integer values. Values should be valid positive integers separated by single spaces.
xdpositiveintegerlist-units XdStringType required The name or type of the positive integer list values. Examples are "items", "counts", "indices". Should come from a standard terminology. All values in the list share these units.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_items integer Enter the minimum number of items that are required for this list. If the list is optional, leave it blank.
max_items integer Enter the maximum number of items that are allowed for this list. If the list has no upper limit, leave it blank.
exact_items integer Enter the exact number of items required for this list. It should be defined only when the number of items is always fixed.
allow_duplicates yes/no Check this box to allow duplicate values in the list. Uncheck to enforce unique values only.
ordered yes/no Check this box if the order of items in the list is significant and should be preserved.
units text The units for all values in this list (e.g., 'degrees Celsius', 'counts per second')

Structural

The two types that give a record its shape.

Wizard label Model The grid says
Cluster Cluster Group components into hierarchical structures
Units Units Define measurement units for quantified types

Cluster

Use it for. The grouping. A Governed Data Record is a Cluster of components and smaller clusters, and a data model names one Cluster as its structure.

In the schema: ClusterType, extending ItemType.

The grouping component, which may contain further instances of itself or any eXtended datatype, in an ordered list. This can serve as the root component for arbitrarily complex structures.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
label string optional Descriptive subject line for this group of CMCs.
Item substitution group many List of ItemTypes which may be XdAdapterTypes and/or ClusterTypes.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
asserts text, one per line XPath assert statements applied to this Cluster. One per line. These enable cross-field validation within the Cluster.
clusters several Cluster Select zero or more Clusters to include in this Cluster. You cannot put a Cluster inside itself, it will be ignored if you select itself.
xdboolean several XdBoolean Select zero or more booleans to include in this Cluster.
xdlink several XdLink Select zero or more uris to include in this Cluster.
xdstring several XdString Select zero or more strings to include in this Cluster.
xdtoken several XdToken Select zero or more tokens to include in this Cluster.
xdfile several XdFile Select zero or more media items to include in this Cluster.
xdordinal several XdOrdinal Select zero or more ordinals to include in this Cluster.
xdcount several XdCount Select zero or more counts to include in this Cluster.
xddouble several XdDouble Select zero or more doubles to include in this Cluster.
xdquantity several XdQuantity Select zero or more quantity items to include in this Cluster.
xdfloat several XdFloat Select zero or more floats to include in this Cluster.
xdtemporal several XdTemporal Select zero or more temporal items to include in this Cluster.
xdbooleanlist several XdBooleanList Select zero or more boolean lists to include in this Cluster.
xddecimallist several XdDecimalList Select zero or more decimal lists to include in this Cluster.
xddoublelist several XdDoubleList Select zero or more double lists to include in this Cluster.
xdintegerlist several XdIntegerList Select zero or more integer lists to include in this Cluster.
xdnonnegativeintegerlist several XdNonNegativeIntegerList Select zero or more non-negative integer lists to include in this Cluster.
xdpositiveintegerlist several XdPositiveIntegerList Select zero or more positive integer lists to include in this Cluster.
xdstringlist several XdStringList Select zero or more string lists to include in this Cluster.
xdtokenlist several XdTokenList Select zero or more token lists to include in this Cluster.

Units

Use it for. The permitted units for a quantified component, published as a string type with the unit names as its enumeration. Count, Quantity, Float, Double and the numeric lists each point at a Units component.

In the schema: XdStringType, extending XdAnyType. Inherits XdAny.

The string data type can contain characters, line feeds, carriage returns, and tab characters. The use cases are for any free form text entry or for any enumerated lists. Additionally the minimum and maximum lengths may be set and regular expression patterns may be specified.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
xdstring-value string optional The string value of the item.
xdstring-language language optional Optional indicator of the localized language in which this data-type is written. Used when the language used here is different from the enclosing Data Model.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
min_length integer Enter the minimum number of characters that are required for this concept. If the character is optional, leave it blank.
max_length integer Enter the maximum number of characters that are required for this concept. If the character is optional, leave it blank.
exact_length integer Enter the exact length of the concept. It should be defined only when the number of characters is always fixed (e.g. codes and identifiers).
enums text, one per line Enter the abbreviations or symbols for allowed units designations. One per line.
enum_descr text, one per line Enter the set of descriptions for the symbols. One per line.
def_val text Enter a default value (up to 255 characters) for the string if desired. Cannot contain 'http://' nor 'https://'
definitions text, one per line Enter a URI for each symbol. One per line. These are used as rdf:isDefinedBy in the semantics.
str_fmt text Enter a regular expression used to constrain the string to a specific format. See the XML reduced regex set here: https://uibakery.io/regex-library/xml

Contextual

The four types that say who, where and when. They are not Xd types: they carry no exceptional values, valid-time or location elements of their own, only a label and their own fields.

Wizard label Model The grid says
Party Party Person or organization entity
Participation Participation Participant role definition
Audit Audit Audit trail record
Attestation Attestation Attestation/certification record

Party

Use it for. A person or organization: the subject of a record, a provider, a committer, with an optional link to an identity system and an optional details cluster.

In the schema: PartyType.

Description of a party, including an optional external link to data for this party in a demographic or other identity management system. An additional details element provides for the inclusion of information related to this party directly. If the party information is to be anonymous then do not include the details element.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
label string optional Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be XML element name or class name in conventional modeling.
party-name string optional Optional human-readable name (in String form).
party-ref XdLinkType optional Optional reference to more detailed demographic or identification information for this party, in an external system.
party-details ClusterType optional A structured element for details about the party.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
details one Cluster A Cluster structure that defines the details of this Party.
external_ref several XdLink Optional XdLink(s) that point to a description of this Party in other services.

Participation

Use it for. Who took part in the activity a record describes, in what function and mode, and when.

In the schema: ParticipationType.

Model of a participation of a Party (any Actor or Role) in an activity. Used to represent any participation of a Party in some activity, which is not explicitly in the model, e.g. assisting nurse. Can be used to record past or future participations.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
label string optional Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be XML element name or class name in conventional modeling.
performer PartyType optional The id and possibly demographic system link of the party that represents the primary provider of services in the activity.
function XdStringType optional The function of the performer in this participation. In some applications this might be called a Role.
mode XdStringType optional The mode of the performer / activity interaction, e.g. present, by telephone, by email etc. If the participation is by device or software it may contain a protocol standard or interface definition.
start dateTime optional The beginning datetime when the participation took place.
end dateTime optional The ending datetime when the participation took place.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
performer one Party The Party instance and possibly demographic system link of the party participating in the activity.
function one XdString The function of the Party in this participation (note that a given party might participate in more than one way in a particular activity). In some applications this might be called a Role.
mode one XdString The mode of the performer / activity interaction, e.g. present, by telephone, by email etc. If the participation is by device or software it may contain a protocol standard or interface definition.

Audit

Use it for. The who, where and when of a record as it moves from system to system.

In the schema: AuditType.

AuditType provides a mechanism to identify the who/where/when tracking of instances as they move from system to system.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
label string optional Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be XML element name or class name in conventional modeling.
system-id XdStringType required Identifier of systems which created or handled the information item. 'Systems' can also be defined as an individual application or a data repository in which the data was manipulated.
system-user PartyType optional User(s) who created, committed, forwarded or otherwise handled the item.
location ClusterType optional Location information of the particular site/facility within an organization which handled the item.
timestamp dateTime required Timestamp of handling the item.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
system_id one XdString Identifier of the system which handled the information item.
system_user one Party A model for user(s) who created, committed, forwarded or otherwise handled the item.
location one Cluster A Cluster for location information.

Attestation

Use it for. A party's attestation of a record's content: the reason, the proof, the committer, whether it is still pending.

In the schema: AttestationType.

Record an attestation by a party of the DM content. The type of attestation is recorded by the reason attribute, which my be coded.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
label string optional Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be XML element name or class name in conventional modeling.
view XdFileType optional Optional visual representation of content attested e.g. screen image.
proof XdFileType optional Proof of attestation such as an GPG signature.
reason XdStringType optional Reason of this attestation. Usually coded from a standardized vocabulary.
committer PartyType optional Identity of person who committed the item.
committed dateTime optional Timestamp of committal of the item.
pending boolean required True if this attestation is outstanding; 'false' means it has been completed.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
view one XdFile Select a model for the recorded view that is being attested.
proof one XdFile Select a model for the proof of attestation such as an GPG signature.
reason one XdString Select a model for the reason.
committer one Party The Party that commited the Attestation.

Reference ranges and intervals

Any ordered value can carry reference ranges (normal, critical, therapeutic), each with an interval. In SDCStudio a ReferenceRange points at a separate Interval component; a SimpleReferenceRange carries its interval inline and publishes as the same schema type. Neither is on the wizard's grid; both are created from a quantified component's reference-range settings.

Reference Range (ReferenceRange)

Use it for. A named range (normal, critical, therapeutic) for an ordered value, with its interval as a separate Interval component.

In the schema: ReferenceRangeType, extending XdAnyType. Inherits XdAny.

Defines a named range to be associated with any ORDERED datatype. Each such range is sensitive to the context, e.g. sex, age, location, and any other factor which affects ranges. May be used to represent high, low, normal, therapeutic, dangerous, critical, etc. ranges that are constrained by an interval.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
definition string required Term whose value indicates the meaning of this range, e.g. 'normal', 'critical', 'therapeutic' etc.
interval XdIntervalType required The data range for this reference range.
is-normal boolean required True if this reference range defines values that are considered to be normal. In the context of the value in the definition element.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
definition text Enter the term that indicates the status of this range, e.g. 'normal', 'critical', 'therapeutic' etc.
interval one XdInterval The data range for this meaning. Select the appropriate XdInterval.
is_normal yes/no Is this considered the normal range?

Simple Reference Range (SimpleReferenceRange)

Use it for. A named range with its interval written in the same component. Published as a ReferenceRange.

In the schema: ReferenceRangeType, extending XdAnyType. Inherits XdAny.

Defines a named range to be associated with any ORDERED datatype. Each such range is sensitive to the context, e.g. sex, age, location, and any other factor which affects ranges. May be used to represent high, low, normal, therapeutic, dangerous, critical, etc. ranges that are constrained by an interval.

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
definition string required Term whose value indicates the meaning of this range, e.g. 'normal', 'critical', 'therapeutic' etc.
interval XdIntervalType required The data range for this reference range.
is-normal boolean required True if this reference range defines values that are considered to be normal. In the context of the value in the definition element.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
definition text Enter the term that indicates the status of this range, e.g. 'normal', 'critical', 'therapeutic' etc.
lower text Enter the lower value of the interval. This will be used to set the minInclusive facet.
upper text Enter the upper value of the interval. This will be used to set the maxInclusive facet.
interval_type one of None, int, decimal, float, dateTime, date, time, duration The XML Schema datatype of the upper and lower values.
lower_included yes/no Uncheck this box if the lower value is excluded in the interval
upper_included yes/no Uncheck this box if the upper value is excluded in the interval
lower_bounded yes/no Uncheck this box if the lower value is unbounded. If unchecked, instances must be set to xsi:nil='true'
upper_bounded yes/no Uncheck this box if the lower value is unbounded. If unchecked, instances must be set to xsi:nil='true'
units_name text OPTIONAL: Enter the common name or abbreviation for these units.
units_uri text Enter the URL pointing to the definition for these units. This is mandatory if you entered a Units Name.
is_normal yes/no Is this considered the normal range?

The interval boundary (InvlType) and its units (InvlUnits)

Defines the set of permissible, comparable datatypes that can be used as the boundary for an interval. In a Data Model, this type is constrained to a single choice (e.g., only 'invl-decimal').

Element Type Occurs Meaning
invl-int integer one of
invl-decimal decimal one of
invl-float float one of
invl-double double one of
invl-date date one of
invl-time time one of
invl-dateTime dateTime one of
invl-duration duration one of

The units designation for an Interval. This is composed of a units name and a URI because a ReferenceRange can contain intervals with different units (e.g., a temperature range in Celsius and another in Fahrenheit).

Element Type Occurs Meaning
units-name string required
units-uri anyURI required

The Data Model

Data Model (DM)

Use it for. The data model: the root of a Governed Data Record, carrying the structure (one Cluster), the parties, the provenance, the Dublin Core description and the assertions.

In the schema: DMType.

This is the root node of a Data Model (DM).

In the record (the elements this type adds; every Xd type also carries the common elements below):

Element Type Occurs Meaning
dm-label string required Descriptive name of this datatype model. Provides the semantic 'name' for the model. Replaces what would be XML element name, column name or class name in other modeling paradigms.
dm-language language required Mandatory indicator of the localized language in which this DM is written. The value space of language is the set of all strings that are valid language identifiers as defined [RFC 3066].
dm-encoding string required Name of character set encoding in which text values in this DM are encoded. Default is utf-8.
creation_timestamp dateTime optional An optional run-time timestamp that indicates the exact moment this specific data instance was created or generated. This element provides a definitive point-in-time reference for the data payload itself. It is distinct from the design-time Dublin Core metadata which describes the model definition. This timestamp is crucial for data versioning, caching, and synchronization in distributed systems.
instance_id string required A mandatory, globally unique identifier for this specific data instance. The SDC ecosystem uses CUID2 identifiers. This ID provides a persistent identity for the data that is decoupled from any storage or transport mechanism (e.g., filename, database primary key). It is essential for reliably tracking, updating, and referencing data in distributed systems, message queues, and data aggregation platforms.
instance_version string optional An optional identifier for the specific version of this data instance. When paired with instance_id, it allows for a complete version history of a single data record. The type is a string to accommodate various versioning schemes, such as simple integers ('1', '2'), semantic versioning ('1.2.1'), or timestamps.
source_instance_id string optional The identifier of the data instance in the originating source system (e.g., Epic, SAP). This decouples the sovereign SDC identity from the legacy source identity, enabling auditable data lineage across system boundaries.
source_version_id string optional The version identifier of the data as it existed in the originating source system. When paired with source_instance_id, provides a complete reference to the exact upstream version that was ingested or transformed into this SDC data instance.
current-state string optional The current state according to the state machine / workflow engine identified in the workflow element.
Item substitution group required The data structure of the model.
subject PartyType optional Id of human subject of the data, e.g.: • subject of record (patient, customer, etc.) • a family member • another clinically relevant person.
provider PartyType many Optional identification of the source of the information, which might be: • a patient • a patient agent, e.g. parent, guardian • a clinician • a technician • a device or software
Participation substitution group many List of other participations in the data.
protocol XdStringType optional Optional external identifier of protocol used when collecting the data. This could be a clinical guideline, an operations protocol,etc.
workflow ClusterType optional Workflow definition for this data model, containing state definitions, transitions, and execution logic as a structured Cluster.
acs XdLinkType optional Identifier of an externally held access control system. This URI can be an ontology, vocabulary or descriptive document URI link.
Audit substitution group many List of audits from the system of original commit of information forming the content, or from a conversion gateway which has processed this data.
attestation AttestationType optional Attestation record of an instance of data.
XdLink substitution group many Optional link(s) to other locatable structures or external entities.

What you set (the fields this type adds in SDCStudio):

Field Kind What it sets
instance_id text Mandatory CUID2 sovereign identifier for this data model. Auto-generated.
source_instance_id text Identifier from the originating source system (e.g., Epic, SAP).
source_version_id text Version identifier from the originating source system.
project one Project Choose a Project for this Data Model (DM)
title text Enter the name of this Data Model (DM). Unique within a project.
author one Modeler Select the author of the DM
dc_subject text Enter a semi-colon separated list of keywords. Usually MeSH terms
source text Enter the name of a document or a URL to a supporting source.
rights text Enter the rights or license statement.
relation text Enter the relationship to another Data Model (DM), if applicable.
coverage text Enter the demographic, geographical or political coverage.
dc_type text
identifier text
description text Enter a general description of the purpose of this DM.
publisher text Enter the name of the publisher/copyright holder.
pub_date date-time Date of publication.
dc_format text The format of the data. Default is text/xml for DMs.
dc_language a choice The written language of the DM.
language a choice Choose the language of this Data Model.
encoding text See List of encoding types at IANA.
state text The current state according to the state machine / workflow engine identified in workflow_id. You may enter a default/start state here.
data one Cluster You must select the Cluster that is the structure for this model.
subject one Party Refers to the subject component of the record for anonymous or identified reference.
provider one Party Select a Party component that models the provider of the activity in this model.
protocol one XdString Optional external identifier of protocol used to create this Entry. This could be a clinical guideline, an operations protocol, etc.
workflow one Cluster Workflow definition for this data model. Use a Cluster to define states, transitions, and execution logic.
acs one XdLink Identifier of externally held access control system. This URI can be an ontology, vocabulary or descriptive document; URI link.
attestation one Attestation A model that allows an attestation that the data is correct.
asserts text, one per line XPath assert statements. See the documentation for details. One per line.
contrib several Modeler Select the contributors (if any) to this DM
participations several Participation Select any Participations components that describe additional entities involved in this model.
audit several Audit Audit structure to provide audit trail tracking of information.
links several XdLink Can be used to establish ad-hoc links between models.

The item wrappers (ItemType, XdAdapterType)

A Cluster's members are Item elements. A nested Cluster is an Item; a value is wrapped in an XdAdapter, the leaf Item, so that every member of a Cluster has the same outer shape. SDCStudio writes the adapters; a modeler never creates one.

Element Type Occurs Meaning
XdAdapter-value substitution group many Data value type of this leaf. By rule, there must only be one XdAnyType subtype defined here. The unbounded occurrences is allowed so that the DM can specify how many repetitions may occur in the instance.

The sixteen exceptional values

Subtypes are used to indicate why a value is missing (Null) or is outside a measurable range. The element ev-name is fixed in restricted types to a descriptive string. The subtypes defined in the reference model are considered sufficiently generic to be useful in many instances. Data Models may contain additional ExceptionalValueType restrictions to allow for domain related reasons for errant or missing data.

A record puts one or more of these elements beside a value, or in place of it, and the reason the value is missing or unusable travels with the record. The sixteen, with the name each carries in its ev-name element:

Element Name Meaning
NI No Information The value is exceptional (missing, omitted, incomplete, improper). No information as to the reason for being an exceptional value is provided. This is the most general exceptional value. It is also the default exceptional value.
MSK Masked There is information on this item available but it has not been provided by the sender due to security, privacy or other reasons. There may be an alternate mechanism for gaining access to this information. Warning: Using this exceptional value does provide information that may be a breach of confidentiality, even though no detail data is provided. Its primary purpose is for those circumstances where it is necessary to inform the receiver that the information does exist without providing any detail.
INV Invalid The value as represented in the instance is not a member of the set of permitted data values in the constrained value domain of a variable.
DER Derived An actual value may exist, but it must be derived from the provided information; usually an expression is provided directly.
UNC Unencoded No attempt has been made to encode the information correctly but the raw source information is represented, usually in free text.
OTH Other The actual value is not a member of the permitted data values in the variable. (e.g., when the value of the variable is not by the coding system)
NINF Negative Infinity Negative infinity of numbers
PINF Positive Infinity Positive infinity of numbers
UNK Unknown A proper value is applicable, but not known.
ASKR Asked and Refused Information was sought but refused to be provided (e.g., patient was asked but refused to answer).
NASK Not Asked This information has not been sought (e.g., patient was not asked)
QS Sufficient Quantity The specific quantity is not known, but is known to non-zero and it is not specified because it makes up the bulk of the material; Add 10mg of ingredient X, 50mg of ingredient Y and sufficient quantity of water to 100mL.
TRC Trace The content is greater or less than zero but too small to be quantified.
ASKU Asked but Unknown Information was sought but not found (e.g., patient was asked but did not know)
NAV Not Available This information is not available and the specific reason is not known.
NA Not Applicable No proper value is applicable in this context e.g.,the number of cigarettes smoked per day by a non-smoker subject.

A data model may add its own restrictions of ExceptionalValueType for domain reasons; these sixteen are the ones every SDC4 record understands.