Stream: terminology
Topic: ValueSet.compose question
Yunwei Wang (Sep 19 2018 at 20:13):
VSD-3 states that "ValueSet.compose.include Cannot have both concept and filter". What about valueSet reference? If a valueSet has all three: concept, filter and valueset reference, should there be three include?
Rob Hausam (Sep 19 2018 at 22:13):
@Yunwei Wang I think that's a good point. Probably need a tracker to fix it. It doesn't make sense to leave the valueSet reference out of the rule and allow arbitrary combinations of it with the others.
Jim Steel (Sep 19 2018 at 22:54):
I think filter + valueSet makes sense
Jim Steel (Sep 19 2018 at 22:55):
I agree that valueSet + concept probably doesn't
Yunwei Wang (Sep 19 2018 at 22:56):
Tracker created: https://gforge.hl7.org/gf/project/fhir/tracker/?action=TrackerItemEdit&tracker_item_id=18089&start=0
Michael Lawley (Sep 19 2018 at 23:59):
I'm a little conflicted here. From a pure implementation logic perspective there's little reason to disallow any of the combinations; you're just taking an intersection of constraints expressed in different ways.
From a human authoring perspective however it seems strange/degenerate to write something like 'these explicit concepts intersected with this filter/ValueSet' but if the ValueSet definition is machine generated, perhaps based on a template and some input data, then not having these constraints is quite useful.
Rob Hausam (Sep 20 2018 at 12:41):
@Jim Steel One problem that I see with filter + valueSet is that we have vsd-2 which says "A value set with concepts or filters SHALL include a system". So, if that's true, then how would you interpret the combination of system + valueSet, and then would filter apply to only one of them (which one?) or somehow to the combination of the two? I don't think that was what was intended. I believe that probably the intent was that compose.include would contain either system (0..1) or concept (0..) or valueSet(0..), and that both filter and concept are only used with system. However, back to your point, I can see why it might make sense to use filter + valueSet, but if we agree we want to do that we'll have to revise at least the two (and maybe other?) invariants to make that work and do it consistently.
Robert McClure (Sep 21 2018 at 00:20):
@Jim Steel Agree with you. Filter + Valueset ref definitely makes sense, filter + concept no.
@Rob Hausam What we need is an invariant where include has both ref and filter, the filter must have a system in the value set AND that is the system in the include.
Jim Steel (Sep 21 2018 at 00:24):
I think continuing to require the system whenever a filter is used (in conjunction with a valueSet or otherwise), because more than constraining the matching concepts' code system, it constrains which filter is being used. For example, if you imported a valueSet that spanned 2 code systems A and B that both supported a filter named 'x', then a ValueSet filter might be ambiguous (e.g. in its type)
Grahame Grieve (Sep 21 2018 at 00:59):
filter only applies to system, and must have a system.
Grahame Grieve (Sep 21 2018 at 00:59):
"the filter must have a system in the value set "
I don't know that that means
Jim Steel (Sep 21 2018 at 00:59):
Is that only to avoid empty intersections?
Robert McClure (Sep 21 2018 at 13:55):
@Grahame Grieve What I was trying to say is that the referenced value set SHALL have the system identified in the include so that the intersection is not NULL.
Grahame Grieve (Sep 21 2018 at 22:20):
so what if the intersection is null?
Robert McClure (Sep 22 2018 at 00:54):
It will always be null if the system in the include is not in the ref value set, so why allow that??
Grahame Grieve (Sep 22 2018 at 02:27):
well, for several practical reasons. Let's say you have value set A, which says that it imports everything from value set B that is-a SCT clinical finding. And value set B is authored by someone else
Grahame Grieve (Sep 22 2018 at 02:27):
the current version of value set B includes some SCT clinical findings but also some local codes, and a few HL7 codes (nullFlavor code system). Your value set is only the SCT codes
Grahame Grieve (Sep 22 2018 at 02:28):
so the author of value set B updates it to no longer include any SCT codes...
Grahame Grieve (Sep 22 2018 at 02:28):
now, your value set is empty.
Grahame Grieve (Sep 22 2018 at 02:29):
I don't see why that's 'an error'. If it is, who's error is it? But why is any empty value set an error? I think that there's various ways of using value sets where the empty set is not an error, it just means that the set of concepts relevant for this particular action is empty
Grahame Grieve (Sep 22 2018 at 02:30):
eg. you might be using the value set is a criteria test in a decision support system
Jim Steel (Sep 23 2018 at 23:01):
Yeah, I'm inclined to agree with Grahame
Last updated: Apr 12 2022 at 19:14 UTC