Версия бюллетеня DSTU2 May имеет ресурс StructureDefintion (заменяет профиль), который допускает «дифференциальное» определение структур.FHIR StructureDefinition - дифференциальные определения
Это довольно простое использование, чтобы добавить элементы в существующую структуру - все элементы в дифференциале «добавляются» к базе.
Однако как изменить или уменьшить существующий профиль? Более конкретно:
Как элемент в базовой структуре надежно сопоставляется с элементом в дифференциальной структуре, чтобы дифференциал мог изменять базу?
Я вижу две возможности:
- Используйте Path. Требуемый элемент, который работает для нерезанных элементов, но не для срезов (расширения всегда являются срезами).
- Использовать имя. Кроме того, это необязательно, поэтому, если база не назвала их элемент, это не сработает.
Есть ли другой способ?
Рабочий пример здесь: http://hl7.org/fhir/2015May/extensibility-examples.html#1.16.2.1.2
В этом примере, соответствующий по пути заменит любое другое расширение, и согласование имя не будет работать, потому что ни один элемент назван. Единственный вариант - рассматривать его как дополнение (что, к счастью, является намерением здесь). Но если бы я захотел доработать эту структуру, используя ее в качестве базы (возможно, для установки max = "1"), я бы не смог.
Итак, как я узнаю, какой срез я заменяю, когда «повторно объявить срез»? Он появляется после тщательного чтения http://hl7.org/fhir/2015May/profiling.html#2.14.0.8, что можно идентифицировать срез путем: a) использования фиксированного [x] или b) использования не -переключающая привязка. Это исчерпывающий список? И достаточно ли просто сравнить ValueSet uri или нужно проверить содержимое ValueSet, чтобы определить, является ли элемент «повторно объявлен»? Наконец, если то, что я хочу повторно объявить, является самой ValueSet, как? Изменение в ури означало бы, что я не «повторно объявляю». –
Каждый срез идентифицируется фиксированным значением, связанным с каждым из элементов, идентифицированных как «дискриминаторы» в объявлении среза для этого элемента. Если дискриминаторы одинаковы в производном профиле, а фиксированные значения одинаковы, это один и тот же срез. Если введены дополнительные дискриминаторы, вы «нарезаете срез». Если дискриминаторы выражаются как чистый текст (не вычислимый), то у вас нет возможности сказать, кроме проверки человека, в соответствии с правилами разрезания. –
Из http://hl7-fhir.github.io/profiling.html#2.14.0.8 - параграф 4: _ если элемент имеет терминологическую привязку, он ДОЛЖЕН быть связан с полным связыванием с закрытым значением Set Set, которое перечисляет возможные коды в значении set_. Таким образом, можно использовать фиксированный [x] или binding.valueSet [x], правильно? исправлено [x] довольно просто - без вопросов.Если ** binding **, подходит для valueSet [x], или мне нужно расширять ValueSet и проверять значения? –