FHIR Chat · Profiling Contained resources · conformance

Stream: conformance

Topic: Profiling Contained resources


view this post on Zulip Brian Postlethwaite (Feb 19 2020 at 05:37):

I have a use case where I want to have a Patient and Practitioner contained in a MedicationRequest resource, using contained references. I'm struggling to get the slicing defined.
Error in my guide is:
Profile based discriminators must have a type with a profile

This was my first assumption:

        <element id="MedicationRequest.contained">
            <path value="MedicationRequest.contained" />
            <slicing>
                <discriminator>
                    <type value="profile" />
                    <path value="resolve()" />
                </discriminator>
                <rules value="closed" />
            </slicing>
            <max value="2" />
            <mustSupport value="true" />
        </element>
        <element id="MedicationRequest.contained:patient">
            <path value="MedicationRequest.contained" />
            <sliceName value="patient" />
            <min value="1" />
            <max value="1" />
            <type>
                <code value="Resource" />
                <profile value="http://fhir.fred.com.au/my-sl/StructureDefinition/mysl-patient" />
            </type>
            <mustSupport value="true" />
        </element>
        <element id="MedicationRequest.contained:practitioner">
            <path value="MedicationRequest.contained" />
            <sliceName value="practitioner" />
            <min value="1" />
            <max value="1" />
            <type>
                <code value="Resource" />
                <profile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
            </type>
            <mustSupport value="true" />
        </element>

view this post on Zulip Grahame Grieve (Feb 19 2020 at 07:40):

sound right to me

view this post on Zulip Chris Moesel (Feb 19 2020 at 15:08):

Not sure, but might it work if you change the discriminator path to $this.resolve()?

view this post on Zulip Brian Postlethwaite (Feb 24 2020 at 04:53):

Worked it out, makes sense now that I look at it again.
(Just in case someone else finds this in the future and wondered what happened)
Issue was that I was using resolve() which is intended to follow a reference, not the inline content, so was expecting to have a targetProfile.
Changing the slicing from profile to type was the trick.

So the error message could have been better to indicate that is must have a type with a targetProfile (not profile)

<element id="MedicationRequest.contained">
            <path value="MedicationRequest.contained" />
            <slicing>
                <discriminator>
                    <type value="type" />
                    <path value="$this" />
                </discriminator>
                <rules value="closed" />
            </slicing>
            <max value="2" />
            <mustSupport value="true" />
        </element>
        <element id="MedicationRequest.contained:patient">
            <path value="MedicationRequest.contained" />
            <sliceName value="patient" />
            <min value="1" />
            <max value="1" />
            <type>
                <code value="Patient" />
                <profile value="http://fhir.fred.com.au/my-sl/StructureDefinition/mysl-patient" />
            </type>
            <mustSupport value="true" />
        </element>
        <element id="MedicationRequest.contained:practitioner">
            <path value="MedicationRequest.contained" />
            <sliceName value="practitioner" />
            <min value="1" />
            <max value="1" />
            <type>
                <code value="Practitioner" />
            </type>
            <mustSupport value="true" />
        </element>

Last updated: Apr 12 2022 at 19:14 UTC