There is an explicit boolean field: concept.is_set.
However it's very easy to write code where you add set members to a concept, but forget to set this field. (E.g. this example I wrote in a PIH module.)
I suggest implementing this as a one-liner in ConceptServiceImpl.saveConcept
- If you save a concept with isSet() == false, but setMembers().size() > 0, then isSet() should be made equal to true
- If you save a concept with isSet() == true, but setMembers().size() == 0, then that should be allowed