FHIR Chat · FHIR-28539 · fhir/infrastructure-wg

Stream: fhir/infrastructure-wg

Topic: FHIR-28539


view this post on Zulip Eric Haas (Nov 05 2020 at 20:47):

reading over this tracker I have several questions and clarifications:

  • First based on the resolution is an example of what we (US Core author) would like to be able to do....

view this post on Zulip Eric Haas (Nov 05 2020 at 20:47):

- id: Observation.subject
  path: Observation.subject
  min: 1
  max: '1'
  type:
    - code: Reference
      targetProfile:
        - 'http://hl7.org/fhir/StructureDefinition/Patient'
        - 'http://hl7.org/fhir/StructureDefinition/Group'
        - 'http://hl7.org/fhir/StructureDefinition/Device'
        - 'http://hl7.org/fhir/StructureDefinition/Location'
      _targetProfile:
        - extension:
          - url : http://hl7.org/fhir/StructureDefinition/type-must-support
            valueBoolean: true
          - url : http://hl7.org/fhir/StructureDefinition/type-must-support
            valueBoolean: false
          - url : http://hl7.org/fhir/StructureDefinition/type-must-support
            valueBoolean: false
          - url : http://hl7.org/fhir/StructureDefinition/type-must-support
            valueBoolean: false
  mustSupport: true
...
- id: 'Observation.effective[x]'
  path: 'Observation.effective[x]'
  min: 1
  type:
    - code: dateTime
    - code: Period
    - code: Timing
    - code: instant
  _type:
    - extension:
      - url : http://hl7.org/fhir/StructureDefinition/type-must-support
        valueBoolean: true
      - url : http://hl7.org/fhir/StructureDefinition/type-must-support
        valueBoolean: false
      - url : http://hl7.org/fhir/StructureDefinition/type-must-support
        valueBoolean: false
      - url : http://hl7.org/fhir/StructureDefinition/type-must-support
        valueBoolean: false
  mustSupport: true

view this post on Zulip Eric Haas (Nov 05 2020 at 20:49):

however the resolution ignores .type as a context. . Was that on purpose since the resolution states?

Requirements: "Allows control of which types and target profiles for an element must be supported in situations where multiple profiles are possible."

view this post on Zulip Eric Haas (Nov 05 2020 at 20:51):

  • Second is my implementation correct in that I MS the root element as well as the choice element?

view this post on Zulip Eric Haas (Nov 05 2020 at 20:54):

  • Third we are updating US Core core for Ballot and would like to implement this ASAP. When is this expected to be ready to use for IGs? ( Can I help by applying it to the build ?)

view this post on Zulip Eric Haas (Nov 05 2020 at 20:55):

@Lloyd McKenzie @Grahame Grieve @Rick Geimer @Ewout Kramer

view this post on Zulip Eric Haas (Nov 05 2020 at 21:03):

  • Fourth (unrelated) is it OK to not complete the array for primitive list extension and skip the last three items?

view this post on Zulip Lloyd McKenzie (Nov 05 2020 at 23:08):

I don't really understand what you mean by '.type' as a context. Also, please don't post a non-official syntax. The last thing we want is for other implementers to think they can/should send FHIR as YAML.

view this post on Zulip Eric Haas (Nov 05 2020 at 23:18):

[
  {
    "id": "Observation.subject",
    "path": "Observation.subject",
    "min": 1,
    "max": "1",
    "type": [
      {
        "code": "Reference",
        "targetProfile": [
          "http://hl7.org/fhir/StructureDefinition/Patient",
          "http://hl7.org/fhir/StructureDefinition/Group",
          "http://hl7.org/fhir/StructureDefinition/Device",
          "http://hl7.org/fhir/StructureDefinition/Location"
        ],
        "_targetProfile": [
          {
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
                "valueBoolean": true
              },
              {
                "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
                "valueBoolean": false
              },
              {
                "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
                "valueBoolean": false
              },
              {
                "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
                "valueBoolean": false
              }
            ]
          }
        ]
      }
    ],
    "mustSupport": true
  },
  {
    "id": "Observation.effective[x]",
    "path": "Observation.effective[x]",
    "min": 1,
    "type": [
      {
        "code": "dateTime"
      },
      {
        "code": "Period"
      },
      {
        "code": "Timing"
      },
      {
        "code": "instant"
      }
    ],
    "_type": [
      {
        "extension": [
          {
            "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
            "valueBoolean": true
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
            "valueBoolean": false
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
            "valueBoolean": false
          },
          {
            "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
            "valueBoolean": false
          }
        ]
      }
    ],
    "mustSupport": true
  }
]

