Sorry for bringing this up in this thread, but @SevKohler and I had a similar discussion on the codes allowed for the setting attribute. Some aligned with more broadly used value sets would be nice so that we have an easier time integrating with other systems.
Of course we should aim to keep this standardized between openEHR installations, but I think the current terminology is not optimal.
I had the same problem several times: in some areas the openEHR terminology is not sufficient, and implementations need to extend codes in some of the terminology groups.
In HL7 v2.x there is the notion of HL7 table vs. User table, which allow to define codes for specific fields. When HL7 is sure that it covers all use cases, then the code is set by an HL7 table, but when they know its a code that could be set or extended for a specific context, then they leave that to the implementers as a User Table.
I do believe some of the terminology groups mentioned here might need to be set by users and not by openEHR. The matter about not being compatible with other implementations IMHO is minimal, since for almost every integration there should be some kind of beforehand coordination anyway, and these terminology groups can be part of that coordination when integrating with different vendors.
The idea of preferred and example bindings instead of required is the way to go IMHO, like the user defined tables in HL7 v2.x.
We need to be sure that the required bindings can be 100% defined by openEHR, like composition.category.
Though there are some externally controlled codes in the required list and that could lead to sync problems, for instance Character Sets, we can use the IANA ones instead of having them “required”, could just be “preferred”, noting that our list could be incomplete (IANA might add codes and we can get out of sync with them).