## IndexedStructureDefinition interface

An IndexedStructureDefinition is a lookup-optimized version of a StructureDefinition.

StructureDefinition resources contain schema information for other resource types. These schemas can be used to automatically generate user interface elements for resources.

However, a StructureDefinition resource is not optimized for realtime lookups. All resource types, sub types, and property definitions are stored in a flat array of ElementDefinition objects. Therefore, to lookup the schema for a property (i.e., "Patient.name") requires a linear scan of all ElementDefinition objects.

A StructureDefinition resource contains information about one or more types. For example, the "Patient" StructureDefinition includes "Patient", "Patient_Contact", "Patient_Communication", and "Patient_Link". This is inefficient.

Instead, we create an indexed version of the StructureDefinition, called IndexedStructureDefinition. In an IndexedStructureDefinition, retrieving a property definition is a hashtable lookup.

The hierarchy is: IndexedStructureDefinition - top level for one resource type TypeSchema - one per resource type and all contained BackboneElements PropertySchema - one per property/field

**Signature:**

```typescript
export interface IndexedStructureDefinition
```

## Properties

| Property | Modifiers | Type | Description |
| --- | --- | --- | --- |
| [types](/content/docs/sdk/core.indexedstructuredefinition.types) |  | Record<string, [TypeInfo](/content/docs/sdk/core.typeinfo) > |  |

- [IndexedStructureDefinition interface](/content/docs/sdk/core.indexedstructuredefinition#indexedstructuredefinition-interface/index.html)
- [Properties](/content/docs/sdk/core.indexedstructuredefinition#properties/index.html)
