FHIR Chat · GF#17475 · terminology

Stream: terminology

Topic: GF#17475


view this post on Zulip Rob Hausam (Jul 30 2018 at 22:40):

GF#17475 - It would be good to get some opinions on whether we should remove the vsd-5 invariant on ValueSet which says "Value set SHALL contain at least one of a compose or an expansion element", and allow for the possibility of ValueSet resource instances which are "metadata only". It does appear that even with the vsd-5 invariant Yunwei's concern about the burden on a _summary search which returns large numbers of extensionally defined value sets could possibly be mitigated by the fact that the only elements under 'include' that are marked as "summary" are 'system', 'version', 'filter' and 'valueSet', but not 'concept'. That should substantially reduce the burden, so maybe it's not necessary to remove vsd-5? But I'm also not sure what purpose vsd-5 is actually serving? In thinking about it further it doesn't seem like it's protecting against any particular invalid or undesired representation.

And back to "summary" for a moment, I noticed that 'include' is in fact included in the summary but 'exclude' is not - unless it gets included by default because it refers back to 'include'? Even if the latter is somehow the case, it would be less confusing if that was made explicit.

view this post on Zulip Peter Jordan (Jul 31 2018 at 03:09):

Again, this boils down to definition (class/compose) v instance (object/expand) and one or the other is required. One suggestion for defining extensional value sets is to populate the compose.include.filter element values along these lines...property="Extensional", op=FilterOperator.Equal, value="true". That might denote "Extensional Value Set - contents only available if expanded".

view this post on Zulip Grahame Grieve (Jul 31 2018 at 06:33):

I think we should remove it and just note about the use cases for having both / either / none in the narrative

view this post on Zulip Robert McClure (Jul 31 2018 at 14:17):

I'm not convinced that the invariant should be removed simply to make summary retrievals computational. I see no value in a value set resource that is only metadata. I think instead we need to improve how summary retrieval works

view this post on Zulip Rob Hausam (Jul 31 2018 at 15:31):

@Robert McClure The potential value that I can see (particularly in a summary search) is that you can retrieve a list of all of the value sets that are available, and for any that are of further interest you can then request the full resource(s). I think that's essentially what @Yunwei Wang was looking for.

view this post on Zulip Robert McClure (Jul 31 2018 at 19:53):

I must be not understanding something. Why not have a parameter allow ValueSet?_summary=true search to bring back only metadata?

view this post on Zulip Grahame Grieve (Jul 31 2018 at 20:36):

we do indeed have exactly that parameter,but what comes back form that has to be valid, and a value set with metadata only is not currently valid because of that constraint

view this post on Zulip Robert McClure (Aug 01 2018 at 00:43):

@Grahame Grieve this seems to be a catch22. There must be some way around support for providing a returned "resource view" that is only part of a resource. This can't be the only situation where this issue exists.

view this post on Zulip Brian Postlethwaite (Aug 01 2018 at 03:50):

That's correct, if properties are masked out for security/redacting purposes, would that still need to conform?

view this post on Zulip Grahame Grieve (Aug 01 2018 at 04:21):

we've argued about this, and we'd be happy to revisit this, but I don't think now is the time. If we clearly document the SHALLS in narrative, we can come back to a formal constraint like this one as a formal constraint in R5

view this post on Zulip Brian Postlethwaite (Aug 01 2018 at 06:34):

Maybe in Baltimore

view this post on Zulip John Moehrke (Aug 01 2018 at 13:07):

The issue of redaction resulting in a valid resource is a broader group discussion. I was always expecting it must be still a valid Resource. This is the way I have written standards/handbook text. It is difficult sometimes, but it has always been considered a non-negotiable. Surely there are specific projects that will drop conformance requirements, but all public standards discussion have always assumed underlying standard conformance is still required.

view this post on Zulip Brian Postlethwaite (Aug 01 2018 at 13:17):

status is a required property and if it was redacted, what do we do?

view this post on Zulip Brian Postlethwaite (Aug 01 2018 at 13:18):

But discussion for later.

view this post on Zulip John Moehrke (Aug 01 2018 at 13:25):

this is why de-identification is a PROCESS. What you do with required fields tends to become obvious when one considers the reason for de-identification. For example, one likely notices that the study already required that all status must already be active... so leaving it as active does not expose anything that isn't already known to the study participants and administrators.

