2015-05-08 3 views
0

Версия бюллетеня DSTU2 May имеет ресурс StructureDefintion (заменяет профиль), который допускает «дифференциальное» определение структур.FHIR StructureDefinition - дифференциальные определения

Это довольно простое использование, чтобы добавить элементы в существующую структуру - все элементы в дифференциале «добавляются» к базе.

Однако как изменить или уменьшить существующий профиль? Более конкретно:

Как элемент в базовой структуре надежно сопоставляется с элементом в дифференциальной структуре, чтобы дифференциал мог изменять базу?

Я вижу две возможности:

  1. Используйте Path. Требуемый элемент, который работает для нерезанных элементов, но не для срезов (расширения всегда являются срезами).
  2. Использовать имя. Кроме того, это необязательно, поэтому, если база не назвала их элемент, это не сработает.

Есть ли другой способ?

Рабочий пример здесь: http://hl7.org/fhir/2015May/extensibility-examples.html#1.16.2.1.2

В этом примере, соответствующий по пути заменит любое другое расширение, и согласование имя не будет работать, потому что ни один элемент назван. Единственный вариант - рассматривать его как дополнение (что, к счастью, является намерением здесь). Но если бы я захотел доработать эту структуру, используя ее в качестве базы (возможно, для установки max = "1"), я бы не смог.

ответ

0

На самом деле добавление не добавляется. Любые дополнения должны быть фрагментами расширения - вы не можете добавлять новые элементы в профиль. Поэтому (если вы не определяете ресурсы, которые могут выполнять только HL7), каждый элемент, указанный вами в ограничении StructureDefinition, должен указывать «путь», который соответствует существующему пути в базовом ресурсе. Чтобы ограничить существующий элемент, просто определите этот путь и укажите свои ограничения. Если то, что вы хотите ограничить, невозможно идентифицировать только по пути (т. Е. Вы хотите ограничить срез, определенный в родительском профиле), тогда вам нужно будет повторно объявить срез и утвердить дополнительные ограничения на соответствующем фрагменте , Имя используется для однозначной идентификации срезов в профиле, но не используется (в настоящее время) для всех профилей.

+0

Итак, как я узнаю, какой срез я заменяю, когда «повторно объявить срез»? Он появляется после тщательного чтения http://hl7.org/fhir/2015May/profiling.html#2.14.0.8, что можно идентифицировать срез путем: a) использования фиксированного [x] или b) использования не -переключающая привязка. Это исчерпывающий список? И достаточно ли просто сравнить ValueSet uri или нужно проверить содержимое ValueSet, чтобы определить, является ли элемент «повторно объявлен»? Наконец, если то, что я хочу повторно объявить, является самой ValueSet, как? Изменение в ури означало бы, что я не «повторно объявляю». –

+0

Каждый срез идентифицируется фиксированным значением, связанным с каждым из элементов, идентифицированных как «дискриминаторы» в объявлении среза для этого элемента. Если дискриминаторы одинаковы в производном профиле, а фиксированные значения одинаковы, это один и тот же срез. Если введены дополнительные дискриминаторы, вы «нарезаете срез». Если дискриминаторы выражаются как чистый текст (не вычислимый), то у вас нет возможности сказать, кроме проверки человека, в соответствии с правилами разрезания. –

+0

Из http://hl7-fhir.github.io/profiling.html#2.14.0.8 - параграф 4: _ если элемент имеет терминологическую привязку, он ДОЛЖЕН быть связан с полным связыванием с закрытым значением Set Set, которое перечисляет возможные коды в значении set_. Таким образом, можно использовать фиксированный [x] или binding.valueSet [x], правильно? исправлено [x] довольно просто - без вопросов.Если ** binding **, подходит для valueSet [x], или мне нужно расширять ValueSet и проверять значения? –

Смежные вопросы