view this post on Zulip Eric Haas (Nov 05 2020 at 23:21):

resolution says:

Define an extension with a context of ElementDefinition.type.profile and ElementDefinition.type.targetProfile

I meant what about ElementDefinition.type.code for a For a polymorphic type?

view this post on Zulip Lloyd McKenzie (Nov 06 2020 at 00:03):

Fair point. The extension probably belongs on .type directly as well.

view this post on Zulip Brett Marquard (Nov 06 2020 at 17:29):

@Grahame Grieve What do you think? Any idea how long it will take to implement?

view this post on Zulip Eric Haas (Nov 06 2020 at 17:53):

I just found this chat from GG which answers my first 2 questions.

view this post on Zulip Eric Haas (Nov 06 2020 at 17:55):

I'll move the fourth question to implementers since is a general json primitive extension question

view this post on Zulip Eric Haas (Nov 06 2020 at 18:23):

and not to be pedantic but should clarify in the description in that if one or more choice elements (for example., dateTime) has this extension with a value of " true", the omission of this extension from the other choice elements (for example, Period, Instant, Timing), it is equivalent to these elements having this extension with a value of "false"

view this post on Zulip Yunwei Wang (Nov 06 2020 at 18:41):

As my understand, this is R5 extension. Can you use it in R4?

view this post on Zulip Lloyd McKenzie (Nov 06 2020 at 20:47):

@Grahame Grieve

view this post on Zulip Eric Haas (Nov 11 2020 at 00:47):

BTW here is the correct JSON for type ( I mistakenly had it as primitive extension)

            {
        "id": "Observation.effective[x]",
        "path": "Observation.effective[x]",
        "definition": "For lab tests this is the specimen collection date.  For Ask at Order Entry Questions (AOE)'s this is the date the question was asked.",
        "min": 0,
        "max": "1",
        "type": [
          {
            "extension": [
              {
                "url": "http://hl7.org/fhir/StructureDefinition/type-must-support",
                "valueBoolean": true
              }
            ],
            "code": "dateTime"
          },
          {
            "code": "Period"
          },
          {
            "code": "Timing"
          },
          {
            "code": "instant"
          }
        ]
      }

view this post on Zulip Brett Marquard (Nov 11 2020 at 19:31):

@Eric Haas Is this rendering correctly in the IG publisher?

view this post on Zulip Eric Haas (Nov 11 2020 at 19:39):

Unfortunately not... here is how is currently rendered:

image.png

view this post on Zulip Brett Marquard (Nov 11 2020 at 19:47):

@Grahame Grieve Is this on your list to clean-up prior to the ballot?

view this post on Zulip Brett Marquard (Nov 11 2020 at 19:48):

@Hans Buitendijk @Drew Torres - FYI - the ability to flag MS in the upcoming ballot is not quite ready...

view this post on Zulip Drew Torres (Nov 11 2020 at 20:02):

So we will have to manually add to the IG in the text explicit MS?

view this post on Zulip Drew Torres (Nov 11 2020 at 20:03):

Inferno team would need to know

view this post on Zulip Hans Buitendijk (Nov 11 2020 at 20:19):

