2015-04-30 2 views
0

Я пытаюсь выяснить, как полностью указать нарезанный элемент. Если я правильно читаю спецификацию, nameReference - это единственное место, где «подэлемент» среза может объявить, какой срез он «включен».Профиль FHIR/StructDef: Как дети (подэлементы) названного среза привязаны к срезу?

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

Рассмотрим:

Resource Example     ElementDefinition attributes 
================================ ===================================================================== 
<Patient>       name="Patient" 
... snip ... 
    <telecom>      name="HomePhone" 
    <system value="phone" />  name="HomePhone.system", nameReference="HomePhone", fixedCode="phone" 
    <use value="home" />   name="HomePhone.use" , nameReference="HomePhone", fixedCode="home" 
    <value value="5551234567" /> name="HomePhone.value" , nameReference="HomePhone" 
    </telecom> 
... snip ... 
</Patient> 

В большинстве примеров, представляется, что пунктирная обозначение Название было использовано (как я поместил в примере). Но спецификация не требует этого и не обеспечивает формат, который может быть надежно проанализирован.

Проблема: nameReference и fixed [x] являются взаимоисключающими. Каков правильный способ справиться с этим?

ответ

0

Повторения в экземпляре не «объявляют», на каком фрагменте они являются частью. Они просто объявляют соответствующее значение для того, что когда-либо элемент (ы) является дискриминатором для процесса нарезки. nameReference вообще не участвует. Со стороны определения ассоциация просто обрабатывается по имени. Поэтому HomePhone.system связана с HomePhone просто по имени и по последовательной близости. Требуется точка-нотация. Вероятно, мы могли бы быть немного более откровенными в этом вопросе, поэтому не стесняйтесь отправлять запрос на изменение.

+0

Конечно, было бы неплохо иметь атрибут «полного имени». Текущая модель требует комбинации пути (навигация XML/JSON) и имени для определения элемента StructureDefinition для определенного элемента ресурса. Мы (во время выполнения) генерируем выражения XPath для этого с учетом пути, имени и фиксированных дискриминаторов для удовлетворения этой потребности ... –

+0

Итак, имя для каждого элемента в каждом фрагменте? Как вы справитесь с рекурсией? Учитывая данные, которые мы фиксируем в определениях, полные имена в конечном итоге выглядят так же, как и у вас. (Также имейте в виду, что один экземпляр может быть действительным в отношении нескольких определений структуры.) –

+0

Я думал больше о строках абсолютного или относительного XPath для элемента. Но вы правы, что это затрудняет множественные контексты или расширение типа данных. Это дорого стоит вычислить XPath как '/ Patient/address/extension [@url =" ... "]/valueCodeableConcept/Coding [system/@ value =" ... "]/code' во время выполнения сборка элементов StructureDefinition. –

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