Current Build

Переводит компания Health Samurai . Приглашаем поучаствовать в русификации стандарта FHIR: GitHub , Email.

5.3 Ресурс StructureDefinition - Назначение

FHIR Infrastructure Work GroupMaturity Level: 5 Trial UseCompartments: Not linked to any defined compartments

Определение FHIR-структуры. Данный ресурс используется для описания основных ресурсов, типов данных, определенных в FHIR, а также для описания расширений и ограничений на ресурсы и типы данных.

Ресурс StructureDefinition описывает структуру - набор определений элементов данных, и связанные с ними правила использования. StructureDefinition используются для описания как содержимого, определенного в самом стандарте FHIR - ресурсы, типы данных и лежащие в основе инфраструктурные типы, а также используется для описания, каким образом эти структуры используются в реализациях. Это позволяет совместно использовать и публиковать определения структур через репозитории структурных определений, сравнивать их между собой и использовать в качестве основы для генерации кода, ответов и пользовательского интерфейса.

Обратите внимание, что в рамках самой спецификации публикуется весь набор structure definitions для всех ресурсов и типов данных.

  • StructureDefinitions используются экземплярами CapabilityStatement для определения способа использования ресурсов
  • StructureDefinitions используют наборы значений Value Sets для определения содержимого кодированных элементов

Перед началом работы с этим ресурсом реализаторам следует ознакомиться с предпосылками и концепциями, описанными в статье Профилирование FHIR.

Ресурс StructureDefinition содержит набор метаданных, которые в основном совместно используются с Value Set, CapabilityStatement и другими инфраструктурными ресурсами. Эти метаданные описывают структуру и помогают ее найти, если она зарегистрирована в репозиториях структур.

urlИдентификатор, используемый для указания на эту структуру, когда на нее ссылаются в спецификации, модели, проекте или примере. Это URL, по которому доступена эта структура
version

Этот идентификатор используется для указания на конкретную версию структуры, когда на нее ссылаются в спецификации, модели, проекте или примере.Он имеет произвольное значение, контролируемое автором структуры вручную, которое должно быть штампом времени.

Обратите внимание, что может иметься несколько версий ресурсов этой структуры, имеющих одинаковый идентификатор. Ресурс будет иметь обновления, которые создают новые версии по техническим причинам, в то время как заявленный номер версии должен быть под контролем автора

nameПроизвольное текстовое название структуры на естественном языке
publisherИнформация о физическом лице или организации, принявшем ответственность за публикацию структуры. Она помогает установить "авторитет/достоверность" структуры.
telecomКонтактная информация для помощи пользователю в нахождении и коммуникации с издателем
descriptionПроизвольное текстовое описание структуры и ее применения на естественном языке
requirementsОбласть применения и использование, в соответствии с которыми эта структура была создана
codeНабор терминов из внешних справочников, которые могут использоваться для поддержки индексации и поиска профилей
statusСтатус структуры позволяет отфильтровывать подходящие к использованию профили от неподходящих. См. Status Codes
experimentalЭта структура была создана для тестирования (или обучения/оценки/маркетинга), и не предназначена для реального использования
dateДата публикации этой версии структуры
fhirVersionВерсия спецификации FHIR, на которой основывается эта структура. Не обязательно указывать эту версию, так как большинство профилей сохраняют пригодность на протяжении различных версий, а соответствие структуры конкретной версии FHIR можно легко проверить с помощью инструментов.
typeThe type the structure describes.
contextTypeFor extensions, the types of contexts in which the extension can be used (resources, datatypes, or extensions).
contextFor extensions, the specific types of resources or data types on which the extension can be used.

Примечания:

  • Имя структуры не требуется делать глобально уникальным, однако оно должно нести некоторую информацию о границах применения (например Acme Inc. (USA), Allergy List)
  • Структуре может быть присвоено несколько кодов. Они должны описывать либо саму структуру, либо то, на чем она акцентирует внимание, либо и то, и другое. Они нужны исключительно для помощи в нахождении структуры поиском по структурированным концептам
  • 3 кода статуса (черновик, активный, устаревший) - это коды, имеющие значение для пользователей структуры. Авторы по желанию могут использовать расширение authoring-status для отслеживания жизненного цикла структуры, когда оно будет подготовлено

