Stream: fhir/infrastructure-wg
Topic: FHIR-28539
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....
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
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."
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?
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 ?)
Eric Haas (Nov 05 2020 at 20:55):
@Lloyd McKenzie @Grahame Grieve @Rick Geimer @Ewout Kramer
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?
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.
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
}
]
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?
Lloyd McKenzie (Nov 06 2020 at 00:03):
Fair point. The extension probably belongs on .type directly as well.
Brett Marquard (Nov 06 2020 at 17:29):
@Grahame Grieve What do you think? Any idea how long it will take to implement?
Eric Haas (Nov 06 2020 at 17:53):
I just found this chat from GG which answers my first 2 questions.
Eric Haas (Nov 06 2020 at 17:55):
I'll move the fourth question to implementers since is a general json primitive extension question
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"
Yunwei Wang (Nov 06 2020 at 18:41):
As my understand, this is R5 extension. Can you use it in R4?
Lloyd McKenzie (Nov 06 2020 at 20:47):
@Grahame Grieve
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"
}
]
}
Brett Marquard (Nov 11 2020 at 19:31):
@Eric Haas Is this rendering correctly in the IG publisher?
Eric Haas (Nov 11 2020 at 19:39):
Unfortunately not... here is how is currently rendered:
Brett Marquard (Nov 11 2020 at 19:47):
@Grahame Grieve Is this on your list to clean-up prior to the ballot?
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...
Drew Torres (Nov 11 2020 at 20:02):
So we will have to manually add to the IG in the text explicit MS?
Drew Torres (Nov 11 2020 at 20:03):
Inferno team would need to know
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.
Grahame Grieve (Nov 12 2020 at 10:50):
I think it's working properly. There's an example in the sample IG
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
Brett Marquard (Nov 12 2020 at 14:05):
location of your example: https://github.com/FHIR/sample-ig/blob/master/input/resources/myObservation.xml
Brett Marquard (Nov 12 2020 at 16:38):
and rendered: http://build.fhir.org/ig/FHIR/sample-ig/StructureDefinition-myObservation.html
Brett Marquard (Nov 12 2020 at 16:38):
To help folks other than me looking...
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
Brett Marquard (Nov 12 2020 at 16:47):
amazing, will try that.
Brett Marquard (Nov 12 2020 at 17:00):
whew, it works! Thanks @Yunwei Wang and @Grahame Grieve
Eric Haas (Nov 12 2020 at 17:20):
looks like the "must-support" tab needs to be updated too ... :-( @Brian Postlethwaite @Grahame Grieve
Eric Haas (Nov 12 2020 at 17:21):
see http://build.fhir.org/ig/FHIR/sample-ig/StructureDefinition-myObservation.html
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?
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
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:
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
Lloyd McKenzie (Apr 05 2022 at 13:24):
I think the publisher just hard-codes it as a special case.
Grahame Grieve (Apr 05 2022 at 14:16):
indeed I haven't figured out a better way to do that than special casing it
Eric Haas (Apr 05 2022 at 15:28):
no
Eric Haas (Apr 05 2022 at 15:29):
progress
Lloyd McKenzie (Apr 05 2022 at 15:42):
"no" what? (@Eric Haas)
Last updated: Apr 12 2022 at 19:14 UTC