> For the complete documentation index, see [llms.txt](https://docs.rhinofcp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rhinofcp.com/data-schemas/supported-data-schema-data-types.md).

# Supported Data Schema Data Types

The Rhino Federated Computing Platform (FCP) supports over 50 different data types within its Data *Schema* definition. Similar to the attributes of a Data *Schema*, as defined in the [Data *Schema* Field Attributes](/data-schemas/data-schema-field-attributes-and-field-permissions.md) article, each data type has the following attributes:

* **Validation:** The validation method outlined will be used when a dataset is imported into the FCP. Each value will be validated to ensure it meets the criteria set for the data type. If the criteria are not met, the dataset will fail to import into the FCP.
* **De-identification:** On import of a dataset into the FCP, if a column or feature within the Data *Schema* is marked as **Sensitive Data** = True, the system will trigger a de-identification transformation over the columns that may contain Sensitive Data. De-identification transformations are unique to each data type.
* **Type Parameters:** Type Parameters are constraints that can be passed into certain data types to restrict potential values when importing a dataset into the FCP. If a value fails to meet the type parameter constraints, the dataset will fail to import.

### Supported Data Types in FCP

#### Age

**Validation:** Equivalent to a ConstrainedInteger in the range 0 to 130

**De-Identification:** Any ages below 90 are unchanged, and any ages 90+ are changed to 90

**Type Parameters:** None

#### Birthdate

**Validation:** Any valid date (see supported Date formats: [Date](#h_01H5WY7BYN9RC48G77F4C3Q5C8) and [DateTime](#h_01H5WY7NCBC8P2TZAPDZXDH7S0))

**De-Identification:** Only the year of birth is left (dropping the day and month). If the birth year is 90+ years ago, the birth year is set to 1900.

**Type Parameters:** None

#### Boolean

**Validation:** One of the following values: True, true, t, yes, y, 1, False, false, f, no, n, 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Bytes

**Validation:** Bytes converted from a string using `str.encode()`

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### ConstrainedBytes

**Validation:** Bytes that can have additional constraints defined in the parameters

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **min\_length**: (Type: Integer, Default Value: None) - the minimum length of the byte string
* **max\_length**: (Type: integer, Default Value: None) - the maximum length of the byte string

#### ConstrainedDecimal

**Validation:** A Decimal that can have additional constraints defined in the parameters

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **gt**: (Type: Decimal, Default Value: None) - enforces the decimal to be greater than the set value
* ge: (Type: Decimal, Default Value: None) - enforces the decimal to be greater than or equal to the set value
* **lt**: (Type: Decimal, Default Value: None) - enforces the decimal to be less than the set value
* **le:** (Type: Decimal, Default Value: None) - enforces the decimal to be less than or equal to the set value
* **max\_digits**: (Type: Integer, Default Value: None) - the maximum number of digits in the decimal, excluding leading zeros before the decimal point or trailing zeros after the decimal point
* **decimal\_places**: (Type: Integer, Default Value: None) - the maximum number of decimal places allowed, excluding trailing zeros after the decimal point
* **multiple\_of**: (Type: Decimal, Default Value: None) - enforces the decimal to be a multiple of the set value

#### ConstrainedFloat

**Validation:** A float that can have additional constraints defined in the parameters

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **gt**: (Type: Float, Default Value: None) - enforces the float to be greater than the set value
* **ge**: (Type: Float, Default Value: None) - enforces the float to be greater than or equal to the set value
* **lt**: (Type: Float, Default Value: None) - enforces the float to be less than the set value
* **le**: (Type: Float, Default Value: None) - enforces the float to be less than or equal to the set value
* **multiple\_of**: (Type: Float, Default Value: None) - enforces the float to be a multiple of the set value

#### ConstrainedInt

**Validation:** An integer that can have additional constraints defined in the params

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **gt**: (Type: Integer, Default Value: None) - enforces the integer to be greater than the set value
* **ge**: (Type: Integer, Default Value: None) - enforces the integer to be greater than or equal to the set value
* **lt**: (Type: Integer, Default Value: None) - enforces the integer to be less than the set value
* **le**: (Type: Integer, Default Value: None) - enforces the integer to be less than or equal to the set value
* **multiple\_of**: (Type: Integer, Default Value: None) - enforces the integer to be a multiple of the set value

#### ConstrainedString

**Validation:** A string that can have additional constraints defined in the params

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **min\_length**: (Type: Integer, Default Value: None) - the minimum length of the string
* **max\_length**: (Type: Integer, Default Value: None) - the maximum length of the string
* **regex:** (Type: String, Default Value: None) - a regular expression to validate the string against

#### Date

**Validation:** Either a string in `YYYY-MM-DD` format, or a number (integer or float) that represents a Unix timestamp in seconds (if -2e10 < value < 2e10) or milliseconds (otherwise). (Timestamp is in UTC.)

**De-Identification:** A random date shift is applied. This shift is at least plus or minus 1 year

**Type Parameters:** None

#### DateTime

**Validation:** Either a string in `YYYY-MM-DD[T]HH:MM[:SS[.fff fff]][Z or [±]HH[:]MM]]]` format, or a number (integer or float) that represents a Unix timestamp in seconds (if -2e10 < value < 2e10) or milliseconds (otherwise). (Timestamp is in UTC.)

**De-Identification:** A random date+time shift is applied. This shift is at least plus or minus 1 year

**Type Parameters:** None

#### Decimal

**Validation:** A decimal number

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### DicomInstanceUID

**Validation:** Any string (not strictly enforcing valid DICOM UID formats)

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### DicomSeriesUID

**Validation:** Any string (not strictly enforcing valid DICOM UID formats)

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### DicomStudyUID

**Validation:** Any string (not strictly enforcing valid DICOM UID formats)

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### DicomTag

**Validation:** No validation is performed on DicomTags - they are added to the Data S *chema* to include specific tags in dataset and code analysis. Within a Data S *chema*, the DicomTag field can be used to inform the Rhino FCP which DICOM metadata tags to include in the dataset and code analysis

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Enum

**Validation:** The value must be one of those specified in the **choices** param

**De-Identification:** Drop Value (None)

**Type Parameters:**

* **choices:** List, required - with a list of valid values for this field

#### Filename

**Validation:** The value must be a path to a file that exists and is accessible to the Rhino Agent

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Float

**Validation:** A floating point number

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Integer

**Validation:** An integer

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### JSON

**Validation:** A string that can be parsed as valid JSON

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NegativeFloat

**Validation:** A float that is less than 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NegativeInt

**Validation:** An integer that is less than 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NonNegativeFloat

**Validation:** A float that is greater than or equal to 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NonNegativeInt

**Validation:** An integer that is greater than or equal to 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NonPositiveFloat

**Validation:** A float that is less than or equal to 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### NonPositiveInt

**Validation:** An integer that is less than or equal to 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Path

**Validation:** A valid path

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Percent

**Validation:** Equivalent to a ConstrainedFloat in the range 0 to 1

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### PositiveFloat

**Validation:** A float that is greater than 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### PositiveInt

**Validation:** An integer that is greater than 0

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### String

**Validation:** Any string

**De-Identification:** Drop Value (None)

**Type Parameters:** None

#### Time

**Validation:** A string in `HH:MM[:SS[.ffffff]][Z or [±]HH[:]MM]]]` format. (Timestamp is in UTC.)

**De-Identification:** A random time shift is applied

**Type Parameters:** None

#### UID

**Validation:** Any String

**De-Identification:** A new value will be generated using SHA-5121 (with salting). Two identical UIDs will always generate the same de-identified value

**Type Parameters:** None

#### UUID

**Validation:** A hexadecimal UUID string

**De-Identification:** A new value will be generated using SHA-5121 (with salting). Two identical UUIDs will always generate the same de-identified value

**Type Parameters:** None

1 - The approved hashing method based on <http://csrc.nist.gov/groups/ST/hash/>
