Версия бюллетеня DSTU2 May имеет ресурс StructureDefintion (заменяет Профиль), который позволяет «дифференциальное» определение структур.
Это довольно просто использовать для добавления элементов в существующую структуру - все элементы в дифференциале являются «добавками» к основанию.
Однако как изменить или уменьшить существующий профиль? Более конкретно:
Как можно надежно сопоставить элемент базовой конструкции с элементом дифференциальной конструкции, чтобы дифференциал мог изменять основание?
Я вижу две возможности:
- Используйте путь. Обязательный элемент, который работает для неразрезанных элементов, но не для срезов (расширения всегда являются срезами).
- Используй имя. За исключением того, что это необязательно, поэтому, если база не назвала свой элемент, это не сработает.
Есть другой способ?
Рабочий пример здесь: http://hl7.org/fhir/2015May/extensibility-examples.html#1.16.2.1.2
В этом примере сопоставление по пути заменит любое другое расширение, а сопоставление имен не будет работать, потому что ни один элемент не имеет имени. Единственный вариант - рассматривать это как дополнение (что, к счастью, и есть намерение здесь). Но если бы я захотел дополнительно изменить эту структуру, используя ее в качестве основы (возможно, чтобы установить max = "1"), я бы не смог.