На этот ресурс ссылаются CapabilityStatement, ImplementationGuide, ImplementationGuideInput, ImplementationGuideOutput, MessageDefinition, OperationDefinition и TerminologyCapabilities

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. StructureDefinition IDomainResourceСтруктурное определение
+ В любом снапшоте или дифференциале недопустимы элементы label, code и requirements для элементов без "." в пути (например элемент first)
+ Custom types can only be used in logical models
+ All element definitions must have unique ids (snapshot)
+ Context Invariants can only be used for extensions
+ All element definitions must have unique ids (diff)
+ Элемент element.base нельзя указывать, если не указан элемент base для структурного определения
+ If there's a type, its content must match the path name in the first element of a snapshot
+ All element definitions must have an id
+ Пути элементов должны быть уникальными, если только структура не является ограничивающей
+ Если структура описывает базовый ресурс или тип, URL-адрес должен начинаться с "http://hl7.org/fhir/StructureDefinition/" и заканчиваться соответствующим id
+ Структура должна иметь либо дифференциал, либо снимок (либо оба)
+ Если структура описывает расширение, тогда эта структура должна содержать информацию о контексте (элементы context и contextType)
+ If the structure is not abstract, then there SHALL be a baseDefinition
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ1..1uriLogical URI to reference this structure definition (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the structure definition
... version Σ0..1stringBusiness version of the structure definition
... name Σ1..1stringName for this structure definition (computer friendly)
... title Σ0..1stringName for this structure definition (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the structure definition
... useContext Σ0..*UsageContextContext the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for structure definition (if applicable)
Jurisdiction ValueSet (Extensible)
... purpose 0..1markdownWhy this structure definition is defined
... copyright 0..1markdownUse and/or publishing restrictions
... keyword Σ0..*CodingСодействует индексации и поиску
Structure Definition Codes (Example)
... fhirVersion Σ0..1idВерсия FHIR, которой соответствует этот StructureDefinition
All Published FHIR versions (Required)
... mapping I0..*BackboneElementВнешняя спецификация, с которой сопоставляется это содержимое
+ Must have at least a name or a uri (or both)
.... identity 1..1idВнутренний идентификатор, когда этот мэппинг используется
.... uri I0..1uriИдентифицирует, на что ссылается этот мэппинг
.... name I0..1stringИмена, на которые ссылается этот мэппинг
.... comment 0..1stringВерсии, проблемы, ограничения области применения и др
... kind Σ1..1codeprimitive-type | complex-type | resource | logical
StructureDefinitionKind (Required)
... abstract Σ1..1booleanЯвляется ли структура абстрактной
... contextType ΣI0..1coderesource | datatype | extension
ExtensionContext (Required)
... context ΣI0..*stringГде это расширение может применяться в экземплярах
... contextInvariant ΣI0..*stringFHIRPath invariants - when the extension can be used
... type ΣI1..1codeType defined or constrained by this structure
FHIRDefinedType (Extensible)
... baseDefinition ΣI0..1uriОпределение, из которого получен этот тип через ограничивающие условия или специализацию
... derivation ΣI0..1codespecialization | constraint - How relates to base definition
TypeDerivationRule (Required)
... snapshot I0..1BackboneElementСтруктура в виде снапшота
+ The first element in a snapshot has no type
+ In any snapshot, all the elements must be in the specified type
+ Каждое определение элемента в снапшоте должно иметь формальное определение и кардинальное множество
.... element I1..*ElementDefinitionОпределение элементов в ресурсе (если нет StructureDefinition)
... differential I0..1BackboneElementДифференциальный вид структуры
+ If the first element in a differential has no "." in the path, it has no type
+ No slicing on the root element
+ In any differential, all the elements must be in the specified type
.... element 1..*ElementDefinitionОпределение элементов в ресурсе (если нет StructureDefinition)

doco Документация по этому формату

UML-диаграмма (Legend)

StructureDefinition (DomainResource)An absolute URI that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published. The URL SHOULD include the major version of the structure definition. For more information see [Technical and Business Versions](resource.html#versions)url : uri [1..1]A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [1..1]A short, descriptive, user-friendly title for the structure definitiontitle : string [0..1]The status of this structure definition. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! »A boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the structure definition was published. The date must change if and when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changesdate : dateTime [0..1]The name of the individual or organization that published the structure definitionpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the structure definition from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate structure definition instancesuseContext : UsageContext [0..*]A legal or geographic region in which the structure definition is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ »Explaination of why this structure definition is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definitioncopyright : markdown [0..1]A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templateskeyword : Coding [0..*] « Коды смыслового значения заданной структуры (например коды SNOMED CT и LOINC). (Strength=Example)Structure Definition ?? »Версия спецификации FHIR, на которой основан этот StructureDefinition - это формальная версия спецификации без номера ревизии, например [publication].[major].[minor], это 3.1.0 для этой версииfhirVersion : id [0..1] « All published FHIR Versions (Strength=Required)All Published FHIR versions! »Задаёт тип структуры, которую описывает это определениеkind : code [1..1] « Задает тип структуры, которую описывает данное определение (Strength=Required)StructureDefinitionKind! »Whether structure this definition describes is abstract or not - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged between systemsabstract : boolean [1..1]Если это расширение, определяет контекст в пределах FHIR-ресурсов, в которых может использоваться это расширениеcontextType : code [0..1] « Как интерпретируется контекст расширения (Strength=Required)ExtensionContext! »Определяет типы элементов ресурса или типа данных, к которым может применяться это расширениеcontext : string [0..*]A set of rules as Fluent Invariants about when the extension can be used (e.g. co-occurrence variants for the extension)contextInvariant : string [0..*]The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type)type : code [1..1] « Either a resource or a data type, including logical model types (Strength=Extensible)FHIRDefinedType+ »Абсолютный URI базовой структуры, из которой был выведен этот тип через ограничивающие условия или специализациюbaseDefinition : uri [0..1]Как этот тип соотносится с базовым определением baseDefinitionderivation : code [0..1] « Как тип соотносится со своим базовым определением baseDefinition. (Strength=Required)TypeDerivationRule! »MappingВнутренний идентификатор, который используется для идентификации этого набора мэппингов, когда делаются конкретные мэппингиidentity : id [1..1]Абсолютный URI, идентифицирующий спецификацию, в которой выражен этот мэппингuri : uri [0..1]Имя спецификации, на которую делается мэппингname : string [0..1]Комментарии к этому мэппингу, включая версионные примечания, вопросы, ограничения области применения и другие важные примечания к использованиюcomment : string [0..1]SnapshotСобирает ограничения со всех элементов ресурсаelement : ElementDefinition [1..*]DifferentialСобирает ограничения со всех элементов ресурсаelement : ElementDefinition [1..*]Внешняя спецификация, с которой сопоставляется это содержимоеmapping[0..*]Структура в виде снапшота выражается в автономной форме, которая может использоваться и интерпретироваться без учета базового StructureDefinitionsnapshot[0..1]Дифференциальный вид выражается относительно базового StructureDefinition - это объявление различий, которые он применяетdifferential[0..1]

XML-шаблон

<StructureDefinition xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 1..1 Logical URI to reference this structure definition (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the structure definition -->
 <name value="[string]"/><!-- 1..1 Name for this structure definition (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition -->
 <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <keyword><!-- 0..* Coding Содействует индексации и поиску --></keyword>
 <fhirVersion value="[id]"/><!-- 0..1 Версия FHIR, которой соответствует этот StructureDefinition -->
 <mapping>  <!-- 0..* Внешняя спецификация, с которой сопоставляется это содержимое -->
  <identity value="[id]"/><!-- 1..1 Внутренний идентификатор, когда этот мэппинг используется -->
  <uri value="[uri]"/><!-- ?? 0..1 Идентифицирует, на что ссылается этот мэппинг -->
  <name value="[string]"/><!-- ?? 0..1 Имена, на которые ссылается этот мэппинг -->
  <comment value="[string]"/><!-- 0..1 Версии, проблемы, ограничения области применения и др -->
 </mapping>
 <kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical -->
 <abstract value="[boolean]"/><!-- 1..1 Является ли структура абстрактной -->
 <contextType value="[code]"/><!-- ?? 0..1 resource | datatype | extension -->
 <context value="[string]"/><!-- ?? 0..* Где это расширение может применяться в экземплярах -->
 <contextInvariant value="[string]"/><!-- ?? 0..* FHIRPath invariants - when the extension can be used -->
 <type value="[code]"/><!-- ?? 1..1 Type defined or constrained by this structure -->
 <baseDefinition value="[uri]"/><!-- ?? 0..1 Определение, из которого получен этот тип через ограничивающие условия или специализацию -->
 <derivation value="[code]"/><!-- ?? 0..1 specialization | constraint - How relates to base definition -->
 <snapshot>  <!-- ?? 0..1 Структура в виде снапшота -->
  <element><!-- ?? 1..* ElementDefinition Определение элементов в ресурсе (если нет StructureDefinition) --></element>
 </snapshot>
 <differential>  <!-- ?? 0..1 Дифференциальный вид структуры -->
  <element><!-- 1..* ElementDefinition Определение элементов в ресурсе (если нет StructureDefinition) --></element>
 </differential>
</StructureDefinition>

JSON-шаблон

{doco
  "resourceType" : "StructureDefinition",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // R!  Logical URI to reference this structure definition (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the structure definition
  "version" : "<string>", // Business version of the structure definition
  "name" : "<string>", // R!  Name for this structure definition (computer friendly)
  "title" : "<string>", // Name for this structure definition (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the structure definition
  "useContext" : [{ UsageContext }], // Context the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable)
  "purpose" : "<markdown>", // Why this structure definition is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "keyword" : [{ Coding }], // Содействует индексации и поиску
  "fhirVersion" : "<id>", // Версия FHIR, которой соответствует этот StructureDefinition
  "mapping" : [{ // Внешняя спецификация, с которой сопоставляется это содержимое
    "identity" : "<id>", // R!  Внутренний идентификатор, когда этот мэппинг используется
    "uri" : "<uri>", // C? Идентифицирует, на что ссылается этот мэппинг
    "name" : "<string>", // C? Имена, на которые ссылается этот мэппинг
    "comment" : "<string>" // Версии, проблемы, ограничения области применения и др
  }],
  "kind" : "<code>", // R!  primitive-type | complex-type | resource | logical
  "abstract" : <boolean>, // R!  Является ли структура абстрактной
  "contextType" : "<code>", // C? resource | datatype | extension
  "context" : ["<string>"], // C? Где это расширение может применяться в экземплярах
  "contextInvariant" : ["<string>"], // C? FHIRPath invariants - when the extension can be used
  "type" : "<code>", // C? R!  Type defined or constrained by this structure
  "baseDefinition" : "<uri>", // C? Определение, из которого получен этот тип через ограничивающие условия или специализацию
  "derivation" : "<code>", // C? specialization | constraint - How relates to base definition
  "snapshot" : { // C? Структура в виде снапшота
    "element" : [{ ElementDefinition }] // C? R!  Определение элементов в ресурсе (если нет StructureDefinition)
  },
  "differential" : { // C? Дифференциальный вид структуры
    "element" : [{ ElementDefinition }] // R!  Определение элементов в ресурсе (если нет StructureDefinition)
  }
}

Turtle-шаблон

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:StructureDefinition;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:StructureDefinition.url [ uri ]; # 1..1 Logical URI to reference this structure definition (globally unique)
  fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition
  fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition
  fhir:StructureDefinition.name [ string ]; # 1..1 Name for this structure definition (computer friendly)
  fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly)
  fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date this was last changed
  fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition
  fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support
  fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable)
  fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined
  fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Содействует индексации и поиску
  fhir:StructureDefinition.fhirVersion [ id ]; # 0..1 Версия FHIR, которой соответствует этот StructureDefinition
  fhir:StructureDefinition.mapping [ # 0..* Внешняя спецификация, с которой сопоставляется это содержимое
    fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Внутренний идентификатор, когда этот мэппинг используется
    fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 Идентифицирует, на что ссылается этот мэппинг
    fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Имена, на которые ссылается этот мэппинг
    fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Версии, проблемы, ограничения области применения и др
  ], ...;
  fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical
  fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Является ли структура абстрактной
  fhir:StructureDefinition.contextType [ code ]; # 0..1 resource | datatype | extension
  fhir:StructureDefinition.context [ string ], ... ; # 0..* Где это расширение может применяться в экземплярах
  fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FHIRPath invariants - when the extension can be used
  fhir:StructureDefinition.type [ code ]; # 1..1 Type defined or constrained by this structure
  fhir:StructureDefinition.baseDefinition [ uri ]; # 0..1 Определение, из которого получен этот тип через ограничивающие условия или специализацию
  fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definition
  fhir:StructureDefinition.snapshot [ # 0..1 Структура в виде снапшота
    fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Определение элементов в ресурсе (если нет StructureDefinition)
  ];
  fhir:StructureDefinition.differential [ # 0..1 Дифференциальный вид структуры
    fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Определение элементов в ресурсе (если нет StructureDefinition)
  ];
]

Changes since DSTU2

StructureDefinition
StructureDefinition
  • Min Cardinality changed from 1 to 0
  • Max Cardinality changed from 1 to *
StructureDefinition.title
  • Renamed from display to title
StructureDefinition.status
  • Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
StructureDefinition.experimental
  • Now marked as Modifier
StructureDefinition.contact
  • Type changed from BackboneElement to ContactDetail
StructureDefinition.description
  • Type changed from string to markdown
StructureDefinition.useContext
  • Type changed from CodeableConcept to UsageContext
  • Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible)
StructureDefinition.jurisdiction
  • Added Element
StructureDefinition.purpose
  • Renamed from requirements to purpose
  • Type changed from string to markdown
StructureDefinition.copyright
  • Type changed from string to markdown
StructureDefinition.keyword
  • Renamed from code to keyword
StructureDefinition.fhirVersion
  • Add Binding http://hl7.org/fhir/ValueSet/fhir-versions (required)
StructureDefinition.mapping.comment
  • Renamed from comments to comment
StructureDefinition.contextInvariant
  • Added Element
StructureDefinition.type
  • Renamed from constrainedType to type
  • Min Cardinality changed from 0 to 1
  • Change binding strength from required to extensible
StructureDefinition.baseDefinition
  • Renamed from base to baseDefinition
StructureDefinition.derivation
  • Added Element
StructureDefinition.contact.name
  • deleted
StructureDefinition.contact.telecom
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R2 <--> R3 Conversion Maps (status = 248 tests that all execute ok. 60 fail round-trip testing and 145 r3 resources are invalid (441 errors).).

Структура

ИмяФлагиКард.ТипОписание и ограниченияdoco
.. StructureDefinition IDomainResourceСтруктурное определение
+ В любом снапшоте или дифференциале недопустимы элементы label, code и requirements для элементов без "." в пути (например элемент first)
+ Custom types can only be used in logical models
+ All element definitions must have unique ids (snapshot)
+ Context Invariants can only be used for extensions
+ All element definitions must have unique ids (diff)
+ Элемент element.base нельзя указывать, если не указан элемент base для структурного определения
+ If there's a type, its content must match the path name in the first element of a snapshot
+ All element definitions must have an id
+ Пути элементов должны быть уникальными, если только структура не является ограничивающей
+ Если структура описывает базовый ресурс или тип, URL-адрес должен начинаться с "http://hl7.org/fhir/StructureDefinition/" и заканчиваться соответствующим id
+ Структура должна иметь либо дифференциал, либо снимок (либо оба)
+ Если структура описывает расширение, тогда эта структура должна содержать информацию о контексте (элементы context и contextType)
+ If the structure is not abstract, then there SHALL be a baseDefinition
Элементы, определённые в прародителе: id, meta, implicitRules, language, text, contained, extension, modifierExtension
... url Σ1..1uriLogical URI to reference this structure definition (globally unique)
... identifier Σ0..*IdentifierAdditional identifier for the structure definition
... version Σ0..1stringBusiness version of the structure definition
... name Σ1..1stringName for this structure definition (computer friendly)
... title Σ0..1stringName for this structure definition (human friendly)
... status ?!Σ1..1codedraft | active | retired | unknown
PublicationStatus (Required)
... experimental ?!Σ0..1booleanFor testing purposes, not real usage
... date Σ0..1dateTimeDate this was last changed
... publisher Σ0..1stringName of the publisher (organization or individual)
... contact Σ0..*ContactDetailContact details for the publisher
... description 0..1markdownNatural language description of the structure definition
... useContext Σ0..*UsageContextContext the content is intended to support
... jurisdiction Σ0..*CodeableConceptIntended jurisdiction for structure definition (if applicable)
Jurisdiction ValueSet (Extensible)
... purpose 0..1markdownWhy this structure definition is defined
... copyright 0..1markdownUse and/or publishing restrictions
... keyword Σ0..*CodingСодействует индексации и поиску
Structure Definition Codes (Example)
... fhirVersion Σ0..1idВерсия FHIR, которой соответствует этот StructureDefinition
All Published FHIR versions (Required)
... mapping I0..*BackboneElementВнешняя спецификация, с которой сопоставляется это содержимое
+ Must have at least a name or a uri (or both)
.... identity 1..1idВнутренний идентификатор, когда этот мэппинг используется
.... uri I0..1uriИдентифицирует, на что ссылается этот мэппинг
.... name I0..1stringИмена, на которые ссылается этот мэппинг
.... comment 0..1stringВерсии, проблемы, ограничения области применения и др
... kind Σ1..1codeprimitive-type | complex-type | resource | logical
StructureDefinitionKind (Required)
... abstract Σ1..1booleanЯвляется ли структура абстрактной
... contextType ΣI0..1coderesource | datatype | extension
ExtensionContext (Required)
... context ΣI0..*stringГде это расширение может применяться в экземплярах
... contextInvariant ΣI0..*stringFHIRPath invariants - when the extension can be used
... type ΣI1..1codeType defined or constrained by this structure
FHIRDefinedType (Extensible)
... baseDefinition ΣI0..1uriОпределение, из которого получен этот тип через ограничивающие условия или специализацию
... derivation ΣI0..1codespecialization | constraint - How relates to base definition
TypeDerivationRule (Required)
... snapshot I0..1BackboneElementСтруктура в виде снапшота
+ The first element in a snapshot has no type
+ In any snapshot, all the elements must be in the specified type
+ Каждое определение элемента в снапшоте должно иметь формальное определение и кардинальное множество
.... element I1..*ElementDefinitionОпределение элементов в ресурсе (если нет StructureDefinition)
... differential I0..1BackboneElementДифференциальный вид структуры
+ If the first element in a differential has no "." in the path, it has no type
+ No slicing on the root element
+ In any differential, all the elements must be in the specified type
.... element 1..*ElementDefinitionОпределение элементов в ресурсе (если нет StructureDefinition)

doco Документация по этому формату

UML-диаграмма (Legend)

StructureDefinition (DomainResource)An absolute URI that is used to identify this structure definition when it is referenced in a specification, model, design or an instance. This SHALL be a URL, SHOULD be globally unique, and SHOULD be an address at which this structure definition is (or will be) published. The URL SHOULD include the major version of the structure definition. For more information see [Technical and Business Versions](resource.html#versions)url : uri [1..1]A formal identifier that is used to identify this structure definition when it is represented in other formats, or referenced in a specification, model, design or an instanceidentifier : Identifier [0..*]The identifier that is used to identify this version of the structure definition when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the structure definition author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequenceversion : string [0..1]A natural language name identifying the structure definition. This name should be usable as an identifier for the module by machine processing applications such as code generationname : string [1..1]A short, descriptive, user-friendly title for the structure definitiontitle : string [0..1]The status of this structure definition. Enables tracking the life-cycle of the content (this element modifies the meaning of other elements)status : code [1..1] « The lifecycle status of a Value Set or Concept Map. (Strength=Required)PublicationStatus! »A boolean value to indicate that this structure definition is authored for testing purposes (or education/evaluation/marketing), and is not intended to be used for genuine usage (this element modifies the meaning of other elements)experimental : boolean [0..1]The date (and optionally time) when the structure definition was published. The date must change if and when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the structure definition changesdate : dateTime [0..1]The name of the individual or organization that published the structure definitionpublisher : string [0..1]Contact details to assist a user in finding and communicating with the publishercontact : ContactDetail [0..*]A free text natural language description of the structure definition from a consumer's perspectivedescription : markdown [0..1]The content was developed with a focus and intent of supporting the contexts that are listed. These terms may be used to assist with indexing and searching for appropriate structure definition instancesuseContext : UsageContext [0..*]A legal or geographic region in which the structure definition is intended to be usedjurisdiction : CodeableConcept [0..*] « Countries and regions within which this artifact is targeted for use (Strength=Extensible)Jurisdiction ValueSet+ »Explaination of why this structure definition is needed and why it has been designed as it haspurpose : markdown [0..1]A copyright statement relating to the structure definition and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the structure definitioncopyright : markdown [0..1]A set of key words or terms from external terminologies that may be used to assist with indexing and searching of templateskeyword : Coding [0..*] « Коды смыслового значения заданной структуры (например коды SNOMED CT и LOINC). (Strength=Example)Structure Definition ?? »Версия спецификации FHIR, на которой основан этот StructureDefinition - это формальная версия спецификации без номера ревизии, например [publication].[major].[minor], это 3.1.0 для этой версииfhirVersion : id [0..1] « All published FHIR Versions (Strength=Required)All Published FHIR versions! »Задаёт тип структуры, которую описывает это определениеkind : code [1..1] « Задает тип структуры, которую описывает данное определение (Strength=Required)StructureDefinitionKind! »Whether structure this definition describes is abstract or not - that is, whether the structure is not intended to be instantiated. For Resources and Data types, abstract types will never be exchanged between systemsabstract : boolean [1..1]Если это расширение, определяет контекст в пределах FHIR-ресурсов, в которых может использоваться это расширениеcontextType : code [0..1] « Как интерпретируется контекст расширения (Strength=Required)ExtensionContext! »Определяет типы элементов ресурса или типа данных, к которым может применяться это расширениеcontext : string [0..*]A set of rules as Fluent Invariants about when the extension can be used (e.g. co-occurrence variants for the extension)contextInvariant : string [0..*]The type this structure describes. If the derivation kind is 'specialization' then this is the master definition for a type, and there is always one of these (a data type, an extension, a resource, including abstract ones). Otherwise the structure definition is a constraint on the stated type (and in this case, the type cannot be an abstract type)type : code [1..1] « Either a resource or a data type, including logical model types (Strength=Extensible)FHIRDefinedType+ »Абсолютный URI базовой структуры, из которой был выведен этот тип через ограничивающие условия или специализациюbaseDefinition : uri [0..1]Как этот тип соотносится с базовым определением baseDefinitionderivation : code [0..1] « Как тип соотносится со своим базовым определением baseDefinition. (Strength=Required)TypeDerivationRule! »MappingВнутренний идентификатор, который используется для идентификации этого набора мэппингов, когда делаются конкретные мэппингиidentity : id [1..1]Абсолютный URI, идентифицирующий спецификацию, в которой выражен этот мэппингuri : uri [0..1]Имя спецификации, на которую делается мэппингname : string [0..1]Комментарии к этому мэппингу, включая версионные примечания, вопросы, ограничения области применения и другие важные примечания к использованиюcomment : string [0..1]SnapshotСобирает ограничения со всех элементов ресурсаelement : ElementDefinition [1..*]DifferentialСобирает ограничения со всех элементов ресурсаelement : ElementDefinition [1..*]Внешняя спецификация, с которой сопоставляется это содержимоеmapping[0..*]Структура в виде снапшота выражается в автономной форме, которая может использоваться и интерпретироваться без учета базового StructureDefinitionsnapshot[0..1]Дифференциальный вид выражается относительно базового StructureDefinition - это объявление различий, которые он применяетdifferential[0..1]

XML-шаблон

<StructureDefinition xmlns="http://hl7.org/fhir"> doco
 <!-- from Resource: id, meta, implicitRules, and language -->
 <!-- from DomainResource: text, contained, extension, and modifierExtension -->
 <url value="[uri]"/><!-- 1..1 Logical URI to reference this structure definition (globally unique) -->
 <identifier><!-- 0..* Identifier Additional identifier for the structure definition --></identifier>
 <version value="[string]"/><!-- 0..1 Business version of the structure definition -->
 <name value="[string]"/><!-- 1..1 Name for this structure definition (computer friendly) -->
 <title value="[string]"/><!-- 0..1 Name for this structure definition (human friendly) -->
 <status value="[code]"/><!-- 1..1 draft | active | retired | unknown -->
 <experimental value="[boolean]"/><!-- 0..1 For testing purposes, not real usage -->
 <date value="[dateTime]"/><!-- 0..1 Date this was last changed -->
 <publisher value="[string]"/><!-- 0..1 Name of the publisher (organization or individual) -->
 <contact><!-- 0..* ContactDetail Contact details for the publisher --></contact>
 <description value="[markdown]"/><!-- 0..1 Natural language description of the structure definition -->
 <useContext><!-- 0..* UsageContext Context the content is intended to support --></useContext>
 <jurisdiction><!-- 0..* CodeableConcept Intended jurisdiction for structure definition (if applicable) --></jurisdiction>
 <purpose value="[markdown]"/><!-- 0..1 Why this structure definition is defined -->
 <copyright value="[markdown]"/><!-- 0..1 Use and/or publishing restrictions -->
 <keyword><!-- 0..* Coding Содействует индексации и поиску --></keyword>
 <fhirVersion value="[id]"/><!-- 0..1 Версия FHIR, которой соответствует этот StructureDefinition -->
 <mapping>  <!-- 0..* Внешняя спецификация, с которой сопоставляется это содержимое -->
  <identity value="[id]"/><!-- 1..1 Внутренний идентификатор, когда этот мэппинг используется -->
  <uri value="[uri]"/><!-- ?? 0..1 Идентифицирует, на что ссылается этот мэппинг -->
  <name value="[string]"/><!-- ?? 0..1 Имена, на которые ссылается этот мэппинг -->
  <comment value="[string]"/><!-- 0..1 Версии, проблемы, ограничения области применения и др -->
 </mapping>
 <kind value="[code]"/><!-- 1..1 primitive-type | complex-type | resource | logical -->
 <abstract value="[boolean]"/><!-- 1..1 Является ли структура абстрактной -->
 <contextType value="[code]"/><!-- ?? 0..1 resource | datatype | extension -->
 <context value="[string]"/><!-- ?? 0..* Где это расширение может применяться в экземплярах -->
 <contextInvariant value="[string]"/><!-- ?? 0..* FHIRPath invariants - when the extension can be used -->
 <type value="[code]"/><!-- ?? 1..1 Type defined or constrained by this structure -->
 <baseDefinition value="[uri]"/><!-- ?? 0..1 Определение, из которого получен этот тип через ограничивающие условия или специализацию -->
 <derivation value="[code]"/><!-- ?? 0..1 specialization | constraint - How relates to base definition -->
 <snapshot>  <!-- ?? 0..1 Структура в виде снапшота -->
  <element><!-- ?? 1..* ElementDefinition Определение элементов в ресурсе (если нет StructureDefinition) --></element>
 </snapshot>
 <differential>  <!-- ?? 0..1 Дифференциальный вид структуры -->
  <element><!-- 1..* ElementDefinition Определение элементов в ресурсе (если нет StructureDefinition) --></element>
 </differential>
</StructureDefinition>

JSON-шаблон

{doco
  "resourceType" : "StructureDefinition",
  // from Resource: id, meta, implicitRules, and language
  // from DomainResource: text, contained, extension, and modifierExtension
  "url" : "<uri>", // R!  Logical URI to reference this structure definition (globally unique)
  "identifier" : [{ Identifier }], // Additional identifier for the structure definition
  "version" : "<string>", // Business version of the structure definition
  "name" : "<string>", // R!  Name for this structure definition (computer friendly)
  "title" : "<string>", // Name for this structure definition (human friendly)
  "status" : "<code>", // R!  draft | active | retired | unknown
  "experimental" : <boolean>, // For testing purposes, not real usage
  "date" : "<dateTime>", // Date this was last changed
  "publisher" : "<string>", // Name of the publisher (organization or individual)
  "contact" : [{ ContactDetail }], // Contact details for the publisher
  "description" : "<markdown>", // Natural language description of the structure definition
  "useContext" : [{ UsageContext }], // Context the content is intended to support
  "jurisdiction" : [{ CodeableConcept }], // Intended jurisdiction for structure definition (if applicable)
  "purpose" : "<markdown>", // Why this structure definition is defined
  "copyright" : "<markdown>", // Use and/or publishing restrictions
  "keyword" : [{ Coding }], // Содействует индексации и поиску
  "fhirVersion" : "<id>", // Версия FHIR, которой соответствует этот StructureDefinition
  "mapping" : [{ // Внешняя спецификация, с которой сопоставляется это содержимое
    "identity" : "<id>", // R!  Внутренний идентификатор, когда этот мэппинг используется
    "uri" : "<uri>", // C? Идентифицирует, на что ссылается этот мэппинг
    "name" : "<string>", // C? Имена, на которые ссылается этот мэппинг
    "comment" : "<string>" // Версии, проблемы, ограничения области применения и др
  }],
  "kind" : "<code>", // R!  primitive-type | complex-type | resource | logical
  "abstract" : <boolean>, // R!  Является ли структура абстрактной
  "contextType" : "<code>", // C? resource | datatype | extension
  "context" : ["<string>"], // C? Где это расширение может применяться в экземплярах
  "contextInvariant" : ["<string>"], // C? FHIRPath invariants - when the extension can be used
  "type" : "<code>", // C? R!  Type defined or constrained by this structure
  "baseDefinition" : "<uri>", // C? Определение, из которого получен этот тип через ограничивающие условия или специализацию
  "derivation" : "<code>", // C? specialization | constraint - How relates to base definition
  "snapshot" : { // C? Структура в виде снапшота
    "element" : [{ ElementDefinition }] // C? R!  Определение элементов в ресурсе (если нет StructureDefinition)
  },
  "differential" : { // C? Дифференциальный вид структуры
    "element" : [{ ElementDefinition }] // R!  Определение элементов в ресурсе (если нет StructureDefinition)
  }
}

Turtle-шаблон

@prefix fhir: <http://hl7.org/fhir/> .doco


[ a fhir:StructureDefinition;
  fhir:nodeRole fhir:treeRoot; # if this is the parser root

  # from Resource: .id, .meta, .implicitRules, and .language
  # from DomainResource: .text, .contained, .extension, and .modifierExtension
  fhir:StructureDefinition.url [ uri ]; # 1..1 Logical URI to reference this structure definition (globally unique)
  fhir:StructureDefinition.identifier [ Identifier ], ... ; # 0..* Additional identifier for the structure definition
  fhir:StructureDefinition.version [ string ]; # 0..1 Business version of the structure definition
  fhir:StructureDefinition.name [ string ]; # 1..1 Name for this structure definition (computer friendly)
  fhir:StructureDefinition.title [ string ]; # 0..1 Name for this structure definition (human friendly)
  fhir:StructureDefinition.status [ code ]; # 1..1 draft | active | retired | unknown
  fhir:StructureDefinition.experimental [ boolean ]; # 0..1 For testing purposes, not real usage
  fhir:StructureDefinition.date [ dateTime ]; # 0..1 Date this was last changed
  fhir:StructureDefinition.publisher [ string ]; # 0..1 Name of the publisher (organization or individual)
  fhir:StructureDefinition.contact [ ContactDetail ], ... ; # 0..* Contact details for the publisher
  fhir:StructureDefinition.description [ markdown ]; # 0..1 Natural language description of the structure definition
  fhir:StructureDefinition.useContext [ UsageContext ], ... ; # 0..* Context the content is intended to support
  fhir:StructureDefinition.jurisdiction [ CodeableConcept ], ... ; # 0..* Intended jurisdiction for structure definition (if applicable)
  fhir:StructureDefinition.purpose [ markdown ]; # 0..1 Why this structure definition is defined
  fhir:StructureDefinition.copyright [ markdown ]; # 0..1 Use and/or publishing restrictions
  fhir:StructureDefinition.keyword [ Coding ], ... ; # 0..* Содействует индексации и поиску
  fhir:StructureDefinition.fhirVersion [ id ]; # 0..1 Версия FHIR, которой соответствует этот StructureDefinition
  fhir:StructureDefinition.mapping [ # 0..* Внешняя спецификация, с которой сопоставляется это содержимое
    fhir:StructureDefinition.mapping.identity [ id ]; # 1..1 Внутренний идентификатор, когда этот мэппинг используется
    fhir:StructureDefinition.mapping.uri [ uri ]; # 0..1 Идентифицирует, на что ссылается этот мэппинг
    fhir:StructureDefinition.mapping.name [ string ]; # 0..1 Имена, на которые ссылается этот мэппинг
    fhir:StructureDefinition.mapping.comment [ string ]; # 0..1 Версии, проблемы, ограничения области применения и др
  ], ...;
  fhir:StructureDefinition.kind [ code ]; # 1..1 primitive-type | complex-type | resource | logical
  fhir:StructureDefinition.abstract [ boolean ]; # 1..1 Является ли структура абстрактной
  fhir:StructureDefinition.contextType [ code ]; # 0..1 resource | datatype | extension
  fhir:StructureDefinition.context [ string ], ... ; # 0..* Где это расширение может применяться в экземплярах
  fhir:StructureDefinition.contextInvariant [ string ], ... ; # 0..* FHIRPath invariants - when the extension can be used
  fhir:StructureDefinition.type [ code ]; # 1..1 Type defined or constrained by this structure
  fhir:StructureDefinition.baseDefinition [ uri ]; # 0..1 Определение, из которого получен этот тип через ограничивающие условия или специализацию
  fhir:StructureDefinition.derivation [ code ]; # 0..1 specialization | constraint - How relates to base definition
  fhir:StructureDefinition.snapshot [ # 0..1 Структура в виде снапшота
    fhir:StructureDefinition.snapshot.element [ ElementDefinition ], ... ; # 1..* Определение элементов в ресурсе (если нет StructureDefinition)
  ];
  fhir:StructureDefinition.differential [ # 0..1 Дифференциальный вид структуры
    fhir:StructureDefinition.differential.element [ ElementDefinition ], ... ; # 1..* Определение элементов в ресурсе (если нет StructureDefinition)
  ];
]

Changes since DSTU2

StructureDefinition
StructureDefinition
  • Min Cardinality changed from 1 to 0
  • Max Cardinality changed from 1 to *
StructureDefinition.title
  • Renamed from display to title
StructureDefinition.status
  • Change value set from http://hl7.org/fhir/ValueSet/conformance-resource-status to http://hl7.org/fhir/ValueSet/publication-status
StructureDefinition.experimental
  • Now marked as Modifier
StructureDefinition.contact
  • Type changed from BackboneElement to ContactDetail
StructureDefinition.description
  • Type changed from string to markdown
StructureDefinition.useContext
  • Type changed from CodeableConcept to UsageContext
  • Remove Binding http://hl7.org/fhir/ValueSet/use-context (extensible)
StructureDefinition.jurisdiction
  • Added Element
StructureDefinition.purpose
  • Renamed from requirements to purpose
  • Type changed from string to markdown
StructureDefinition.copyright
  • Type changed from string to markdown
StructureDefinition.keyword
  • Renamed from code to keyword
StructureDefinition.fhirVersion
  • Add Binding http://hl7.org/fhir/ValueSet/fhir-versions (required)
StructureDefinition.mapping.comment
  • Renamed from comments to comment
StructureDefinition.contextInvariant
  • Added Element
StructureDefinition.type
  • Renamed from constrainedType to type
  • Min Cardinality changed from 0 to 1
  • Change binding strength from required to extensible
StructureDefinition.baseDefinition
  • Renamed from base to baseDefinition
StructureDefinition.derivation
  • Added Element
StructureDefinition.contact.name
  • deleted
StructureDefinition.contact.telecom
  • deleted

See the Full Difference for further information

This analysis is available as XML or JSON.

See R2 <--> R3 Conversion Maps (status = 248 tests that all execute ok. 60 fail round-trip testing and 145 r3 resources are invalid (441 errors).).

 

Альтернативные определения: Основное определение (XML, JSON), XML Schema/Schematron + JSON Schema, ShEx (for Turtle)

ПутьОписаниеТипСсылка
StructureDefinition.status The lifecycle status of a Value Set or Concept Map.RequiredPublicationStatus
StructureDefinition.jurisdiction Countries and regions within which this artifact is targeted for useExtensibleJurisdiction ValueSet
StructureDefinition.keyword Коды смыслового значения заданной структуры (например коды SNOMED CT и LOINC).ExampleStructure Definition Codes
StructureDefinition.fhirVersion All published FHIR VersionsRequiredAll Published FHIR versions
StructureDefinition.kind Задает тип структуры, которую описывает данное определениеRequiredStructureDefinitionKind
StructureDefinition.contextType Как интерпретируется контекст расширенияRequiredExtensionContext
StructureDefinition.type Either a resource or a data type, including logical model typesExtensibleFHIRDefinedType
StructureDefinition.derivation Как тип соотносится со своим базовым определением baseDefinition.RequiredTypeDerivationRule

  • sdf-1: Пути элементов должны быть уникальными, если только структура не является ограничивающей (expression : derivation = 'constraint' or snapshot.element.select(path).isDistinct())
  • sdf-11: If there's a type, its content must match the path name in the first element of a snapshot (expression : snapshot.empty() or snapshot.element.first().path = type)
  • sdf-12: Элемент element.base нельзя указывать, если не указан элемент base для структурного определения (expression : snapshot.exists() implies (snapshot.element.base.exists() = baseDefinition.exists()))
  • sdf-14: All element definitions must have an id (expression : snapshot.element.all(id.exists()) and differential.element.all(id.exists()))
  • sdf-15: On StructureDefinition.snapshot: The first element in a snapshot has no type (expression on StructureDefinition.snapshot: element.first().type.empty())
  • sdf-15a: On StructureDefinition.differential: If the first element in a differential has no "." in the path, it has no type (expression on StructureDefinition.differential: element.first().path.contains('.').not() implies element.first().type.empty())
  • sdf-16: All element definitions must have unique ids (snapshot) (expression : snapshot.element.id.trace('ids').isDistinct())
  • sdf-17: All element definitions must have unique ids (diff) (expression : differential.element.id.trace('ids').isDistinct())
  • sdf-18: Context Invariants can only be used for extensions (expression : contextInvariant.exists() implies type = 'Extension')
  • sdf-19: Custom types can only be used in logical models (expression : kind = 'logical' or (differential.element.type.code.all(hasValue() implies matches('^[a-zA-Z0-9]+$')) and snapshot.element.type.code.all(hasValue() implies matches('^[a-zA-Z0-9]+$'))))
  • sdf-2: On StructureDefinition.mapping: Must have at least a name or a uri (or both) (expression on StructureDefinition.mapping: name.exists() or uri.exists())
  • sdf-20: On StructureDefinition.differential: No slicing on the root element (expression on StructureDefinition.differential: element.first().slicing.empty())
  • sdf-3: On StructureDefinition.snapshot: Каждое определение элемента в снапшоте должно иметь формальное определение и кардинальное множество (expression on StructureDefinition.snapshot: element.all(definition and min and max))
  • sdf-4: If the structure is not abstract, then there SHALL be a baseDefinition (expression : abstract = true or baseDefinition.exists())
  • sdf-5: Если структура описывает расширение, тогда эта структура должна содержать информацию о контексте (элементы context и contextType) (expression : type != 'Extension' or derivation = 'specialization' or (context.exists() and contextType.exists()))
  • sdf-6: Структура должна иметь либо дифференциал, либо снимок (либо оба) (expression : snapshot.exists() or differential.exists())
  • sdf-7: Если структура описывает базовый ресурс или тип, URL-адрес должен начинаться с "http://hl7.org/fhir/StructureDefinition/" и заканчиваться соответствующим id (expression : (derivation = 'constraint') or (kind = 'logical') or (url = 'http://hl7.org/fhir/StructureDefinition/'+id))
  • sdf-8: On StructureDefinition.snapshot: In any snapshot, all the elements must be in the specified type (expression on StructureDefinition.snapshot: element.first().path = %resource.type and element.tail().all(path.startsWith(%resource.type&'.')))
  • sdf-8a: On StructureDefinition.differential: In any differential, all the elements must be in the specified type (expression on StructureDefinition.differential: element.first().path.startsWith(%resource.type) and element.tail().all(path.startsWith(%resource.type&'.')))
  • sdf-9: В любом снапшоте или дифференциале недопустимы элементы label, code и requirements для элементов без "." в пути (например элемент first) (expression : children().element.first().label.empty() and children().element.first().code.empty() and children().element.first().requirements.empty())
  • Структура представляется в виде линейного списка элементов. В element.path хранится вся общая структура целиком.
  • Differentials in constraints need only specify elements that they are making rules about. Other elements can be inferred as defined in the base resource
  • Elements specified in the differential (and all elements in the snapshot) must be ordered as such:
    • Elements from the baseDefinition appear before new elements in a specialization profile
    • Elements must be in the same order as the baseDefinition, and child elements appear in depth-first order.
    • Unsliced descendants of sliced elements appear before slices
  • Элементы element.short, element.formal, element.comments и element.mapping содержат конкретное определение соответствующего поля для определенного контекста.
  • В element.type перечисляются типы, которые могут использоваться для этого элемента. Если указано больше одного типа, значит в элементе предполагается выбор типа, и он должен иметь имя, заканчивающееся на "[x]". Окончание "[x]" сохраняется даже для тех имен элементов, максимальное число которых равно единице.
  • Когда для создания ограничений на взаимосвязи между содержимым описательной части и содержимым элементов данных используется xpath, то элемент, по отношению к которому выражено правило, и будет тем, о котором будет сообщаться в ошибке или предупреждении.
  • When expression constraints are placed on elements that offer a choice of types, the expression has to select the type to which it applies using the fluentpath is operator .
  • Для xpath-ограничений префикс "f" должен использоваться для "http://hl7.org/fhir", и "h" для "http://www.w3.org/1999/xhtml". XPath-ограничения пишутся для XML-представления
  • Элемент condition используется для объявления о том, что ограничение, определенное на другом элементе, влияет на допустимое кардинальное число этого элемента.

Базовое структурное определение используется несколькими способами для поддержки спецификации FHIR. Варианты применения ресурса StructureDefinition настраиваются с помощью элементов kind, constrainedType, base и url по следующему основному шаблону:

{
  "url": the identity of this structure definition,
  "kind": (datatype | resource),
  "type": the type being constrained (if it's a constraint)
  "baseDefinition": the structure definition from which this is derived
}

Ниже приводится несколько примеров со ссылками на реальные случаи применения:

  1. Базовое определение типа данных (пример: Quantity - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Quantity",
      "name": "Quantity",
      "kind": "datatype",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
    }
    
  2. Тип данных с ограничивающими условиями (пример: Money - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Money",
      "name": "Money",
      "kind": "datatype",
      "type": "Quantity",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Quantity"
    }
    
  3. Базовое определение ресурса (пример: Patient - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Patient",
      "name": "Patient",
      "kind": "resource",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/DomainResource"
    }
    
  4. Ограничивающее условие для ресурса (пример: Clinical Document Profile for Composition - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/clinicaldocument",
      "name": "Clinical Document Profile for Composition",
      "kind": "resource",
      "type": "Composition",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Composition"
    }
    
  5. Базовое расширение (стандартный тип данных) (пример: Extension - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/Extension",
      "name": "Extension",
      "kind": "datatype",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Element"
    }
    
  6. Заданное расширение (пример: Extension Data Absent Reason - XML, JSON):
    {
      "resourceType": "StructureDefinition",
      "url": "http://hl7.org/fhir/StructureDefinition/data-absent-reason",
      "name": "Data Absent Reason",
      "kind": "complex-type",
      "type": "Extension",
      "baseDefinition": "http://hl7.org/fhir/StructureDefinition/Extension"
    }
    
  7. Ограничивающее условие для заданного расширения (пока нет примеров):
    {
      "resourceType": "StructureDefinition",
      "url": "http://example.org/fhir/StructureDefinition/race",
      "name": "Race codes used by institution (a subset of meaningful use codes)",
      "kind": "datatype",
      "type": "Extension",
      "baseDefinition": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race"
    }
    

Первое, третье и пятое структурные определения в этом списке может задать только сама спецификация FHIR. Другие виды структурных определений созданы спецификацией, но могут быть созданы и самими реализаторами.

Когда структура является ограничением (constrainedType не "null"), то применяются правила, описанные в разделе Extending and Restricting Resources:

В структурах есть возможность отображать элементы на концепты в других системах определений. Они, как правило, используются для отображения элементов на локальные модели реализации, пути данных и концепты. Однако они также используются для отображения на другие стандарты и опубликованные справочники. Вот стандартные URI распространённых объектов отображения:

http://hl7.org/fhir/logicalLogical Mapping
http://clinicaltrials.govClinicalTrials.gov Mapping
http://www.cdisc.org/define-xmlCDISC Define XML 2.0 metadata standard
http://hl7.org/fhir/workflowWorkflow Mapping
http://wiki.siframework.org/IHE+SDC+ProfileIHE Structured Data Capture
http://www.fda.gov/MedicalDevices/DeviceRegulationandGuidance/UniqueDeviceIdentification/default.htmUDI Mapping
http://ncpdp.org/SCRIPT10_6Mapping to NCPDP SCRIPT 10.6
http://www.cda-adc.ca/en/services/cdanet/Canadian Dental Association eclaims standard
http://snomed.info/conceptdomainSNOMED CT Concept Domain Binding
http://wiki.ihe.net/index.php?title=Data_Element_ExchangeIHE Data Element Exchange (DEX)
http://hl7.org/fhir/rrR3-ReferalRequest Mapping
http://hl7.org/v2HL7 v2 Mapping
http://hl7.org/v3RIM Mapping
http://metadata-standards.org/11179/ISO 11179
http://snomed.info/sctSNOMED CT Attribute Binding
http://nema.org/dicomDICOM Tag Mapping
http://github.com/MDMI/ReferentIndexContentMDMI Referent Index
http://ihe.net/xdsXDS metadata equivalent
http://cap.org/eccCAP Code
http://hl7.org/v3/cdaCDA (R2)
http://www.hl7.org/implement/standards/product_brief.cfm?product_id=378Quality Improvement Domain Analysis Model
http://www.pharmacists.ca/Canadian Pharmacy Associaiton eclaims standard
http://www.healthit.gov/quality-data-modelQuality Data Model
http://hl7.org/fhir/auditeventFHIR AuditEvent
http://www.w3.org/ns/provW3C PROV
http://hl7.org/orimOntological RIM Mapping
http://loinc.orgLOINC code for the element
http://w3.org/vcardvCard Mapping
http://openehr.orgOpen EHR Archetype Mapping
http://www.omg.org/spec/ServD/1.0/ServD
http://wiki.siframework.org/CQFQuality Improvement and Clinical Knowledge (QUICK)
http://hl7.org/fhir/provenanceFHIR Provenance
http://www.ietf.org/rfc/rfc2445.txtiCalendar

StructureDefinitions are used to define the basic structures of FHIR: data types, resources, extensions, and profiles. The same definition structure can also be used to define any arbitrary structures that are a directed acyclic graph with typed nodes, where the primitive types are those defined by the FHIR specification.

This technique has many uses:

  • Describing any arbitrary content model
  • Describing existing HL7 content models (e.g. v2, CDA) using FHIR
  • Describing common design patterns used in FHIR
  • Defining a content model to support the mapping language

Параметры поиска для этого ресурса. Также к нему применяются общие параметры. Более подробную информацию о поиске в REST, обмене сообщениями и сервисах см. в разделе Поиск.

ИмяТипОписаниеВыражениеIn Common
abstracttokenЯвляется ли структура абстрактнойStructureDefinition.abstract
baseuriОпределение, из которого получен этот тип через ограничивающие условия или специализациюStructureDefinition.baseDefinition
base-pathtokenПуть, идентифицирующий этот базовый элементStructureDefinition.snapshot.element.base.path | StructureDefinition.differential.element.base.path
context-typetokenresource | datatype | extensionStructureDefinition.contextType
datedateThe structure definition publication dateStructureDefinition.date
derivationtokenspecialization | constraint - How relates to base definitionStructureDefinition.derivation
descriptionstringThe description of the structure definitionStructureDefinition.description
experimentaltokenFor testing purposes, not real usageStructureDefinition.experimental
ext-contextstringГде это расширение может применяться в экземплярахStructureDefinition.context
identifiertokenExternal identifier for the structure definitionStructureDefinition.identifier
jurisdictiontokenIntended jurisdiction for the structure definitionStructureDefinition.jurisdiction
keywordtokenКод профиляStructureDefinition.keyword
kindtokenprimitive-type | complex-type | resource | logicalStructureDefinition.kind
namestringComputationally friendly name of the structure definitionStructureDefinition.name
pathtokenПуть, который ограничивается в профилеStructureDefinition.snapshot.element.path | StructureDefinition.differential.element.path
publisherstringName of the publisher of the structure definitionStructureDefinition.publisher
statustokenThe current status of the structure definitionStructureDefinition.status
titlestringThe human-friendly name of the structure definitionStructureDefinition.title
typetokenType defined or constrained by this structureStructureDefinition.type
urluriThe uri that identifies the structure definitionStructureDefinition.url
valuesetreferenceСсылка на привязку к справочникуStructureDefinition.snapshot.element.binding.valueSet
(ValueSet)
versiontokenThe business version of the structure definitionStructureDefinition.version