view this post on Zulip Michael Lawley (Aug 03 2018 at 03:48):

_elements allows for selective retrieval of the ValueSet. I'd like to understand why it is not suitable for @Yunwei Wang 's use case

view this post on Zulip Grahame Grieve (Aug 03 2018 at 04:10):

it is. the issue isn't summary, the issue is that the invariant means that by whatever means, you have a value set with neither compose or expansion

view this post on Zulip Michael Lawley (Aug 03 2018 at 04:22):

So the representation doesn't validate, but isn't that (almost) always going to be the case with _elements?

view this post on Zulip Grahame Grieve (Aug 03 2018 at 04:23):

no you can't eliminate mandatory things, or the server should ignore your request to do so

view this post on Zulip Michael Lawley (Aug 03 2018 at 04:27):

Hmm, that's not so great for my use-case which has been using _elements to optimise network bandwidth. It's also not how HAPI behaves.

view this post on Zulip Grahame Grieve (Aug 03 2018 at 04:29):

where would that create a problem?

view this post on Zulip Michael Lawley (Aug 03 2018 at 04:58):

I might not want ValueSet.status, for instance. But also this very discussion - I don't care about expansion or compose but maybe just name/title, version and URI because I'm populating a UI

view this post on Zulip Grahame Grieve (Aug 03 2018 at 05:23):

this is a hard problem; we've tried in the past to say that summarised resources don't have to be valid... but discussing where that leads always ges to a place we don't like. So... they have to be valid. but mostly, the things that are mandatory are not big, and it's not a problem.

view this post on Zulip Brian Postlethwaite (Aug 03 2018 at 05:42):

Maybe just relax the invariant requirements then?

view this post on Zulip Grahame Grieve (Aug 03 2018 at 05:43):

that's the proposal. it's generating considerable pushback

view this post on Zulip Brian Postlethwaite (Aug 03 2018 at 05:43):

Gets a +1 from me.

view this post on Zulip Robert McClure (Aug 03 2018 at 17:34):

To be clear, relaxing an invariant simply to make one use case work is a very bad idea because folks will simply ignore the single use case and stop following the guidance. That invariant exists because a resource without either a compose or an expansion makes NO sense. The use case is about a quick search to find things you want but then you will expect that value set resource to actually have something when you go to use it. So no, I'm not in support of allowing nonsense resources simply because we want searching to be easier.

view this post on Zulip Grahame Grieve (Aug 03 2018 at 19:22):

so you are picking some use cases to require validity for? And not others? It's pursuing the consequences of that decision that lead us to trouble.... We are certainly not going to change that rule at this point in the process (it would be a global rule that affects all implementers of everything)

view this post on Zulip Grahame Grieve (Aug 03 2018 at 19:24):

this comes up for many resources: the common uses lead to common sense minimum cardinalities... but the edge cases mean that they have to be optional. Value set is not special in this case.

view this post on Zulip Lloyd McKenzie (Aug 03 2018 at 20:24):

The core specification's purpose is not to enforce best (or even good) practice. It's simply to provide a standard mechanism to share what data systems have - whatever that is. Any invariants in the core specification should be limited to prohibiting content that is clearly non-sensical. Good practice/best-practice can be flagged using an appropriate invariant type in core or through the creation of profiles.

view this post on Zulip Lloyd McKenzie (Aug 03 2018 at 20:25):

(Rationale is that good/best practice is always context-specific and resources are always context-independent.)

view this post on Zulip Michael Lawley (Aug 04 2018 at 07:20):

I see no problem in a metadata-only ValueSet. The very omission of both compose and expansion makes it clear that it's incomplete. +1 from me on removing vsd-5

view this post on Zulip Brian Postlethwaite (Aug 07 2018 at 00:04):

A unit test for this could be to validate all example resources in the spec with them in their summary format.

view this post on Zulip Grahame Grieve (Aug 07 2018 at 00:59):

gee let me run out and write that

view this post on Zulip Rob Hausam (Aug 07 2018 at 02:13):

The proposed resolution has been pre-applied. We discussed it on the Vocab FHIR Tracker Issues call today and had agreement on it and will vote on Thursday.

view this post on Zulip Grahame Grieve (Aug 07 2018 at 02:16):

great - thanks


Last updated: Apr 12 2022 at 19:14 UTC