Stream: argonaut
Topic: renaming extensible+max binding
Eric Haas (May 07 2019 at 15:22):
we think the name "extensible+max binding" for several value sets is unhelpful and would like to rename the concept to reflect its purpose to "required with text only" In essence we have a binding strength of extensible which permits text only to be present and add a max binding extension to the binding strength definition to limit the code set to only the codes in the extensible binding. This provides implementers with an out for 'fixed' bindings when to appropriate code is absent but a concept exist typically as text. seeking feedback here if this name is more useful or doesn't make a difference. use the :+1: or :-1:
Lloyd McKenzie (May 07 2019 at 17:30):
Preventing people from sending local codes is a bad idea. It's fine to add a constraint that text must be present if you can't use one of the existing codes, but it's a really bad idea to keep people from sending the codes they do have - that interferes with interoperability, it doesn't help it. (As a rule, you should always send all codes you know, regardless of what the recipient might be looking for.)
Eric Haas (May 07 2019 at 17:55):
we are not discussing its merits or existence in this poll
Eric Haas (May 07 2019 at 17:55):
just the name
Eric Haas (May 07 2019 at 17:57):
so you down vote it that you prefer the name 'extensible+max binding' to 'required with text'
Josh Mandel (May 07 2019 at 18:05):
This prohibition makes no sense to me either :)
Lloyd McKenzie (May 07 2019 at 18:11):
extensible + max binding is not equivalent to 'required with text'
Lloyd McKenzie (May 07 2019 at 18:11):
If you're not within the max binding, I don't think you're allowed to have text.
Eric Haas (May 07 2019 at 18:11):
yes it is and we have discussed this at length in prior chats, and I prefer not to rehash it here
Lloyd McKenzie (May 07 2019 at 18:17):
Can you provide a reference? Because the definition for elementdefinition-maxvalueset says "defines a required binding" - and required binding does not allow text only
Eric Haas (May 07 2019 at 18:18):
stream:argonaut max binding
Lloyd McKenzie (May 07 2019 at 18:31):
Can't find that with a search - do you have a link?
Jenni Syed (May 07 2019 at 18:41):
Is it this one? https://chat.fhir.org/#narrow/stream/179175-argonaut/topic/Required.20CodeableConcepts
Jenni Syed (May 07 2019 at 18:41):
I think we've discussed quite a bit
Jenni Syed (May 07 2019 at 18:41):
so that may only be one of a few
Jenni Syed (May 07 2019 at 18:42):
That also looks like it starts half way through to me...
Grahame Grieve (May 07 2019 at 18:49):
"required with text only"
Makes me think of something quite different to
a binding strength of extensible which permits text only to be present and add a max binding extension to the binding strength definition to limit the code set to only the codes in the extensible binding
Lloyd McKenzie (May 07 2019 at 18:49):
That thread seems to be about what's desired, but not about what's supported by what we have now. We do have the ability to change the definition of maxvalueset, but as defined now, it definitely doesn't allow text without a code from the binding.
Brett Marquard (May 07 2019 at 18:52):
'required, text-only allowed if code unavailable'
Grahame Grieve (May 07 2019 at 19:30):
too long :slight_smile:
Brett Marquard (May 07 2019 at 19:50):
haha, I had a feeling...
Grahame Grieve (May 07 2019 at 19:52):
required code or text
Lloyd McKenzie (May 07 2019 at 23:00):
Happy with that as a name, but not how it's being defined.
Robert McClure (May 20 2019 at 01:06):
@Lloyd McKenzie then we need to make this clearer because I believe most of us understand that the max-binding part is focused on the max set of "defined codes" and is not meant to prohibit text if none of the codes in the max binding are fit for purpose.
Lloyd McKenzie (May 20 2019 at 01:15):
The extension could be re-defined to behave that way, though that would be odd - in that the 'max' binding couldn't be as tight as the 'regular' binding.
Robert McClure (May 23 2019 at 15:25):
Folks - Can someone confirm for me how extensible + Max binding is to operate? Seems @Lloyd McKenzie and @Grahame Grieve are not in agreement but I'd really like to know for that binding if text can be sent if no code exists in the max set that scopes the idea in the text. Lloyd does indeed have a good point that he sees Max binding as essentially restricting what can be sent to ONLY allow codes within the published max code system content. Is that how MAX is supposed to operate or not?
Grahame Grieve (Jun 10 2019 at 21:17):
hmm. I'd like to bring this back to life. We need an answer on this
Brett Marquard (Jun 12 2019 at 11:00):
Did anyone object to 'required code or text'?
Lloyd McKenzie (Jun 12 2019 at 14:02):
I don't really understand what the intention here is. Also, the issue isn't just the name but how the extension is defined right now. (And given where else it's used, we don't necessarily want to redefine the extension, it may be necessary to use a new extension.)
The max extension creates an overall maximum binding that implementers must adhere to (text by itself is not an option). It is used, for example, for language codes where the overall maximum is the IETF code lists that's pretty much unlimited (because it's algorithmicly defined). Implementers are however restricted to that list. They can't send just text or their own local codes. The regular binding is to a much more limited set of codes that makes for a reasonable drop-down list. Essentially we're saying that "if you want to extend your dropdown list, you must pick codes from IETF and nothing else".
That's not the behavior Argonaut wants. Therefore, you can't use the extension. What I think you want to say is "Pick from this list of codes if you can. If not, you must send text." What I'm not clear on is whether you're allowed to send local codes in addition to text. (Personally, I think prohibiting local/non-standard codes is a bad idea as it prevents the re-use of the interface where sending alternate codes would be beneficial.) In either case, you could enforce what you want with an invariant on the CodeableConcept. Something like "(coding in 'your valueset canonical URL here').exists()) or text.exists()"
Eric Haas (Jun 12 2019 at 14:10):
This has never been an issue for argonaut implementer and only discussed here among
Eric Haas (Jun 12 2019 at 14:12):
The FHIR cognoscenti
Eric Haas (Jun 12 2019 at 14:12):
We have more pressing issues
Lloyd McKenzie (Jun 12 2019 at 14:13):
I agree that the name of things may not matter much. However, if the constraints you're declaring aren't doing what you want them to, that's presumably a problem.
Last updated: Apr 12 2022 at 19:14 UTC