FHIR Chat · slice on a non-immediate child · implementers

Stream: implementers

Topic: slice on a non-immediate child


view this post on Zulip Rik Smithies (Mar 16 2021 at 20:35):

Does a slice discriminator path have to be an immediate child of the sliced element?

You can have this:

        <slicing>
            <discriminator>
               <type value="value"/>
               <path value="someelement"/>

But can you have this?

         <slicing>
            <discriminator>
               <type value="value"/>
               <path value="someelement.coding.code"/>    <!-- possible? -->

view this post on Zulip Chris Moesel (Mar 16 2021 at 20:37):

Yep. That is fine. In fact, the BP profile does that... (Although I would have personally preferred a pattern discriminator on code in the BP profile).

view this post on Zulip Rik Smithies (Mar 16 2021 at 20:42):

cool! My aim is to slice on a codeableConcept but just the code and to leave the display optional. If the whole code is fixed then you force a decision on display, in or out.

view this post on Zulip Lloyd McKenzie (Mar 16 2021 at 20:50):

With code, you should generally slices on both code + system - which means it's actually easier to slice by pattern on the Coding

view this post on Zulip Chris Moesel (Mar 16 2021 at 20:51):

@Rik Smithies -- Understood. If you only care about code then that's a good approach. But if you care about system and code, then you may want to consider using a pattern discriminator on code and patternCodeableConcept to "set" the required system/code in the slice. When you use pattern[x], the unspecified properties (like display) can be any value (or absent).

view this post on Zulip Lloyd McKenzie (Mar 16 2021 at 20:54):

Caring about 'code' and not 'system' in a Coding is a dangerous thing to do... :)

view this post on Zulip Rik Smithies (Mar 16 2021 at 20:55):

I do care about system just hadn't brought it into the discussion, to keep it simpler :) But its good to know I can slice on both.

view this post on Zulip Chris Moesel (Mar 16 2021 at 20:58):

@Lloyd McKenzie -- if you are discriminating on a CodeableConcept to slice some higher-level array (like Observation.component), wouldn't it be preferable to slice on the code rather than code.coding? If you slice on code.coding then I think that in the slices you need to put the patternCoding on code.coding -- but then to avoid requiring every instance of that Coding to match the pattern, you also have to introduce a new slicing on code.coding, right? When given the choice between n slicings and n + 1 slicings, I almost always choose n!

view this post on Zulip Rik Smithies (Mar 16 2021 at 20:58):

is there an example of using patternCodeableConcept somewhere?

view this post on Zulip Chris Moesel (Mar 16 2021 at 20:59):

US Core Pediatric BMI: http://www.hl7.org/fhir/us/core/StructureDefinition-pediatric-bmi-for-age.html

view this post on Zulip Chris Moesel (Mar 16 2021 at 21:00):

It's not in the context of a slice, but if you're just looking for a patternCodeableConcept, it's in there.

view this post on Zulip Rik Smithies (Mar 16 2021 at 21:01):

thanks, I will try to put the pieces together :-)

view this post on Zulip Chris Moesel (Mar 16 2021 at 21:05):

Here's one from mCODE that slices Observation.component on code. But there's a lot going on in that profile, so it's easy to get lost in the weeds: https://build.fhir.org/ig/HL7/fhir-mCODE-ig/StructureDefinition-mcode-comorbidities-elixhauser.html

view this post on Zulip Rik Smithies (Mar 16 2021 at 21:14):

I seem to be able to get what I want by going back to descriminating on the child element itself (not the coding or code) and just putting a patternCodeableConcept on the element, rather than a fixedCodeableConcept. I take it that descriminating on a "patterned" element is allowed, as well on as a "fixed" one. It's a checkable constraint I guess.

view this post on Zulip Lloyd McKenzie (Mar 16 2021 at 21:28):

Slicing on component.code is fine. Slicing on component.code.coding.code without component.code.coding.system would be problematic.

view this post on Zulip Lloyd McKenzie (Mar 16 2021 at 21:29):

Discriminating on pattern is better than fixed because pattern will ignore differences in extensions, display, etc.

view this post on Zulip Chris Moesel (Mar 16 2021 at 21:31):

But note that in R4 if the slices use pattern[x] then the discriminator type needs to be pattern (as opposed to value, which is what you use if the slices use fixed[x]).

view this post on Zulip Lloyd McKenzie (Mar 16 2021 at 21:33):

I believe the validator doesn't care


Last updated: Apr 12 2022 at 19:14 UTC