If not computable to ensure test harness is in sync, will create some risks in inconsistencies between the two. However, if the statements made are consistent structure, that still may work. More work for the US Core editors though. Are we clear that that string only needs to represent the flag of Must Support, while the definition of Must Support on an attribute, reference/data type target, component, is only in http://hl7.org/fhir/us/core/STU3.1.1/general-guidance.html#must-support? BTW, note that the term "capable of" would need as well some clarification, i.e., it means that one must demonstrate that it supports populating that data and provide it without an absent reason, or an absent reason, while presenting it without either is still acceptable for specific instances where there is just no data and no absent reason.

view this post on Zulip Grahame Grieve (Nov 12 2020 at 10:50):

I think it's working properly. There's an example in the sample IG

view this post on Zulip Brett Marquard (Nov 12 2020 at 13:44):

@Grahame Grieve Would you be willing to look how we applied here: US Core Lab Observation? I am not sure if we have the extension wrong in the Structured Definition or the IG display isn't quit right

view this post on Zulip Brett Marquard (Nov 12 2020 at 14:05):

location of your example: https://github.com/FHIR/sample-ig/blob/master/input/resources/myObservation.xml

view this post on Zulip Brett Marquard (Nov 12 2020 at 16:38):

and rendered: http://build.fhir.org/ig/FHIR/sample-ig/StructureDefinition-myObservation.html

view this post on Zulip Brett Marquard (Nov 12 2020 at 16:38):

To help folks other than me looking...

view this post on Zulip Yunwei Wang (Nov 12 2020 at 16:44):

Looks like the extension used in Grahame's sample is http://hl7.org/fhir/StructureDefinition/elementdefinition-type-must-support.
US Core Lab Observation uses: http://hl7.org/fhir/StructureDefinition/type-must-support

view this post on Zulip Brett Marquard (Nov 12 2020 at 16:47):

amazing, will try that.

view this post on Zulip Brett Marquard (Nov 12 2020 at 17:00):

whew, it works! Thanks @Yunwei Wang and @Grahame Grieve

view this post on Zulip Eric Haas (Nov 12 2020 at 17:20):

looks like the "must-support" tab needs to be updated too ... :-( @Brian Postlethwaite @Grahame Grieve

view this post on Zulip Eric Haas (Nov 12 2020 at 17:21):

see http://build.fhir.org/ig/FHIR/sample-ig/StructureDefinition-myObservation.html

view this post on Zulip Grahame Grieve (Nov 13 2020 at 01:27):

hmm. @Lloyd McKenzie have you an opinion on this one? the must-support tab should omit the types and targets that are not must support?

view this post on Zulip Lloyd McKenzie (Nov 13 2020 at 04:22):

I'm ok with omitting the non-supported ones, but there should be an indication of some sort that others are allowed, even if not listed

view this post on Zulip Ward Weistra (Jan 11 2022 at 23:29):

Yunwei Wang said:

As my understand, this is R5 extension. Can you use it in R4?

Raised FHIR-35775 on this :thinking:

view this post on Zulip Ward Weistra (Apr 05 2022 at 12:37):

@Brett Marquard @Eric Haas I see the resolution for FHIR#35775 has been captured as "investigate with IG publishing and validation". Has there been progress on that point?
I get the first customers now asking to be able to use one of these R5 extensions in their R4 specifications because US Core is also doing it. But infrastructure-wise it's just impossible to refer to an extension that is nowhere defined in the IG or one of its dependencies.
cc @Lloyd McKenzie @Monique van Berkum

view this post on Zulip Lloyd McKenzie (Apr 05 2022 at 13:24):

I think the publisher just hard-codes it as a special case.

view this post on Zulip Grahame Grieve (Apr 05 2022 at 14:16):

indeed I haven't figured out a better way to do that than special casing it

view this post on Zulip Eric Haas (Apr 05 2022 at 15:28):

no

view this post on Zulip Eric Haas (Apr 05 2022 at 15:29):

progress

view this post on Zulip Lloyd McKenzie (Apr 05 2022 at 15:42):

"no" what? (@Eric Haas)


Last updated: Apr 12 2022 at 19:14 UTC