0
votes

When declaring a differential element in a StructureDefinition, does the differential element replace ALL the properties of the base element, or only the specified properties?

Example:

<StructureDefinition>
...
  <differential>
     ...
    <element>
      <path value="Patient.gender" />
      <min value="1" />
    </element>
    ... 
  </differential>
</snapshot>

What's the proper value of the label property in a generated snapshot after applying this differential? If from the base, how would one remove the property if desired?

2

2 Answers

0
votes

It appears that the standard here says that the label would come from the base. However, there is no method for removing a base property?

Also, the standard is silent (I think) about how to deal with lists of properties (e.g. constraints, types, etc) - should they be replaced en masse?

Finally, the "primary key" of the element list is a little fuzzy...we assume COALESCE(name, path) - if this is available, it's re-defining the base of the same key rather than editing these fields. However, this prevents the re-naming of slices UNLESS the system must use the fixed discriminators + bindings (+ constraints??) to match.

0
votes

Properties not specified are presumed to be the same as the base. Removal of properties isn't possible. If a set of aliases are provided, you can't remove all of them, but you can replace the list. Content declared in the differential always replaces content in the base. The exception is text content where if the differential content starts with "...", the new content appends to the parent content.

The most recent DSTU spec has an explanation of how to interpret the linkage between the name of a structure definition and the base structure definition.